Il consorzio Khronos, che si occupa dello sviluppo degli standard grafici, ha riconosciuto la piena compatibilità del driver open source NVK per le schede grafiche NVIDIA con la specifica Vulkan 1.0. Il driver ha superato con successo tutti i test del set CTS (Kronos Conformance Test Suite) ed è stato inclusa nell'elenco dei driver certificati. La certificazione è stata ottenuta per le GPU NVIDIA basate sull'architettura Turing (TITAN RTX, GeForce RTX 2060/2070/2080, GeForce GTX 1660, Quadro RTX 3000-8000, Quadro T1000/T2000). La verifica è stata effettuata in un ambiente con kernel Linux 6.5, X.Org X Server 1.20.14, XWayland 22.1.9 e GNOME Shell 44.4. L'ottenimento del certificato consente di dichiarare ufficialmente la compatibilità con gli standard grafici e di utilizzare i marchi commerciali correlati di Khronos.
Il driver NVK è stato creato da zero da un team che include Karol Herbst (sviluppatore Nouveau di Red Hat), David Airlie (mantenitore della sottosistema DRM di Red Hat) e Jason Ekstrand (sviluppatore attivo di Mesa di Collabora). Durante la creazione del driver, gli sviluppatori hanno utilizzato i file di intestazione ufficiali e i moduli del kernel open source pubblicati da NVIDIA. Nel codice NVK sono stati utilizzati in parte componenti di base del driver OpenGL Nouveau, ma a causa delle differenze nei nomi nei file di intestazione NVIDIA e nelle denominazioni in Nouveau ottenute tramite reverse engineering, il prestito diretto di codice è risultato complicato e per la maggior parte è stato necessario ripensare molte cose e implementarle da zero.
Lo sviluppo è stato realizzato tenendo presente la creazione di un nuovo driver Vulkan standard per Mesa, il cui codice potrà essere riutilizzato per creare altri driver. A tal fine, nel lavoro sul driver NVK si è cercato di tenere conto di tutta l'esperienza accumulata nello sviluppo di driver Vulkan, mantenere la base di codice in condizioni ottimali e minimizzare il riutilizzo di codice da altri driver Vulkan, realizzando quanto necessario per un funzionamento ottimale e di qualità, piuttosto che copiare ciecamente quanto già fatto in altri driver. Il driver è già incluso in Mesa, e le modifiche necessarie per il funzionamento nell'API del driver DRM Nouveau sono incluse nel kernel Linux 6.6.
Tra i cambiamenti annunciati, viene inoltre segnalata l'adozione all'interno di Mesa di un nuovo backend del compilatore per NVK, scritto in Rust, che risolve i problemi nel vecchio compilatore che ostacolavano il passaggio dei testi di Kronos, e che rimuove alcune limitazioni fondamentali dell'architettura che non potevano essere corrette senza una riscrittura completa del vecchio compilatore. Tra i piani futuri, è stata menzionata l'aggiunta nel nuovo backend del supporto per GPU basate sull'architettura Maxwell e l'implementazione del supporto completo per l'API Vulkan 1.3.
Fonte: opennet.ru
