How to enable FreeSync on amdgpu?

Thanks. Following another suggestion, I used the systool -vm amdgpu command to check its status: Initially it was reporting no freesync, after booting with the amdgpu.freesync_video=1 kernel parameter it now reports freesync_video = "1". I take it this means it should be enabled, though I can’t tell as the monitor’s OSD doesn’t label it… any way to be certain it’s really working?

There are methods of testing I saw when I looked at it, in the wiki article.

I tested it myself, unfortunately there is no real sync between the monitor and the AMD GPU, but the monitor OSD shows the same constant 120 Hz, it is not changed flexibly and not like changeable FPS from GPU (Less than maximum 120 FPS).
I see no screen tearing, but a bit of shuttering that I did not notice much.

I checked it on Windows that actually has sync between the monitor and GPU, both show same changeable FPS and Hz.

Did you try to enable it as instructed in the wiki article, instead of your “other suggestion”?

I enabled it for sure.

❯ systool -vm amdgpu | grep free
    freesync_video      = "1"

I am using dual monitors:

❯ xrandr --props | grep vrr                                                                                                                                                                                             
        vrr_capable: 1 
        vrr_capable: 1 
        vrr_capable: 0 
        vrr_capable: 0 

It looks that freesync is enabled, but only text, no real sync :man_shrugging:


I think it depends on the game driver if it can sync with the monitor refresh rate.

But most games don’t have it built or enabled for Linux.

I don’t think the “game” has anything to do with the freesync capability of the monitor. More documentation https://www.amd.com/en/support/kb/faq/gpu-754

I would try to follow the wiki article. I would also test following the three methods in the wiki article.

Also, maybe worth a verification as I see you have two outputs set to 1 and two set to 0

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.

Maybe also do as we ask to everyone, provide your system info following this post How to provide good information

Wait, I read that exact line in this documentation:

Limitation of AMD FreeSync on Linux

  • In multi-display configurations, FreeSync will NOT be engaged (even if both FreeSync displays are identical)

I am using the dual identical monitors. Oh Freesync does not support them.

There you go.

Same behavior again after testing one monitor. The monitor refresh rate Hz is always constant, this is independent of FPS from GPU, but FPS can be limited to maximum Hz. That is defined by vsync, unlike freesync.

vsync != freesync. I mean freesync can change the refresh rate of the monitor.

This?

  • For FreeSync to work in OpenGL applications, V-Sync must be turned ON. If V-Sync is OFF, flipping may not occur hence FreeSync will not be engaged. Please note that if the individual application does not have V-Sync options, you can set it globally by modifying /etc/amd/amdrc (change the parameter ‘OGLWaitVerticalSync’ from 1 to 3)

I turned on V-Sync in Dota 2, FPS can be limited to maximum FPS like the defined refresh rate of Monitor, but the refresh rate Hz is not changeable. (xxx FPS <= 120 Hz )

V-Sync is off, then no limit of FPS ( xxx FPS != 120 Hz )

Real freesync means (xxx FPS == xxx Hz)


(xxx FPS == xxx Hz), it is called Radeon Chill, what I was looking for.
https://www.amd.com/en/support/kb/faq/dh-033#faq-Configuring-Radeon-Chill :point_down:

For Radeon FreeSync™ capable displays:

  • The Chill Max value will match the peak refresh rate.
  • The Chill Min value will match the minimum refresh rate of the display’s FreeSync range or one-half of the display’s peak refresh rate, whichever is higher.

https://www.amd.com/en/technologies/radeon-software-chill :point_down:

Radeon Chill is an excellent match with a Radeon FreeSync™ technology capable display.

But it is for Windows only, not all games support this function.

There is no Radeon Chill for Linux:

The only way to use FreeSync with a multi-monitor setup is to use Wayland. Work fine in KDE Wayland for me (1x FreeSync Monitor, 2x Normal). Heard it works well with Sway as well.

Thank for the info, I knew it.
But I do not think that Wayland with Freesync (using Sway) can change the refresh rate of the monitor. It is just like V-Sync that can not change the refresh rate.
Xorg supports V-Sync well, no screen tearing.

To be clear about my own case: I’m on X11 (because monitor standby is endlessly broken in Wayland) but have just one monitor enabled as described. I have a VR headset connected, it’s disabled by the system to the point it doesn’t even show in the KDE display settings by default, thus this shouldn’t be a problem really. Obviously the games I’m testing are running in full screen, the desktop compositor gets disabled as well (can be seen by alt-tab switching).

I understand an extra command might be needed to enable it apart from the kernel parameter:

DISPLAY=:0 xrandr --output DisplayPort-0 --set "freesync" 1

I tried it out, 0 is the port my monitor is on as reported by xrandr. I am however met with an error about fonts and colors which I can’t quite understand.

X Error of failed request:  BadName (named color or font does not exist) 
  Major opcode of failed request:  140 (RANDR) 
  Minor opcode of failed request:  11 (RRQueryOutputProperty) 
  Serial number of failed request:  43 
  Current serial number in output stream:  43

I didn’t notice before you replied that Zesko actually hijacked your thread… I thought I was replying to you before :man_facepalming:

This issue was reported. But I do not mind that.

Semi-related to the issue but good to ask: Is it known when freesync will be considered stable and enabled by default on all graphics cards and monitors that support it? I understand it’s been added to the kernel for over two years, but even in 5.15 it’s an experimental feature still.

Manjaro also has an AMD experimental package users can install for such features. Might be worth considering support for this in its patches till then.

I think that Freesync is not enabled by default for Linux except V-Sync. It depends on GPU driver control and Game setting. You enable it manually, but it is like V-Sync.

You actually have V-Sync enabled already and see no screen tearing. Freesync uses V-sync. :man_shrugging:

I know that the key “freesync” does not exit in xrandr --properties, but there are other keys “TearFree”, “vrr_capable” , etc.

All keys are in xrandr --properties.

For example: DISPLAY=:0 xrandr --output DisplayPort-0 --set "TearFree" off

See the output of xrandr without error.

 xrandr --prop | grep TearFree 
        TearFree: off 
        TearFree: on 
        TearFree: on 
        TearFree: on 

You copied the command line from HOW TO ENABLE AMD FREESYNC, but it is old.

1 Like