NVK и Zink значително подобриха ситуацията с отворените драйвери за NVIDIA GPU

Collabora обяви, че е предоставила отворения NVK драйвер за видеокарти NVIDIA, готов за ежедневна употреба от широк кръг потребители и е сертифицирала този драйвер в консорциума Khronos, който разработва графични стандарти. Драйверът е признат за напълно съвместим със спецификацията Vulkan 1.3, успешно е преминал всички тестове от CTS (Khronos Conformance Test Suite) и е включен в списъка на сертифицираните драйвери.

Завършено е сертифицирането за NVIDIA графични процесори, базирани на микроархитектури Turing (серии GeForce GTX 16xx, RTX 20xx и Quadro RTX), Ampere (серии GeForce RTX 30xx и RTX A2000/4000/5000/6000) и Ada (GeForce RTX 4xxx, RTX 4000 SFF , RTX 4xxx/5000/6000 Ada). Тестът е извършен в среда с Linux ядро ​​6.5 и 6.8rc1. Получаването на сертификата ви позволява официално да декларирате съвместимост с графичните стандарти и да използвате свързаните търговски марки Khronos. Промените вече са приети в кодовата база на Mesa и ще бъдат част от изданието Mesa 24.1.

В допълнение към подобренията в NVK, има значителен напредък в осигуряването на поддръжка на OpenGL за видеокарти на NVIDIA. Mesa прие промяна, която позволява използването на драйвера Zink за осигуряване на поддръжка за OpenGL 4.6 на системи с нова серия видеокарти NVIDIA (започвайки с GeForce RTX 20xx), които могат да имат проблеми в основния драйвер Nouveau OpenGL (NVC0). За да активирате Zink вместо NVC0 в Mesa 24.1, просто задайте променливата на средата „NOUVEAU_USE_ZINK=1“.

Промените, направени в Mesa, също така предоставят възможността за използване на Zink за поддръжка на OpenGL в други драйвери като резервен вариант за графични процесори, които не се поддържат от собствените OpenGL драйвери на Mesa. Например, подобен подход вече се използва за осигуряване на поддръжка на OpenGL в драйвера freedreno за графичния процесор Qualcomm Adreno 700 и драйвера powervr за графичния процесор Imagination PowerVR, базиран на микроархитектурата Rogue.

Zink предоставя внедряване на OpenGL върху Vulkan, което ви позволява да получите хардуерно ускорен OpenGL на устройства, които поддържат само API на Vulkan. В следващото издание на Mesa драйверът Zink ще бъде активиран по подразбиране при изграждане. Производителността на Zink е близка до производителността на собствените имплементации на OpenGL, което прави възможно, вместо да се губят ресурси за поддържане на отделни OpenGL драйвери, да се съсредоточи върху висококачествена поддръжка за API на Vulkan и да се внедри поддръжка на OpenGL върху Vulkan.

Все още няма планове за премахване на стария Nouveau OpenGL драйвер, но в сегашната му форма комбинацията Zink + NVK демонстрира по-висока производителност в много тестове. На настоящия етап на разработка, когато изпълнявате много игри, комбинацията Zink + NVK ви позволява да постигнете производителност от 60 FPS и по-висока на нови модели GPU, но все още има някои нерешени проблеми и неоптимизирани области, които ще бъдат решени с течение на времето.

Отбелязана е също работа за стабилизиране на работата на DXVK слоя върху NVK драйвера, който осигурява внедряване на Direct3D 9, 10 и 11, работейки чрез превода на повиквания към Vulkan API. Все още не е гарантирано, че всички игри D3D11 работят с немодифицираната комбинация NVK+DXVK от Mesa, но основните възможности са налични и идентифицираните дефекти постепенно се отстраняват. По същия начин, NVK връзката с VKD3D-Proton се разработва, за да осигури поддръжка за D3D12, но нейното състояние все още е зад NVK+DXVK и някои липсващи възможности трябва да бъдат внедрени.

NVK драйверът е създаден от нулата от екип, включващ Карол Хербст (разработчик на Nouveau в Red Hat), Дейвид Еърли (поддържащ DRM в Red Hat) и Джейсън/Фейт Екстранд (активен разработчик на Mesa) от Collabora). При създаването на драйвера разработчиците са използвали официални заглавни файлове и отворени модули на ядрото, публикувани от NVIDIA. NVK кодът използва някои основни компоненти на Nouveau OpenGL драйвера на някои места, но поради разликите в имената в заглавните файлове на NVIDIA и обратно проектираните имена в Nouveau, директното заемане на кода е трудно и в по-голямата си част много неща трябваше да бъдат преосмислени и внедрени от нулата.

Разработката беше извършена с оглед на създаването на нов референтен Vulkan драйвер за Mesa, чийто код може да бъде заимстван при създаване на други драйвери. За да направят това, когато работят върху NVK драйвера, те се опитаха да вземат предвид целия съществуващ опит в разработването на Vulkan драйвери, да поддържат кодовата база в оптимална форма и да сведат до минимум прехвърлянето на код от други Vulkan драйвери, правейки както трябва да бъде за оптимална и качествена работа, а не сляпо копиране на това как се прави в други драйвери. Драйверът вече е включен в Mesa и необходимите промени в API на драйвера Nouveau DRM са включени в ядрото на Linux 6.6.

Източник: opennet.ru

Добавяне на нов коментар