Nvidia takes first step toward open source Linux GPU drivers
After years of hinting, Nvidia announced yesterday that it would be open-sourcing part of its Linux GPU driver, as both Intel and AMD have done for years now. Previously, Linux users who wanted to avoid Nvidia’s proprietary driver had to rely on reverse-engineered software like the Nouveau project, which worked best on older hardware and offered incomplete support at best for all of Nvidia’s GPU features.
“This release is a significant step toward improving the experience of using NVIDIA GPUs in Linux, for tighter integration with the OS, and for developers to debug, integrate, and contribute back,” says a blog post attributed to several Nvidia employees. “For Linux distribution providers, the open source modules increase ease of use. They also improve the out-of-the-box user experience to sign and distribute the NVIDIA GPU driver. Canonical and SUSE are able to immediately package the open kernel modules with Ubuntu and SUSE Linux Enterprise Distributions.”
Nvidia is specifically releasing an open source kernel driver under a dual MIT/GPL license and is not currently open-sourcing parts of the driver that run in user space. This includes drivers for OpenGL, Vulkan, OpenCL, and CUDA, which are still closed source, in addition to the firmware for the GPU System Processor (GSP). Nvidia says these drivers “will remain closed source and published with pre-built binaries,” so it doesn’t sound like there are immediate plans to release open source versions.
Nvidia is still behind both Intel and AMD when it comes to open source GPU drivers—both companies maintain open source kernel and user space drivers, along with closed-source firmware. But this is a first step toward open source parity for Nvidia’s Linux driver packages.
Nvidia’s open source drivers only support the company’s Turing-based GPUs and newer, including the GeForce GTX 1600 series, the RTX 2000 and 3000 series, and Quadro workstation GPUs based on the same architecture. The company’s proprietary drivers go all the way back to 2012’s Kepler architecture.
The open source drivers also won’t be integrated upstream into the Linux kernel yet, since, as Phoronix reports, the API, ABI, and the interface between the kernel driver and the GSP firmware interface have not been finalized. This means that everything, from the firmware to the kernel driver to the user space drivers, needs to match versions to work properly (today’s release is version R515.43.04). Once those interfaces have been finalized, the driver can be upstreamed into the kernel, and different versions of the firmware, kernel driver, and user space drivers should be able to interoperate.
Nvidia says that support for its data center GPUs in the current drivers is “production ready” in this initial release but that support for GeForce, Quadro, and other consumer GPUs is “alpha quality”—this isn’t software you’ll want to rush to install unless you’re wanting to kick its tires on a testbed system or contribute to the code yourself.
Hector Martin, one of the developers behind the Asahi Linux distribution, criticized Nvidia for moving many functions into its closed-source firmware, which the open source driver then calls into. Martin calls the open source driver “a net win for practical purposes” since the blob of proprietary code can be sandboxed more readily. “But no freedom was gained, for people who care about that,” he writes. “[About] the same amount of code is closed [as before].”