Wydanie DXVK 3.0

Po sześciu miesiącach prac wydano nową wersję DXVK (Warstwa Tłumaczenia Direct3D na Vulkan), otwartej biblioteki, która przekształca wywołania API Direct3D 8, 9, 10 i 11 w instrukcje Vulkan. Umożliwia ona uruchamianie aplikacji 3D i gier zaprojektowanych dla systemu Windows na systemach, gdzie brak jest natywnej obsługi Direct3D, korzystając jednocześnie z możliwości bardziej wydajnego API graficznego Vulkan.

Główne zmiany
W nowej wersji dokonano przesiadki na wykorzystanie specyfikacji i rozszerzeń Vulkan 1.4, co odpowiednio będzie wymagać kompatybilnego sterownika.

DXVK teraz używa dxbc-spirv do kompilacji shaderów dla wszystkich wspieranych modeli shaderów. Eliminuję to szereg problemów, które wcześniej były niemożliwe do rozwiązania:
Problemy z renderowaniem w grach, spowodowane albo tym, że gry polegają na nieokreślonym zachowaniu, albo tym, że FXC w niektórych przypadkach generuje błędny kod, jak w Postal: Brain Damaged, Snowrunner
Wygenerowany kod jest bardziej zwarty niż po prostu przekonwertowany kod SPIR-V, co znacznie zmniejsza ilość pamięci zajmowanej przez DXVK. W takich grach jak Overwatch czy God of War pozwala to zaoszczędzić około 1 GiB pamięci systemowej.
Kompilacja shaderów została teraz całkowicie przeniesiona na wątki robocze, co może skrócić czas uruchamiania w takich grach jak Days Gone i Final Fantasy XIV, lub w niektórych przypadkach zmniejszyć zawieszenia. Wcześniej DXVK realizował translację SPIR-V w wątku aplikacji i kompilował tylko rzeczywiste potoki Vulkan w wątkach roboczych.
Pośrednia reprezentacja skompilowanych shaderów DXVK jest teraz cache'owana na dysku w katalogu AppData/Local bieżącego prefiksu Wine. Jest to konieczne, ponieważ czas kompilacji wzrósł w porównaniu do starego kompilatora. Ścieżkę do cache'u można zmienić za pomocą zmiennej środowiskowej DXVK_SHADER_CACHE_PATH.

Nowe rozszerzenie Vulkan VK_EXT_descriptor_heap jest teraz używane domyślnie w sterownikach obsługujących to rozszerzenie.
Oczekuje się, że w porównaniu do starej realizacji modelu wiązania, opartej na VK_EXT_descriptor_buffer, ten nowy model zapewni mniej więcej ten sam poziom wydajności związanej z CPU, unikając jednocześnie spadku wydajności na GPU Nvidia (wymagane sterowniki nvidia-drivers-595.84 i nowsze)
Zmiany D3D9
Aby emulować przestarzały potok z funkcjami stałymi, który umożliwia gromadzeniu D3D8 i D3D9 renderowanie bez shaderów, DXVK wcześniej generował własny kod shaderów w locie na podstawie stanu potoku. W niektórych grach, takich jak Unreal Tournament 2004, mogło to prowadzić do zauważalnych zacięć nawet po długim okresie rozgrywki.

Aby to naprawić, DXVK teraz implementuje potok z funkcjami stałymi w postaci pary ubershaderów, dla których zoptymalizowane wersje są kompilowane w tle.
Optymalizacja ładowania bufora
Aby dokładniej odwzorować zachowanie systemu Windows, różne typy buforów, które wcześniej były umieszczane bezpośrednio w VRAM, teraz są ładowane na żądanie, a także wprowadzono strategię ograniczania ilości pamięci RAM, która naprawia awarie związane z przestrzenią adresową w wielu grach D3D9 32-bitowych.
Te zmiany mogą również poprawić wydajność na systemach bez zmiennego rozmiaru BAR w takich grach jak GTA IV.

W systemach, które wystarczająco wspierają VK_EXT_sample_locations i VK_EXT_extended_dynamic_state3, stan renderowania D3DRS_MULTISAMPLEANTIALIAS działa teraz poprawnie, umożliwiając aplikacjom użycie rastrowania z jedną próbą podczas renderowania do obiektów renderowania z wieloma próbkami. To eliminuje problemy z renderowaniem interfejsu użytkownika w Anno 1701, Men of War Assault Squad oraz podobne problemy w innych grach z włączonym MSAA.

Ogólne zasoby teraz współpracują z oryginalną implementacją Wine i nie wymagają już poprawek specyficznych dla Proton.

Warto również wspomnieć o wielu poprawkach dla różnych gier, które teraz będą działać lepiej.

Źródło: linux.org.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster