In a nice big win for open source, NVIDIA has today officially revealed that they've released open source Linux GPU kernel modules. Additionally, driver version 515.43.04 is out. This is a huge step and hopefully the sign of more to come from NVIDIA.
This release is a significant step toward improving the experience of using NVIDIA GPUs in Linux, for tighter integration with the OS and for developers to debug, integrate, and contribute back. For Linux distribution providers, the open-source modules increase ease of use. They also improve the out-of-the-box user experience to sign and distribute the NVIDIA GPU driver. Canonical and SUSE are able to immediately package the open kernel modules with Ubuntu and SUSE Linux Enterprise Distributions.
NVIDIA
NVIDIA say that with each new driver release, they will be publishing the sources mentioned on GitHub, and they will be accepting contributions from the community and other developers.
For now, data center GPUs are "production ready" but normal GeForce and Workstation GPUs (what we all use) are at an "alpha quality" for Turing and Ampere but NVIDIA plans to continue improving on it and "fully featured GeForce and Workstation support will follow in subsequent releases and the NVIDIA Open Kernel Modules will eventually supplant the closed-source driver". NVIDIA has also been working with the likes of Canonical, Red Hat, and SUSE for better packaging and deployment of it all.
There's still quite a long road ahead, as NVIDIA say it currently doesn't conform to the upstream Linux kernel design and so can't go upstream yet but they have plans to work on "an upstream approach" with help again from Canonical, Red Hat, and SUSE. For now, NVIDIA say it can serve as a way to also "help improve the Nouveau driver" since it will be able to use the same firmware as the main proprietary NVIDIA driver.
As for the driver release version 515.43.04, here's the main changes:
- Added support for the VK_EXT_external_memory_dma_buf and VK_EXT_image_drm_format_modifier Vulkan extensions. To use this functionality, the nvidia-drm kernel module must be loaded with DRM KMS mode setting enabled. See the DRM KMS section of the README for guidance on enabling mode setting.
- Changed nvidia-suspend.service, nvidia-resume.service, and nvidia-hibernate.service to use WantedBy= rather than RequiredBy=dependencies for systemd-suspend.service and systemd-hibernate.service.This avoids a problem where suspend or hibernate fails if the NVIDIA driver is uninstalled without disabling these services first.
See https://github.com/systemd/systemd/issues/21991
If these services were manually enabled, it may be necessary to update their dependencies by running sudo systemctl reenable nvidia-suspend.service nvidia-resume.service nvidia-hibernate.service- Interlaced modes are now disabled when active stereo is enabled.
- NVIDIA X Server Settings will now display the quit confirmation dialog automatically if only there are pending changes that need to be manually saved. The corresponding configuration option to control the appearance of the quit dialog was thus also removed.
- Removed the warning message about mismatches between the compiler used to build the Linux kernel and the compiler used to build the NVIDIA kernel modules from nvidia-installer. Modern compilers are less likely to cause problems when this type of mismatch occurs, and it has become common in many distributions to build the Linux kernel with a different compiler than the default system compiler.
- Updated nvidia-installer to skip test-loading the kernel modules on systems where no supported NVIDIA GPUs are detected.
- Updated nvidia-installer to avoid a race condition which could cause the kernel module test load to fail due to udev automatically loading kernel modules left over from an existing NVIDIA driver installation. This failure resulted in an installation error message "Kernel module load error: File exists".
- Updated the RTD3 Video Memory Utilization Threshold (NVreg_DynamicPowerManagementVideoMemoryThreshold) maximum value from 200 MB to 1024 MB.
With those changes, it means the start of support for Gamescope on NVIDIA drivers too!
Source code up on GitHub, driver release here.
Also, you can read the take from Red Hat's Christian F.K. Schaller on it here.
Update: oh, and remember how NVIDIA wanted to get NVIDIA Image Scaling into Proton? Well, a Pull Request is now up for Gamescope support, where it might be more likely to be accepted since it makes a bit more sense there perhaps.
With all three main GPU brands supporting open-source kernel drivers, Linux will be at a better place than it ever was.
Now we have to wait and see when it becomes a reality...
[Edit] Okay, I've been reading a bit more, and it's not that big of a deal... there will be no integration to Mesa, and OpenGL/Vulkan drivers in themselves will stay proprietary. We'll see how it turns out in the coming years, but it may not be the big news everybody's been waiting for.
Last edited by omer666 on 11 May 2022 at 9:03 pm UTC
Quoting: ShmerlWow, that's a big deal. Nouveau will get reclocking, after forever being stuck without it!
Congrats to all Linux users!
Probably only for Turing and Ampere since this driver does not support older GPUs.
I would like to see nouveau’s userland code modified to support this driver. If a vulkan implementation could be added on top of that, it would give us an entirely open source stack for graphics.
Quoting: Guestanyone knows if this module will work with Legacy GPUs??No it won't, Turing architecture is a minimal requirement.
Quoting: Guestanyone knows if this module will work with Legacy GPUs??
The README says Turing and newer only:
http://us.download.nvidia.com/XFree86/Linux-x86_64/515.43.04/README/kernel_open.html
Quoting: ripperIt's a great step forward. But don't have overly high expectations. Christian's blogpost summarizes it well. This is just the kernel part, and that's just one piece of the puzzle. Also it's not a true community development repo, they'll only add a single commit for each new release dump, i.e. amdvlk-style. It will certainly help things a lot, but it's definitely not on par with AMD/Intel support for Linux. Hopefully Nvidia continues to improve in this direction.
Still worth the excitement, for two reasons:
1- This hopefully improves the integration of the driver with the rest of the system, and result in less bugs and better handling of different use cases outside of rendering 3D graphics (ex: external monitor, prime and reverse prime, external gpus, etc)
2- This should be a huge help in making Nouveau be in a good shape since they can now depend on proper drivers rather than reverse engineering a black box.
Quoting: RichardYaoProbably only for Turing and Ampere since this driver does not support older GPUs.
At least if they keep it up for everything upcoming too, it's good. Persoanlly I wouldn't worry about older GPUs much, let alone about Nvidia in general until they upstream things proper. It's a step in the right direction, but just the first one.
And it might help Nouveau figure out how to reclock for older GPUs too if some ideas can be shared.
Last edited by Shmerl on 11 May 2022 at 9:37 pm UTC
nouveau freezes my pc for some reason, so I'm stuck with the 470.103.01 from aur
See more from me