You can sign up to get a daily email of our articles, see the Mailing List page!
Radeon desktop user experience?
Page: 1/2»
  Go to:
HihiDanni 7 days ago

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 7 days ago

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 7 days ago

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 7 days ago

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 7 days ago

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 7 days ago

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 7 days ago

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 7 days ago

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

The_Aquabat 7 days ago

what settings you want to change?? a gui for changing graphics options that games already offer seems to me more bloatware, corectrl provides and utility for overclocking, changing fan speeds, setting the driver to performance, power save or compute mode, setting custom wattage, etc. It is not a perfect world in the red side, there's some opengl bugs sometimes (very few) mostly with newly released games, but they are fixed in weeks or 1 or 2 months... like anything, I think that Nvidia takes their time also to fix some bugs is not instantaneous.
I think if you are expecting a gui like nvidia settings on amdgpu you are going to get dissapointed. IMHO the standard way of dealing with game tweaks on Mesa is different, they try to leave tweaking graphics settings to the app or game, if there's a game that need a special drirrc config they will add it and that will get updated with your normal system upgrade. But I think for now the devs concentrate their efforts on other things like ACO, performance and DXVK compatibility, providing lots of tweaks and make sure they work with all the games takes a lot of testing and human resource, they are not focusing on that for now.

Just my two cents here, (probably someone will tell otherwise with Nvidia) but DXVK bugs are fixed more quickly with Mesa drivers I check mesa commits regularly and they work close together with DXVK devs and Valve devs, (it's just my opinion based on checking mesa gitlab repo). (In the case of Nvidia I really don't know how the situation works since you cannot check the code, probably it makes developing more problematic, and I think is going to get worse, the problem with 5.9 is just the tip of the iceberg )... Developing on the open with repos on gitlab and github makes workflow better and makes everything easier for devs, I think that DXVK and Valve devs will start paying less attention to Nvidia since they have to sign NDA papers and everything is more complicated.
What Linus said once about nvidia being the most hostile linux developer is completely true. Nvidia should cease it's Linux hostility or things will get really bad, some years ago the nvidia driver was important and relevant, now Linux doesn't need Nvidia anymore, performance in AMD gpus is good enough, and with Intel GPUs coming and also powerful ARM igpus like the Apple M1, things will get even worse for Nvidia.

ps (Some people need to understand the nvidia settings is kinda of marketing it's branding they do. Mesa devs are not trying to sell you anything)

Last edited by The_Aquabat on 20 November 2020 at 3:25 am UTC

HihiDanni 7 days ago

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 7 days ago

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.

While you're here, please consider supporting GamingOnLinux on:

Patreon, Liberapay or PayPal Donation.

We have no adverts, no paywalls, no timed exclusive articles. Just 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 Twitter Sign in with Google
Social logins require cookies to stay logged in.