G-SYNC 101: In-game vs. External FPS Limiters


Closer to the Source*

*As of NVIDIA driver version 441.87, NVIDIA has made an official framerate limiting method available in the NVCP/App; labeled “Max Frame Rate,” which is a CPU-level FPS limiter, and as such, is comparable to the RTSS framerate limiter in both frametime performance and added delay. The NVIDIA framerate limiting solutions tested below are legacy, and their results do not apply to the “Max Frame Rate” limiter.

Up until this point, an in-game framerate limiter has been used exclusively to test FPS-limited scenarios. However, in-game framerate limiters aren’t available in every game, and while they aren’t required for games where the framerate can’t meet or exceed the maximum refresh rate, if the system can sustain the framerate above the refresh rate, and a said option isn’t present, an external framerate limiter must be used to prevent V-SYNC-level input lag instead.

In-game framerate limiters, being at the game’s engine-level, are almost always free of additional latency, as they can regulate frames at the source. External framerate limiters, on the other hand, must intercept frames further down the rendering chain, which can result in delayed frame delivery and additional input latency; how much depends on the limiter and its implementation.

RTSS is a CPU-level FPS limiter, which is the closest an external method can get to the engine-level of an in-game limiter. In my initial input lag tests on my original thread, RTSS appeared to introduce no additional delay when used with G-SYNC. However, it was later discovered disabling CS:GO’s “Multicore Rendering” setting, which runs the game on a single CPU-core, caused the discrepancy, and once enabled, RTSS introduced the expected 1 frame of delay.

Seeing as the CS:GO still uses DX9, and is a native single-core performer, I opted to test the more modern “Overwatch” this time around, which uses DX11, and features native multi-threaded/multi-core support. Will RTSS behave the same way in a native multi-core game?

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

Yes, RTSS still introduces up to 1 frame of delay, regardless of the syncing method, or lack thereof, used. To prove that a -2 FPS limit was enough to avoid the G-SYNC ceiling, a -10 FPS limit was tested with no improvement. The V-SYNC scenario also shows RTSS delay stacks with other types of delay, retaining the FPS-limited V-SYNC’s 1/2 to 1 frame of accumulative delay.

Next up is NVIDIA’s FPS limiter, which can be accessed via the third-party “NVIDIA Profile Inspector.” Unlike RTSS, it is a driver-level limiter, one further step removed from engine-level. My original tests showed the NVIDIA limiter introduced 2 frames of delay across V-SYNC OFF, V-SYNC, and G-SYNC scenarios.

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

Yet again, the results for V-SYNC and V-SYNC OFF (“Use the 3D application setting” + in-game V-SYNC disabled) show standard, out-of-the-box usage of both NVIDIA’s v1 and v2 FPS limiter introduce the expected 2 frames of delay. The limiter’s impact on G-SYNC appears to be particularly unforgiving, with a 2 to 3 1/2 frame delay due to an increase in maximums at -2 FPS compared to -10 FPS, meaning -2 FPS with this limiter may not be enough to keep it below the G-SYNC ceiling at all times, and it might be worsened by the NVIDIA limiter’s own frame pacing behavior’s effect on G-SYNC functionality.

Needless to say, even if an in-game framerate limiter isn’t available, RTSS only introduces up to 1 frame of delay, which is still preferable to the 2+ frame delay added by NVIDIA’s limiter with G-SYNC enabled, and a far superior alternative to the 2-6 frame delay added by uncapped G-SYNC.



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