NVK reaches Vulkan 1.0 conformance
collabora.com
collabora.com
Does this mean NVidia GPUs don't need the proprietary driver anymore? Does this put NVidia on par with Radeon via amdgpu/RADV regarding OSS Linux support?
* Last May, Nvidia open-sourced their proprietary kernel module, after moving their proprietary bits into a firmware blob that runs on the GPU itself. As is, this module is not suitable for being mainlined into the Linux kernel, but acts as a starting point for a proper FOSS module.
* Nouveau developers have been able to use code and knowledge from the open-sourced Nvidia module to improve their mainlined kernel module (more low level hardware access, the ability to load said firmware blob, and the ability to control clock speeds/power states).
* The improved, actually useful Nouveau has allowed for the development of a performant user-space Vulkan driver for Nvidia called NVK, which was mainlined into Mesa a few months ago.
* Today's news is that NVK is now Vulkan 1.0 conformant, which means properly written apps that use the Vulkan 1.0 featureset should work and be performant using Nouveau and NVK/Mesa
There will probably be no new kernel driver. Nouveau can get the job done now via the proprietary GSP.
> The improved, actually useful Nouveau has allowed for the development of a performant user-space Vulkan driver for Nvidia called NVK, which was mainlined into Mesa a few months ago.
It's faster now, but still slow as a brick. A lot of optimization work is required, but I guess the developers will focus on reaching conformance with more Vulkan versions. By implementing some additional extensions, modern OpenGL versions and OpenCL can then run via Zink and RustiCL. This will make the driver actually useful, hopefully attract users, and help to find bugs and optimization opportunities. Eventually, a native OpenGL driver [edit: actually a Mesa State Tracker] might be required since Zink has a lot of overhead.
It's just not currently very fast, yet.
Nouveau was never most performant driver, but developers still been able to achieve something like 50-80% performance on 6xx 7xx series cards before Nvidia started to signed firmware shenanigans.
It's not like I defending the driver performance, but considering for decades it was purely reverse engineering effort by skeleton team < 10 people their achievements are outstanding.
It depended a LOT on the workload.
valley? 20%
glmark2? 91%
vkmark? 11%
To some degree this is probably just the vulkan driver and compiler being really, really immature. I expect that the gap will become a LOT closer in the next 6 months, or whenever they get past implementing vulkan 1.3 in the compiler and can put some work into cleanup.
Zink is very useful and maybe the best option if existing drivers are buggy or not that performant. But the performance impact is usually very apparent.
Maybe Zink is uniquely inefficient, but my frame of reference for how fast these translation layers can be is DXVK, which in some cases is even faster than native when translating DX11 to Vulkan.
In other words, this is a good start, but with only Vulkan 1.0 you won't be able to use something like DXVK, for running DirectX games with Proton/Wine.
Say what you will about openCL, but openCL is a WAY BETTER IDEA than ROCm. AMD are getting their asses handed to them in card support right now because ROCm requires you to compile your application all the way down to shader binaries. That makes applications supporting their cards VERY non-portable. Nvidia on the other hand supports PTX which is portable across a wide range of cards and drivers.
OpenCL mirrors this by allowing you to write compute kernels in normal shader languages to be compiled by the driver. It doesn't matter what card you want to run something on, with rusticl ALL cards can run the same code, including across vendors. AMD, nvidia, intel, raspi, apple AGX, doesn't matter. You can even run it on top of zink in case all you have is a proprietary vulkan driver.