Wydanie warstwy DXVK 2.0, oferujące implementację DXGI (DirectX Graphics Infrastructure) oraz Direct3D 9, 10 i 11, działającą poprzez translację wywołań do API Vulkan, jest teraz dostępne. Aby korzystać z DXVK, wymagane są sterowniki wspierające API Vulkan 1.3, takie jak Mesa RADV 22.0, NVIDIA 510.47.03, Intel ANV 22.0 i AMDVLK. DXVK może być używane do uruchamiania aplikacji 3D i gier w Linuxie przy użyciu Wine, stanowiąc wydajniejszą alternatywę dla wbudowanych implementacji Direct3D 9/10/11 w Wine, działających na OpenGL.
Główne zmiany:
- Wymagania dotyczące wersji graficznego API Vulkan zostały zwiększone — do działania wymagana jest teraz wersja sterownika wspierająca Vulkan 1.3 (wcześniej potrzebny był Vulkan 1.1), co umożliwiło wprowadzenie wsparcia dla nowych funkcji związanych z kompilacją shaderów. W praktyce, DXVK 2.0 można uruchomić na każdym systemie, który wspiera użycie pakietu Proton Experimental do uruchamiania gier opartych na D3D11 i D3D12. Do działania winevulkan wymagane jest co najmniej Wine 7.1.
- Przyjęto kod projektu dxvk-native, który umożliwia tworzenie rodzimych wersji DXVK dla Linuxa (niezwiązanych z Wine), które można wykorzystać nie tylko do uruchamiania aplikacji Windows, ale także w zwykłych aplikacjach Linux, co może być pomocne w tworzeniu portów gier dla Linuxa bez konieczności modyfikacji kodu renderowania opartego na D3D.
- Wsparcie dla Direct3D 9 zostało rozszerzone, w tym poprawione zarządzanie pamięcią (do przechowywania kopii tekstur wykorzystano osadzone w pamięci pliki), wdrożono wsparcie dla poprawnego odczytu z aktywnych obszarów renderowania (co rozwiązało problemy z artefaktami podczas gry w GTA IV) oraz przebudowano implementację sprawdzania przezroczystości.
- Dla Direct3D 10 zakończono dostarczanie bibliotek d3d10.dll i d3d10_1.dll, które nie były instalowane domyślnie z powodu istnienia w Wine bardziej zaawansowanej implementacji D3D10. Wsparte pozostało API D3D10 w bibliotece d3d10core.dll.
- Wsparcie dla Direct3D 11 zostało podniesione do poziomu funkcjonalności 12_1 (D3D11 Feature Level), co osiągnięto dzięki wprowadzeniu takich możliwości, jak mozaikowe zasoby (Tiled Resources), konserwatywna rastrelizacja (Conservative Rasterization) oraz uporządkowane renderowanie w rastrelizatorze (Rasterizer Ordered Views).
- Interfejs ID3D11DeviceContext został przebudowany i dostosowany do działania podobnego do systemu Windows, który reprezentuje kontekst urządzenia generujący polecenia rysowania. Przeróbka umożliwiła poprawę zgodności z zewnętrznymi bibliotekami oraz zmniejszenie obciążenia CPU. W szczególności obciążenie CPU w grach, które aktywnie wykorzystują opóźnione konteksty (na przykład gra Assassin’s Creed: Origins) lub często wywołują operację ClearState (na przykład gra God of War), zostało zmniejszone.
- Wprowadzono zmiany związane z kompilacją shaderów. Przy użyciu sterowników Vulkan obsługujących rozszerzenie VK_EXT_graphics_pipeline_library zrealizowano kompilację shaderów Vulkan w czasie ładowania shaderów D3D przez gry, a nie w czasie rysowania, co rozwiązało problemy z zawieszaniem się z powodu kompilacji shaderów w czasie gry. Wymagane rozszerzenie jest obecnie obsługiwane tylko w własnościowych sterownikach NVIDIA, począwszy od wersji 520.56.06.
- W shaderach D3D11 zastosowano model pamięci Vulkan.
- Usunięto ograniczenie dotyczące liczby zasobów, które mogą być jednocześnie powiązane.
- Rozwiązano problemy, które występowały w grach:
- Alan Wake
- Alice Madness Returns
- Anomaly: Warzone Earth
- Beyond Good and Evil
- Dragon Age Origins
- Empire: Total War
- Final Fantasy XV
- Grand Theft Auto IV
- Heroes Of Annihilated Empires
- Limit King Of Fighters XIII
- Metal Gear Solid V: Ground Zeroes
- SiN Episodes: Emergence
- Sonic Generations
- Spider Man
- The Ship
- Warhammer Online
- Ys Seven
Źródło: opennet.ru
