Is AMD Really The Golden Child Of Linux?

I often see Linux users asking for advice when debating the purchase of a new graphics card for their system, wondering what would be easier or best supported under Linux. Far too often, people will respond with vague blanket statements suggesting an AMD graphics card because the drivers are open source and already in the kernel. While there is some validity to this, there is also a slew of details being left out that will impact the experience a user is going to have.

AMD is praised for their value proposition, their use of open source drivers, and their “underdog” status in contrast to Nvidia. What they leave out is Nvidia’s ability to deliver excellent performance, Nvidia’s better-supported proprietary drivers for Linux, and its incredibly useful feature set ranging from NVENC encoding to CUDA processing and more. It’s clear to me that the focus on software philosophy has left many people ignorant of real issues or considerations to be had. As someone who frequently hops between new AMD and Nvidia cards, I’m here to shed some light on the subject.

Open Source Is Ideal, But…

First, some of the good. There is real value to open source software, both for the users and the developers. AMD has done a fantastic job ensuring that their cards are functional with open source drivers in the Linux kernel, with performance for general and gaming use rivaling or exceeding the performance of their available proprietary “PRO” drivers. The fact that users have the opportunity to install an operating system that will provide them the best possible performance out of the box, without needing to manually install drivers, is incredibly appealing. This has not always been the case, but it’s been an increasingly more prominent focus in recent years.

It’s desirable to have open source software where possible as it promotes transparency and trust. The simplicity of in-kernel drivers for the end users is clearly very high.

Nvidia on the other hand, clearly doesn’t share these values. Linux users have to download and install a set of proprietary drivers for their GPUs to reach anything close to resembling peak performance.

By default, many distributions ship open source drivers for Nvidia GPUs known as “Nouveau.” These are not provided by Nvidia, and are a product of incredibly admirable reverse-engineering carried out by a group of talented developers. With the exception of really old cards that tend to be well out of the support range from Nvidia, these drivers tend to perform poorly for applications such as games and other accelerated tasks, but they are (for the most part) functional enough. That being said, searching for these drivers, or installing them manually, has become a normal ritual for Nvidia users and is almost unavoidable on Linux in particular. Surely, it’s safe to say that Nvidia is the obvious downside here, right?

Not really. As I hinted to earlier, Nvidia has a lot to offer that could potentially make up for these inconveniences, not to mention the amount of support that has been in the works from distribution developers and maintainers to mitigate this process.

Pictured: RX 5700 XT. Beautiful Gold Graphics Card? Yes. Golden Graphics Child of Linux? No.
Beautiful Gold Graphics Card? Yes. Golden Graphics Child of Linux? No.

Pop OS, Ubuntu And Others To The Rescue!

Since I’ve started using Linux, I’ve seen multiple distributions (like Ubuntu and Pop!_OS) work on solutions that provide the proprietary Nvidia drivers for their cards out of the box, or as an option in the boot settings or installer. Where distributions had previously dropped me into sessions incapable of scaling to my monitor’s native resolutions, or just black screens, I now find it more common that I boot into a system working at full capacity from the very start.

Some distributions reduce the complexity of enabling these drivers in situations where they cannot ship it themselves, such as Fedora, with their one-click enablement button in GNOME Software. In some cases, Linux distributions running on Nvidia cards provide experiences similar to or easier than Windows currently does, which is a very surprising and unusual condition.

An Early Adopter Nightmare

Now that I’ve positioned myself as an Nvidia apologist, I’ll dig into the bad sides of picking AMD. With open source drivers built into the Linux kernel, an AMD card is an obviously appealing choice, but there’s a catch. This approach means support for the card you pick is directly tied in to the kernel version shipped by your distribution.

At the risk of being assaulted by an army of Arch users, I’ll say that this is an incredibly restrictive approach. The majority of Linux users are going to be on Ubuntu (and typically an LTS), or a distribution based on Ubuntu such as Linux Mint or elementary OS. This means updates for something as critical as your kernel are not close to current stable releases from upstream at all. This is fine for older cards such as the RX 480 or RX 580, etc. This is a heartbreaking experience for those of us who prefer to purchase current generation cards, and I’m going to use the RX 5700 XT as a card to help me explain why this is.

My personal RX 5700 XT
My personal RX 5700 XT

On July 7, 2019, AMD released the RX 5700 XT and brought us a new champion. It’s to be expected that new cards are not going to have great support on any operating system, and that they will be constantly improved with aggressive driver revamps until it reaches a point of peak performance and stability.

Windows users have the advantage of software tools like Radeon Adrenalin to install and configure the newest available drivers for the cards. Linux users don’t have this luxury, and as I explained earlier, driver updates are tied to your kernel, which means without a kernel update, you’re not going to be seeing these improvements unless your distribution is delivering these to you. The 5700 XT suffered heavily on Linux for months, but was especially poor on the most popular distribution(s) out there, with everything from system crashes to in-game stuttering, to a plain inability to boot.

Kernel 5.4 was the first saving grace for this card, and didn’t make it out to these distributions until the card was already 11 months old. Yes, 11 months just to be at a point where the card works reliably and is performant. Even then, some systems required kernel parameter tweaks to avoid in-game stuttering or hanging issues.

I was pretty displeased with this experience, and I can’t imagine most users are going to be fond of it either. To make things worse, anyone that relies on their GPU for compute (think OpenCL, etc) is going to have a less than desirable experience as well. The PRO drivers for Linux tend to take months on top to find themselves ready for a current Ubuntu release, and Ubuntu is the only distribution it supports.

To reiterate: Ubuntu took nearly a year to have support for the card ready, and then users wait even longer to have support from AMD themselves for OpenCL functions. It’s issues like these that pain me when I hear people suggest AMD as the go-to for Linux, as it’s a very unrealistic image.

How does Nvidia avoid these problems? Well, even though it’s not always sunshine and rainbows, Nvidia’s drivers are offered as separate kernel modules, rather than bundled into the kernel itself. This means that you’re not reliant on this to use your card, even if you’re not running the most recent of kernels. These drivers can be built and installed against multiple versions of the kernel, making it far more accessible for users of different distributions from Ubuntu to Debian to Mint, and more.

I had purchased the Nvidia GTX 1660 less than a month after it had released, and just by installing the proprietary drivers using Ubuntu’s GUI or CLI tool, or on systems like Fedora with the toggle in the Software Center, I was up and running at full performance reliably on the desktop, in games, or with encoding and decoding with NVENC.

Will It Get Better?

Despite all of this, things are improving. AMD is still a very valid choice and even I, someone who has grappled with these issues for over a year now, still own and use AMD GPUs on Linux.

I’m assured that the next generation of AMD GPUs will be much better supported from the start than the current NAVI GPUs have been, and I believe it. However, it’s still going to struggle with the same issues. This isn’t just an AMD problem, or even an Ubuntu problem. It’s a community problem on top of that.

We’re in a position where being realistic about the ups and downs of our recommendations is critical, but so often brush it off because we want to support the underdog or satisfy our philosophical cravings. We’ve overpromised and underdelivered, leaving end users to struggle. We’ve painted Nvidia as the bad guy because it’s easy, and because we don’t like the idea of proprietary add-ons. Yet we refuse to just be honest and recognize that we can only partially deliver the wondrous and carefree experience via AMD on Linux, and that it’s just as plagued by issues as Nvidia is despite their polar-opposite approach. It’s not about Team Red or Team Green, it’s about what’s going to work for the user in need, and how that experience is going to be. It’s about not trying to force users onto other distributions to avoid addressing the real issues that exist.

Ubuntu has been working on delivering more recent kernel software with their HWE (hardware enablement) that offers newer kernel and graphics stack software to ensure that users with newer hardware aren’t left out for quite as long. This is a start, and it’s a step in the right direction for lovers of new hardware who don’t want to lose the comfort and support of their preferred distributions.

There’s still more work to be done, and while in-kernel drivers sound amazing, there’s the very real possibility that open source separate kernel module drivers are a much better approach as it harnesses the benefits of open source software and a modular approach that benefits Nvidia so much. We’ll have to see where this leads, but in the meantime, it’s worth considering that our own preferences aren’t always applicable to other users, and that it’s okay to be realistic about our recommendations even if it might not be the solution that we want.

Share this post

Twitter
LinkedIn
Reddit
Threads
Facebook
Email

Comments:

  1. As someone who is on a system where Nouveau drivers work quite well, I think you were fair to NVIDIA. Even though the barrier to entry is higher, you can at least use dkms or something to get the drivers you crave.

    I have to say the trick seems to be providing the drivers. Maybe Ubuntu based distributions need to consider shipping the kernel and mesa as soon as it clears into Debian Testing. I was under the impression that Pop_OS! shipped with a quicker updated graphics drivers than Ubuntu. I thought newer Mesa and hwe made it in faster. I guess not.

    Great article.

  2. I’m going full AMD for my upcoming build, and the issues most Linux users experienced with Navi is definitely a concern for me.

  3. Cases like this is definitely concerning, too. Newest Intel integrated graphics seems to work reliably on latest distros (I installed Ubuntu 19.10 on my 4th gen ThinkPad X1 Yoga (which comes equipped with i7-10710U from Q3 2019, aside from non-graphics-related issues, it runs great. Ryzen 7 3700U was from Q1 2019, so a lot of those major bugs should’ve been ironed out in the kernel.

  4. Avatar for Eltuxo Eltuxo says:

    I’ve been using AMD cpu’s for as long as i can remember. Graphics cards, that’s a different story. I remember buying an AMD card once, having major problems locating and installing drivers which resulted in buying an Nvidia card.
    I must say, Nvidia has better support afaik. They get up and running in no time at all.
    Maybe that’s changed now, i don’t know. Maybe AMD provides drivers that do a good job nowadays, but i’m happy with Nvidia as it is.

  5. As a person who uses an AMD CPU Ryzen 2600 and GPU RX 580
    It’s always ran excellent out of the box with any distro

    But i can imagine a brand new AMD card can be frustrating for production work
    Since my PC is for media consumption , some gaming
    I feel i can live with a few bugs for the sake of my beliefs on open source drivers
    It really depends on your use case

    Also Solus is better for gaming than ubuntu
    And its more stable , and it’s a rolling distro!
    Well im on endeavor OS Right now but yeah

    My next GPU will be AMD
    Will probably Use ARCH based Endeavor so i can game and stuff right away
    And wait a while until LTS Distros support it
    But that’s just me

Join the discussion at forum.tuxdigital.com

2 more replies

Participants

Avatar for scirocco Avatar for Schykle Avatar for Eltuxo Avatar for Thunderemp Avatar for PatPlusLinux Avatar for YamiYukiSenpai