NVK en Zink hebben de situatie aanzienlijk verbeterd met open drivers voor NVIDIA GPU's

Collabora heeft aangekondigd dat het de open NVK-driver voor NVIDIA-videokaarten gereed heeft gemaakt voor dagelijks gebruik door een breed scala aan gebruikers en heeft deze driver gecertificeerd in het Khronos-consortium, dat grafische standaarden ontwikkelt. De driver wordt erkend als volledig compatibel met de Vulkan 1.3-specificatie, heeft met succes alle tests van de CTS (Khronos Conformance Test Suite) doorstaan ​​en is opgenomen in de lijst met gecertificeerde drivers.

Certificering is voltooid voor NVIDIA GPU's op basis van Turing-microarchitecturen (GeForce GTX 16xx, RTX 20xx en Quadro RTX-serie), Ampere (GeForce RTX 30xx en RTX A2000/4000/5000/6000-serie) en Ada (GeForce RTX 4xxx, RTX 4000 SFF , RTX 4xxx/5000/6000 Ada). De test werd uitgevoerd in een omgeving met Linux-kernel 6.5 en 6.8rc1. Door het certificaat te verkrijgen, kunt u officieel compatibiliteit met grafische standaarden verklaren en de bijbehorende Khronos-handelsmerken gebruiken. De wijzigingen zijn al geaccepteerd in de Mesa-codebase en zullen deel uitmaken van de Mesa 24.1-release.

Naast verbeteringen in NVK is er aanzienlijke vooruitgang geboekt bij het bieden van OpenGL-ondersteuning voor NVIDIA-videokaarten. Mesa heeft een wijziging doorgevoerd die het gebruik van de Zink-driver mogelijk maakt om ondersteuning te bieden voor OpenGL 4.6 op systemen met een nieuwe serie NVIDIA-videokaarten (beginnend met GeForce RTX 20xx), die mogelijk problemen ondervinden in de standaard Nouveau OpenGL-driver (NVC0). Om Zink in plaats van NVC0 in Mesa 24.1 in te schakelen, stelt u gewoon de omgevingsvariabele “NOUVEAU_USE_ZINK=1” in.

De wijzigingen die in Mesa zijn aangebracht, bieden ook de mogelijkheid om Zink te gebruiken om OpenGL in andere stuurprogramma's te ondersteunen als een terugval voor GPU's die niet worden ondersteund door Mesa's eigen OpenGL-stuurprogramma's. Een vergelijkbare aanpak wordt bijvoorbeeld al gebruikt om OpenGL-ondersteuning te bieden in de freedreno-driver voor de Qualcomm Adreno 700 GPU en de powervr-driver voor de Imagination PowerVR GPU op basis van de Rogue-microarchitectuur.

Zink biedt een OpenGL-implementatie bovenop Vulkan waarmee u hardwareversnelde OpenGL kunt krijgen op apparaten die alleen de Vulkan API ondersteunen. In de volgende release van Mesa zal de Zink-driver standaard ingeschakeld zijn tijdens het bouwen. De prestaties van Zink liggen dicht bij de prestaties van native OpenGL-implementaties, wat het mogelijk maakt om, in plaats van middelen te verspillen aan het onderhouden van individuele OpenGL-stuurprogramma's, zich te concentreren op hoogwaardige ondersteuning voor de Vulkan API en OpenGL-ondersteuning bovenop Vulkan te implementeren.

Er zijn nog geen plannen om de oude Nouveau OpenGL-driver te verwijderen, maar in zijn huidige vorm laat de Zink + NVK-combinatie in veel tests hogere prestaties zien. In de huidige ontwikkelingsfase, wanneer je veel games draait, kun je met de Zink + NVK-combinatie prestaties van 60 FPS en hoger bereiken op nieuwe GPU-modellen, maar er zijn nog steeds enkele onopgeloste problemen en niet-geoptimaliseerde gebieden die in de loop van de tijd zullen worden opgelost.

Er wordt ook gewerkt aan het stabiliseren van het werk van de DXVK-laag bovenop het NVK-stuurprogramma, dat een implementatie biedt van Direct3D 9, 10 en 11, waarbij wordt gewerkt via de vertaling van oproepen naar de Vulkan API. Nog niet alle D3D11-games werken gegarandeerd met de ongewijzigde NVK+DXVK-combinatie van Mesa, maar de basismogelijkheden zijn beschikbaar en de geïdentificeerde defecten worden geleidelijk geëlimineerd. Op dezelfde manier wordt de NVK-verbinding met VKD3D-Proton ontwikkeld om ondersteuning te bieden voor D3D12, maar de status ervan ligt nog steeds achter bij NVK+DXVK en er moeten enkele ontbrekende mogelijkheden worden geïmplementeerd.

De NVK-driver is helemaal opnieuw gebouwd door een team bestaande uit Karol Herbst (Nouveau-ontwikkelaar bij Red Hat), David Airlie (DRM-onderhouder bij Red Hat) en Jason/Faith Ekstrand (actieve Mesa-ontwikkelaar) van Collabora). Bij het maken van het stuurprogramma gebruikten de ontwikkelaars officiële headerbestanden en open kernelmodules die door NVIDIA waren gepubliceerd. De NVK-code maakte op sommige plaatsen gebruik van enkele basiscomponenten van het Nouveau OpenGL-stuurprogramma, maar vanwege de verschillen in de namen in de NVIDIA-headerbestanden en de reverse-engineered namen in Nouveau is het direct lenen van de code moeilijk en voor het grootste deel het was nodig om veel dingen te heroverwegen en helemaal opnieuw te implementeren.

De ontwikkeling werd uitgevoerd met het oog op het creëren van een nieuw Vulkan-referentiestuurprogramma voor Mesa, waarvan de code kon worden geleend bij het maken van andere stuurprogramma's. Om dit te doen, probeerden ze bij het werken aan het NVK-stuurprogramma rekening te houden met alle bestaande ervaring met het ontwikkelen van Vulkan-stuurprogramma's, de codebasis in optimale vorm te behouden en de overdracht van code van andere Vulkan-stuurprogramma's te minimaliseren, doend zoals het zou moeten zijn voor optimaal en kwalitatief hoogstaand werk, en niet blindelings kopiëren hoe het in andere stuurprogramma's wordt gedaan. Het stuurprogramma is al opgenomen in Mesa, en de noodzakelijke wijzigingen aan de Nouveau DRM-stuurprogramma-API zijn opgenomen in de Linux 6.6-kernel.

Bron: opennet.ru

Voeg een reactie