Check out our Monthly Survey Page to see what our users are running.
We do often include affiliate links to earn us some pennies. See more here.

Nova, a Rust-based Linux driver for NVIDIA GPUs announced

By - | Views: 48,527

Danilo Krummrich who is a Red Hat display driver team Software Engineer, announced the Nova project, a Rust-based GSP-only driver for Nvidia GPUs. Nova, in the long term, is intended to serve as the successor of Nouveau for GSP-firmware-based GPUs.

Quoting his email from the dri-devel mailist

With Nova we see the chance to significantly decrease the complexity of the driver compared to Nouveau for mainly two reasons. First, Nouveau's historic architecture, especially around nvif/nvkm, is rather complicated and inflexible and requires major rework to solve certain problems (such as locking hierarchy in VMM / MMU code for VM_BIND currently being solved with a workaround) and second, with a GSP-only driver there is no need to maintain compatibility with pre-GSP code.

Besides that, we also want to take the chance to contribute to the Rust efforts in the kernel and benefit from more memory safety offered by the Rust programming language. Ideally, all that leads to better maintainability and a driver that makes it easy for people to get involved into this project.

Please look at the full email for more details on this matter.

Nova is aiming to be a modern replacement for Nouveau and focus on developing a driver from the ground without the legacy that comes with that older opensource driver, and focusing on GPUs that are newer than the RTX 2000 series which have a better GSP(GPU System Processor) support, while non-GSP GPUs were always tricky to deal with. This driver will also indirectly boost the morale of those trying to develop Rust-based drivers for Linux by providing examples for those who want to be involved in developing kernel technology using that language.

That doesn't mean Nouveau will die soon, since it will still handle older GPUs that do not rely on GSP for hardware initialization and management, and we see a loot of improvement with NVK lately.

As for today, the Nova repository is looking really active and promising although the README file states that there is still a lot to be done until this driver can be considered ready for production use.

Article taken from GamingOnLinux.com.
25 Likes
About the author -
author picture
I'm and enthusiast of Linux on Laptops and Secure Boot related stuff. Playing exclusively on Linux since 2013. Played on Wine on dates that trace back to 2008(Diablo 2, Lineage 2...). A troubleshooter that used to work with strace and it is now working with Kubernetes...
See more from me
26 comments
Page: 1/3»
  Go to:

Okay, I'm confused here - is this redundant with NVK and what other aspect of this vs NVK that I'm not understanding that would make the project make sense as it's own thing despite the great progress that NVK has made in recent months?
nwildner Mar 26
Quoting: fenglengshunOkay, I'm confused here - is this redundant with NVK and what other aspect of this vs NVK that I'm not understanding that would make the project make sense as it's own thing despite the great progress that NVK has made in recent months?

Not redundant. It is a "replacement" (read with a grain of salt here) for the nouveau driver, but focused on GSP enabled GPUS that don't have to deal with the legacy nouveau has to implement to handle older than RTX2000 series hardware.

It is a kernel driver(dri, pci, iomem, common abstractions for hardware) and not a translation layer or 3D API whatsoever.


Last edited by nwildner on 26 March 2024 at 1:57 pm UTC
Quoting: nwildnerNot redundant. It is a "replacement" (read with a grain of salt here) for the nouveau driver, but focused on GSP enabled GPUS that don't have to deal with the legacy nouveau has to implement to handle older than RTX2000 series hardware.

It is a kernel driver(dri, pci, iomem, common abstractions for hardware) and not a translation layer or 3D API whatsoever.
Hm... and the NVK isn't a kernel driver? I think it's in Mesa, so does that mean it's the userspace driver? Sorry, really don't know about the details - all I've been hearing is about how NVK is supposed to be a replacement for Nouveau.
ToddL Mar 26
I hope no one thinks Nova means "no go" in Spanish because if they can't get their replacement working out right, then you know the name sounds appropriate. However, I'm sure in due time, they'll sort it out and hopefully, make something better than Nouveau. Now, I must be feeling old because that name reminds me of the early 2000s with trying to get those Nvidia cards working on Linux with little success.
Shmerl Mar 26
Quoting: fenglengshunHm... and the NVK isn't a kernel driver? I think it's in Mesa, so does that mean it's the userspace driver? Sorry, really don't know about the details - all I've been hearing is about how NVK is supposed to be a replacement for Nouveau.

