Nvidia’s moved most of the code to firmware before releasing Open-Source Linux drivers
Linux gaming, once thought of as a niche option for the passionate few, is now steadily moving out of the shadows. This has only been accelerated by its use in Valve’s Steam Deck which is still working towards improvements for things like battery life with Linux drivers.
Even just the announcement that the new hybrid console would be using the Linux platform boosted Linux’s Steam market share by 1%. This might not sound like much, but for Linux gamers this has been a huge deal that’s only getting bigger and potentially better.
Recently, amongst this surge for Linux gaming, Nvidia did the unthinkable by releasing some of its Linux GPU drivers as open-source. It started with the GPU kernels, which should allow for much easier troubleshooting by Linux developers. This would no doubt be helped along by the statistically better bug reporting from Linux users.
But it seems this release may not be quite as good as we initially hoped according to Asahi Linux developer Hector Martin (via Charopf). Martin posted a series of Tweets explaining that most of the kernel driver was actually just moved to firmware. The new open-source component interacts with this closed firmware, but most of the work seems to be still taking place behind Nvidia’s closed doors.
So NVIDIA “released” their kernel driver as open source. By which they mean, they moved most of it to firmware and made the open source driver call into it. There are almost 900 functions implemented in the 34MB firmware, give or take, from what I can see.Broadcom vibes…May 12, 2022
Martin also notes that this could be largely due to patent and licensing agreements within the code. There’s probably plenty of stuff Nvidia doesn’t have the rights to let go free and this was potentially the best effort the company could make for now.
The Nvidia FAQ also states that user-mode drivers such as CUDA would be untouched and will remain closed source. Though all of this does still beg the question why Nvidia is choosing to manage the code differently to many open source projects, especially given so much is still technically safely locked away.
Rather than a typical Github collaboration when it comes to patch submissions, Nvidia is still maintaining a fair amount of control. Fixes can be submitted through pull requests where Nvidia will review, and potentially integrate with modifications into a new driver release. As such, the published source code will only ever be a snapshot that’s generated from the shared codebase, at least for now.
While it’s great to see any Nvidia code go open-source, especially when it’s regarding Linux, it’s certainly not quite as open as many would like. Perhaps slightly ajar source would have been a better name this time around.