Freesync not working with new GPU, but works with older GPU and other distros

I’ve got an interesting problem I can’t solve on openSUSE Tumbleweed. I recently upgraded from an AMD RX 580 graphics card to an AMD RX 6800 XT. My monitor is an HP Omen 27i, which supports Freesync (AMD’s variable refresh rate, or VRR, implementation), and is connected via DisplayPort. The monitor’s OSD indicates that adaptive sync is enabled. I am using the amdgpu driver and an X11 Plasma 5 session. My refresh rate is 165 Hz. This is my only monitor.

I cannot seem to get Freesync to work. My monitor’s OSD framerate always shows 165, even while running VRRTest and lowering the framerate or when running a game with the framerate limited to below 165. I have confirmed that the compositor is disabled while doing these. I’ve checked the Arch Wiki and have no idea what else to try.

This exact setup worked with my RX 580. In fact, I’ve turned off the computer, plugged the RX 580 back in, rebooted, and it works. It’s not a hardware problem, as I’ve tested live images of Kubuntu 21.04, Fedora 34’s KDE Spin, and Manjaro, and all worked fine by creating the appropriate amdgpu.conf file and logging out and in. I can’t, however, get it working with an openSUSE Tumbleweed live image (I create the amdgpu.conf file, install the xf86-video-amdgpu package, and reboot, but Freesync still won’t work).

My /etc/X11/xorg.conf.d/20-amdgpu.conf file is as follows:

Section "Device"  
     Identifier "AMD"  
     Driver "amdgpu"  
     Option "TearFree" "true"  
     Option "VariableRefresh" "true"  
EndSection

I’ve tried removing the TearFree option and it doesn’t solve the problem.

Running xrandr --props shows vrr_capable 1.

/var/log/Xorg.0.log contains the lines

     8.124] (**) AMDGPU(0): Option "VariableRefresh" "true"

and

     8.211] (**) AMDGPU(0): VariableRefresh: enabled

So it seems like everything is correct, but Freesync just isn’t working.

I’m on Mesa 20.3.4-272.4 and Kernel 5.11.4-1-default. No updates available. I don’t have any wacky repositories that should be causing problems, just Packman. It’s been suggested I wait for the new Mesa release, but that really shouldn’t be the problem given that it works on these other live images without Mesa 21.

Does anyone have any ideas or know what the problem might be? Thanks!

It gets odder. I installed the openSUSE’s Sway pattern. VRR works fine in Sway, which might not be surprising given it’s Wayland. But when I log out of Sway and into an X11 Plasma 5, VRR works in Plasma. For whatever reason, the framerate stays at 48 Hz (the bottom of the monitor’s Freesync range, if it’s relevant) on the desktop when just moving the cursor, but if, e.g., dragging a window, it jumps to 165 Hz like it’s supposed to. This functionality doesn’t persist after a reboot.

I’m stumped, but I’ve learned that Sway is nice (multihead Freesync!), and I love that openSUSE has a pattern for it.

Bug report is needed.

Bug report filed.

Thanks for that. One nice takeaway from all this has been seeing how nice an experience Sway is on openSUSE. In addition to all the niceties of Wayland, like no tearing and multihead VRR support, the pattern and configuration files are outstanding.

Check whether you have files sienna_cichlid*.bin (Navi21) in

/lib/firmware/amdgpu/

Another ones are navy_flounder*.bin.

ls /lib/firmware/amdgpu/ | grep sienna_cichlid 
sienna_cichlid_ce.bin.xz 
sienna_cichlid_dmcub.bin.xz 
sienna_cichlid_me.bin.xz 
sienna_cichlid_mec2.bin.xz 
sienna_cichlid_mec.bin.xz 
sienna_cichlid_pfp.bin.xz 
sienna_cichlid_rlc.bin.xz 
sienna_cichlid_sdma.bin.xz 
sienna_cichlid_smc.bin.xz 
sienna_cichlid_sos.bin.xz 
sienna_cichlid_ta.bin.xz 
sienna_cichlid_vcn.bin.xz

Nothing for navy_flounder, but that’s 6700 XT and it was just pushed to linux-firmware.git hours ago.

navy_flounder* was in amdgpu-pro 20.40.

You need sienna_cichlid_*.bin without *.xz. Unpack files. Then delete *.xz files.

Finally been able to do this and some other testing. It has no effect.

Hi
I have the 20.50-1232446 amdgpu-pro driver (only legacy/rocm and RX550) perhaps the firmware files from this release may be better?

Have you checked pci id numbers on the card against the amdgpu module?


/sbin/lspci -nnk | egrep -A3 "VGA|Display|3D"
/sbin/modinfo amdgpu | grep <The PCI ID's from Above>
/sbin/modinfo amdgpu | grep "sienna"

Maybe. I’d like to stay on the FOSS driver though, and again this works fine on other current distros.

I haven’t. Please let me know if all of the middle commands with no output were wrong, it wasn’t obvious from the output or the man page which of these was the PCI ID.

lspci -nnk | egrep -A3 "VGA|Display|3D" 
03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] [1002:73bf] (rev c1)     
     Subsystem: Tul Corporation / PowerColor Device [148c:2406] 
     Kernel driver in use: amdgpu     
     Kernel modules: amdgpu
modinfo amdgpu | grep "03:00.0"
modinfo amdgpu | grep "0300"
modinfo amdgpu | grep "1002:73bf"

(no output)

modinfo amdgpu | grep "sienna" 
firmware:       amdgpu/sienna_cichlid_ta.bin 
firmware:       amdgpu/sienna_cichlid_sos.bin 
firmware:       amdgpu/sienna_cichlid_rlc.bin 
firmware:       amdgpu/sienna_cichlid_mec2.bin 
firmware:       amdgpu/sienna_cichlid_mec.bin 
firmware:       amdgpu/sienna_cichlid_me.bin 
firmware:       amdgpu/sienna_cichlid_pfp.bin 
firmware:       amdgpu/sienna_cichlid_ce.bin 
firmware:       amdgpu/sienna_cichlid_sdma.bin 
firmware:       amdgpu/sienna_cichlid_mes.bin 
firmware:       amdgpu/sienna_cichlid_vcn.bin 
firmware:       amdgpu/sienna_cichlid_smc.bin 
firmware:       amdgpu/sienna_cichlid_dmcub.bin

Hi
The alias is capitalized :wink:


/sbin/modinfo amdgpu | grep 73BF

alias:          pci:v00001002d000073BFsv*sd*bc*sc*i*

So it’s there, a good thing…

This firmware is missing from a comparison of the firmware required, vs what I see in /lib/firmware/amdgpu on my system;


firmware:       amdgpu/sienna_cichlid_mes.bin 

Not here either, suggest you update the bug report…

https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/amdgpu

Thanks so much, this is really helpful! I’ve updated the bug report referring to this thread and the sienna_cichlid_mes.bin file.

Hi
Check the output of journalctl -b to see if it complains about missing firmware as well.

https://github.com/Umio-Yasuno/unofficial-amdgpu-firmware-repo

Nothing about missing graphics firmwares, amdgpu errors, variable refresh rates, etc.

I added in the missing file from here, no luck. I also booted into the latest Kubuntu 21.04 build to check their firmwares, and they also don’t have it but VRR works fine, so it’s not that.

Maybe there’s a kernel parameter or something?

Hi
On the Ub* system run;


systool -vm amdgpu
uname -a

In the systool output look at the Parameters section. Also check the Ub* grub commandline settings, any amdgpu.* added?

The only differences in the parameters section are that openSUSE has a few additional lines compared to Kubuntu 21.04:


gartsize            = "4294967295"
gttsize             = "-1"
moverate            = "-1"
vramlimit           = "0"

None of those look like they’d affect VRR.

Kernels:


Linux [my hostname] 5.11.6-1-default #1 SMP Thu Mar 11 16:11:36 UTC 2021 (7358b30) x86_64 x86_64 x86_64 GNU/Linux
Linux kubuntu 5.11.0-13-generic #14-Ubuntu SMP Fri Mar 19 16:55:27 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

There’s nothing in either distro’s /etc/default/grub or the GRUB commandline at boot about amdgpu.