Confused on Steam Play and Proton? Be sure to check out our guide.
Radeon desktop user experience?
Page: 1/2»
  Go to:
HihiDanni Nov 19, 2020
Hi all, I've been using nVidia on Linux for a little over ten years now, and with all the problems with suspend/resume under KDE, the kernel 5.9 breakage, poor VR support, etc., I'd like to see if the experience is any better over on Team Red. But before I invest in a new Radeon GPU, I'd like to know what other people's experiences are. Namely here are some things I want to know about:

- Do you have driver control over Vsync? This is something we've always had with the nVidia binary blob, and I remember that on Intel/mesa it seemed like you could never really tell the driver to Vsync when you wanted Vsync, or to avoid Vsync if you didn't want it. It just did whatever it felt like, even if you tried to tell DRI otherwise.

- Does the KWin compositor do Vsync? (I have this under nVidia)

- Do fullscreen games do direct page flip? I.e. are they unredirected, and are they responsible for doing Vsync? And do they do that Vsync? (Also have this under nVidia)

- Does adaptive sync work? I have a Gsync/FreeSync monitor which has really improved frame timing in fullscreen mode.

- What's the windowed game experience like? What about with/without compositing? Is the framepacing good? How does it react to the Vsync settings in the game/compositor?

- Is Gamescope good for daily use? Does it support adaptive sync in windowed mode?

- Is the experience with OBS good? What happens to the display sync (what I see) when I stream/record with it? (on nVidia it seems to framelimit but not Vsync to the display) And what about the output? (on nVidia the OBS output seems to be Vsynced correctly). Do you get flashing corruption with some capture modes on AMD? (I do on nVidia)

- Do you ever have any issues with suspend/resume? Over on nVidia it would just get stuck for about a month or so, forcing me to do a hard reboot, and I'm still having issues with display/texture corruption when I wake that likely won't be fixed anytime soon.

- Do you have any compatibility issues with OpenGL games? Over time this is becoming less and less important due to Zink and the increase in games supporting Vulkan, but I'm still curious.

- Is there a good interface for changing driver settings?

Thanks in advance!
Shmerl Nov 19, 2020
1. You can control vsync both for Vulkan and OpenGL.

To force vsync:

# Vulkan
MESA_VK_WSI_PRESENT_MODE=fifo

# OpenGL
vblank_mode=3


Kwin vsync works much better than on Nvidia where it's messed up.

2. You can turn off compositing in X11 KWin. On Wayland there is no such concept.

3. Adaptive sync works on X11, not on Wayland yet (with KWin).

4. Not sure about windowed game experiene. I always make it full screen, but it's not a real fulscreen anyway - you get a window that takes most of the screen.

5. I haven't tested Gamescope or OBS.

6. Suspend / resume has no issues.

7. OpenGL works fine. Zink didn't yet reach high enough version of OpenGL to be useful for anything.

8. There is no single interface for everything, but some kernel settings can be set with corectrl and radeon-profile.

Last edited by Shmerl on 19 November 2020 at 11:08 pm UTC
HihiDanni Nov 19, 2020
Thanks for the responses so far!

Quote 
# Vulkan
MESA_VK_WSI_PRESENT_MODE=fifo

# OpenGL
vblank_mode=3

This looks like it's using triple buffering. Is there a way to force double buffering with a page queue size of the minimum possible to reduce input lag?
Shmerl Nov 19, 2020
Where did you see info on triple buffering?

vblank_mode=3 simply means vsync on (for OpenGL):

https://dri.freedesktop.org/wiki/ConfigurationOptions/

QuoteName: vblank_mode

Drivers: mga, r128, r200, radeon Synchronization with the vertical refresh can avoid visual "tearing" with fast motion. At the same time it limits the frame rate to (a fraction of) the vertical refresh rate. Applications can set a "swap interval" which means that buffer swaps occur no earlier than n vertical blanks after the previous swap. With this option you can disable swap intervals, choose a default swap interval of 0 or 1 or you can force the application to always wait for a vertical blank on every buffer swap:

