How can I enable VRR on AMDGPU KDE X11?

Hello Garuda users.

I am wondering if anyone knows how to enable variable refresh rate on AMDGPU in KDE Plasma X11 please?

I have followed the ArchWiki but still no luck after I add

Option "VariableRefresh" "true"

To the /usr/share/X11/xorg.cong.d/10-amdgpu.conf file

type or paste code here

I also have the kernel parameter amdgpu.freesync_video=1 set so freesync is enabled as I get

[🔴] × systool -vm amdgpu | grep free
freesync_video      = "1"

But I keep getting the following on reboot
vrr_capable: 0
I can set it to 1 manually
DISPLAY=:0 xrandr --output HDMI-A-1 --set "vrr_capable" 1

Not sure what I am missing

garuda-inxi
System:
Kernel: 6.4.8-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
root=UUID=268fc465-6b64-4b70-80a7-498d22cc24d5 rw rootflags=subvol=@
quiet quiet amdgpu.freesync_video=1 rd.udev.log_priority=3
vt.global_cursor_default=0
resume=UUID=2e2d0ab6-f6a2-4710-98e2-bdb05e0b6b7f loglevel=3
Desktop: KDE Plasma v: 5.27.7 tk: Qt v: 5.15.10 wm: kwin_x11 vt: 2
dm: SDDM Distro: Garuda Linux base: Arch Linux
Machine:
Type: Desktop System: Gigabyte product: X570 AORUS MASTER v: -CF
serial: <superuser required>
Mobo: Gigabyte model: X570 AORUS MASTER serial: <superuser required>
UEFI: American Megatrends LLC. v: F37b date: 02/08/2023
Battery:
Device-1: hidpp_battery_0 model: Logitech Craft Advanced Keyboard
serial: <filter> charge: 100% (should be ignored) rechargeable: yes
status: full
Device-2: hidpp_battery_1 model: Logitech Wireless Mouse MX Master 3
serial: <filter> charge: 100% (should be ignored) rechargeable: yes
status: discharging
CPU:
Info: model: AMD Ryzen 9 3950X bits: 64 type: MT MCP arch: Zen 2 gen: 3
level: v3 note: check built: 2020-22 process: TSMC n7 (7nm)
family: 0x17 (23) model-id: 0x71 (113) stepping: 0 microcode: 0x8701030
Topology: cpus: 1x cores: 16 tpc: 2 threads: 32 smt: enabled cache:
L1: 1024 KiB desc: d-16x32 KiB; i-16x32 KiB L2: 8 MiB desc: 16x512 KiB
L3: 64 MiB desc: 4x16 MiB
Speed (MHz): avg: 3736 high: 4300 min/max: 2200/4761 boost: enabled
scaling: driver: acpi-cpufreq governor: performance cores: 1: 3772 2: 3500
3: 3791 4: 3600 5: 3500 6: 4300 7: 3500 8: 3743 9: 3500 10: 3815 11: 3500
12: 3820 13: 4235 14: 4234 15: 3710 16: 3740 17: 3764 18: 4254 19: 3500
20: 3689 21: 4246 22: 3500 23: 4172 24: 3500 25: 3812 26: 3500 27: 3856
28: 3500 29: 3500 30: 3500 31: 3500 32: 3500 bogomips: 224014
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
Vulnerabilities: <filter>
Graphics:
Device-1: Blackmagic Design DeckLink Quad HDMI Recorder driver: N/A pcie:
gen: 3 speed: 8 GT/s lanes: 4 link-max: lanes: 8 bus-ID: 05:00.0
chip-ID: bdbd:a14e class-ID: 0400
Device-2: AMD Navi 31 [Radeon RX 7900 XT/7900 XTX] vendor: Sapphire NITRO+
driver: amdgpu v: kernel arch: RDNA-3 code: Navi-3x process: TSMC n5 (5nm)
built: 2022+ pcie: gen: 4 speed: 16 GT/s lanes: 16 ports: active: HDMI-A-2
empty: DP-1,DP-2,HDMI-A-1 bus-ID: 0e:00.0 chip-ID: 1002:744c
class-ID: 0300
Display: x11 server: X.Org v: 21.1.8 with: Xwayland v: 23.1.2
compositor: kwin_x11 driver: X: loaded: amdgpu unloaded: modesetting,radeon
alternate: fbdev,vesa dri: radeonsi gpu: amdgpu display-ID: :0 screens: 1
Screen-1: 0 s-res: 3840x2160 s-dpi: 96 s-size: 1016x571mm (40.00x22.48")
s-diag: 1165mm (45.88")
Monitor-1: HDMI-A-2 mapped: HDMI-A-1 model: Onkyo AV Receiver built: 2021
res: 3840x2160 dpi: 52 gamma: 1.2 size: 1872x1053mm (73.7x41.46")
diag: 1630mm (64.2") ratio: 16:9 modes: max: 3840x2160 min: 640x480
API: OpenGL v: 4.6 Mesa 23.1.5 renderer: AMD Radeon RX 7900 XTX (gfx1100
LLVM 15.0.7 DRM 3.52 6.4.8-zen1-1-zen) direct-render: Yes
Audio:
Device-1: Blackmagic Design DeckLink Quad HDMI Recorder driver: N/A pcie:
gen: 3 speed: 8 GT/s lanes: 4 link-max: lanes: 8 bus-ID: 05:00.0
chip-ID: bdbd:a14e class-ID: 0400
Device-2: AMD driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s
lanes: 16 bus-ID: 0e:00.1 chip-ID: 1002:ab30 class-ID: 0403
Device-3: AMD Starship/Matisse HD Audio vendor: Gigabyte
driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 16
bus-ID: 10:00.4 chip-ID: 1022:1487 class-ID: 0403
Device-4: Blue Microphones Yeti Stereo Microphone
driver: hid-generic,snd-usb-audio,usbhid type: USB rev: 1.1 speed: 12 Mb/s
lanes: 1 mode: 1.1 bus-ID: 5-2:2 chip-ID: b58e:9e84 class-ID: 0300
serial: <filter>
Device-5: Nam Tai E&E Products or OmniVision Sony Playstation Eye
driver: ov534,snd-usb-audio type: USB rev: 2.0 speed: 480 Mb/s lanes: 1
mode: 2.0 bus-ID: 5-4:4 chip-ID: 1415:2000 class-ID: 0102
API: ALSA v: k6.4.8-zen1-1-zen status: kernel-api with: aoss
type: oss-emulator tools: N/A
Server-1: PipeWire v: 0.3.77 status: active with: 1: pipewire-pulse
status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Network:
Device-1: Intel Wi-Fi 6 AX200 driver: iwlwifi v: kernel pcie: gen: 2
speed: 5 GT/s lanes: 1 bus-ID: 06:00.0 chip-ID: 8086:2723 class-ID: 0280
IF: wlp6s0 state: down mac: <filter>
Device-2: Intel I211 Gigabit Network vendor: Gigabyte driver: igb
v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1 port: e000 bus-ID: 07:00.0
chip-ID: 8086:1539 class-ID: 0200
IF: enp7s0 state: down mac: <filter>
Device-3: Realtek RTL8125 2.5GbE vendor: Gigabyte driver: r8169 v: kernel
pcie: gen: 2 speed: 5 GT/s lanes: 1 port: d000 bus-ID: 08:00.0
chip-ID: 10ec:8125 class-ID: 0200
IF: enp8s0 state: up speed: 100 Mbps duplex: full mac: <filter>
Bluetooth:
Device-1: Intel AX200 Bluetooth driver: btusb v: 0.8 type: USB rev: 2.0
speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 3-5:9 chip-ID: 8087:0029
class-ID: e001
Report: bt-adapter ID: hci0 rfk-id: 2 state: up address: <filter>
Drives:
Local Storage: total: 6.37 TiB used: 4.12 TiB (64.7%)
SMART Message: Unable to run smartctl. Root privileges required.
ID-1: /dev/nvme0n1 maj-min: 259:1 vendor: Western Digital
model: WD BLACK SN770 2TB size: 1.82 TiB block-size: physical: 512 B
logical: 512 B speed: 63.2 Gb/s lanes: 4 tech: SSD serial: <filter>
fw-rev: 731100WD temp: 48.9 C scheme: GPT
ID-2: /dev/nvme1n1 maj-min: 259:0 vendor: Western Digital
model: WDS100T1XHE-00AFY0 size: 931.51 GiB block-size: physical: 512 B
logical: 512 B speed: 63.2 Gb/s lanes: 4 tech: SSD serial: <filter>
fw-rev: 614600WD temp: 50.9 C
ID-3: /dev/sda maj-min: 8:0 vendor: Crucial model: CT1000MX500SSD1
size: 931.51 GiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s
tech: SSD serial: <filter> fw-rev: 010
ID-4: /dev/sdb maj-min: 8:16 vendor: Crucial model: CT1000MX500SSD1
size: 931.51 GiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s
tech: SSD serial: <filter> fw-rev: 010
ID-5: /dev/sdc maj-min: 8:32 vendor: Samsung model: SSD 860 QVO 2TB
size: 1.82 TiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
tech: SSD serial: <filter> fw-rev: 1B6Q
Partition:
ID-1: / raw-size: 1.75 TiB size: 1.75 TiB (100.00%) used: 496.2 GiB (27.7%)
fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:3
ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
used: 576 KiB (0.2%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:2
ID-3: /home raw-size: 1.75 TiB size: 1.75 TiB (100.00%)
used: 496.2 GiB (27.7%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:3
ID-4: /var/log raw-size: 1.75 TiB size: 1.75 TiB (100.00%)
used: 496.2 GiB (27.7%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:3
ID-5: /var/tmp raw-size: 1.75 TiB size: 1.75 TiB (100.00%)
used: 496.2 GiB (27.7%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:3
Swap:
Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default)
ID-1: swap-1 type: zram size: 62.71 GiB used: 2.2 MiB (0.0%) priority: 100
dev: /dev/zram0
ID-2: swap-2 type: partition size: 68.99 GiB used: 0 KiB (0.0%)
priority: -2 dev: /dev/nvme0n1p3 maj-min: 259:4
Sensors:
System Temperatures: cpu: 67.1 C mobo: 43.0 C gpu: amdgpu temp: 53.0 C
mem: 68.0 C
Fan Speeds (RPM): fan-1: 1083 fan-2: 0 fan-3: 0 gpu: amdgpu fan: 0
Power: 12v: N/A 5v: N/A 3.3v: 3.36 vbat: 3.27 gpu: amdgpu watts: 28.00
Info:
Processes: 591 Uptime: 10h 1m wakeups: 307 Memory: total: 64 GiB note: est.
available: 62.71 GiB used: 8.15 GiB (13.0%) Init: systemd v: 254
default: graphical tool: systemctl Compilers: gcc: 13.2.1 clang: 15.0.7
Packages: pm: pacman pkgs: 2076 libs: 567 tools: octopi,pamac,paru
Shell: fish v: 3.6.1 default: Bash v: 5.1.16 running-in: konsole
inxi: 3.3.28
Garuda (2.6.16-1):
System install date:     2023-05-13
Last full system update: 2023-08-10
Is partially upgraded:   No
Relevant software:       snapper NetworkManager dracut
Windows dual boot:       No/Undetected
Failed units:

archwiki says to put your manual configs in this file

/etc/X11/xorg.conf.d/20-amdgpu.conf

could the different file paths be the reason for this?
Also can you please copy paste the contents of your custom .conf file here?

Hi this is the modification I made to the 10-amdgpu.conf file.

I will try the 20-amdgpu.conf I created. I didn't copy file to /etc/X11/xorg.conf.d/ over because I was worried I was creating a conflict because the Wiki I expected the file to already exist due to how the wiki was worded but I will try now.

10-amdgpu.conf

Section "OutputClass"
	Identifier "AMDgpu"
	MatchDriver "amdgpu"
	Driver "amdgpu"
	Option "HotplugDriver" "amdgpu"
	Option "VariableRefresh" "true"
EndSection

20-amdgpu.conf

Section "Device"
     Identifier "devname"
     MatchDriver "amdgpu"
     Driver "amdgpu"
     Option "VariableRefresh" "true"
EndSection

Are you sure the Identifier here should be “devname” and not “AMD”? If you are try rebooting and see if vrr_capable: 1 or not. If not change it to “AMD” and then reboot and check.

Also remove Option "VariableRefresh" "true" from Section "OutputClass" in here.

1 Like

I am not sure if it's my system or the Wiki is not applicable to RDNA 3, but including the Section "Device" Option "VariableRefresh" "true" ends up in a black screen for me. It is not the 20-amdgpu.conf file because if I delete the VRR option and use some other X.org Option like

Section "OutputClass" Identifier "AMD" MatchDriver "amdgpu" Driver "amdgpu" Option "EnablePageFlip" "off" Option "TearFree" "true" EndSection

There is no black screen and X server starts. The issue seems to be with Option "VariableRefresh" "true". It is almost as though the option does not exist or something which makes no sense because it's in the documentation :confused:.

This is the content of the Xorg.log with VRR option in the 20-amdgpu.conf.

PREEMPT_DYNAMIC Thu, 03 Aug 2023 16:01:52 +0000 x86_64
[    18.030] Kernel command line: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen root=UUID=268fc465-6b64-4b70-80a7-498d22cc24d5 rw rootflags=subvol=@ quiet quiet amdgpu.ppfeaturemask=0xffffffff amdgpu.freesync_video=1 rd.udev.log_priority=3 vt.global_cursor_default=0 resume=UUID=2e2d0ab6-f6a2-4710-98e2-bdb05e0b6b7f loglevel=3
[    18.030]  
[    18.030] Current version of pixman: 0.42.2
[    18.030] 	Before reporting problems, check http://wiki.x.org
	to make sure that you have the latest version.
[    18.030] Markers: (--) probed, (**) from config file, (==) default setting,
	(++) from command line, (!!) notice, (II) informational,
	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    18.030] (==) Log file: "/var/log/Xorg.0.log", Time: Sat Aug 12 05:05:41 2023
[    18.030] (==) Using config directory: "/etc/X11/xorg.conf.d"
[    18.030] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[    18.030] Parse error on line 10 of section Device in file /etc/X11/xorg.conf.d/20-amdgpu.conf
	This section must have an Identifier line.
[    18.030] (EE) Problem parsing the config file
[    18.030] (EE) Error parsing the config file
[    18.030] (EE) 
Fatal server error:
[    18.030] (EE) no screens found(EE) 
[    18.030] (EE) 
Please consult the The X.Org Foundation support 
	 at http://wiki.x.org
 for help. 
[    18.030] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[    18.030] (EE) 
[    18.030] (EE) Server terminated with error (1). Closing log file.

Have you changed the

Identifier "devname"

here to

Identifier "AMD"

the 20-amdgpu.conf file should look like this finally

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

Example file I am referencing.

Also send the logs in /var/log/Xorg.0.log you can copy paste them to garuda’s privatebin to upload them here incase the output is too long.

O! I think I copied the old file before I changed the .

Identifier "devname"

to

Identifier "AMD"

However the issue I was having where I kept ended up with black screen after adding the Section "Device" with Option "VariableRefresh" "true" seems to have been caused by including the MatchDriver "amdgpu". I noticed it after dropping into tty from the black screen and trying to startx.
After removing that line there is no more black screen so the file now looks like this

Section "OutputClass"
	Identifier "AMD"
	MatchDriver "amdgpu"
	Driver "amdgpu"
	Option "EnablePageFlip" "off"
	Option "TearFree" "true"
EndSection
Section "Device"
     Identifier "AMD"
     Driver "amdgpu"
     Option "VariableRefresh" "true"
EndSection

BIG Thanks for your help.
I now need to figure out what the issue is with my receiver not recognising the FreeSync signal. For now will just go directly to the TV and eARC the audio back to the receiver and also figure out the white balance which seems to be very very off.

Thanks again for your help @NaN

EDIT:

After a few more hours of playing with the receiver, TV colour settings and then getting black screens trying to run a couple of games, I deleted the screen section and things returned to what I expected

This

Section "Screen"
	Identifier "asdf"
	DefaultDepth 30
EndSection

messes up my colour settings making the screen almost foggy (seems to do something to the white balance) and then breaks games and OBS. Will have to figure out what it does and if I even need that vrr depth. The TV says it's receiving a premium VRR signal. So probably don't.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.