Screen Tearing/vertical sync

imaheadcase

Diamond Member
May 9, 2005
3,850
7
76
Some people see screen tearing when they run at a high fps, like when you turn really fast the screen looks like its being pulled different direction. They put restriction on fps to limit that when you turn it looks more smooth to them.

Just a small portion of people experience it.
 

justin4pack

Senior member
Jan 21, 2012
521
6
81
I was getting it in diablo 3. Im sure my gpu can handle D3? I enabed Vertical sync and that seemed to fix it.
 

Pottuvoi

Senior member
Apr 16, 2012
416
2
81
Screen tear is a byproduct of GPU changing image to be displayed during screen refresh.
It happens in all frame rates, even 60fps.

Only cure for it is V-Sync and it's new variants, which synchronizes image swap with refresh rate.
 

mikeymikec

Lifer
May 19, 2011
21,119
16,323
136
Screen tearing looks like an upper horizontal portion of the screen is not in sync with the lower portion of the screen. It's referred to as a tear (I imagine) because you end up with a horizontal line across the screen.

The amount of 'torn' output can move up and down the screen (usually down). I haven't seen it in a long time because I have vsync enabled, so I can't describe it that vividly.

Here's an example. Watch around the centre of the screen in the video output.
http://www.youtube.com/watch?v=ElE_8OY91FA
 

justin4pack

Senior member
Jan 21, 2012
521
6
81
So I'm still not sure hundred percent why it happens and/or why vertical sync is it just in bed into settings and on by default so you never have to see it
 

BrightCandle

Diamond Member
Mar 15, 2007
4,762
0
76
Monitors refresh on a particular cycle. So a 60hz monitor will redraw the contents of the screen every 16ms no matter what happens. The monitor is running on its own schedule.

Along comes the GPU and it is signalled when to start sending a frame and when to finish by the monitor (vsync). The GPU doesn't have any choice about the timing of this, its determined by the monitor, it just has to start sending the pixels when the monitor tells it to.

But a game is running at an FPS all over the place, one moment its 60fps and all is well and other times its at 35 fps. The GPU renders these out to buffers and in vsync it has at least 2 buffers. It has the one that the current game frame is rendering too and it has one that is currently being sent out to the monitor. Once the game one is done it will swap them when it gets the chance so when the next frame has to start its the new one. If it didn't finish the frame in time however it will send the same image to the monitor again, repeating the image. At 45 fps steady what will happen is half the frames will be displayed twice and half of them just once. This is why vsync judders.

With vsync off instead what happens is the GPU is still rendering into two buffers, but it doesn't wait until the vsync moment (end of frame beginning of next) to swap the buffer that is going out to the monitor. As soon as the GPU finishes rendering it swaps which buffer is being sent and starts sending the pixels but from the same screen location onto the monitor. So it will literally have started sending a different picture half way down the monitor, and this adjustment in visual perspective and image results in what people call tearing. Its simply a new frame rendered by the GPU that was sent to the monitor the moment it was finished instead of waiting until the next time the monitor updated.

It takes about 16ms to send all the data for a full screen image at 60hz, so that gives the GPU quite a lot of time to produce a new image and replace the old one as the source of the pixels its sending to the monitor.
 

blackened23

Diamond Member
Jul 26, 2011
8,548
2
0
The short version is with vsync off and a 60hz screen, you will get tearing. Essentially when the monitor and GPU aren't in sync with each other in terms of refresh rate and how fast the GPU spits frames out, certain frames will have a horizontal shift which appears as a very quick "tear" which is very noticeable to me.

If you have a 60hz screen, you can usually eliminate this with vsync. Some people may or may not deal with input lag, sensitivity depends on the user. Or you can use adaptive vsync. Or, if you want, you can use a 144hz lightboost screen which will minimize the tearing to be almost not noticeable.

For me personally, vsync off on a 60hz screen is a no go because of tearing. I always play with vsync on if i'm gaming on a 1600p, or if i'm using lightboost i'll turn vsync off. Using multi monitors and switch it up depending on the type of game. I do really like FPS games with lightboost. But if i'm playing something like a MMO or indie game, i'll play at higher resolution with vsync on. If I turn vsync off it's just distracting due to tearing.
 

bystander36

Diamond Member
Apr 1, 2013
5,154
132
106
So I'm still not sure hundred percent why it happens and/or why vertical sync is it just in bed into settings and on by default so you never have to see it

It has been stated already, so I'll try to explain a little more in detail.

Your monitor updates the image 60 times per second on a 60hz monitor. The process of updating the image is not instant. It takes time. It gets the image to display from a buffer of memory on the GPU.

The GPU is constantly making frames. It has no idea what the monitor is doing, it just creates frames and updates the same buffer of memory the monitor uses to display an image.

When the GPU writes to this buffer, usually called the front buffer, it usually happens at the same time the monitor is updating the image. So the monitor may be half way down the screen when the buffer changes to a new image causing your monitor to have half its screen showing one frame, and the 2nd half showing another. Where these two split images meet will not line up exactly, causing what looks to be a tear in the image.

V-sync forces the GPU to wait between monitor refreshes before it is allowed to write to the front buffer. This prevents the monitor from receiving a different image part way through an refresh, but it forces the GPU to wait before sending an image to the monitor.

There are downsides to what V-sync does, but I'll give you time to wrap your head around the above info.
 

justin4pack

Senior member
Jan 21, 2012
521
6
81
It has been stated already, so I'll try to explain a little more in detail.

Your monitor updates the image 60 times per second on a 60hz monitor. The process of updating the image is not instant. It takes time. It gets the image to display from a buffer of memory on the GPU.

The GPU is constantly making frames. It has no idea what the monitor is doing, it just creates frames and updates the same buffer of memory the monitor uses to display an image.

When the GPU writes to this buffer, usually called the front buffer, it usually happens at the same time the monitor is updating the image. So the monitor may be half way down the screen when the buffer changes to a new image causing your monitor to have half its screen showing one frame, and the 2nd half showing another. Where these two split images meet will not line up exactly, causing what looks to be a tear in the image.

V-sync forces the GPU to wait between monitor refreshes before it is allowed to write to the front buffer. This prevents the monitor from receiving a different image part way through an refresh, but it forces the GPU to wait before sending an image to the monitor.

There are downsides to what V-sync does, but I'll give you time to wrap your head around the above info.

So yea lol my next questions is what is the downside to vsync? So what can fix the issue other then vsync? Higher refresh rate?
 
Last edited:

bystander36

Diamond Member
Apr 1, 2013
5,154
132
106
So yea lol my next questions is what is the downside to vsync? So what can fix the issue other then vsync? Higher refresh rate?

1) No matter what your refresh rate is, it takes time to update the image on the screen, and tearing happens, however it is less noticeable at higher refresh rates.

2) Only V-sync and G-sync can prevent tearing.

V-sync does this by forcing the GPU to wait for the monitor to reach vertical blanking mode before it allows the GPU to update the front buffer. This results in two potential problems.
a) If the GPU is slower than the refresh rate of your monitor (your FPS are lower), it will force the GPU to wait another refresh before it can update an image. Without 3 or more buffers, this results in the GPU consistently waiting another refresh, causing FPS to drop to half your refresh rate (30 FPS on most systems).
b) With 3 or more buffers, which allow the GPU to start work on another frame while it waits to display the current finished image, the displaying of these images will be inconsistent. Some frames will take 16.7ms before being displayed, while others take 33.3ms before they are displayed. This can result in stuttering.

G-sync is the better option, but only works with special monitors with Kepler or newer Nvidia GPU's. Instead of the monitor forcing the GPU to wait before sending new images to the monitor, the GPU tells the monitor when it finishes an image, then has the monitor update the image.
 

justin4pack

Senior member
Jan 21, 2012
521
6
81
I have an Asrock Mb that supports lucid virtue Vsync, is this a marketing ploy or does it work?
 

bystander36

Diamond Member
Apr 1, 2013
5,154
132
106
I have an Asrock Mb that supports lucid virtue Vsync, is this a marketing ploy or does it work?

It does work, though not in SLI/CF if I recall. It does work similar to normal V-sync, and can still cause stutter, but it greatly reduces latency over normal V-sync and will also make FPS counter report much higher FPS than you actually are getting, just so you don't get overly excited about the FPS you see.