0 = Never, FPS rulez!
1 = Application preference, default interval 0
2 = Application preference, default interval 1
3 = Application preference, always synchronize with refresh

Same for MESA_VK_WSI_PRESENT_MODE=fifo:

https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPresentModeKHR.html

QuoteVK_PRESENT_MODE_FIFO_KHR specifies that the presentation engine waits for the next vertical blanking period to update the current image. Tearing cannot be observed. An internal queue is used to hold pending presentation requests. New requests are appended to the end of the queue, and one request is removed from the beginning of the queue and processed during each vertical blanking period in which the queue is non-empty. This is the only value of presentMode that is required to be supported.

Last edited by Shmerl on 19 November 2020 at 11:26 pm UTC
Shmerl Nov 19, 2020
If you want to control the number of backuffers in Vulkan explicitly, there is no variable for that yet.

See: https://gitlab.freedesktop.org/mesa/mesa/-/issues/184

You can control it in dxvk settings at least.

Last edited by Shmerl on 19 November 2020 at 11:28 pm UTC
Shmerl Nov 19, 2020
Anyway, if you have adaptive sync monitor, you don't want to enable vsync. Keep it off, but might want to limit the framerate to max monitor refresh rate may be to avoid overtaxing the GPU.

Libstrangle helps for that: https://gitlab.com/torkel104/libstrangle/
HihiDanni Nov 19, 2020
Quoting: ShmerlWhere did you see info on triple buffering?

My bad, I saw "FIFO" and mistook it for "mailbox".

Quoting: ShmerlAnyway, if you have adaptive sync monitor, you don't want to enable vsync. Keep it off, but might want to limit the framerate to max monitor refresh rate may be to avoid overtaxing the GPU.

Libstrangle helps for that: https://gitlab.com/torkel104/libstrangle/

My experience with adaptive sync (at least, nVidia G-Sync) has been that you actually do want to enable Vsync in the game, as otherwise you will still get tearing. So you want to use Vsync plus set the display to the highest refresh rate you want to be able to hit. Adaptive sync just means that if a regular V-blank period is missed, that it can still Vsync on command instead of waiting for the next blanking period. I also haven't needed to limit the FPS either.
Shmerl Nov 20, 2020
I never used Gsync, but standard adaptive sync that Mesa uses requires turning vsync off to work.

The whole point of adaptive sync is to bypass vsync on any specific rate and make the monitor itself sync to the framerate. So it makes sense to me that vsync should be off for it.

If you enable vsync, limiting fps won't make sense, because it will capped at your monitor max refresh rate. If you turn vsync off to enable adaptive sync, framerate can shoot above monitor's max refresh rate. That's where framerate limiter comes handy.

Last edited by Shmerl on 20 November 2020 at 12:28 am UTC
HihiDanni Nov 20, 2020
Quoting: The_Aquabatwhat settings you want to change??

Mainly I want to be able to force anisotropic filtering to 16x for all programs, because there's no point in not using it (I haven't noticed any performance or graphical issues with it on), and I hate how floor/wall textures blur at a distance with it disabled. A GUI for selecting Vsync would also be nice, although having a CLI option for it is good enough. Also useful to be able to manually set per-app settings, though I haven't been doing much of that.
Xpander Nov 20, 2020
If you have a real Gsync monitor, that wont work with AMD GPU afaik. Nvidia naming stuff and forcing to monitor vendors is a bit odd. Many monitors call Freesync as Gsync nowadays or Gsync-Compatible. If its the Gsync compatible, then it should work fine on AMD. with freesync/GsyncCompatible you dont enable vsync for it to work.
I use Nvidia GPU and have Freesync/GsyncCompatible monitor and i have to run it without vsync if i want to use it.
Shmerl Nov 20, 2020
Quoting: HihiDanniMainly I want to be able to force anisotropic filtering to 16x for all programs

That can be done like this:

# Vulkan
RADV_TEX_ANISO=16

# OpenGL
AMD_TEX_ANISO=16 
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register


Or login with...
Sign in with Steam Sign in with Google
Social logins require cookies to stay logged in.