Консорциум Khronos, занимаващ се с разработката на графични стандарти, призна пълната съвместимост на отворения драйвер NVK за видеокарти NVIDIA със спецификацията Vulkan 1.0. Драйверът успешно премина всички тестове от набора CTS (Kronos Conformance Test Suite) и е включен в списъка на сертифицираните драйвери. Сертификацията е валидна за GPU NVIDIA, базирани на микроархитектурата Turing (TITAN RTX, GeForce RTX 2060/2070/2080, GeForce GTX 1660, Quadro RTX 3000-8000, Quadro T1000/T2000). Проверката бе извършена в среда с ядро Linux 6.5, X.Org X Server 1.20.14, XWayland 22.1.9 и GNOME Shell 44.4. Получаването на сертификат позволява официално обявяване за съвместимост с графичните стандарти и използването на свързаните с тях търговски марки на Khronos.
Драйверът NVK е създаден от нулата от екип, включващ Карол Хербст (Karol Herbst, разработчик на Nouveau от Red Hat), Дейвид Ейрли (David Airlie, мейнтейнер на подсистемата DRM от Red Hat) и Джейсън Экстранд (Jason Ekstrand, активен разработчик на Mesa от Collabora). При създаването на драйвера разработчиците са използвали официални заглавни файлове и отворени модули на ядрото, публикувани от NVIDIA. В кода на NVK на места са използвани основни компоненти от OpenGL-драйвера Nouveau, но поради различията в имената в заглавните файлове на NVIDIA и тези в Nouveau, получени на базата на обратен инженеринг, пряко заимстването на код е затруднено и в повечето случаи се е наложило преосмислянето на много неща и реализирането на ново.
Разработката се е провеждала с оглед на създаването на нов референтен Vulkan-драйвер за Mesa, чийто код ще може да бъде заимстван при създаването на други драйвери. За тази цел при работата по драйвера NVK е опитано да се вземе предвид целият наличен опит в разработката на Vulkan-драйвери, да се поддържа кодовата база в оптимално състояние и да се минимизира преносът на код от други Vulkan-драйвери, правейки го както трябва за оптимално и качествено представяне, а не слепешком копирайки начина, по който е направено в другите драйвери. Драйверът вече е част от Mesa, а необходимите за работа промени в API на драйвера Nouveau са включени в ядрото на Linux 6.6.
В изменения в анонсе также се споменава, че новият бекстенд компилатор за NVK, написан на Rust, присъединява към Mesa, решавайки проблемите в стария компилатор, които пречеха на преминаването на текстовете Kronos, и премахва някои основни ограничения на архитектурата, които не можеха да бъдат коригирани без пълна преработка на стария компилатор. В бъдещите планове се споменава добавянето на поддръжка на GPU, основани на микроархитектурата Maxwell, и реализирането на пълна поддръжка на API Vulkan 1.3.
Източник: opennet.ru
