[SOLVED] what is the reason for screen tearing

aunebrushan

Honorable
Nov 22, 2016
72
1
10,545
whats the cause? it tears without vsync, but i dont want input lag. BFV is set to 59.95hz my monitor is 60 hz, so why is it tearing? I really dont understand.
 
Solution
Screen tearing happens because your GPU's fps never exactly matches your monitor's refresh rate. The GPU is constantly drawing new frames. The moment it finishes one frame, it begins drawing the next frame, overwriting the old frame. The point where the new frame is overwriting the old frame is a tear. When the monitor refreshes, it just grabs the GPU's current draw state and displays that, tear and all.

Normally there's enough difference between the refresh rate and GPU fps that the tear line jumps all over the place. It's not very noticeable when it jumps around like this, especially on monitors with higher refresh rates. But when the refresh rate and GPU fps start to approach a small integer ratio of each other, the tear line...
Basically you're getting screen tearing all the time unless you use v-sync or have g-sync/free-sync capable gpu and monitor.
But - with high refresh rate monitor it's really hard to spot screen tearing. Can't really see it unless you specifically look for it.

On regular 60 Hz monitor screen tearing is much more noticeable. It is especially evident, when fps is significantly higher than refresh rate.
 
Screen tearing happens because your GPU's fps never exactly matches your monitor's refresh rate. The GPU is constantly drawing new frames. The moment it finishes one frame, it begins drawing the next frame, overwriting the old frame. The point where the new frame is overwriting the old frame is a tear. When the monitor refreshes, it just grabs the GPU's current draw state and displays that, tear and all.

Normally there's enough difference between the refresh rate and GPU fps that the tear line jumps all over the place. It's not very noticeable when it jumps around like this, especially on monitors with higher refresh rates. But when the refresh rate and GPU fps start to approach a small integer ratio of each other, the tear line stops jumping around randomly, and starts to show up in the same spots moving slowly up or down. Then it becomes much more noticeable.

So in that respect, setting the game's frame limiter to 60 fps (or 59.95 fps) may actually make things worse. If the fps limit does not exactly match the monitor's refresh rate, the tear line will slowly move up or down the screen and be more noticeable. Even if they match exactly, if the monitor refresh does not happen the moment the GPU finishes drawing a frame, you'll end up with the tear line always on the same spot on the screen. So that may be even worse.

So if you don't have a G-sync or a FreeSync monitor (those dynamically change their refresh rate to match when the GPU finishes drawing a frame), and you don't want to turn v-sync on, you're actually better off turning off the framerate limiter. Or if you insist on using it, set it to some prime number far away from the factors of your monitor's refresh rate. e.g. If your monitor is 60 Hz, avoid a framerate limit value close to 60, 30 or 90 (60 +/- 60 divided by 2), 20 or 40 or 80 (divisible by 3), 15 or 45 or 75 (divisible by 4), 12 or 24 or 36 or 48 or 72 or 84 (divisible by 5), 50 or 70 (divisible by 6), etc. The bigger the divisor, the less noticeable the effect will be, with prime numbers being best because they guarantee the tear line will always move. So try setting the framerate limit to something like 67 or 53.
 
Solution