FreeSync, also known as Variable Refresh Rate (VRR) is a technology that prevents the tearing of images on screen.

The refresh rate of the monitor is adjusted to the framerate produced by the GPU, thus, screen tearing is eliminated as e.g. with V-Sync or triple buffering, but usually with much less latency.

You create the file /usr/local/etc/X11/xorg.conf.d/amdgpu.conf and write the following to it:

If you want to use the modesetting driver by xorg-server instead of xf86-video-amdgpu, use modesetting in Driver instead.

Section "Device"

Identifier "Card0"

Driver "amdgpu"

Option "VariableRefresh" "true"

EndSection

Run xrandr --prop provided by x11/xrandr

This will list all connections with all their capabilities and vrr_capable: 1 should then appear at the connection that you want to use.

Example:

DisplayPort-1 connected 2560x1440+0+0 (normal left inverted right x axis y axis) 697mm x 392mm
	EDID:
		00ffffffffffff004c2dde0f35305630
		271d0104a54627783b4935ad5146a927
		0f5054bfef80714f810081c081809500
		a9c0b300010122e50050a0a067500820
		f80cb9882100001a000000fd003090e1
		e13b010a202020202020000000fc0043
		33324a4735780a2020202020000000ff
		0048544f4d3930303530360a20200141
		020313f146901f041303122309070783
		010000565e00a0a0a0295030203500b9
		882100001a023a801871382d40582c45
		00b9882100001e5aa000a0a0a0465030
		203500b9882100001a6fc200a0a0a055
		5030203500b9882100001a0000000000
		00000000000000000000000000000000
		000000000000000000000000000000af
	GAMMA_LUT_SIZE: 4096
		range: (0, -1)
	DEGAMMA_LUT_SIZE: 4096
		range: (0, -1)
	GAMMA_LUT: 0
		range: (0, 65535)
	CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
		0 1
	DEGAMMA_LUT: 0
		range: (0, 65535)
	TearFree: auto
		supported: off, on, auto
	subconnector: Native
		supported: Unknown, VGA, DVI-D, HDMI, DP, Wireless, Native
	vrr_capable: 1
		range: (0, 1)
	max bpc: 8
		range: (8, 16)
	underscan vborder: 0
		range: (0, 128)
	underscan hborder: 0
		range: (0, 128)
	underscan: off
		supported: off, on, auto
	scaling mode: None
		supported: None, Full, Center, Full aspect
	link-status: Good
		supported: Good, Bad
	CONNECTOR_ID: 76
		supported: 76
	non-desktop: 0
		range: (0, 1)
   2560x1440    144.00*+ 120.00    99.95    59.95
   1920x1200    144.00
   1920x1080     60.00    50.00    59.94
   1600x1200    144.00
   1680x1050     59.95
   1600x900      60.00
   1280x1024     75.02    60.02
   1440x900      59.89
   1280x800      59.81
   1152x864      75.00
   1280x720      60.00    50.00    59.94
   1024x768      75.03    70.07    60.00
   832x624       74.55
   800x600       72.19    75.00    60.32    56.25
   720x576       50.00
   720x480       60.00    59.94
   640x480       75.00    72.81    66.67    60.00    59.94
   720x400       70.08

Try playing games where you know tearing can occur, or check your monitor's OSD to see if the refresh rate changes (if the monitor provides it).

Example from an Alienware OSD:

If you have a game where the framerates jump back and forth too often in large intervals and also between the FreeSync ranges, the image can sometimes flicker.

The reason for this is the Low Framerate Compensation (LFC) feature:

This ensures that the framerates still look smooth even when the framerates are below the FreeSync range.

There are a few ways to solve this:

  • Limit the framerate in the FreeSync range and/or enable triple buffering which also help to keep the framerate stable.
  • Adjust the graphics settings to get the desired framerate.
  • FreeSync only works if no compositor is active and if the game window is “Fullscreen” or “Borderless Windowed”.
  • FreeSync should not be used together with “TearFree” “On”. Leave it on “auto” or don't define it.
  • x11-wm/enlightenment offers a feature that fullscreen windows are not composited, but it doesn't seem to work correctly. It works as intended when you restart the WM while you are in the game window by using a shortcut key combination. Last tested version: 0.25.3,2

  • alexandervereeken/freesync.txt
  • Last modified: 2023/08/09 10:28
  • by ducky