The Khronos consortium, which develops graphics standards, admitted full compatibility of the open NVK driver for NVIDIA video cards with the Vulkan 1.0 specification. The driver successfully passed all tests from the CTS (Kronos Conformance Test Suite) and included to the list of certified drivers. Certification has been completed for NVIDIA GPUs based on the Turing microarchitecture (TITAN RTX, GeForce RTX 2060/2070/2080, GeForce GTX 1660, Quadro RTX 3000-8000, Quadro T1000/T2000). The test was performed in an environment with the Linux kernel 6.5, X.Org X Server 1.20.14, XWayland 22.1.9 and GNOME Shell 44.4. Obtaining the certificate allows you to officially declare compatibility with graphics standards and use the associated Khronos trademarks.
The NVK driver was built from scratch by a team including Karol Herbst (Nouveau developer at Red Hat), David Airlie (DRM maintainer at Red Hat), and Jason Ekstrand (active Mesa developer at Collabora). When creating the driver, the developers used official header files and open kernel modules published by NVIDIA. The NVK code used some basic components of the Nouveau OpenGL driver in some places, but due to the differences in the names in the NVIDIA header files and the reverse-engineered names in Nouveau, direct borrowing of the code is difficult and for the most part many things had to be rethought and implemented from scratch .
Development is being carried out with an eye to creating a new reference Vulkan driver for Mesa, the code of which can be borrowed when creating other drivers. To do this, when working on the NVK driver, they tried to take into account all the existing experience in developing Vulkan drivers, maintain the code base in optimal form and minimize the transfer of code from other Vulkan drivers, doing as it should be for optimal and high-quality work, and not blindly copying how done in other drivers. The driver is already included in Mesa, and the necessary changes to the Nouveau DRM driver API are included in the Linux 6.6 kernel.
Thanks for reading: