From Nvidia To Amd The Promised Land On Linux

By

I thought I might have to sacrifice something near and dear to me, maybe a family heirloom…or a limb. Or just spend an entire PC budget on just one part. Yes, I’m talking GPUs, rare as a good reason for cryptocurrency, and exactly as valuable.

At long last, a new GPU!

The plucky underdog won in this tale, as I managed to secure an AMD 6700 XT, at the base cost even (direct from AMD). True, I’d like the more powerful 6800 XT, but as the timeless saying goes, “A GPU buyer in a global pandemic with crazy high demand and a crypto boom can’t be picky.” Next will be upgrading the rest of my rig.

If you are in my shoes and looking for something new from AMD, I wish you the best of luck and patience, since it will take plenty of that. Still, there are some things you can do to improve your chances buying direct from AMD, summarized in this Reddit thread. That basically captured what I did: had a script to help with AMD’s site, remember when stock typically drops on AMD for your region, and maybe sit on a Discord or YouTube stream.

Goodbye Nvidia! I fell into the category of Linux gamers looking to move to AMD for an upgrade. One big reason being for more open, and still competitive, drivers (there is still binary firmware needed for full functionality and performance, but everything else exists in open source Mesa). So, how did it go moving from Nvidia, namely the stalwart GTX 970, to the latest from AMD?

The new RX 6700 XT in all its glory.

Overall I would say it was a smooth experience, but no system is perfect. I have been an Nvidia user for as long as I can remember, and suddenly I was in new waters. And it was this longtime Nvidia usage that caused a few problems.

First, I did nothing: after pulling out the old 970, cleaning up a dusty case, and popping in the 6700 XT, I just tried to boot. Since AMD should just need Mesa, which is always installed in a graphical environment, I thought it might work. I think it would have, too, but I was foiled by the various Nvidia workarounds I’ve had to do over the years. Booting was fine, but only to a TTY (text terminal).

Opening up the ol’ desktop to take out the ol’ 970. The cat helped, of course.

I should say that I’ve had a pretty smooth ride in Nvidia land, but that’s included troublesome kernel updates, drivers that have stopped things like sleep from working, and some Xorg tweaks. Most of this has been more recent for whatever reason. Anyway, it was these changes that prevented me from getting into X without doing anything. Once I removed and reversed these changes (removing Nvidia modules included in initrd and any Nvidia Xorg config, i.e. /etc/X11/xorg.conf.d/20-nvidia.conf), I was back in business and in a graphical session. Basically my procedure was to work through the Arch wiki to see what I had done. I removed the Nvidia driver packages entirely while I was at it too, taking no risks!

(Minor tweak, I could start X manually, but it didn’t like to autostart. As per the great ArchWiki, I needed early kernel mode setting, which is common for all video drivers.)

Were things better? A resounding yes. Steam seemed very smooth, when before it has always seemed sluggish in displaying, scrolling, or just browsing in its interface (perhaps better desktop acceleration now?). Games, of course, performed at an entirely different level after jumping a few generations in GPU tech. This is especially noticeable as my monitor runs at 4k (at 60 Hz), which is very demanding even in older games. For instance, The Witcher 2 was too sluggish to play at full 4k until popping in the new GPU. I also got to start playing Horizon Zero Dawn, which I picked up in the recent summer sale, something I wouldn’t have even bought otherwise.

While I can’t separate just a new GPU from the difference in drivers, I can say that many irritating issues were resolved for me. My computer seems to boot directly in higher resolution (better DisplayPort version?), audio outputs through HDMI/DisplayPort show up consistently in PulseAudio, no tweaks/kernel versions/etc. needed for sleep to work, and so on. I haven’t noticed any negatives with my AMD upgrade, for example noise is the same or less (it is working less than that poor 970).

Installed and ready to go, nice and easy.

All of this was on the latest release of Mesa on Arch, namely 21.1.3 at the time. I’ve heard about people often using the latest git release of Mesa for the newest GPUs especially, so I gave that a try. Arch has not only mesa-git in the AUR, but also a (user-contributed) repository with binaries (no compilation needed). You’ll need to add SigLevel = Never to where you add the mesa-git repository in pacman.conf as well. (There are also the AMDGPU Pro drivers from AMD, which are closed source and aimed at Radeon Pro non-consumer-oriented cards. I did not try them.)

I didn’t do any extensive testing between the Mesa’s stable and git versions; neither gave me any problems or significant differences in performance at first glance. I did encounter a bug on the git version, where Witcher 2 (native OpenGL) would crash. Since there have been a few Mesa releases since the new AMD cards came out, it seems like the stable version will work well enough (anything after 21.0.0). Still, if you are looking for specific fixes and wanting the latest version, the git version is where you want to be. Otherwise, Mesa often makes several releases in a month for bug fixes and new features, which an AMD owner should keep up with (along with possibly kernel/firmware for newer cards especially).

How about Vulkan? There are a couple of choices for AMD cards, which you can install at the same time if you want:

Both are open source and with 32bit versions as needed. You can switch between which Vulkan implementation is used by setting the AMD_VULKAN_ICD environment variable to either RADV or AMDVLK (see AMD’s readme).

In some brief switching between them, I found the AMDVLK driver to be more glitchy and prone to performance issues. While they can often perform similarly, as seen in benchmarks, others have also noted occasional issues in AMDVLK, even if it can perform better in a few scenarios. For gaming with DXVK, AMDVLK sometimes lags behind RADV support, or needs workarounds. In the end, RADV usually performs better and is the way to go (good job, Mesa!).

Horizon Zero Dawn looking good.

Finally, let’s talk about VR on my new AMD card. As you may remember, I’m a happy owner of a Valve Index, which is a demanding headset in terms of pixels and refresh rate options. As I noted, I was barely scraping by with my 970, which also led to lots of hassle with needing to switch inputs for my monitor. Everything is nice and smooth on that front now, with multiple DisplayPort outputs (and possibly better standards compliance or on the software end?) and no issues playing in VR or not.

However, SteamVR being what it is on Linux (plenty of little bugs, many longstanding), moving GPUs means encountering new (to me) bugs. Some are inconsequential (the knuckles controller textures being invisible/inside out), but others seem linked to asynchronous reprojection (which will now affect Nvidia, too). There is a wobble or jitter with the SteamVR interface as well as occasional flashing frames. The bug reports show how to work around this by disabling async, or undoing capabilities set on a file.

(For some reason Beat Saber looked off, like the convergence between the different eyes was incorrect, or the image wasn’t correctly transformed for the display. Uninstalling and reinstalling and changing settings did nothing, but it did eventually return to normal, I think after again uninstalling and reinstalling mods.)

But! Let’s not harp on a few negatives of SteamVR, which is currently just the state of things. Getting a much more capable GPU in my system is like upgrading a VR generation too. Text is so crisp! Higher refresh rates! Many more games I can play! No longer do I have to run at 80Hz with less than full resolution, but can benefit from the Index’s higher refresh rates and some supersampling to render at higher resolutions. I’ve been playing with the Index at full and 1.5x resolution at 90 Hz (and some experimenting with 120 Hz) and it is an all-round better experience. VR is new again and there’s a lot more for me to enjoy now. So far I’ve started with the free The Lab (virtual archery!) which was unplayable before due to performance issues, and started on Star Wars: Squadrons to live the childhood dream.

To wrap up, there’s nothing like jumping a few generations in tech and being thankful to get anything at all. Moving from longtime Nvidia usage means I’m still learning what I can tweak and do with AMD and Mesa. I would like to play with the new features coming to the RADV driver, like variable rate shading (VRS) which can trade some quality for performance improvements without needing implementation by games. Overall I’m very pleased with AMD and trimming some proprietary drivers from my computer, though I still have a dual Intel integrated/Nvidia discrete graphics on my laptop (usually annoying). There’s been less fussing and finagling. But most of all I’m happy to play newer games at higher settings and resolutions, and get to experience VR the way it’s meant to be played.TM