Not one but two new drivers for some Nvidia GPUs is a promising, if indirect, offshoot of the GPU maker's open-saucy moves.
Two new open source drivers for certain Nvidia GPUs were released recently. One is for Haiku OS, and the other is an all-new FOSS Nvidia driver for Linux. The former is a big deal for this experimental open-source re-implementation of BeOS, which is a niche project with very little in the way of device-driver support from hardware vendors. The other is less crucial, especially given Nvidia already pumps out its own Linux drivers. However, it does offer a smaller, simpler, and probably faster all-FOSS alternative to the existing, but ageing, Nouveau driver.
What's interesting is that aside from how both benefit from Nvidia's 2022 FOSS driver release, the Haiku driver draws upon some code from the other new driver. Back then, the GPU-maker published the source code for its Linux kernel modules, and it did so under the permissive MIT license.
We have to note that both drivers are only for some recent models of Nvidia graphics chip – specifically, ones from the company's Turing family of GPUs, which has been around since 2018. (Broadly that means the RTX 20XX and GTX 16XX models). Neither driver supports older Nvidia GPUs, so neither is any help for those of us who are still struggling with Nvidia legacy Linux drivers. Even so, their existence is a sign that the Jolly Green Giant's open source initiative in 2022 is starting to bear fruit… or at least, it's resulted in some early flowers which may soon turn into something worth eating.
The newer of the two drivers is X512's early, experimental Haiku kernel Nvidia driver. "X512" is the same intrepid Haiku hacker who a few years ago was also responsible for the Haiku port of WINE. They call their new driver NVRM. On its own, NVRM isn't a complete graphics driver, but it is partly based on that Nvidia code release.
Interestingly, the way the Haiku driver works is related to a recent announcement from UK open source coder collective Collabora, which recently announced another new FOSS NVIDIA driver called Zink. Zink has been in development for quite a while – it was announced back in 2018. Zink provides hardware-accelerated OpenGL by providing a translation layer to convert OpenGL calls to the more modern 3D API, Vulkan. On Nvidia Turing-family GPUs, Zink works with another bit of FOSS, an Nvidia driver called NVK which provides Vulkan.
NVK emerged from the same outfit as Zink: Collabora announced it in late 2022, and as that announcement explains, its development was facilitated by the publicly-readable source code from Nvidia. Like the existing Nouveau drivers, NVK is a FOSS driver for Nvidia GPUs. NVK is part of the Mesa 3D libraries.
Mesa3D is slightly more complicated to explain. Its own documentation says it is "an open-source implementation of the OpenGL specification". That's true, but it's badly underplaying it. These days, Mesa also implements Vulkan, a cross-platform hardware-independent APU for 3D graphics. Vulkan isn't a Linux thing: it also works on Windows, macOS, and Android. Mesa isn't just for Linux either: Mesa is a cross-platform FOSS implementation of OpenGL and Vulkan that can talk to multiple vendors' GPUs on multiple OSes. For instance, on Windows, where GPU vendors make very sure that they have current drivers for all their hardware which support Microsoft APIs such as DirectX, Mesa3D provides an OpenGL interface to DirectX. So, Mesa is an important part of the Linux and FreeBSD graphics driver stack, and aside from Nvidia's proprietary drivers, most other FOSS 3D drivers use Mesa.
Back to the new drivers. Collabora did a lot of work on building NVK. NVK is a device driver that talks to Nvidia Turing GPUs and provides a Vulkan interface, then Zink talks to NVK and provides OpenGL.
Youtube Video
What we find of note is that X512 managed to take Mesa's NVK implementation of Vulkan, and wire it up to their new NVRM driver. The result is a preliminary Nvidia driver for Haiku, although at the moment, it's providing Vulkan, instead of the much older and more widely used OpenGL.
This is a big step forwards, because although Haiku, like the original BeOS of which it is an open-source recreation, has always had snazzy 3D graphics and video playback, because of a lack of drivers, they are rendered in software – although as the discussion thread there said in 2023, several drivers were under construction.
One of the more famous BeOS demonstrations was a program that displays 3D rendered objects, such as a book whose pages you could flip, or a 3D cube you could spin. The user could drop multiple different image files onto the surfaces of the 3D object and then play with it, and the images were smoothly mapped into 3D. (It's about 12 minutes into the nearby YouTube video.) Haiku, naturally, also has an app for this.
It is hard to convey just how extremely impressive this was in 1998, before Nvidia launched the Riva TNT2 in early 1999. For readers who weren't around back then, that's the GPU before it released the GeForce 256, the first mass-market GPU with hardware transform and lighting. The BeOS demo came just two years after the release of id's Quake. Most of us ran that at 320×200, and if you had a seriously fast PC it might manage as many as 30 frames a second. To see this demo with full-motion video on a 3D surface in a window on a high-resolution desktop was literally awe-inspiring.
All that was done entirely in software. The prospect of what this OS might be able to do if it can access the power of modern display hardware is quite exciting. But yes, having another all-FOSS option on Linux as well, that's definitely good, too. ®