New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
VariableRefresh - visibility, options #3903
Comments
For NVIDIA, you can turn on a visual indicator if gsync is used in compliance or compat mode, or if it not active. It works well for me with one display supporting it in compat mode and one does not. You may want to set the driver to force sync with that VRR monitor you're primarily using for games instead of letting it auto select one. But even without the indicator, the difference is clearly visible. |
Have Vega 64; 4 displays, out of which only 1 is FreeSync compatible. Also it seems to be active on xorg side:
BUT, if any game is actually using it also like in game, is still questionable. Or what might prevent it from being used. Like do I need to set vsync ON or not; do I need to put the game into true fullscreen mode or is the windowed fullscreen enough; does it work in OpenGL only still or it's working now also in Vulkan; does it work with Proton via DXVK or something else? |
As far as I can tell, vsync in games needs to be on, otherwise the dynamic refresh rate doesn't kick in. Or you need to use triple buffering, that may also work. But double buffering without vsync on cannot not work for dynamic refresh rates as far as I understand it. Exclusive fullscreen mode is most likely to work best. In windowed mode the compositor may still control refreshing and vsync, and the game cannot control it, your compositor may decide to turn vsync off. In theory, the fshack in Proton will bypass the compositor once you enter exclusive fullscreen mode or borderless window fullscreen mode. If playing in a window, the vsync and refresh is up to the compositor, the same is true when you instruct the graphics driver to force a composition pipeline (which can be done in the NVIDIA driver). Just in case, you may want to check if your compositor (most of the times that's also your window manager) uses vsync - and you may want to enable / force that. It should be independent of any graphics API used, as long as vsync is on (or triple buffering for that matter, I didn't confirm that, in theory it should work for VRR). Tho, I can only speak for DXVK and Vulkan games. You can check if it is working with an FPS counter: If you're seeing tearing, VRR does not work, and vsync is off or overridden. If you're seeing no tearing but your FPS are locked at either 30 or 60 fps, VRR is not working but vsync is. For testing, you should use graphic settings that perform below 60 fps so you don't end up being locked at the maximum frequency of the monitor anyways, or this test does tell you nothing. Try to find a setting that is at around 45 fps without vsync, then turn vsync on. If you're locked at 30 fps now, VRR is not working. Hint: In-game benchmarks sometimes turn vsync off, so that's not a good test most of the times. |
Feature Request
I confirm:
contain this feature already.
Description
VariableRefresh / FreeSync / G-Sync is a complicated beast in linux. There is very little good advice how to enable it, how to enable it on selected 1 display out of N displays (out of which most even not might support VRR). Does it even work in this manner or do you need to disconnect all other non-freesync monitors for it to work? How to enable it in different environments - vulkan, dxvk, gl or whatever etc. etc. Do you need to run the game in Fullscreen mode or is borderless window good enough? Some way to detect what checks or toggles you are missing for it to be on if it's not?
There is no good proof it actually is working (besides your own eyes, which can see whatever you want to see, but not necessarily give you the right answer; and if you are lucky then your hardware monitor settings gui will also show current refresh being variable.).
I understand if this would be way out of Proton scope, but ... can something be done? At least give us HUD overlay option saying if it's ON or OFF right now for the current game. Better if also things that prevent it from working right now. Better yet, if you somewhere give us options to let us force it on or detailed information and commands/script to do so.
Justification [optional]
Because Proton is more gaming oriented? Or maybe it could be integrated into Steam for linux directly? dxvk project? Frankly I have no idea under which tree to bark about this.
The text was updated successfully, but these errors were encountered: