Why Nvidia graphics cards are the worst for open-source, but the best for Linux gaming
Linux users have long had a love-hate relationship with Nvidia. On the one hand, Nvidia’s proprietary graphics drivers have always been the best-performing ones for Linux gaming. On the other hand, Nvidia has been so hostile to the open-source community that Linus Torvalds literally gave it the middle finger a few years ago. Torvalds also called them “the single worst company” the Linux developer community has ever had to deal with.
Nvidia seemed to be improving after Valve announced its Steam Machine endeavor. Linus even gave Nvidia a thumbs up! But the latest Nvidia graphics hardware, the GeForce GTX 900 series, “is VERY open-source unfriendly,” according to a Nouveau developer.
NVIDIA’s contributions are far behind Intel and AMD
Nvidia still offers the worst open-source support, compared to Intel and AMD. Intel’s Linux graphics drivers are completely open-source, which is great—but Intel’s integrated graphics still can’t compete with dedicated Nvidia or AMD hardware for serious gaming performance. Intel employs people just to work on their open-source graphics drivers.
AMD’s Catalyst driver for Linux is also closed-source, and is necessary to get the best 3D gaming performance out of AMD graphics hardware on Linux. But there’s also an open-source graphics driver named “Radeon,” and it’s been developed based on hardware specifications released by AMD. AMD may not be as good as Intel here, but it’s actively helping the open-source community. Like Intel, AMD also employs people to work on and contribute to these open-source drivers.
Nvidia is different. Nvidia offers their own proprietary GeForce drivers for Linux. There’s also the open-source Nouveau driver. Unlike the AMD driver, which was helped along by AMD’s release of specifications, the Nouveau driver has been built almost entirely through reverse-engineering.
Nvidia has recently helped a bit on the Nouveau driver, contributing graphics support for their Tegra hardware, bits of documentation, and some advice. But even those contributions were unexpected. Now, “security features” in the latest Nvidia graphics cards are making this reverse-engineering more difficult, in spite of Nvidia saying they’d help the Nouveau developers.
Where are the signed firmware images?
Both AMD and Nvidia graphics hardware rely on firmware images—closed-source binary blobs that make the hardware work. AMD releases these binary-only firmware images so the open-source Radeon driver can make use of them, although they still aren’t open-source.
In the past, the Nouveau developers have had to come up with a way to extract the binary firmware images from the closed-source driver. The Nouveau driver could then generate firmware images and provide them to the Nvidia graphics card when initializing it.
“Nvidia aren't playing nice yet so there's not much more that can be done at this point... I spent a lot of time trying to find a viable way of doing gr ctxsw without signed firmware, but the "security" restrictions… are excessive and go beyond what'd be necessary to protect the host from malicious firmware. This newer Nvidia hw is VERY open-source unfriendly.”
Nvidia said it was moving to signed firmware images to improve security and prevent knock-off graphics cards that were really lower-end Nvidia cards with firmware from higher-end GPUS on them. Nvidia’s Andy Ritgar told the Nouveau developers last September that the company was working on the best way to release these signed firmware images (not the source for them—just the binary blobs themselves) for use in the open-source drivers. But it hasn’t yet.
Hopefully this is all just a delay and Nvidia will get those binary firmware images out soon. But, even if it is just a delay, it’s part of a general pattern of delays and lack of open-source support from Nvidia. Nvidia has said they prefer just working on their closed-source driver for Linux.
Further reading: Linux gaming rising: 25 killer games for Steam Machines and Linux
But Nvidia’s graphics cards still offer the best performance!
So, is it time to ditch those NVIDIA graphics cards? Far from it. If you’re willing to use a closed-source, proprietary graphics driver—as nearly every Linux gamer is—Nvidia’s drivers have always been far more stable and offer much better performance than AMD’s. Intel’s onboard graphics aren’t even in the same ballpark as a dedicated graphics card. Those same GTX 900 graphics cards that are so unfriendly towards open-source drivers are some of the best graphics hardware you can get for Linux gaming.
Phoronix recently benchmarked the Linux port of Bioshock Infinite with a wide variety of Nvidia and AMD graphics cards. On Windows, similar graphics cards from the two companies would likely offer similar performance—but on Linux, the Nvidia cards performed much, much better than the AMD ones. The results are similar with other modern Linux games.
As far as open- versus closed-source goes, other benchmarks performed by Phoronix unsurprisingly show Nouveau’s graphics performance being far behind Nvidia’s proprietary driver.
Honestly, as someone experienced with Linux gaming, I’d advise everyone who’s looking at purchasing an upcoming Steam machine to pick one with an Nvidia graphics card, even with all the furor over Nvidia’s Nouveau neglect. Avoid any Steam machines with AMD graphics—unless AMD’s Linux graphics drivers improve dramatically between now and the release of the Steam machines. Of course, if you’re just after a low-power box for streaming games from your existing gaming PC, even Intel graphics will work just fine.