What's the difference between NVIDIA open source kernel and NVK vs Nouveau vs Nova vs NVIDIA proprietary???
Posted by TheVeryVeryStrongest@reddit | linux | View on Reddit | 13 comments
Posted by TheVeryVeryStrongest@reddit | linux | View on Reddit | 13 comments
AspectBeneficial4260@reddit
I think proprietary is for making your gpu come up as meeting their requirements to see if older gpus could handle it, if they try and run it or just to view things, they assume the graphics won’t be better or they won’t do as much math with bitcoin mining, some gpus are made at home etc. and not in the serial. number system and they may not want new or old gpus on the market or in the computer data base, with big public companies and Microsoft. So the gpu they use may be better or was made by the user themself and may be why it actually exists. Sometimes gpus are just used for certain developments and its speed and processing information or decoding it doesn’t matter even though it could probably work. But it’s also to get through security clearance if a computer is stolen or if they have weaker gpus but want to play or to possibly come up as a quadro if it’s not one. But extremely fast or better gpus exist they just may not be removable and haven’t been reproduced sometimes they’re old and large. Making things larger was simple with hands and the naked eye.
This is why I didn’t get but may understand why everything was made Linux based, they all had old gpus or non name brand.
ZealousidealShape222@reddit
Nvidia open source kernel is just that, it's a kernel module that has been part of the installer with the exact same files having the exact same license, they've just started publishing it on github, that's all it is, over-hyped nothing burger applaud for nvidia.
Like for years the nvidia kernel module was open source and allowed older nvidia-dkms modules to have patches on arch linux for specific kernel versions.
Including the nvidia-340.xx-dkms being able to run the newest kernel(when it existed, 340.xx was never published on github by nvidia it was extracted from the installer).
The nvidia userspace part of the driver is still closed source, the firmware is still closed source.
Nouveau is the open source implementation of kernel modules+userspace+firmware(GTX 600, keppler and below).
NVK afaik is just implementing vulkan for nouveau/nova.
No idea what NOVA is never heard of it.
NVIDIA proprietary is the same as NVIDIA open source, the installer for a very very very long time before nvidia github page had the DKMS source and Binary compilation of the kernel module afaik they've always been the exact same.
Because trade secrets(use of licensed patents, which would cost a lot for nvidia to simply open-source) are in the gpu firmware and userspace facing libraries.
The only time NVIDIA had maintained an actual open source driver iirc was with NV driver.
AntLive9218@reddit
It's not just about trade secrets, Nvidia typically hides a lot of nasty surprises in their blobs, ranging from software limitations for market segmentation to the occasional anti-competitive trick.
If you haven't seen it yet, it's interesting to look into the "world" of hacked/patched Nvidia drivers. Some just unlock features normally available on more expensive cards, but some go as far as making "mining" cards usable for gaming even though Nvidia would prefer them to be discarded as e-waste.
Business_Reindeer910@reddit
Nova is redhat's attempt at building a driver that only works with gsp enabled cards, while leaving nouveau to the previous cards. The required code to support cards before and after GSP are different enough to justify them being separate rather than both being in nouveau.
tajetaje@reddit
Plus they can make a ton of assumptions and optimizations they couldn’t in nouveau. Kind of like the i915 vs xe kernel drivers for intel
Business_Reindeer910@reddit
They could make those optimizations in the same driver, but there'd be so many conditionals and checking that it would be hard to maintain.
tajetaje@reddit
True, plus it’s also a lot easier to do almost anything in a fresh codebase regardless.
ZealousidealShape222@reddit
Nouveau is basically an RE effort on nvidia gpus/firmware/driver to get a full open source driver stack up and running.
From maxwell/pascal and above firmware is signed, so the RE of firmware effort has stopped and nvidia firmware(with poor/late provided documentation) is used.
battler624@reddit
I'll take a crack at it.
Linux requires 2 drivers to work, kernel drivers and user drivers that is something you need to keep in mind.
Nvidia Open-Source Kernel Drivers are what the name suggests, an Open-source version of their kernel drivers.
Nvidia drivers (Prior to R560) use proprietary drivers for both kernel & userspace drivers
Nvidia drivers (Starting R560) will use proprietary drivers for userspace but use the Open-Source Kernel drivers for the kernel drivers.
\^\^ these are all the official stuff currently and in the near future.
Nouveau is the same thing as "Nvidia drivers (Prior to R560)" but made by third-party and is open-source, nouveau has issues, the userspace part of Nouveau lacks Vulkan support, the kernel space doesn't support new GPUs.
NVK is a userspace vulkan driver, which can be combined with Nouveau to add the missing Vulkan support.
Nova is a remake of Nouveau to solve the other issue of Nouveau, to fix support for new GPUs.
---------------------------- Questions below for myself, if i'm wrong please correct me ----------------------------
Q: Why does Nova exist when the nvidia official open-source kernel drivers exist?
A: its because nvidia wont upstream them to the main linux kernel (afaik) (Please enlighten me here)
Q: Why doesn't Nouveau support new GPUs?
A: because the new GPUs (since the RTX cards) have stuff locked behind the firmware embedded in the card and nouveau doesn't support that, Nova on the otherhand would directly communicate with said firmware thus making support easier.
Q: Can you just use NVK & the opensource kernel drivers?
A: Probably? I haven't tested nor looked it up.
Q: Can NVK just get added to mesa?
A: I have no idea where mesa fits in this honestly. I'm guessing its userspace drivers for all gpus with opensource kernel?
LvS@reddit
It is often not useful to think about GPUs with their official names, but with their microarchitecture. Nvidia names those after famous scientists (Wikipedia has a list, sort by release year).
Nvidia drivers will use the open module only for supported GPUs, namely those with GSP (aka GPU System Processor), which is an extra chip on the GPU that does work that previously was done by the closed source driver, such as power management.
So the code is still closed source, but it's not part of the kernel anymore, it's now part of the firmware. And that makes things open source (yay!)
The GPUs that have a GSP are Turing and and newer (which is the GTX 16xx and RTX 2/3/4xxx series).
NVK is a userspace Vulkan driver for the new GPUs, not the old ones. It requires the GSP for power management. So it supports Turing and up.
NVK is part of Mesa. In fact it is part of Mesa's nouveau driver, it lives in the
src/nouveau
subdirectory of Mesa.Mesa is the open source project that collaborates on writing drivers for graphics cards. This mainly involves OpenGL and Vulkan drivers, but also things like OpenCL and libva video decoding.
Each of those individual drivers usually is its own subproject and has its own name. The AMD OpenGL driver is called "radeonsi" and the AMD Vulkan driver is called "radv". And for nvidia GPUs the OpenGL driver is called "nouveau" and the Vulkan driver is "nvk". While we're at it: Intel has 2 drivers each, because they did a new one from scratch for the new Intel Xe architecture. The OpenGL ones are called "iris" (new) and "crocus" (old) and the Vulkan ones are "anv" (new) and "hasvk" (old).
There's also drivers for software rendering: "softpipe" (the old one for OpenGL), "llvmpipe" (the new one for OpenGL using LLVM), "lavapipe" (for Vulkan using LLVM).
There's drivers for embedded/mobile GPUs (not gonna enumerate them all).
There's drivers for virtualization: "virgl" for OpenGL and "vn" for Vulkan. And Microsoft is writing a driver to work on top of DirectX: "d3d12" for OpenGL and "dzn" for Vulkan. The main use case I believe is both running Linux apps in WSL and supporting old games/apps on Windows 11 for vendors that don't ship GL drivers.
And then there's "zink".
"zink" is an OpenGL driver that uses the Vulkan driver to implement OpenGL. This is interesting in the context of nvidia's new GPUs, because it allows OpenGL using the new NVK Vulkan driver instead of the old nouveu code.
Confused yet?
Maybe https://mesamatrix.net/ helps, which lists all the drivers and what features they support (but not which GPUs).
nightblackdragon@reddit
NVK actually supports older GPUs down to Kepler generation. While it might be useless for some Maxwell and all Pascal GPUs, it might be usable on Kepler and first Maxwell GPUs as they don't require signed firmware so they can be reclocked. Support is still experimental as main target is Turing and newer.
LupertEverett@reddit
Not Nvidia, but Linux devs instead. The problem here is that kernel drivers must have an userspace driver to go along with them if they are to be included. And since Nvidia's kernel driver only works with the proprietary userspace drivers...
At least it is still useful as a reference driver for Nouveau/Nova.
Signed firmwares are a thing since Maxwell, not the RTX cards. The difference between Maxwell/Pascal and Turing+ (a.k.a. the RTX cards) is that the latter can also be driven with GSP firmware, which is basically a "mega-firmware" That includes everything within it. The former cards are outta luck as they need several individual firmwares, with the PMU one never being released by Nvidia with a redistributable license.
Nouveau supports newer GPUs, as it has GSP firmware support since Linux 6.7. Nova is made just for the cards supporting GSP, thus simplifying the code a lot.
No. NVK is Nouveau/Nova only.
NVK is already in Mesa since version 23.3. It is the community-made userspace Vulkan driver (think RADV)
nightblackdragon@reddit
That question was asked multiple times but:
Linux drivers are separated into two components - kernel driver that drives the hardware itself (doing thing like memory and power management etc.) and user space driver that implements things like OpenGL, Vulkan, OpenCL on top of kernel driver.
NVIDIA proprietary driver is well, proprietary driver from NVIDIA. Both components (kernel driver and user space driver) are proprietary. NVIDIA Open is open source kernel module based on GSP that still requires proprietary user space to work.
Nouveau is open source driver (both kernel and user space) for NVIDIA cards created mostly with reverse engineering. NVK is open source Vulkan driver that works with Nouveau kernel driver and in future it will work with Nova kernel driver. Nova is new open source kernel driver that is based on GSP (just like NVIDIA open source kernel module) that eventually will replace Nouveau for newer NVIDIA cards.
GSP is RISC-V processor that is present on NVIDIA cards starting from Turing architecture (RTX 2xxx and GTX 16xx). It is responsible for doing things that were previously handled by kernel drivers. NVIDIA open kernel module is based on it (that's why it works only on Turing and newer). Nouveau and Nova can use same firmware to provide things that were previously missing (like reclocking).