NVK in Zink sta bistveno izboljšala stanje z odprtimi gonilniki za GPU NVIDIA

Collabora je objavila, da je predstavila odprt gonilnik NVK za grafične kartice NVIDIA, pripravljen za vsakodnevno uporabo s širokim krogom uporabnikov, in ga certificirala v konzorciju Khronos, ki razvija grafične standarde. Gonilnik je prepoznan kot popolnoma združljiv s specifikacijo Vulkan 1.3, uspešno je prestal vse teste CTS (Khronos Conformance Test Suite) in je vključen na seznam certificiranih gonilnikov.

Certificiranje je bilo zaključeno za grafične procesorje NVIDIA, ki temeljijo na mikroarhitekturah Turing (serije GeForce GTX 16xx, RTX 20xx in Quadro RTX), Ampere (serije GeForce RTX 30xx in RTX A2000/4000/5000/6000) in Ada (GeForce RTX 4xxx, RTX 4000 SFF , RTX 4xxx/5000/6000 Ada). Test je bil izveden v okolju z jedrom Linux 6.5 in 6.8rc1. Pridobitev certifikata vam omogoča uradno izjavo o združljivosti z grafičnimi standardi in uporabo povezanih blagovnih znamk Khronos. Spremembe so že bile sprejete v kodno zbirko Mesa in bodo del izdaje Mesa 24.1.

Poleg izboljšav NVK je prišlo do pomembnega napredka pri zagotavljanju podpore OpenGL za grafične kartice NVIDIA. Mesa je sprejela spremembo, ki omogoča uporabo gonilnika Zink za zagotavljanje podpore za OpenGL 4.6 v sistemih z novo serijo grafičnih kartic NVIDIA (začenši z GeForce RTX 20xx), ki lahko naletijo na težave v osnovnem gonilniku Nouveau OpenGL (NVC0). Če želite omogočiti Zink namesto NVC0 v Mesa 24.1, samo nastavite spremenljivko okolja “NOUVEAU_USE_ZINK=1”.

Spremembe v Mesi prav tako zagotavljajo možnost uporabe Zinka za podporo OpenGL v drugih gonilnikih kot nadomestno možnost za GPE, ki jih izvorni gonilniki OpenGL Mesa ne podpirajo. Na primer, podoben pristop se že uporablja za zagotavljanje podpore OpenGL v gonilniku freedreno za Qualcomm Adreno 700 GPE in gonilniku powervr za Imagination PowerVR GPU, ki temelji na mikroarhitekturi Rogue.

Zink ponuja implementacijo OpenGL poleg Vulkana, ki vam omogoča strojno pospešen OpenGL v napravah, ki podpirajo samo Vulkan API. V naslednji izdaji Mesa bo gonilnik Zink med gradnjo privzeto omogočen. Zmogljivost Zinka je blizu zmogljivosti izvirnih implementacij OpenGL, kar omogoča, da se namesto zapravljanja virov za vzdrževanje posameznih gonilnikov OpenGL osredotočimo na visokokakovostno podporo za API Vulkan in implementiramo podporo za OpenGL na vrhu Vulkana.

Še ni načrtov za odstranitev starega gonilnika Nouveau OpenGL, vendar v svoji trenutni obliki kombinacija Zink + NVK kaže večjo zmogljivost v številnih testih. Na trenutni stopnji razvoja, pri izvajanju številnih iger, vam kombinacija Zink + NVK omogoča doseganje zmogljivosti 60 FPS in več na novih modelih GPU, vendar še vedno obstajajo nekatere nerešene težave in neoptimizirana področja, ki bodo sčasoma odpravljena.

Omenjeno je tudi delo za stabilizacijo dela sloja DXVK na vrhu gonilnika NVK, ki zagotavlja implementacijo Direct3D 9, 10 in 11, ki deluje prek prevajanja klicev v API Vulkan. Ni zagotovljeno, da bodo vse igre D3D11 delovale z nespremenjeno kombinacijo NVK+DXVK podjetja Mesa, vendar so osnovne zmogljivosti na voljo in ugotovljene napake se postopoma odpravljajo. Podobno se razvija povezava NVK z VKD3D-Proton za zagotavljanje podpore za D3D12, vendar je njen status še vedno za NVK+DXVK in nekatere manjkajoče zmogljivosti je treba implementirati.

Gonilnik NVK je iz nič izdelala ekipa, v kateri so bili Karol Herbst (razvijalec Nouveau pri Red Hat), David Airlie (vzdrževalec DRM pri Red Hat) in Jason/Faith Ekstrand (aktivni razvijalec Mesa) iz Collabora). Pri ustvarjanju gonilnika so razvijalci uporabili uradne datoteke glave in odprte module jedra, ki jih je objavila NVIDIA. Koda NVK je ponekod uporabljala nekatere osnovne komponente gonilnika Nouveau OpenGL, vendar je zaradi razlik v imenih v datotekah glave NVIDIA in imenih z obratnim inženiringom v Nouveau neposredna izposoja kode težavna in večinoma marsikaj je bilo treba premisliti in uresničiti iz nič.

Razvoj je potekal z namenom ustvarjanja novega referenčnega gonilnika Vulkan za Mesa, katerega kodo bi si lahko izposodili pri ustvarjanju drugih gonilnikov. Da bi to dosegli, so pri delu na gonilniku NVK poskušali upoštevati vse obstoječe izkušnje pri razvoju gonilnikov Vulkan, vzdrževati bazo kode v optimalni obliki in minimizirati prenos kode iz drugih gonilnikov Vulkan, tako kot bi moralo biti za optimalno in kakovostno delo in ne slepo kopiranje opravljenega v drugih gonilnikih. Gonilnik je že vključen v Mesa, potrebne spremembe API-ja gonilnika Nouveau DRM pa so vključene v jedro Linuxa 6.6.

Vir: opennet.ru

Dodaj komentar