Gaming on Linux has always been a bit more complicated than on Windows (or game consoles), and one reason for that is Nvidia’s poor driver support on Linux. That’s now changing, though it’s unclear how much the situation will improve.
Nvidia announced on Wednesday that it has published its Linux graphics kernel modules as open-source software, under a dual GPL/MIT license. In other words, anyone can now look through Nvidia’s code, and developers can submit fixes and new features to improve the drivers. Canonical (developers of Ubuntu Linux), SUSE, and Red Hat (developers of Fedora Linux) applauded Nvidia’s decision to finally open-source its Linux graphics drivers.
Nvidia said in its blog post, “In this open-source release, support for GeForce and Workstation GPUs is alpha-quality. GeForce and Workstation users can use this driver on NVIDIA Turing and NVIDIA Ampere Architecture GPUs to run Linux desktops and use features such as multiple displays, G-SYNC, and NVIDIA RTX ray tracing in Vulkan and NVIDIA OptiX.”
Why Open-Source Matters
So, why is this a big deal? Well, Nvidia graphics cards have never worked well with Linux PCs. Intel and AMD both maintain open-source graphics drivers for their products, which can then be included in the standard Linux kernel. The end result is that if you have a gaming PC with a Radeon GPU, or a laptop with Intel Xe graphics, everything just works on Linux. Since the code is available for anyone to look at and modify, Intel and AMD graphics work better with newer changes in the Linux ecosystem, like the emerging Wayland display server.
Unlike AMD and Intel, Nvidia did not open-source its drivers (before now). The proprietary driver package sometimes needs to be installed separately, and since Nvidia is the only one with access to the code, the drivers don’t support Wayland and other newer Linux features. Linux developers created the open-source Nouveau driver as an alternative, but that usually offers worse performance than Nvidia’s software, since it’s essentially a reverse-engineering project.
Put simply, Linux PCs with Nvidia graphics cards have had to choose between two bad options for years: a closed-source driver with bugs and missing features, or an open-source driver with worse performance. In theory, Nvidia’s open-source drivers should be the best of both worlds.
That’s all great news, but there are a few reasons to temper your excitement. Hector Martin, the main developer for Asahi Linux, shared in a series of tweets that much of the important graphics code isn’t actually open-source. Nvidia appears to have moved much of its proprietary code into the firmware on its graphics cards, which the open-source code interacts with — a bit like the Intel Management Engine on Intel CPUs.
For reference, Apple's GPU firmware is ~400kB. Apple's display controller, which is a similarly insane RPC mess, is ~7MB, but most of it is data tables (~1.5MB is code).
Don't get me wrong, less blobs in the kernel is great… but open source their "driver" they did not.
— Hector Martin (@marcan42) May 12, 2022
Martin theorized that some of Nvidia’s code can’t be open-sourced due to patent and licensing agreements, so this half-measure was the only way to make open-source drivers happen. AMD’s graphics drivers also use some proprietary firmware components, but not nearly as much as Nvidia.
There are other problems, too. The open-source driver only supports graphics cards that use Nvidia’s Ampere and Turing architectures, which includes the GeForce 16-series, RTX 20-series, and newer GPUs. Anyone with a GTX 10-series card or other older hardware don’t have access to the new driver at all.
Finally, Nvidia isn’t actually handling code updates like most open-source projects. The FAQ section on the announcement says each code release will be “a snapshot generated from a shared codebase, so contributions may not be reflected as separate Git commits in the GitHub repo.” In other words, it will be difficult for developers outside of Nvidia to track changes and diagnose problems.
A Long Road Ahead
The open-source driver release might be disappointing for some, especially for anyone still using older Nvidia graphics cards that aren’t supported (it has been a bit difficult to buy a new graphics card lately). However, this is an important step in the right direction, if only because companies like Canonical and Red Hat have the opportunity to help improve Nvidia’s code for the first time ever.
Nvidia hopes the open-source driver can eventually be upstreamed into the Linux kernel, which might finally give PCs with GeForce hardware the same plug-and-play experience that AMD and Intel-based PCs have enjoyed for years under Linux.
Source: Nvidia, GitHub