Uruchomienie nowa wersja projektu D9VK 0.40, który zapewnia implementacja Direct3D 9, który działa poprzez tłumaczenie wywołań do graficznego API Vulkan. Projekt bazuje na bazie kodu projektu DXVK, która została rozszerzona o wsparcie dla Direct3D 9. W porównaniu z implementacją Direct3D 9 opartą na WineD3D, D9VK umożliwia wyższą wydajnośćponieważ tłumaczenie Direct3D 9 przez OpenGL działa wolniej niż tłumaczenie przez Vulkan.
D9VK może być używany do uruchamiania aplikacji i gier 3D w systemie Linux przy użyciu Wine. Obsługuje uruchamianie większości gier opartych na Direct3D 9 przy użyciu Shader w wersji 2 lub 3.
Główne wiadomości o D9VK 0.40
W tej nowej wersji zaimplementowano możliwość wykorzystania ponad 4 GB pamięci wideo w 32-bitowych aplikacjach, które rozwiązały problemy podczas uruchamiania trybów gry Skyrim i Oblivion.
również asynchroniczne przetwarzanie wyniku renderowania na ekranie jest włączone (etap prezentacji). Aby zmniejszyć opóźnienia w głównej sekwencji renderowania, przetwarzanie danych wyjściowych odbywa się w wątku wysyłania poleceń.
Dodatkowo kod do określenia czasu wewnętrznego został przeniesiony na użycie timera specyficznego dla platformy, co pomogło rozwiązać problemy z nieprawidłowym zachowaniem zegar_wysokiej rozdzielczości przez MinGW.
Oczekujące bufory ZARZĄDZANE i SYSTEMMEM zostały pobrane na scenę przed uruchomieniem PrepareDraw, co rozwiązało problemy z wydajnością w Powstanie i legenda bohaterów: Szlaki nieba.
Nadmiar punktów synchronizacji został usunięty z przepływu poleceń podczas pobierania żądanych danych.
Dodano obsługę D3DTA_STAŁA, co pozwoliło zaimplementować poprawną reprezentację efektu blasku w grach SpinTyres i Mudrunner.
W reklamie również należy zauważyć, że dokonano optymalizacji wydajności a problemy pojawiające się podczas uruchamiania różnych gier zostały rozwiązane.
Z innych zmian które wyróżniają się na tle nowej wersji, możemy znaleźć:
- Ulepszona obsługa DirectX 9Ex (D3D9Ex). Zastanowił się nad szczegółami przetwarzania ResetEx i Reset.
- Kod został oczyszczony i zrefaktoryzowany.
- Zapewnione jest bezpośrednie mapowanie buforów WRITEONLY, co może pozytywnie wpłynąć na wydajność i zapobiec awariom gry Counter-Strike: Global Offensive, prowadząc do ciągłego nagrywania do bufora po jego odblokowaniu.
- Zaimplementowałem metodę SetDialogBoxMode, która pozwala na korzystanie z okien dialogowych w aplikacjach pełnoekranowych.
- Zaimplementowano obsługę łączenia wierzchołków, w tym mieszania indeksowanych wierzchołków wymaganego przez SWVP (SoftWare Vertex Processing).
- Licznik próbek wyświetlany na górze bieżącego obrazu (ekran wyświetlacza, HUD) został zmieniony.
- Dodano opcję d3d9.dialogBoxMode, której można użyć do wyłączenia zadania tylko w trybie pełnoekranowym.
Ponadto, widać intencje dewelopera projektu DXVK na chwilę, aby skoncentruj wysiłki tylko na poprawianiu błędów, spowolnienie ekspansji funkcjonalności. To życzenie było spowodowane obawami o pogorszenie jakości baza kodu i przyszłe komplikacje związane z utrzymaniem.
Każda aktualizacja gałęzi 1.4.x generuje skargi na zmiany regresywne, których nie można odtworzyć, zlokalizować i usunąć.
Problemy te wymagają analizy przyczyn ich pojawienia się, w przeciwnym razie pozostawienie ich nieskorygowanych podczas dalszego rozwijania funkcjonalności może tylko pogorszyć sytuację i zamienić proces konserwacji w koszmar.
Z planów, które deweloper DXVK zamierzasz wdrożyć tylko przed przejściem do trybu naprawy błędów, mówią, aby dodać obsługę niektórych przydatnych rozszerzeń Vulkan i połączyć z rozwiązaniami z projektu D9VK.
Dla tych, którzy chcą dowiedzieć się więcej na ten temat, mogą znaleźć kod, a także szczegóły tej nowej wersji można znaleźć W poniższym linku.