I am not sure I understand everything about NVK, is it supposed to be a replacement to the Nvidia proprietary drivers? Is it supposed to complement nouveau?
Correct. Nouveau is the kernel driver, like amdgpu for AMD, and mesa is the userspace driver that provides OpenGL and Vulkan, where NVK is the Vulkan driver for NVIDIA cards. Technically you can have multiple drivers installed at once, for example on AMD we have AMDVLK in addition to RADV, both open source, one managed by AMD the other by mesa. Old game needs a patched driver to work? Yep, you can wrap that in a Flatpak and make it work.
The kernel driver doesn't do anything with Vulkan, it just provides all the stuff to configure the hardware like enabling monitors, setting their resolution, setting up memory, sending commands. It mediates access to the GPU. What commands get sent to the GPU is generated by the userspace drivers, like NVK, specific for the GPU. The GPU doesn't really speak Vulkan by itself, that's why we have to compile shaders for example: except instead of compiling for x86 or arm, you compile for whatever instruction set your GPU supports.
It might be possible to make it work with the proprietary kernel driver or the new open-source one from NVIDIA. And NVIDIA could in theory also make their proprietary OpenGL and Vulkan drivers compatible with nouveau, but I doubt that will ever happen.
I am not sure I understand everything about NVK, is it supposed to be a replacement to the Nvidia proprietary drivers? Is it supposed to complement nouveau?
Correct. Nouveau is the kernel driver, like amdgpu for AMD, and mesa is the userspace driver that provides OpenGL and Vulkan, where NVK is the Vulkan driver for NVIDIA cards. Technically you can have multiple drivers installed at once, for example on AMD we have AMDVLK in addition to RADV, both open source, one managed by AMD the other by mesa. Old game needs a patched driver to work? Yep, you can wrap that in a Flatpak and make it work.
The kernel driver doesn't do anything with Vulkan, it just provides all the stuff to configure the hardware like enabling monitors, setting their resolution, setting up memory, sending commands. It mediates access to the GPU. What commands get sent to the GPU is generated by the userspace drivers, like NVK, specific for the GPU. The GPU doesn't really speak Vulkan by itself, that's why we have to compile shaders for example: except instead of compiling for x86 or arm, you compile for whatever instruction set your GPU supports.
It might be possible to make it work with the proprietary kernel driver or the new open-source one from NVIDIA. And NVIDIA could in theory also make their proprietary OpenGL and Vulkan drivers compatible with nouveau, but I doubt that will ever happen.
Great explanation, thanks !