FreeSync

There are issues with DRM 6.1 regarding functionality of FreeSync, see PR 277558

This article currently only covers the traditional way while its also possible to use HDMI or other vendors instead of AMD for example.

If you are have such an working setup then it would be nice if this article could be extended.

Introduction

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 adapted to the frame rate produced by the GPU so that no screen tearing occurs.

The big advantage is that there are no delays as with VSync, for example. In addition, games that have a very poor or unstable frame rate (to a certain degree) can still look smooth.

Requirements

How to enable FreeSync

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

Verifying that FreeSync is Enabled

Run xrandr --prop provided by x11/xrandr

This lists all connections with all their capabilities and vrr_capable should be set to 1 for the connection you want to use. If it is set to 0 then FreeSync is not enabled on your monitor.

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

Checking if FreeSync Works

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:

AlienWare OSD FreeSync Check.png

Disabling the Compositor

For technologies such as FreeSync to work properly, the games must address the GPU directly, i.e. the image shouldn't go through a compositor first. (Known as fullscreen window unredirect.)

But also in general it is important that the compositor is off when you play something, as this affects the performance and delay somewhat.

The following lists are incomplete.

List of environments/window managers that allow to or automatically turn off the compositor when an application is in full screen mode:

¹ Works only partially or not at all.

List of environments/window managers that dont use a compositor by default:

Screen Flickering

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

The intensity of that flickering depends on the model. With some models it can even happen that frame drops occur, so it is advisable to solve this directly.

To solve this: Limit the frame rate to your refresh rate, if the game has no framelimiter then enable Vsync. If the game is unstable inside the FreeSync range then try to enable some functions such as triple buffering or frame smoothing.

If nothing helps, the game must be run in windowed mode so that it FreeSync gets not used.

Notes


CategoryHowTo

AlexanderVereeken/FreeSync (last edited 2024-03-28T07:26:02+0000 by AlexanderVereeken)