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.
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.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.
It is a kernel driver(dri, pci, iomem, common abstractions for hardware) and not a translation layer or 3D API whatsoever.
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: nwildnerNice hat!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.
Quoting: ShmerlQuoting: 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: elgatilI . . . didn't think Zink was a driver either?Quoting: ShmerlQuoting: 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: elgatilQuoting: ShmerlQuoting: 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.
Quoting: elgatilStricly speaking it would be Nova + nvk + zink.Quoting: ShmerlQuoting: 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
Nova controlling the GPU directly, NVK using Nova to run Vulkan on the GPU, and Zink running OpenGL on Vulkan.
See more from me