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.
Quoting: nyanbinaryAMD Rust Driver when
Rust on its own is not enough reason to re-write the driver. Nova isn't being re-written just for the sake of writing it in Rust. If the AMD driver is already in good shape then it doesn't need to be re-written in Rust. Rust doesn't give the user any benefit, it only gives the developer the benefit of needing less effort to write good code, but that less efforts is still more efforts than not re-writing at all.
Quoting: ToddLI 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.
I suppose you are sarcastic about the "no go" driver, but just for the record to mention:
Nova means "New" (female gendered) in several Indo-european languages, same like Nouveau which means "New" (male gendered) in French.
I remember it was just a couple of years ago you couldn't connect more than one monitor to a Pascal card without KDE Plasma burning itself alive (in my experience). Wouldn't be shocked if we had a pretty competent, complete open source driver stack close to Radeon's within the next 4 years.
You see, it's actually really simple.
Graphics drivers always come in pairs, you see: there's a kernel driver, and then there's a userspace driver that sits on top of the kernel driver. First, we had the Nouveau kernel driver, which was a reverse-engineered open source driver alternative to the proprietary NVIDIA driver (it does not have a name). The proprietary NVIDIA driver, to keep things simple, is both the kernel and userspace driver in one. So, by itself, the Nouveau kernel driver is not useful, which is why it needs a userspace driver. To keep things simple, it was also called "Nouveau". It handled OpenGL calls.
Many years later, NVIDIA open sourced the kernel driver of their proprietary stack, often referred to as "open kernel modules". So now they have two drivers too!
Now we have NVK, which is a userspace driver just for Vulkan. Then Zink was written (which afaik was also being used for AMD) for the OpenGL calls, but what it really does is convert the OpenGL calls to Vulkan calls, which ends up being both faster than writing a new OpenGL driver and actually faster in performance because Vulkan is apparently the panacea to almost every problem on Linux.
So you can have a few stacks:
Nouveau (kernel) + Nouveau (userspace)
Nouveau (kernel) + NVK + Zink
Nova + NVK + Zink
NVIDIA (proprietary kernel) + NVIDIA (proprietary userspace)
NVIDIA (open modules) + NVIDIA (proprietary userspace)
The open modules are also "out of tree", which means they will never be mainlined like Nouveau, so they are no easier to install than the proprietary modules, and offer the same performance.
However, be careful! You can't combine the open modules from NVIDIA with Nouveau userspace or NVK + Zink. The open kernel modules only work with the proprietary driver.
I wonder if you could combine Nouveau (kernel) with NVK and Nouveau (userspace). Food for thought!
Then there's the GSP firmware for the GPUs. This is what will allow NVK to support HDMI 2.1+, because that code is inside the firmware. I think. I don't know anymore.
I get the distinct feeling I'm missing something...
Oh, and I almost certainly got the stuff about Zink wrong. I think that had something to do with converting the OpenGL code on the Nouveau userspace driver to Vulkan or something..?
Last edited by pleasereadthemanual on 27 March 2024 at 12:51 am UTC
Quoting: pleasereadthemanualGraphics drivers always come in pairs, you see:So they're like the Sith, then?
* The Linux graphics stack in a nutshell, part 1
* The Linux graphics stack in a nutshell, part 2
Very roughly, when you see some name just try to figure out whether it refers to the kernel or userpsace component. That would help narrow down understanding what it's for.
Last edited by Shmerl on 27 March 2024 at 1:05 am UTC
Quoting: radubeI look forward to the eventual replacements Nuevo, Nieuw, Nou, Novu, Neu, Nua…Quoting: ToddLI 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.
I suppose you are sarcastic about the "no go" driver, but just for the record to mention:
Nova means "New" (female gendered) in several Indo-european languages, same like Nouveau which means "New" (male gendered) in French.
Quoting: pleasereadthemanualYou see, it's actually really simple.
(...writes a manual...)
Quoting: pleasereadthemanualI get the distinct feeling I'm missing something...
(Serious) question: Mesa?
Last edited by Eike on 27 March 2024 at 4:56 pm UTC
See more from me