Today can be one of the most memorable days in Linux history. Something unprecedented happened, which the Linux community has been feverishly requesting for years but has never occurred – the Nvidia GPU driver to be open source so that it can be developed and deployed in the Linux kernel reliably and qualitatively.
In an unexpected move, NVIDIA has announced that starting with the R515 release, the company open-sourcing the Linux GPU driver for its graphics cards using a dual GPL/MIT license.
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. 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.
NVIDIA Announcement
So, this is big news. Good to see it finally happening. It’s still going to be a while before this is relevant to consumers, but this is a gigantic step to making it all work.
There is hardly a Linux user who has not watched the famous Aalto talk with Linus Torvalds hosted by Aalto Center for Entrepreneurship (ACE) in Otaniemi on June 14, 2012. When asked about hardware producers, mainly NVIDIA, Torvalds made his attitude towards the company quite clear during the QA session.
Well, that is apparently about to change now. According to NVIDIA, the sources will be published on GitHub in the NVIDIA Open GPU Kernel Modules repo with each new driver release. In addition, they will accept contributions from the community and other developers. So, users can compile kernel modules from source code and install them alongside the appropriate user-mode drivers.
Moreover, the open-source kernel-mode driver uses the same firmware and user-mode stacks as CUDA, OpenGL, and Vulkan. But before everyone’s enthusiasm takes over, some considerations must be made. First, there’s still quite a long road ahead.
The current codebase does not conform to the Linux kernel design conventions and is not a candidate for Linux upstream.
NVIDIA Announcement
So, at the moment, only the data center GPUs are “production-ready, opt-in.” The code has been tested across many workloads to ensure feature and performance parity with the proprietary kernel-mode driver. Still, it also adds new functionality, such as the DMA-BUF framework for sharing buffers across devices and subsystems.
Support for GeForce and Workstation GPUs is alpha quality in this open-source release.
More robust and fully featured GeForce and Workstation support will follow in subsequent releases, and the NVIDIA Open Kernel Modules will eventually supplant the closed-source driver.
NVIDIA Announcement
The users of GeForce and Workstation can use this driver on Turing and Ampere architecture GPUs to run Linux desktops and make use of capabilities like multiple monitors, G-SYNC, and NVIDIA RTX ray tracing in Vulkan and NVIDIA OptiX.
However, Linux users running GPUs on architecture before Turing will continue using the old-style proprietary drivers.
In addition, according to NVIDIA, Canonical (Ubuntu), Red Hat, and SUSE are all planning to bundle and use open kernel modules. As a result, NVIDIA has collaborated with these three companies to optimize packaging rollout and establish better customer support models.
So, probably one of NVIDIA’s primary goals with these open-source drivers is clearly to increase support and functionality for large data center installations. But, unfortunately, as implied, the scenario for home users isn’t quite sunshine and roses right now.
However, this is a good start waited for many years by the Open Source community. And hopefully, soon, every Linux user using a modern NVIDIA GPU will benefit from a stable and fully functional open-source driver for their NVIDIA video card.
You can read the full announcement on the NVIDIA Technical Blog.