Question about traditional V-sync

Marshall Hurtado

Honorable
Jun 28, 2013
106
11
10,690
If I manage to achieve a minimum of 80fps on say Skyrim with no mods on ultra, no aa as well, considering i only have a 60hz monitor, would it drop down to 30 at times for no reason? i mean i know vsync isnt the best technology (thank god for gsync coming out) but would it just hover at 60? i was reading certain benchmarks on some cards and obviously the turn off vsync for benchmarks, but would i still achieve that 60 minimum? i wouldnt want it to drop down to 30 for half a second.


i also use Radeon Pro for Dynamic V-Sync which actually works for me, so if that has anything to do with it id imagine id be getting 60fps minimum
 
Solution


VSync stands for Vertical Synchronization. This is most commonly assumed to mean that the framerate is...


VSync stands for Vertical Synchronization. This is most commonly assumed to mean that the framerate is capped to the refresh rate of the monitor. While that is true, the technical details are a bit more telling of what's actually going on.

Display data is driven from left to right and top to bottom. Data is piped sequentially from the frame buffer in real time to the display regardless of whether or not the GPU's render components are keeping up with it. A 1920x1080x60hz display receives a constant stream of data from the GPU regardless of the game's level of detail or frame rate. Furthermore, the display resolution isn't explicitly set by the GPU, it's encoded into the data stream using a number of signals and timings. There are 3 non-data signals which are used to get everything playing nicely:

1. The Pixel Clock. This is an oscillating reference clock that synchronizes the data samples as they are passed between the GPU and the Display

2. Horizontal Sync. This signals the end of each line. When the display picks up this signal it rolls over to the beginning of the next line and starts displaying incoming data on that line instead. Since these same signals are used to drive CRTs which have a real time delay in electron scanning, each HSync is followed by a small period of non-transmission known as the horizontal blanking period.

3. Vertical Sync. This signals the end of each frame. When the display picks up this signal it rolls over to the beginning of the next frame (starting at the top left). Just like HSync, VSync is followed by a small period of non-transmission known as the vertical blanking period.

The number of clock cycles between the start of a horizontal line and the HSync signal can be used to determine the horizontal resolution, and the number of HSync signals between the start of a frame and the VSync signal can be used to determine the vertical resolution. The Vsync signals are compared against an internal oscillator to determine the refresh rate. On old CRT televisions the AC line was used as the oscillating reference, leading to incompatibilities between 60Hz North American and 50Hz Europe.

The "VSync" option in game simply ensures that the frame buffer that the video signal generator (VGA/DVI/HDMI) only ever contains a complete frame. If the signal generator reads pixel data from the frame buffer at a different rate than the ROPs writes pixel data into the frame buffer then at some point either the signal generator will read ahead of the ROPs or the ROPs will write ahead of the signal generator. When this occurs the frame that is being displayed will be comprised of two partial frames rather than one complete frame. When VSync is enabled, the GPU will wait for a complete frame to be written to the buffer before it begins sending that frame to the output. This has the effect of ensuring that the GPU never writes to the frame buffer (it does so only in the vertical blanking period) faster than the frame is sent to the display. As a consequence, the frame rate will never exceed the refresh rate of the display.

Moving on...

Skyrim is a bad example to use for VSync because the phsyics engine in Skyrim requires that VSync be enabled. Turning VSync off in Skyrim is only possible through driver modifications or INI file modifications. It is not possible to do so through the in game menus.
 
Solution