NVK og Zink har markant forbedret situationen med åbne drivere til NVIDIA GPU'er

Collabora har annonceret, at det har bragt den åbne NVK-driver til NVIDIA-videokort klar til daglig brug af en lang række brugere og har certificeret denne driver i Khronos-konsortiet, som udvikler grafikstandarder. Driveren er anerkendt som fuldt ud kompatibel med Vulkan 1.3-specifikationen, har bestået alle test fra CTS (Khronos Conformance Test Suite) og er inkluderet på listen over certificerede drivere.

Der er gennemført certificering for NVIDIA GPU'er baseret på Turing-mikroarkitekturer (GeForce GTX 16xx, RTX 20xx og Quadro RTX-serien), Ampere (GeForce RTX 30xx og RTX A2000/4000/5000/6000-serien) og Ada (GeForce RTX 4x4000 STX 4x5000 , RTX 6000xxx/6.5/6.8 Ada). Testen blev udført i et miljø med Linux-kerne 1 og 24.1rcXNUMX. At opnå certifikatet giver dig mulighed for officielt at erklære kompatibilitet med grafikstandarder og bruge de tilhørende Khronos-varemærker. Ændringerne er allerede blevet accepteret i Mesa-kodebasen og vil være en del af Mesa XNUMX-udgivelsen.

Ud over forbedringer i NVK er der sket betydelige fremskridt med at levere OpenGL-understøttelse til NVIDIA-skærmkort. Mesa har vedtaget en ændring, der tillader brugen af ​​Zink-driveren til at yde support til OpenGL 4.6 på systemer med nye serier af NVIDIA-videokort (startende med GeForce RTX 20xx), som kan opleve problemer i standard Nouveau OpenGL-driveren (NVC0). For at aktivere Zink i stedet for NVC0 i Mesa 24.1 skal du blot indstille miljøvariablen "NOUVEAU_USE_ZINK=1".

Ændringerne i Mesa giver også mulighed for at bruge Zink til at understøtte OpenGL i andre drivere som en reserve for GPU'er, der ikke understøttes af Mesas oprindelige OpenGL-drivere. For eksempel bliver en lignende tilgang allerede brugt til at give OpenGL-understøttelse i freedreno-driveren til Qualcomm Adreno 700 GPU'en og powervr-driveren til Imagination PowerVR GPU'en baseret på Rogue-mikroarkitekturen.

Zink leverer en OpenGL-implementering oven på Vulkan, der giver dig mulighed for at få hardwareaccelereret OpenGL på enheder, der kun understøtter Vulkan API. I den næste udgivelse af Mesa vil Zink-driveren være aktiveret som standard, når der bygges. Zinks ydeevne er tæt på ydeevnen af ​​native OpenGL-implementeringer, hvilket gør det muligt, i stedet for at spilde ressourcer på at vedligeholde individuelle OpenGL-drivere, at fokusere på højkvalitetssupport til Vulkan API og implementere OpenGL-understøttelse oven på Vulkan.

Der er endnu ingen planer om at fjerne den gamle Nouveau OpenGL-driver, men i sin nuværende form demonstrerer kombinationen Zink + NVK højere ydeevne i mange tests. På det nuværende udviklingstrin, når man kører mange spil, giver Zink + NVK-kombinationen mulighed for at opnå ydeevne på 60 FPS og højere på nye GPU-modeller, men der er stadig nogle uløste problemer og uoptimerede områder, der vil blive løst over tid.

Også bemærket er arbejdet med at stabilisere arbejdet i DXVK-laget oven på NVK-driveren, som giver en implementering af Direct3D 9, 10 og 11, der arbejder gennem oversættelse af kald til Vulkan API. Ikke alle D3D11-spil er endnu garanteret at fungere med den umodificerede NVK+DXVK-kombination fra Mesa, men de grundlæggende muligheder er tilgængelige, og de identificerede defekter er gradvist ved at blive elimineret. Tilsvarende udvikles NVK-forbindelsen med VKD3D-Proton til at yde support til D3D12, men dens status er stadig bag NVK+DXVK, og nogle manglende funktioner skal implementeres.

NVK-driveren blev bygget fra bunden af ​​et team, herunder Karol Herbst (Nouveau-udvikler hos Red Hat), David Airlie (DRM-vedligeholder hos Red Hat) og Jason/Faith Ekstrand (aktiv Mesa-udvikler) fra Collabora). Ved oprettelse af driveren brugte udviklerne officielle header-filer og åbne kernemoduler udgivet af NVIDIA. NVK-koden brugte nogle basale komponenter i Nouveau OpenGL-driveren nogle steder, men på grund af forskellene i navnene i NVIDIA-header-filerne og de reverse-manipulerede navne i Nouveau, er direkte lån af koden vanskelig og for det meste det var nødvendigt at gentænke mange ting og implementere dem fra bunden.

Udviklingen blev udført med henblik på at skabe en ny reference Vulkan-driver til Mesa, hvis kode kunne lånes ved oprettelse af andre drivere. For at gøre dette forsøgte de, når de arbejdede på NVK-driveren, at tage hensyn til al den eksisterende erfaring med at udvikle Vulkan-drivere, vedligeholde kodebasen i optimal form og minimere overførslen af ​​kode fra andre Vulkan-drivere, idet de gjorde, som det skulle være for optimalt arbejde af høj kvalitet, og ikke blindt kopiere, hvordan det gøres i andre drivere. Driveren er allerede inkluderet i Mesa, og de nødvendige ændringer til Nouveau DRM driver API er inkluderet i Linux 6.6 kernen.

Kilde: opennet.ru

Tilføj en kommentar