Nvidia takes the first step toward open-source Linux GPU drivers

Nvidia takes the first step toward open-source Linux GPU drivers

The RTX 3080 Ti.
Enlarge / The RTX 3080 Ti.

Sam Machkovech

After years of hinting, Nvidia announced yesterday that it would open-source a portion of its Linux GPU driver, as both Intel and AMD have done for years. Previously, Linux users who wanted to bypass Nvidia’s proprietary driver had to resort to reverse-engineering software like the Nouveau project, which worked best on older hardware and offered incomplete support for all of Nvidia’s GPU features at best.

“This release is a significant step in improving the experience of using NVIDIA GPUs in Linux, for tighter integration with the operating system, and for developers to debug, integrate, and release,” reads a blog post shared by several Nvidia employees is attributed. “For Linux distribution vendors, the open-source modules increase user-friendliness. They also improve the out-of-the-box user experience when signing and distributing the NVIDIA GPU driver. Canonical and SUSE are able to package the open kernel modules out-of-the-box with Ubuntu and SUSE Linux Enterprise distributions.”

Nvidia explicitly releases and is an open-source kernel driver under a dual MIT/GPL license not currently open source parts of the driver running in user space. In addition to the firmware for the GPU System Processor (GSP), this also includes drivers for OpenGL, Vulkan, OpenCL and CUDA, which are still closed source. Nvidia says these drivers will “remain closed source and will be released with pre-built binaries,” so it doesn’t sound like there are any immediate plans to release open-source versions.

Nvidia still lags behind Intel and AMD in open-source GPU drivers – both companies maintain open-source kernel and user-space drivers, as well as closed-source firmware. However, this is a first step towards 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, RTX 2000 and 3000 series, and Quadro workstation GPUs based on the same architecture. The company’s proprietary drivers date back to 2012’s Kepler architecture.

The open source drivers are also not yet integrated upstream into the Linux kernel because, as Phoronix reports, the API, ABI and the interface between the kernel driver and the GSP firmware interface have not yet been finalized. This means that everything from the firmware to the kernel driver to the user-space drivers must match versions to work properly (today’s version is version R515.43.04). Once these interfaces are complete, the driver can be uploaded into the kernel, and different versions of the firmware, kernel driver, and user-space drivers should be able to work together.

Nvidia says support for its data center GPUs in the current drivers is “production-ready” in this first release, but that support for GeForce, Quadro, and other consumer GPUs is “alpha quality” — this isn’t software that You want to rush to install unless you want to kick the hoops 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 to its closed source firmware, which is then called by the open source driver. Martin Calls the open-source driver “a net gain for practical purposes” because the blob of proprietary code can be more easily sandboxed. “But no freedom has been won for people who care,” he writes. “[About] the same amount of code is closed [as before].”

Leave a Reply

Your email address will not be published.