Skip to content
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

Open
2 tasks done
D33M0N opened this issue May 23, 2020 · 3 comments
Open
2 tasks done

VariableRefresh - visibility, options #3903

D33M0N opened this issue May 23, 2020 · 3 comments
Labels
Feature Request New feature or request

Comments

@D33M0N
Copy link

D33M0N commented May 23, 2020

Feature Request

I confirm:

  • that I haven't found another request for this feature.
  • that I have checked whether there are updates for my system available that
    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.

@kisak-valve kisak-valve added the Feature Request New feature or request label May 23, 2020
@kakra
Copy link
Contributor

kakra commented Jul 19, 2020

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.

@D33M0N
Copy link
Author

D33M0N commented Jul 19, 2020

Have Vega 64; 4 displays, out of which only 1 is FreeSync compatible. Also it seems to be active on xorg side:

$ grep -i variablerefresh /var/log/Xorg.0.log
[    13.973] (**) AMDGPU(0): Option "VariableRefresh" "true"
[    14.137] (**) AMDGPU(0): VariableRefresh: enabled

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?

@kakra
Copy link
Contributor

kakra commented Jul 19, 2020

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature Request New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants