Wydanie warstwy DXVK 3.0 jest dostępne, oferujące implementację DXGI (DirectX Graphics Infrastructure), Direct3D 8, 9, 10 i 11, działającą przez translację wywołań do API Vulkan. Do korzystania z DXVK wymagane są sterowniki z obsługą API Vulkan 1.4, takie jak NVIDIA 575.51.02, Mesa AMD RADV 25.0, NVIDIA 25.1 i Intel ANV 25.1. DXVK może być używane do uruchamiania aplikacji 3D i gier w systemie Linux za pomocą Wine, stanowiąc wydajniejszą alternatywę dla wbudowanych w Wine implementacji Direct3D działających na OpenGL.
Główne zmiany:
- Dla wszystkich obsługiwanych modeli shaderów wykorzystano kompilator shaderów dxbc-spirv. Kompilacja shaderów została przeniesiona z głównego wątku do osobnych wątków.
Wprowadzono buforowanie na dysku pośrednich reprezentacji shaderów (bufor jest przechowywany w podkatalogu AppData/Local w bieżącym prefiksie Wine).
Zastosowanie dxbc-spirv pozwoliło na zmniejszenie zużycia pamięci, skrócenie czasu uruchamiania, wyeliminowanie zacięć oraz pozbycie się wielu problemów występujących w grach Postal: Brain Damaged, Snowrunner, Overwatch, God of War, Days Gone i Final Fantasy XIV, które nie mogły być rozwiązane w starym kodzie translacji shaderów. - Dla D3D9 wprowadzono wsparcie dla modeli shaderów 1-3.
- Domyślnie wykorzystano rozszerzenie Vulkan VK_EXT_descriptor_heap. W porównaniu do wcześniej używanego przechowalnika deskryptorów opartego na rozszerzeniu Vulkan VK_EXT_descriptor_buffer, nowa implementacja zapewnia ten sam poziom wydajności operacji wykonywanych na CPU, ale zmniejsza obciążenie GPU, szczególnie przy użyciu kart graficznych NVIDIA. Do działania na systemach z kartami graficznymi NVIDIA wymagana jest co najmniej wersja zamkniętych sterowników NVIDIA 595.84. Implementacja oparta na VK_EXT_descriptor_buffer została oznaczona jako przestarzała i zostanie usunięta w jednym z kolejnych wydań.
W implementacji Direct3D 9 zamiast generowania shaderów w czasie rzeczywistym używane są teraz uber-shadery, których zoptymalizowane wersje są kompilowane w tle, co rozwiązało problemy z zacięciami niektórych starych gier, takich jak Unreal Tournament 2004. Zapewniono ładowanie buforów w razie potrzeby, jak w Windows, zamiast wcześniejszego umieszczania ich w pamięci wideo, co wyeliminowało awaryjne zakończenia niektórych 32-bitowych gier D3D9 z powodu ograniczonej przestrzeni adresowej. - Zastosowanie dxbc-spirv pozwoliło na zmniejszenie zużycia pamięci, skrócenie czasu uruchamiania, wyeliminowanie zacięć oraz pozbycie się wielu problemów występujących w grach Postal: Brain Damaged, Snowrunner, Overwatch, God of War, Days Gone i Final Fantasy XIV, które nie mogły być rozwiązane w starym kodzie translacji shaderów.
- Zapewnia poprawne działanie multiseksplinowania (MSAA) w trybie D3DRS_MULTISAMPLEANTIALIAS na systemach wspierających rozszerzenia Vulkan VK_EXT_sample_locations i VK_EXT_extended_dynamic_state3, co rozwiązało problemy z renderowaniem w Anno 1701, Men of War i innych grach przy włączonym MSAA.
- Zapewniono wsparcie dla pracy z zasobami współdzielonymi (Shared resources) w standardowych wersjach Wine bez dodatkowych poprawek od projektu Proton.
- Usunięto zmienną środowiskową DXVK_FRAME_RATE, która była używana do ograniczania liczby klatek na sekundę (Frame rate limiter); zamiast niej zaleca się korzystanie zewnętrznych ograniczników, takich jak Gamescope i Mangohud. Aby włączyć wbudowany ogranicznik, można użyć ustawienia „dxvk.maxFrameRate = n”.
- Rozwiązane problemy w grach:
- Bioshock Infinite
- Borderlands 2
- Colin McRae Rally 3
- Dirt Rally 2
- Fallout New Vegas
- Insurgency & Counter-Strike
- Jump Space
- Max Payne
- Railroad Tycoon 3
- Resident Evil 6
- Sang-Froid: Tales of Werewolves
- Sea Dogs
- Splinter Cell 4
- The I of the Dragon
- The Sims 3
- Total War: Pharaoh
- Witch on the Holy Night
- World of Final Fantasy
- Vietcong
- Wymagania dotyczące minimalnej wersji API graficznego podniesione do Vulkan 1.4.
Do działania wymagane są teraz co najmniej wersje sterowników AMD RADV 25.0, NVIDIA 575.51.02, NVIDIA 25.1 i Intel ANV 25.1.
Źródło: opennet.ru