nvk is a Vulkan implementation that uses the kernel driver, so no, it's not a kernel driver itself. So it's either nvk + nouveau or nvk + nova.


Last edited by Shmerl on 26 March 2024 at 3:21 pm UTC
Quoting: nwildner
Quoting: fenglengshunOkay, I'm confused here - is this redundant with NVK and what other aspect of this vs NVK that I'm not understanding that would make the project make sense as it's own thing despite the great progress that NVK has made in recent months?

Not redundant. It is a "replacement" (read with a grain of salt here) for the nouveau driver, but focused on GSP enabled GPUS that don't have to deal with the legacy nouveau has to implement to handle older than RTX2000 series hardware.

It is a kernel driver(dri, pci, iomem, common abstractions for hardware) and not a translation layer or 3D API whatsoever.
Nice hat!
elgatil Mar 26
Quoting: Shmerl
Quoting: fenglengshunHm... and the NVK isn't a kernel driver? I think it's in Mesa, so does that mean it's the userspace driver? Sorry, really don't know about the details - all I've been hearing is about how NVK is supposed to be a replacement for Nouveau.

nvk is a Vulkan implementation that uses the kernel driver, so no, it's not a kernel driver itself. So it's either nvk + nouveau or nvk + nova.

Or NVK + Zink, which at this point seems the efficient solution. I do not know, I cannot bring myself to be interested in this project
Quoting: elgatil
Quoting: Shmerl
Quoting: fenglengshunHm... and the NVK isn't a kernel driver? I think it's in Mesa, so does that mean it's the userspace driver? Sorry, really don't know about the details - all I've been hearing is about how NVK is supposed to be a replacement for Nouveau.

nvk is a Vulkan implementation that uses the kernel driver, so no, it's not a kernel driver itself. So it's either nvk + nouveau or nvk + nova.

Or NVK + Zink, which at this point seems the efficient solution. I do not know, I cannot bring myself to be interested in this project
I . . . didn't think Zink was a driver either?
melkemind Mar 26
Quoting: elgatil
Quoting: Shmerl
Quoting: fenglengshunHm... and the NVK isn't a kernel driver? I think it's in Mesa, so does that mean it's the userspace driver? Sorry, really don't know about the details - all I've been hearing is about how NVK is supposed to be a replacement for Nouveau.

nvk is a Vulkan implementation that uses the kernel driver, so no, it's not a kernel driver itself. So it's either nvk + nouveau or nvk + nova.

Or NVK + Zink, which at this point seems the efficient solution. I do not know, I cannot bring myself to be interested in this project

All this proves is that Free and Open Source Software has a naming problem. I still don't quite understand why people talk about Radv and amdvlk all the time but I've never found either on my AMD system. Having a bunch of names and alternate names for things just makes the barrier for entry that much harder for new users, especially for people coming over from the Steam Deck and trying Linux for the first time.
Pikolo Mar 26
[quote=Purple Library Guy]
Quoting: elgatil
Quoting: Shmerl
Quoting: fenglengshunHm... and the NVK isn't a kernel driver? I think it's in Mesa, so does that mean it's the userspace driver? Sorry, really don't know about the details - all I've been hearing is about how NVK is supposed to be a replacement for Nouveau.

nvk is a Vulkan implementation that uses the kernel driver, so no, it's not a kernel driver itself. So it's either nvk + nouveau or nvk + nova.

Or NVK + Zink, which at this point seems the efficient solution. I do not know, I cannot bring myself to be interested in this project
Stricly speaking it would be Nova + nvk + zink.
Nova controlling the GPU directly, NVK using Nova to run Vulkan on the GPU, and Zink running OpenGL on Vulkan.
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register


Or login with...
Sign in with Steam Sign in with Google
Social logins require cookies to stay logged in.