G-SYNC 101: G-SYNC vs. V-SYNC w/FPS Limit


So Close, Yet So Far Apart

On the subject of single, tear-free frame delivery, how does standalone double buffer V-SYNC compare to G-SYNC with the same framerate limit?

Blur Buster's G-SYNC 101: Input Latency & Optimal Settings
Blur Buster's G-SYNC 101: Input Latency & Optimal Settings
Blur Buster's G-SYNC 101: Input Latency & Optimal Settings
Blur Buster's G-SYNC 101: Input Latency & Optimal Settings
Blur Buster's G-SYNC 101: Input Latency & Optimal Settings
Blur Buster's G-SYNC 101: Input Latency & Optimal Settings

As the results show, but for 60Hz (remember, a “frame” of delay is relative to the refresh rate), the numbers are relatively close. So what’s so great about G-SYNC’s ability to adjust the refresh rate to the framerate, if the majority of added input latency with V-SYNC can be eliminated with a simple FPS limit? Well, as the title of this section hints, it’s not quite that cut and dry…

While it’s common knowledge that limiting the FPS below the refresh rate with V-SYNC prevents the over-queuing of frames, and thus majority of added input latency, it isn’t without its downsides.

Unlike G-SYNC, V-SYNC must attempt to time frame delivery to the fixed refresh rate of the display. If it misses a single one of these delivery windows below the maximum refresh rate, the current frame must repeat once until the next frame can be displayed, locking the framerate to half the refresh rate, causing stutter. If the framerate exceeds the maximum refresh rate, the display can’t keep up with frame output, as rendered frames over-queue in both buffers, and appearance of frames is delayed yet again, which is why an FPS limit is needed to prevent this in the first place.

When an FPS limit is set with V-SYNC, the times it can deliver frames per second is shrunk. If, for instance, the FPS limiter is set to 59 fps on a 60Hz display, instead of 60 frames being delivered per second, only 59 will be delivered, which means roughly every second a frame will repeat.

As the numbers show, while G-SYNC and V-SYNC averages are close over a period of frames, evident by the maximums, it eventually adds up, causing 1/2 to 1 frame of accumulative delay, as well as recurring stutter due to repeated frames. This is why it is recommended to set a V-SYNC FPS limit mere decimals below the refresh rate via external programs such as RTSS.

That said, an FPS limit is superior to no FPS limit with double buffer V-SYNC, so long as the framerate can be sustained above the refresh rate at all times. However, G-SYNC’s ability to adjust the refresh rate to the framerate eliminates this issue entirely, and, yet again, beats V-SYNC hands down.



3890 Comments For “G-SYNC 101”

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Sort by:   newest | oldest | most liked
user2422
Member
user2422

In an earlier comment you mentioned that ULLM is somewhat inefficient compared to Reflex or a manual limit, if i were to use Gsync + Vsync + ULLM, would that starving of the max queued frames and the potential stutters that come with it even apply considering that ULLM is auto limiting the fps in this configuration? Like does it limit low enough to prevent this from even happening?

Also when using Gsync + Vsync and then only enabling ULLM via Inspector without setting max pre-rendered frames to 1 (which ULLM would’ve otherwise done if it was applied via NVCP or NVApp), would this then be just an auto limiter without the other effects of ULLM? I’ve tried this configuration in-game and the auto limit still applies but I’m unsure whether or not ULLM will have any other impact in this configuration.

eonjr
Member
eonjr

Hi, thank you for the guides! But I have something to ask. My laptop has a 300hz refresh rate that is also GSync compatible. I have it capped at 285 using a formula that I saw on a Reddit post a while ago (via NVIDIA APP > Max Frame Rate).

I unfortunately get this gray flickering during gaming but I can get used to it. However, what I cannot stand is, when I tried using editing software (like Adobe Premiere Pro), the flickering was also present despite me having turned off GSync specifically for that app (via NVIDIA App). Is there something I am doing wrong? What can be done to completely eliminate flickering for non-game apps?

HagenKL
Member
HagenKL

Hey, the article talks about GSync with the Module. Is the Behaviour the same for GSync Compatible (aka Freesync monitors?)

Apache3m
Member
Apache3m

Naturally, with MFG enabled, Reflex limits my FPS from 240 to 224; however, if I disable V-Sync in the Nvidia Control Panel, I hit 240 FPS with MFG on.

Mark Rejhon
Admin

It bears worth noting that 224 vs 240 is extremely small (1/224)-(1/240) = 0.3ms frametime difference. It’s more about geometrics (e.g. 200fps vs 400fps vs 1000fps) that is much more noticeable. It’s possible to have a much smoother 224fps and a much worse 240fps that looks rougher-motion than 224fps. It’s all in the microstutter/tearing mechanics, and how you prioritize visual fidelity. A great test is to strafe in CP2077 and watch for microstuttering/tearing. This is one of the ways to compare framepacing quality of VRR and capping mechanisms.

Those using VRR and framegen are often looking to improve smoothness without prioritizing on esports latency, so this is often prioritized for solo games like Witcher and CP2077. Turning off Reflex and still using VSYNC ON is another way to get 240fps with smoothness, but that increases latency dramatically on top of the latency that framegen gives, so it can veer into distraction territory.

Reflex + framegen + VRR is a good “acceptable-for-solo latency” compromise, and lagfeel can actually still feel similar to the original pre-framegen framerate (with latency countermeasured turned off).

Apache3m
Member
Apache3m

Hi – I have a setup with a 9800X3D and an RTX 5080, along with an MSI 321URX QD-OLED monitor.
Could you tell me what I should do when gaming with NVIDIA’s Frame Gen (MFG) enabled? Should I stick with the G-Sync + V-Sync + Reflex settings, or do you recommend something else?

wpDiscuz