Collabora обявява пристигането на NVK, драйверът Vulkan с отворен код за NVIDIA

НВК

NVK е нов Vulkan драйвер с отворен код за графичен хардуер на NVIDIA

Преди няколко дни Collabora разкриха чрез публикация в блог новините интегрирането на NVK драйвера в основния клон на проекта Mesa и че също ще бъде включен като експериментален контролер във версия 23.3 на Mesa.

НВК, е нов отворен драйвер с внедряване на графичния API на Vulkan за видеокарти NVIDIA. Драйверът е създаден от екип, който включва Карол Хербст (разработчик на Nouveau в Red Hat), Дейвид Еърли (поддържащ DRM подсистема в Red Hat) и Джейсън Екстранд (активен разработчик на Mesa в Collabora).

Относно развитието на НВК се споменава, че това беше извършено, за да се създаде нов референтен Vulkan драйвер за Mesa, чийто код може да бъде заимстван при създаване на други контролери.

За да направим това, когато работим върху драйвера на NVK, ние се опитваме да вземем предвид целия наличен опит в разработването на драйвери на Vulkan, поддържаме кодовата база в оптимална форма и минимизираме прехвърлянето на код от други драйвери на Vulkan, като правим това, което трябва да се направи. за оптимална и качествена работа, а не сляпо копиране как се прави в други драйвери.

Струва си да се спомене, че въпреки че контролерът NVK е включен в Mesa, разработването на драйвери продължава и не всички желани функционалности са внедрени. Драйверът е съвместим с API на Vulkan 1.0, но все още не е преминал всички тестове за съвместимост и има проблеми с производителността. Някои игри обаче вече работят с новия драйвер, дори когато използвате DXVK слоя.

За да работи контролера ефективно, Необходими са промени в ядрото на Linux, свързани с разширението на API на драйвера Nouveau DRM. Необходимостта от промяна на API на ниво ядро ​​е, защото API на драйвера Nouveau DRM първоначално е проектиран да внедрява OpenGL и му липсват необходимите примитиви за ефективна работа на драйверите Vulkan на Mesa.

По-специално трябва да се добави възможност за управление на виртуалното адресно пространство, тъй като операциите с обектни буфери и разпределението на виртуална памет са отделни във Vulkan. Освен това изпращането на команди към Vulkan изисква използването на синхронизирани обекти. Понастоящем пачовете с необходимите промени са изпратени до поддържащите подсистемата DRM на ядрото на Linux (Direct Rendering Manager) и вероятно ще бъдат включени в ядрото 6.6.

За драйвера на NVK се споменава, че това, е написан от нулата, тъй като целта на това беше, че по време на създаването на контролера разработчиците използва официалните заглавни файлове и отворените модули на ядрото, публикувани от NVIDIA. В NVK кода на места бяха използвани основните компоненти на драйвера Nouveau OpenGL, но поради разликите в имената на заглавните файлове на NVIDIA и имената с обратно проектиране в Nouveau, директното заемане на кода е трудно и в по-голямата си част трябваше да преосмислете много неща и ги приложете от нулата.

В момента драйверът поддържа само базирани на Turing графични процесори (RTX 20XX и GTX 16XX) и по-нови микроархитектури (карти, пуснати от септември 2018 г.). В бъдеще те планират да добавят поддръжка за семейството графични процесори Kepler (GeForce 600 и 700).

В бъдеще, планира се да се доведе производителността на контролера до правилното ниво и внедрите поддръжка за API на Vulkan 1.3. В дългосрочен план се очаква NVK драйверът за графични карти на NVIDIA да достигне подобно ниво на качество и функционалност като RADV драйвера за графични карти на AMD.

Ние също така обмисляме използването на проекта Zink за внедряване на пълен OpenGL драйвер за видеокарти на NVIDIA, който работи чрез превода на Vulkan API повиквания.

най-накрая, ако сте заинтересовани да научите повече за това, можете да проверите подробностите в следваща връзка.