One of the most basic graphics options of modern games is the V-Sync toggle. Almost every PC game released over the past decade has it. Most people know that v-sync locks the in-game frame rate to your monitor’s refresh rate, but how exactly does it work? And more importantly, should you turn it on or keep it off in fast-paced shooters like Fortnite and PUBG? Let’s take a look:
What does V-Sync do?
Your GPU renders frames as fast as it can, barring any bottlenecks. A well-fed high-end GPU can easily spit out hundreds of frames per second at 1080p, in mainstream PC titles. Whenever your GPU draws a frame, it renders it in what’s called a framebuffer. The framebuffer is a portion of VRAM that stores the information for the final image to be shown on the display. When Vertical Sync is turned off, your GPU renders to the framebuffer as fast as it can, while your monitor draws them onscreen as fast as it can.
There’s a big capability gap here. Most monitors on the market are 60 Hz panels. This means that they refresh the image on screen 60 times per second. Workloads in games are almost never constant. This means that your GPU will almost always send more–or less–than 60 frames per second to the framebuffer. In a non-buffered situation, you’ll encounter what’s called “screen tear.”
This looks like a horizontal line that moves across the display. It arises when the next consecutive frame is displayed before the monitor gets a chance to refresh, essentially displaying parts of two frames simultaneously. If you dip below 60 FPS, you’ll have to deal with stuttering, as there will be a momentary pause while the GPU draws a new frame in. With just a single framebuffer, this means that you will encounter screen tearing, stuttering, or both. This is where V-sync comes into the picture.
Why does Screen tearing Take Place?
Consider your monitor has a refresh rate of 60 Hz and you’re playing a game at 100 FPS. What does this basically entail? This means that your monitor can update itself (and render the next frame) 60 times per second but your GPU is sending it 100 frames per sec. That is 66% faster than what the monitor can display.
Since the monitor can’t display all 100 frames, it ends up displaying 33% of every x frame and 66% of the following x+1 frame simultaneously. As a result, you see a third of frame x while the remaining is frame x+1. This continues as long as the frame rate is stuck at 100 FPS.
Before we move onto V-Sync, you should know what Double Buffering is. It is a technology used to reduce screen tearing by leveraging two buffers instead of one, namely a back buffer and a front buffer. The latter is on the monitor while the former resides on the GPU.
As soon as the monitor is done with a frame, it reaches out to the back buffer, copying the frame rendered by the GPU to the front buffer. After that, the monitor refreshes and displays this frame. This, of course, happens very fast, but the copying does induce a latency penalty.
As a result, if the monitor ends up refreshing while the copying is going on, you’ll see parts of two different images at a time (basically tearing). When you enable V-Sync, the front buffer is forced to delay the copying till the monitor refreshes. When the frame rate is higher than the refresh rate, this works perfectly (although there is an input lag at times).
This becomes a major problem if your frame rate drops below the refresh rate (here 60). Consider you’re getting only 45 FPS instead of 60. That’s 33% lower than the refresh rate. Now, every time the monitor refreshes, only 66% of the next frame will have been rendered (1). As a result, the same frame is displayed again.
After that, the GPU completes drawing the frame in the frame buffer, but the front buffer already contains a frame (2) and it can’t copy it till the monitor refreshes. So it waits for the monitor to refresh and then copies the frame (3). Then, the second frame is finally displayed (4), and the whole process repeats.
As you can see, one frame is displayed every two cycles, and the rendering is effectively slowed down by 2x, dropping the resultant FPS to 30 (locking it). This is the second drawback of double buffering (other than the input lag). If the frame rate is less than 60, you’ll get 30 FPS with v-sync turned on.
Triple Buffering: Third Time’s a Charm
This is where Triple Buffering comes in. As the name suggests, it adds a third buffer. This extra buffer lets the GPU continue rendering as the screen buffer re-displays the same frame twice, and the pipeline isn’t hindered. In double buffering, the back buffer has to wait for the front buffer to refresh and it can’t start rendering the next frame until the frame within is copied.
In triple buffering, one of the back buffers stays locked to the refresh rate to avoid tearing and the other one is used by the GPU to continue drawing the next frame. The frames are copied back and forth between the back buffers as soon as one is drawn. Ideally, the front buffer takes the most recently rendered frame from the locked back buffer once every refresh cycle.
Let’s consider your GPU is rendering 45 FPS but you have a 60 Hz monitor. Frame x will first be in the front buffer, and 66% of the next frame (x+1) will be rendered by the GPU in the back buffer. Then the monitor will refresh and display frame x for the first time and the remaining 33% of frame x+1 is rendered by the GPU in the first back buffer and another 33% of the next consecutive frame is rendered in the second back buffer.
After that, the monitor refreshes, displaying frame x a second time and copying frame x+1 to the front buffer. At the same time, the remaining 33% of x+1 will finish rendering and move to the first back buffer while the GPU continues rendering the first half of the next frame.
Then, the monitor displays x+1 for the first time, copying the next frame in line to the front buffer and the GPU completes rendering the succeeding one. This way you are still able to see two frames in three refresh cycles, retaining 45 FPS instead of locking the display to 30.
Triple buffering uses more VRAM than double buffering due to the use of an additional buffer but it’s hardly a problem for modern graphics cards. Furthermore, the frame rates obtained when triple buffering are often misleading. Most OSD tools like Afterburner and Precision X1 measure the times the front buffer is replaced once every second, not the number of frames rendered by the GPU per second. To get the exact figure, use NVIDIA’s Frame View. It directly interfaces with the API to calculate the frame rate.
What is Adaptive Sync?
This is an option you’ll see in the Nvidia control panel. It’s not globally supported on AMD parts, although games that implement it will you use it. Adaptive sync essentially synchronizes your framerates and refresh rate when the two are above 60, and disables v-sync when they dip below. This means that you’ll get screen tear and stutter when the framerate drops, but you won’t incur the same penalties as with leaving V-sync on.
What is Variable Refresh Rate?
Variable refresh rate monitors address the key tradeoff of V-sync: you need to synchronize a fixed framerate with a fixed monitor refresh rate. Variable refresh monitors feature display controllers that can vary the refresh rate, based on the rate that the GPU renders frames to the framebuffer.
So if your GPU’s framerate varies between, say 50, 51, and 57 frames per second (depending on the workload), your monitor will vary its refresh rate to ensure that frames are always displayed on time. You don’t have to deal with screen tear or the performance and latency implications of V-sync.
What are Freesync and G-Sync?
To be honest, they’re both basically the same, regardless of what AMD or Nvidia might tell you. Freesync and G-Sync are just the company-specific terms that the two GPU manufacturers use to refer to variable refresh rate support on their graphics cards. Different monitors support Freesync, G-Sync, or both. Only AMD graphics cards can use Freesync, while only Nvidia graphics cards can use G-Sync.
Read more here:
However, Nvidia’s G-sync Compatible program allows Freesync monitor users to try G-sync on an as-is basis. It may or may not work. One key difference between G-Sync and Freesync is that G-sync uses a hardware refresh rate scaler to handle variable refresh, while Freesync uses the monitor’s display controller. The additional scaler makes G-Sync monitor more expensive. They tend to have a higher range of refresh rates though.
What are Enhanced Sync and Fast Sync?
These are two proprietary terms for a software feature that does essentially the same thing on AMD and Nvidia cards. Fast sync/Enhanced sync is similar to triple buffering in that there are three framebuffers. However, instead of being accessed sequentially, the oldest buffer is always overwritten.
What this means is that the monitor is able to pick up frames at a consistent 60 FPS, while the GPU can spit them out as fast as possible, meaning V-sync will be engaged, even when the framerate is higher than the refresh rate. Why would you want to do this? The frame rate is tied to input latency, so even if there’s no additional visual smoothness associated with fast sync, you get quicker response times.
If you have a regular monitor and aren’t too concerned with input latency, it’s a good idea to just enable Adaptive V-Sync globally if you’re an Nvidia user. Enhanced Sync and Fast Sync sound good in theory. But unless your GPU is rendering frames at double or triple your monitor’s refresh rate, it can cause unpleasant micro-stuttering.
Avoid double-buffered V-sync when possible, and disable in-game V-sync as well, if you’re using the global setting. AMD users don’t get Adaptive V-sync out of the box. Enable it in games that ship with the feature. However, if you use RadeonPro, you can enable Dynamic V-Sync which does essentially the same thing. If you’re looking to buy a new monitor, it’s a great idea to get hold of a FreeSync panel. G-Sync is almost always more expensive and, thanks to the Fresync Compatible program, many Freesync monitors will work with Nvidia GPUs. As always, though, do your research first.