NVK i Zink znacznie poprawiły sytuację dzięki otwartym sterownikom dla procesorów graficznych NVIDIA

Firma Collabora ogłosiła, że ​​przygotowała otwarty sterownik NVK dla kart graficznych NVIDIA, gotowy do codziennego użytku przez szerokie grono użytkowników i certyfikowała ten sterownik w konsorcjum Khronos, które opracowuje standardy graficzne. Sterownik jest uznawany za w pełni zgodny ze specyfikacją Vulkan 1.3, pomyślnie przeszedł wszystkie testy z pakietu CTS (Khronos Conformance Test Suite) i znajduje się na liście certyfikowanych sterowników.

Certyfikacja została zakończona dla procesorów graficznych NVIDIA opartych na mikroarchitekturach Turing (serie GeForce GTX 16xx, RTX 20xx i Quadro RTX), Ampere (serie GeForce RTX 30xx i RTX A2000/4000/5000/6000) oraz Ada (GeForce RTX 4xxx, RTX 4000 SFF , RTX 4xxx/5000/6000 Ada). Test przeprowadzono w środowisku z jądrem Linux 6.5 i 6.8rc1. Uzyskanie certyfikatu pozwala oficjalnie zadeklarować zgodność ze standardami graficznymi i posługiwać się powiązanymi znakami towarowymi Khronos. Zmiany zostały już zaakceptowane w kodzie Mesa i będą częścią wydania Mesa 24.1.

Oprócz ulepszeń w NVK, nastąpił znaczny postęp w zapewnieniu obsługi OpenGL dla kart graficznych NVIDIA. Mesa przyjęła zmianę, która pozwala na użycie sterownika Zink w celu zapewnienia obsługi OpenGL 4.6 na systemach z nową serią kart graficznych NVIDIA (począwszy od GeForce RTX 20xx), które mogą powodować problemy w standardowym sterowniku Nouveau OpenGL (NVC0). Aby włączyć Zink zamiast NVC0 w Mesa 24.1, po prostu ustaw zmienną środowiskową „NOUVEAU_USE_ZINK=1”.

Zmiany wprowadzone w Mesie zapewniają również możliwość wykorzystania Zinka do obsługi OpenGL w innych sterownikach jako rozwiązanie awaryjne dla procesorów graficznych nieobsługiwanych przez natywne sterowniki OpenGL Mesy. Na przykład podobne podejście jest już stosowane w celu zapewnienia obsługi OpenGL w sterowniku freedreno dla procesora graficznego Qualcomm Adreno 700 i sterowniku powervr dla procesora graficznego Imagination PowerVR opartego na mikroarchitekturze Rogue.

Zink zapewnia implementację OpenGL na bazie Vulkan, która umożliwia uzyskanie przyspieszanego sprzętowo OpenGL na urządzeniach obsługujących tylko API Vulkan. W następnej wersji Mesy sterownik Zink będzie domyślnie włączony podczas kompilacji. Wydajność Zinka jest zbliżona do wydajności natywnych implementacji OpenGL, co pozwala zamiast marnować zasoby na utrzymanie poszczególnych sterowników OpenGL, skupić się na wysokiej jakości obsłudze API Vulkan i wdrożyć obsługę OpenGL na Vulkan.

Nie ma jeszcze planów usunięcia starego sterownika Nouveau OpenGL, ale w jego obecnej formie kombinacja Zink + NVK wykazuje wyższą wydajność w wielu testach. Na obecnym etapie rozwoju, podczas uruchamiania wielu gier, kombinacja Zink + NVK pozwala na osiągnięcie wydajności 60 FPS i wyższej na nowych modelach GPU, ale nadal istnieją pewne nierozwiązane problemy i niezoptymalizowane obszary, które z czasem zostaną rozwiązane.

Odnotowano także prace nad stabilizacją pracy warstwy DXVK na sterowniku NVK, który zapewnia implementację Direct3D 9, 10 i 11, działając poprzez tłumaczenie wywołań do API Vulkan. Nie ma jeszcze gwarancji, że wszystkie gry D3D11 będą działać z niezmodyfikowaną kombinacją NVK+DXVK firmy Mesa, ale podstawowe możliwości są dostępne, a zidentyfikowane defekty są stopniowo eliminowane. Podobnie, rozwijane jest połączenie NVK z VKD3D-Proton, aby zapewnić obsługę D3D12, ale jego status jest nadal w tyle za NVK+DXVK i należy wdrożyć pewne brakujące możliwości.

Sterownik NVK został zbudowany od podstaw przez zespół, w skład którego wchodzili Karol Herbst (programista Nouveau w Red Hat), David Airlie (opiekun DRM w Red Hat) i Jason/Faith Ekstrand (aktywny programista Mesa) z Collabora). Tworząc sterownik, programiści wykorzystali oficjalne pliki nagłówkowe i otwarte moduły jądra opublikowane przez firmę NVIDIA. Kod NVK wykorzystywał w niektórych miejscach podstawowe komponenty sterownika Nouveau OpenGL, ale ze względu na różnice w nazwach w plikach nagłówkowych NVIDIA i nazwach poddanych inżynierii wstecznej w Nouveau, bezpośrednie zapożyczanie kodu jest trudne i w większości przypadków wiele rzeczy trzeba było przemyśleć i wdrożyć od zera.

Prace rozwojowe przeprowadzono z myślą o stworzeniu nowego referencyjnego sterownika Vulkan dla Mesy, którego kod można będzie pożyczyć przy tworzeniu innych sterowników. Aby to zrobić, pracując nad sterownikiem NVK, starali się wziąć pod uwagę całe dotychczasowe doświadczenie w opracowywaniu sterowników Vulkan, utrzymać bazę kodu w optymalnej formie i zminimalizować transfer kodu z innych sterowników Vulkan, robiąc tak, jak powinno być optymalną i wysokiej jakości pracę, a nie ślepe kopiowanie tego, co dzieje się w innych sterownikach. Sterownik jest już zawarty w Mesie, a niezbędne zmiany w API sterownika Nouveau DRM są zawarte w jądrze Linuksa 6.6.

Źródło: opennet.ru

Dodaj komentarz