NVK og Zink har forbedret situasjonen betraktelig med åpne drivere for NVIDIA GPUer

Collabora har annonsert at de har brakt den åpne NVK-driveren for NVIDIA-skjermkort klar for daglig bruk av et bredt spekter av brukere og har sertifisert denne driveren i Khronos-konsortiet, som utvikler grafikkstandarder. Driveren er anerkjent som fullt kompatibel med Vulkan 1.3-spesifikasjonen, har bestått alle tester fra CTS (Khronos Conformance Test Suite) og er inkludert i listen over sertifiserte sjåfører.

Sertifiseringen er fullført for NVIDIA GPUer basert 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 RTXFF 4x4000 STX 4x5000, , RTX 6000xxx/6.5/6.8 Ada). Testen ble utført i et miljø med Linux-kjerne 1 og 24.1rcXNUMX. Ved å få sertifikatet kan du offisielt erklære kompatibilitet med grafikkstandarder og bruke de tilhørende Khronos-varemerkene. Endringene er allerede akseptert i Mesa-kodebasen og vil være en del av Mesa XNUMX-utgivelsen.

I tillegg til forbedringer i NVK, har det vært betydelig fremgang i å tilby OpenGL-støtte for NVIDIA-skjermkort. Mesa har tatt i bruk en endring som tillater bruk av Zink-driveren for å gi støtte for OpenGL 4.6 på systemer med nye serier av NVIDIA-skjermkort (starter med GeForce RTX 20xx), som kan oppleve problemer i lager Nouveau OpenGL-driveren (NVC0). For å aktivere Zink i stedet for NVC0 i Mesa 24.1, sett bare miljøvariabelen "NOUVEAU_USE_ZINK=1".

Endringene som er gjort i Mesa gir også muligheten til å bruke Zink til å støtte OpenGL i andre drivere som en reserve for GPUer som ikke støttes av Mesas opprinnelige OpenGL-drivere. For eksempel blir en lignende tilnærming allerede brukt for å gi OpenGL-støtte i freedreno-driveren for Qualcomm Adreno 700 GPU og powervr-driveren for Imagination PowerVR GPU basert på Rogue-mikroarkitekturen.

Zink tilbyr en OpenGL-implementering på toppen av Vulkan som lar deg få maskinvareakselerert OpenGL på enheter som kun støtter Vulkan API. I neste utgivelse av Mesa vil Zink-driveren være aktivert som standard når du bygger. Ytelsen til Zink er nær ytelsen til native OpenGL-implementeringer, noe som gjør det mulig, i stedet for å kaste bort ressurser på å vedlikeholde individuelle OpenGL-drivere, å fokusere på høykvalitetsstøtte for Vulkan API, og implementere OpenGL-støtte på toppen av Vulkan.

Det er ingen planer om å fjerne den gamle Nouveau OpenGL-driveren ennå, men i sin nåværende form demonstrerer kombinasjonen Zink + NVK høyere ytelse i mange tester. På det nåværende utviklingsstadiet, når du kjører mange spill, lar Zink + NVK-kombinasjonen deg oppnå ytelse på 60 FPS og høyere på nye GPU-modeller, men det er fortsatt noen uløste problemer og uoptimaliserte områder som vil bli løst over tid.

Også bemerket er arbeid for å stabilisere arbeidet til DXVK-laget på toppen av NVK-driveren, som gir en implementering av Direct3D 9, 10 og 11, som arbeider gjennom oversettelsen av kall til Vulkan API. Ikke alle D3D11-spill er ennå garantert å fungere med den umodifiserte NVK+DXVK-kombinasjonen fra Mesa, men de grunnleggende egenskapene er tilgjengelige og de identifiserte defektene blir gradvis eliminert. Tilsvarende utvikles NVK-forbindelsen med VKD3D-Proton for å gi støtte for D3D12, men statusen er fortsatt bak NVK+DXVK og noen manglende evner må implementeres.

NVK-driveren ble bygget fra bunnen av av et team inkludert Karol Herbst (Nouveau-utvikler hos Red Hat), David Airlie (DRM-vedlikeholder hos Red Hat) og Jason/Faith Ekstrand (aktiv Mesa-utvikler) fra Collabora). Når du opprettet driveren, brukte utviklerne offisielle header-filer og åpne kjernemoduler publisert av NVIDIA. NVK-koden brukte noen grunnleggende komponenter i Nouveau OpenGL-driveren noen steder, men på grunn av forskjellene i navnene i NVIDIA-headerfilene og de omvendt konstruerte navnene i Nouveau, er direkte lån av koden vanskelig og for det meste mange ting måtte tenkes om og implementeres fra bunnen av.

Utviklingen ble utført med tanke på å lage en ny referanse Vulkan-driver for Mesa, koden som kunne lånes ved opprettelse av andre drivere. For å gjøre dette, da de jobbet med NVK-driveren, prøvde de å ta hensyn til all eksisterende erfaring med å utvikle Vulkan-drivere, opprettholde kodebasen i optimal form og minimere overføringen av kode fra andre Vulkan-drivere, og gjøre som den skal være for optimalt arbeid av høy kvalitet, og ikke blindt kopiere hvordan det gjøres i andre drivere. Driveren er allerede inkludert i Mesa, og de nødvendige endringene til Nouveau DRM driver API er inkludert i Linux 6.6-kjernen.

Kilde: opennet.ru

Legg til en kommentar