3
\$\begingroup\$

A game which enables VSync means that the game frames get synchronized to the monitor's refresh rate (to avoid tearing).

A variable refresh rate monitor means that the monitor refresh rate gets synchronized to the game's ability to display frames.

The way I see it, VSync is only meaningful when there's a fixed frame rate monitor, yet many games allow me to enable VSync when I'm on a variable refresh rate monitor. I don't really see a difference between VSync off and on in such a case.

What does it even mean to have VSync on, on a variable refresh monitor? And by extension, what's the user's expectation when they enable VSync on a variable refresh monitor?

If anything, I'm on D3D12.

\$\endgroup\$

1 Answer 1

2
\$\begingroup\$

With regards to the DX API, your intuition is correct. Variable refresh rate (vrr) displays require tearing to be enabled, meaning Vsync is off. Conversely if Vsync is on, you no longer have a variable refresh rate. So the expectation should be that enabling VSync on a variable refresh monitor caps the refresh rate. This assumes that doing so is supported - ideally if it wasn't supported then it probably shouldn't be an option presented to the user.

Microsoft has some documentation & examples for supporting variable refresh rate displays, including a few points not explicitly called out in their sample code that may require specific attention. In particular, they point out that

Disabling vsync does not necessarily uncap your frame rate: developers also need to make sure Present calls are not throttled by other timing events...

Regarding Nvidia's control panel settings, things are different. When used with G-Sync (Nvidia's implementation for vrr), the "Vertical sync" option in the control panel no longer acts as V-Sync on/off. When used together the to G-Sync module will compensate for frame time variances output by the system and will fall back on fixed refresh rate if the output exceeds the monitor's upper range. More info on that specifically can be found under this FAQ (in the section "Wait, why should I enable V-SYNC with G-SYNC again? And why am I still seeing tearing with G-SYNC enabled and V-SYNC disabled? Isn’t G-SYNC suppose to fix that?"). Again, this is with regards to how the end user configures Nvidia's control panel whereas the earlier info is with respect to how DX configured by the programmer.

\$\endgroup\$
4
  • \$\begingroup\$ I didn't interpret your question to include asking how to vrr / vsynch-off, so I didn't recap that part of the docs. If I misunderstood & you feel that would beneficial info to include, let me know & I'll edit accordingly. \$\endgroup\$
    – Pikalek
    Commented Sep 25, 2023 at 19:37
  • 2
    \$\begingroup\$ "If VSync is on, you no longer have a variable refresh rate." - I think this conflicts with information given from NVIDIA. With G-Sync they use the V-Sync setting in their control panel to infer what the behaviour should be when FPS is greater than refresh rate, which means framerate can be optionally capped by the VSync setting even when G-Sync is enabled. I'm not sure if AMD does something similar. \$\endgroup\$
    – Romen
    Commented Sep 25, 2023 at 20:11
  • 2
    \$\begingroup\$ @Romen I found a reference for that - from what I understand, that has to do with how the hardware setting affect the monitor's behavior whereas the DX docs are referring to how renderer should behave. So I don't think there's a contradiction but it probably warrants a clarification. \$\endgroup\$
    – Pikalek
    Commented Sep 25, 2023 at 21:45
  • \$\begingroup\$ Interesting that the Nvidia stuff basically contradicts the Microsoft documents. Do you have any information for AMD FreeSync? I'll keep on looking myself, but if you know something, it would be appreciated. \$\endgroup\$ Commented Sep 26, 2023 at 2:31

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .