Collabora has launched NVK, a new open source driver for Mesa that implements the Vulkan graphics API for NVIDIA graphics cards. The driver is written from scratch using official header files and open kernel modules released by NVIDIA.
When developing a new driver, Nouveau OpenGL driver core components are used in some places, but due to differences in NVIDIA header file names and reverse engineering names in Nouveau, code reuse is difficult and for the most part required a lot of rethinking and implementation from scratch.
The development also is underway with a view to creating a new Vulkan driver reference for Mesa, whose code can be borrowed when creating other controllers.
Support for NVIDIA hardware in open source drivers has always been a bit lacking. Nouveau drivers do exist, but they are often missing features, have bugs, or are simply not compatible with certain cards. This is due to a combination of factors. Unlike the Intel and AMD drivers, the nouveau driver stack has been developed with little to no official documentation or help from NVIDIA. They occasionally provide small props here. Historically, it has focused primarily on enabling nouveau enough that you can install your Linux distribution, access a web browser, and download its proprietary driver stack.
To do this, it is mentioned that during the work of the NVK driver, an attempt was made to take into account all available experience in the development of Vulkan drivers, keep the code base in optimal shape, and minimize the transfer of code from other Vulkan drivers, doing what should be done for high-quality, optimal work.
The NVK driver has only been in development for a few months, so its functionality is limited. The controller successfully passes 98% of tests when running 10% of the Vulkan CTS (Compatibility Test Suite) tests.
In general, driver training is estimated at 20-25% of the functionality of ANV and RADV controllers. In terms of hardware support, the driver is currently limited to cards based on microarchitectures Turing and Ampère. Patches to support Kepler, Maxwell, and Pascal GPUs are in the works, but are not ready yet.
Probably the biggest area of technical struggle has been the proper driving of hardware from kernel space. NVIDIA hardware relies on signed firmware for everything from display to job execution to power management. Firmware blobs that NVIDIA provided in the past were stripped-down versions that they created for open source drivers only.
Long-term, the NVK driver for NVIDIA graphics cards is expected to achieve a similar level of quality and functionality as the RADV driver for AMD cards. Once the NVK driver is ready, the shared libraries created during its development can be used to enhance the Nouveau OpenGL driver for NVIDIA video cards.
It is also being considered the possibility of use the Zink project to implement an OpenGL driver for NVIDIA video cards that works through the translation of Vulkan API calls.
In the long term, the hope is that NVK will be to NVIDIA hardware what RADV is to AMD hardware.
Finally, for those interested in the project, it is mentioned that is being developed by a team that includes Karol Herbst (Nouveau developer at Red Hat), david airlie (DRM maintainer at Red Hat) and Jason Ekstrand (active developer of Mesa in Collabora).
As for the controller code, you should know that It is open source under the MIT license. The driver only supports GPUs based on Turing and Ampere microarchitectures released since September 2018. If you want to know more about it, you can refer to the details In the following link.