Add "Variable Refresh Rate" setting
Context
Background
Variable Refresh Rate (VRR), also known as Adaptive-Sync (VESA) or FreeSync (AMD), is a display technology that allows adjusting the refresh rate of monitors dynamically so that it matches the frame rate of the content being presented. Each monitor has a different range of refresh rates that it can support (48Hz-144Hz, 30Hz-60Hz, etc.) and the OS is given the option to adjust it as necessary. Taking full advantage of the technology allows significant reduction in perceived stutter, lower input latency, less missed frames and lower power usage.
Challenges
Implementing the technology in a way that handles every possible scenario of displayed content can be challenging (if not impossible) due to software and hardware challenges. In some cases, enabling VRR can actually degrade the user experience. In Linux specifically, additional kernel work and possibly a Wayland protocol are required to better handle a few common cases well (e.g., cursor movement and passively-updating applications).
The challenges around the technology and potential solutions were recently discussed in the "Shell & Display Next" hackfest in Brno, Czech Republic. See:
- https://blogs.gnome.org/shell-dev/2023/05/04/vivid-colors-in-brno
- https://emersion.fr/blog/2023/hdr-hackfest-wrap-up
Settings UI - Motivation and status quo
While we would like to be able to enable VRR unconditionally eventually, this is admittedly a long-term plan due to the aforementioned software and hardware challenges. This situation not unique to GNOME, either.
Currently, desktop environments that have support for VRR also offer a graphical UI in their respective Settings applications that shows whether VRR is enabled for a monitor and allows enabling or disabling it. There are a few reasons for this.
Correctness
Settings applications (including g-c-c) usually offer the ability to set a fixed refresh rate for each monitor. However, with VRR enabled the refresh rate is no longer fixed; this should be reflected in the UI.
Visual feedback
Monitors with support for VRR are more widespread these days, but many users still need upgrade their existing monitor or buy a more expensive monitor to get access to it. For such users, it's important to offer visual feedback that the technology is actually used (or not used) in their desktop environment.
Compatibility
Even with the best software solution, VRR is not guaranteed to work well for every use case and with every hardware. Not providing the option to disable VRR would do a disservice to users.
Plan for GNOME
There are work-in-progress MRs to support VRR in GNOME, initially as an experimental feature. See:
- Mutter: mutter!1154 (merged)
- Settings: !734 (merged)