GNOME 3.38 - Xorg: 144Hz won't work with multiple monitors on AMD

The Problem

I have an AMD RX 5700 graphics card with two monitors plugged into it:

  1. [Primary] 1920x1080 @ 144Hz
  2. [Secondary] 1920x1080 @ 60Hz

When using the first monitor on its own, 144Hz works fine on Xorg without any issues, however when I plug in my second monitor (making sure to set the first one back to 144Hz again in settings) The entire desktop is clearly only running at 60Hz

What I’ve tried to fix it

This problem seems to primarily affect NVIDIA so it was hard to find any info on ways to fix it for AMD. I did manage to gather a few pieces of information though

  1. Changes to /etc/enviroment
    • GL_SYNC_DISPLAY_DEVICE=DisplayPort-2
    • CLUTTER_DEFAULT_FPS=144
    • CLUTTER_VBLANK=none
  2. Creating /etc/X11/xorg.conf.d/20-amdgpu.conf:
    Section "Device"
        Identifier "AMD"
        Driver "amdgpu"
        Option "TearFree" "true"
    EndSection
    

Sadly none of these things seem to fix the issue. The only partial fix I’ve found for the issue is to set my primary monitor refresh rate to 120Hz but this is not a good fix for two reasons:

  • I’m not using my monitors full refresh rate
  • This only fixes the problem when dragging windows around with nothing else on the screen. Moving windows with other windows on the screen and other actions in GNOME Shell are still choppy.

The only alternative I seem to have is to switch back to Wayland as this is a non issue there. But Wayland has too many issues on my setup for me to practically use it.

Conclusion

I have written my hardware and software specs at https://rentry.co/my-linux-specs as this post is already getting very long. If there is any more info I can provide (logs, output of commands, etc) I would be happy to do so. I’m grateful in advance for any help you can provide and hopefully I can get this very annoying problem solved soon. :slight_smile:

PS: Although I mentioned GNOME 3.38 in the title I have had this issue for a long time and it is not specific to GNOME 3.38 in particular, more to GNOME 3 and Xorg in general.

1 Like

From my understanding, with X and with Wayland, there is no way to run both monitors with independent refresh rates.

Intel just updated some VRR code in the 5.10 kernel. And AMD is working on some stuf with RDNA to support that. I assume it will be backported into the Radeon and ADMGPU driver.

It works fine on Wayland, all I have to do is go into gnome settings and set my first monitor to 144Hz and my second one to 60Hz and its all perfect, no such luck on xorg tho :frowning:

Wow, the wayland fix was pretty quick then. work on that issue was started about a month or two ago for the protocol to support it.

For X, It is pretty much on life support and maintenance only. The fix may come with the Kernel code submissions and support through modesetting/drm.

Yeah I agree that wayland is superior to xorg in most ways but the application support is still lacking. I also get system wide freezes on wayland

The freezes may be more due to RDNA support still being a major work in progress. But yeah.

Also, which kernel, mesa, and LLVM are you running?

In the past I was using linux-zen but I’ve switched to linux-lts in hopes it might be more stable. I’m running llvm 10.0.1-3 and mesa-20.2.1-1. Basically whatever is latest in Arch Linux repos

The exact lts kernel version is 5.4.72-1

I am pretty sure there is still a Gnome desktop limitation even in Wayland. Applications and such can update their windows at 144 Hz but Mutter, the gnome-shell compositor, will only update window positions, animate, etc, at the lowest refresh rate of all monitors.

Unless something has changed and I missed it. Always possible.

I think the limit is something around < 90hz

I think it has been fixed in wayland now because all animations and things like moving windows around are definitely running at 144hz and are very smooth

Edit: this is the fix
Screenshot from 2020-10-23 14-07-26
And this seems to be why it dosen’t work in X

1 Like

This is the first compelling reason I’ve found to look into Wayland. Neat.

2 Likes

Yeah I think Wayland is really good but the biggest problem with it for me is the application support. For example Wayland does support key grabing by applications now which is essential for virtualisation software and while this fix has been implemented in virtual box and qemu it’s still lacking in vmware. Multiple chromium windows also doesn’t work well on Wayland

Yes you’re right with that. But one thing you could do is use Chrome dev which now implements Wayland or just switch to Firefox and run it with MOZ_ENABLE_WAYLAND=1 firefox as well as webrender enabled. But of course this sadly won’t fix your VMWare problem…

2 Likes

Thanks for the info. Do you know where I could get a precompiled version of chromium-dev for arch linux as building it from aur takes hours and usually fails for me?

I just got another one of those freezes I was talking about earlier :frowning: my mouse locked up and if i unplugged / re-plugged any hardware it would not get initialised. Very odd

That is odd, but that is probably because you are on an LTS kernel. Rdna support really started on kernel 5.6. i don’t know if everything was backported to the lts yet.

Basically kernel 5.9 should have all of the critical bits plumbed for rdna and rdna2.

Sorry but I don’t think there’s a binary available for chromium. you would have to use google-chrome-dev https://aur.archlinux.org/packages/google-chrome-dev/

I run 3 monitors with different refresh rates and I use X

adding screenshot for you folks:

1 Like

if it helps, here is a screenfetch (I haven’t updated this week yet)

You sure its refreshing at 120Hz and not just frame doubling? I’m pretty sure that KDE suffers from the same Xorg problems like Gnome does. Maybe setting your Vizio to anything other than 120Hz (possibly 1440Hz ?!) Makes it more obvious.