Variable refresh rate
Variable refresh rate (VRR), also referred to as adaptive sync, allows the monitor to adjust its refresh rate to the output signal. This allows for games to eliminate screen tearing with less of the usual downsides of Vsync (such as stuttering). For a comprehensive look at VRR see PC Gaming Wiki.
There are multiple implementations of VRR:
- FreeSync is AMD's implementation of VESA's VRR standard, and the phrases are often used interchangeably. FreeSync branded monitors should be compatible with all VESA compatible drivers.
- Gsync is NVIDIA's proprietary hardware and software implementation of VRR.
- Intel plans on implementing VESA's standard in their upcoming 11th Gen and dedicated GPUs. 
VRR compatibility and implementations
|Nouveau||Not Supported||Not Supported|
Enable on AMDGPU
If you are using a laptop, you can check if your laptop is compatible with FreeSync.
Using an Xorg conf file
Add the line to your AMDGPU .conf file in the
Section "Device" block:
Option "VariableRefresh" "true"
Verify vrr_capable is set to 1 using xrandr:
$ xrandr --props
vrr_capable: 1 range: (0, 1)
xrandr will show the properties for all video output ports; make sure to look at the one that's actually connected to your monitor - the other outputs will report vrr_capable: 0.
Enable on NVIDIA
Using a Xorg conf file
Gsync monitors should automatically be enabled. To enable Gsync compatible monitors do the following:
- In go to the "X Server Display Configuration" page, then under the Advanced button is the option to "Allow G-SYNC on monitor not validated as G-SYNC Compatible". Then click apply.
- Now, under OpenGL settings, check "Allow Gsync/Gsync Compatible."
Sway supports variable refresh rate as of version 1.5. To enable it for all of your outputs you can add the following to the sway config, or apply the setting to on a per output basis:
output * adaptive_sync on
You can verify that your display supports adaptive sync with swaymsg:
$ swaymsg -t get_outputs
Output DP-1 'Display Name' Adaptive sync: enabled
VRRTest is a simple testing tool which should work for FreeSync and G-Sync. Install package, clone repository, then run
$ love /path/to/cloned/repository. With VRR off, if the application's FPS is less than the monitor's native refresh rate then the bars will stutter a lot since frames are being skipped. With VRR active, the bars will always move smoothly across the screen since the screen's refresh rate will match the application's refresh rate. Even with VRR functional you may experience tearing in which case you can also enable the TearFree option for AMDGPU; with both enabled there should be neither stuttering nor tearing (what is the nvidia equivalent?).
If you are using a Nvidia GPU, you can test Gsync compatibility with Readme for more information.AUR. This program will allow you to test VRR and Vsync so you can observe resulting effects. See project's
According to this page: "gl-gsync-demo is made with G-SYNC but that does not matter, it will test AMD adaptive sync just fine". However, it may still not work as expected for FreeSync testing.
Change VRR Range of a FreeSync Monitor
Freesync monitors usually have a limited range for VRR that are much lower than their max refresh rate. It should be possible to overclock the monitor to change the Freesync range.
Editing the EDID File
External Display Identification Data (EDID) stores driver information about your monitor. By default, this file is sent by your monitor and read on connect. You will need to extract this file using something likeor .
You can edit this file withAUR
Process of overclocking on Linux (works only on NVidia GPUs): 
Section "Screen" Identifier "Screen0" Device "nvidia" # e.g. Radeon, nvidia Monitor "DP1" Option “CustomEDID” “MONITOR:/home/USER/Desktop/modified-edid.bin” EndSection
Tips and Tricks
Remove applications from Blacklist
Mesa has a list of blacklisted applications to avoid unexpected behavior, you can edit this blacklist here:
- Wayland is not supported yet outside of Sway (AMD GPUs only).
- The monitor must be plugged in via DisplayPort. Some displays which implement (part of) the HDMI 2.1 specification also support VRR over HDMI. This is supported by the Nvidia driver and will likely be supported by the AMD driver in the future. Probably, it will be supported in kernel 5.12, see this phoronix article for more info.
- If you want to use Gsync and possibly Freesync (except when using Freesync in Sway on Wayland), only the Gsync/Freesync monitor must be connected
- Multiple monitors in a single X display will break Gsync/Freesync
- If you want to use multiple monitors and still use Gsync/Freesync, you can create a new X display which only covers the Gsync/Freesync monitor and run games there
- Compositors will most likely need to be disabled before the OpenGl/Vulkan program is started.
- On X11, Mesa blacklists many applications including video players.
- Although tearing is much less noticeable at higher refresh rates, FreeSync monitors often have a limited range for their VRR of 90Hz, which can be much lower than their max refresh rate. See Change VRR Range of a FreeSync Monitor.