Das Khronos-Konsortium, das für die Entwicklung grafischer Standards zuständig ist, hat die vollständige Kompatibilität des offenen Treibers NVK mit der Vulkan 1.4-Spezifikation auf Systemen mit NVIDIA-GPUs auf Basis der Mikroarchitekturen Maxwell (GTX 700/800/900), Pascal (GTX 1000) und Volta (TITAN V) anerkannt. Der Treiber hat alle Tests aus dem CTS (Khronos Conformance Test Suite) erfolgreich bestanden und ist in die Liste der zertifizierten Treiber aufgenommen worden. Der Erhalt des Zertifikats ermöglicht es, offiziell über die Kompatibilität mit grafischen Standards zu berichten und die damit verbundenen Marken von Khronos zu verwenden.
Ab Mesa 25.1 wird der Vulkan-Treiber NVK standardmäßig für die NVIDIA-GPUs Maxwell, Pascal und Volta verwendet. In Mesa 25.2 wird die Unterstützung für OpenGL auf den genannten GPUs standardmäßig von dem Nouveau-Treiber auf Zink in Verbindung mit dem Vulkan-Treiber NVK umgeschaltet. Zink bietet eine Implementierung von OpenGL 4.6 auf Vulkan-Basis, die hardwarebeschleunigtes OpenGL auf Geräten ermöglicht, die die Vulkan-API unterstützen. Die Leistung von Zink ist vergleichbar mit der Leistung der nativen OpenGL-Implementierungen.
Früher wurde die Kompatibilität mit Vulkan 1.4 in NVK nur für die neuen NVIDIA-GPUs auf Basis der Mikroarchitekturen Turing (GeForce GTX 16xx, RTX 20xx und Quadro RTX), Ampere (GeForce RTX 30xx und RTX A2000/4000/5000/6000) und Ada (GeForce RTX 4xxx, RTX 4000 SFF, RTX 4xxx/5000/6000 Ada) gewährleistet. Es wird an der Erweiterung der Unterstützung von GPUs auf Basis der Mikroarchitekturen Kepler und Fermi in NVK gearbeitet, aber deren Unterstützung wird aufgrund von Hardwareeinschränkungen auf maximal Vulkan 1.2 begrenzt sein.
Der Treiber NVK wurde von Grund auf von einem Team entwickelt, das aus Karol Herbst (Karol Herbst, Entwickler von Nouveau bei Red Hat), David Airlie (David Airlie, Maintainer des DRM-Subsystems bei Red Hat) und Jason/Faith Ekstrand (Jason/Faith Ekstrand, aktiver Entwickler von Mesa bei Collabora) besteht. Bei der Erstellung des Treibers verwendeten die Entwickler offizielle Header-Dateien und offene Kernel-Module, die von NVIDIA veröffentlicht wurden. Im Code von NVK wurden teilweise grundlegende Komponenten des OpenGL-Treibers Nouveau verwendet, aber aufgrund der Unterschiede in den Benennungen der Header-Dateien von NVIDIA und den Benennungen in Nouveau, die auf Reverse Engineering basieren, war eine direkte Übernahme von Code schwierig, weshalb die meisten Dinge neu überdacht und von Grund auf neu implementiert werden mussten.
Die Entwicklung orientierte sich an der Schaffung eines neuen Referenz-Vulkan-Treibers für Mesa, dessen Code bei der Erstellung anderer Treiber verwendet werden kann. Dabei wurde bei der Arbeit am NVK-Treiber versucht, alle vorhandenen Erfahrungen in der Entwicklung von Vulkan-Treibern zu berücksichtigen, die Codebasis in optimalem Zustand zu halten und die Übertragung von Code aus anderen Vulkan-Treibern zu minimieren, um eine optimale und qualitativ hochwertige Funktionalität zu gewährleisten, anstatt blind zu kopieren, wie es in anderen Treibern gemacht wurde.
Quelle: opennet.ru
