Opublikowano eksperymentalną wersję otwartej implementacji Win32 API — Wine 11.17. Od czasu wydania 11.16 zamknięto 44 raporty o błędach i wprowadzono 387 zmian.
Najważniejsze zmiany:
- Dodano wstępną obsługę emulacji trybów ekranu, umożliwiającą uruchamianie aplikacji i gier w trybie pełnoekranowym z wirtualną rozdzielczością, która podczas rzeczywistego renderowania jest skalowana z uwzględnieniem DPI istniejącego monitora. Na przykład, stara gra może używać rozdzielczości 640×480, ale być wyświetlana na ekranie o wyższej rozdzielczości z zachowaniem proporcji.
- Dodano obsługę funkcji RtlGetSystemPreferredUILanguages i RtlGetUserPreferredUILanguages do uzyskiwania listy preferowanych języków interfejsu, ustawionych w rejestrze dla całego systemu i poszczególnych użytkowników, i domyślnie formowanych na podstawie ustawień lokalnych. Dodano również funkcje RtlGetProcessPreferredUILanguages, SetProcessPreferredUILanguages, RtlGetSetThreadPreferredUILanguages, SetThreadPreferredUILanguages do określania i ustawiania listy preferowanych języków na poziomie procesów i wątków.
- Wbudowany pakiet Vkd3d z implementacją Direct3D 12 został zaktualizowany do wersji 2.1.
- Zamknięto raporty o błędach związane z działaniem aplikacji: certmgr.exe, Signtools, Advanced SystemCare 6.4, Autodesk 3ds Max 9, SketchUp 2021, Nokia S60 5th Edition SDK 1.0, PDFCreator, SafeDisc v2.05.030, Bigrats, PTC Pro Engineer Wildfire V5, VisualSubSync 1.0.2.1, PS4 Remote Play 2.x, MigrosBank EBanking 8.2.x, Sparda Bank SecureApp 1.x, MSXML 6.0, Sennheiser Wireless Systems Manager 4.4, Netscape Navigator 3.04, xEdit.
- Zamknięto raporty o błędach związane z działaniem gier: GTA: Vice City, GTA: San Andreas, Tetris JR, Worms Blast, Horizon Chase Turbo, Star Wars: Knights of the Old Republic I/II, GunBound, Marathon, Ground Control, Ankh — Anniversary Edition, Clive Barker’s Jericho.
Dodatkowo warto zaznaczyć nowe wydania projektów związanych z Wine:
- Sformowano wydanie projektu Wine Staging 11.17, które dostarcza rozszerzone wersje Wine, zawierające nie w pełni gotowe lub ryzykowne łatki, które nie nadają się jeszcze do przyjęcia do głównej gałęzi Wine. W porównaniu do Wine, w Wine Staging udostępniono 279 dodatkowych łat. W nowym wydaniu Wine Staging przeprowadzono synchronizację z kodem bazy Wine 11.17 oraz zaktualizowano kod vkd3d. Do głównego składu Wine przeniesiono łatę implementującą w bibliotece kernel32.dll funkcję SetThreadpoolTimerEx.
- Opublikowano wydanie pakietu vkd3d 2.1 z implementacją Direct3D 12 działającą poprzez tłumaczenie wywołań w grafice API Vulkan. Pakiet zawiera biblioteki libvkd3d z implementacją Direct3D 12, libvkd3d-shader z tłumaczem modeli shaderów oraz libvkd3d-utils z funkcjami ułatwiającymi portowanie aplikacji Direct3D 12, a także zestaw przykładów demonstracyjnych, w tym port glxgears na Direct3D 12. Biblioteka libvkd3d obsługuje większość funkcji Direct3D 12, w tym narzędzia do grafiki i obliczeń, kolejki i listy poleceń, deskryptory i deskryptory sterty, podpisy korzeniowe, dostęp nieuporządkowany, samplery, podpisy poleceń, stałe korzeniowe, pośrednie renderowanie, metody Clear*() i Copy*(). W libvkd3d-shader zaimplementowano tłumaczenie kodu bajtowego modeli shaderów na pośredni język SPIR-V.
W nowej wersji vkd3d:
- W implementacji języka shaderów HLSL dodano wsparcie dla operacji arytmetycznych z typem „half” przy użyciu modeli shaderów 4 i 5.
- W kompilatorze shaderów HLSL wzmocniono kontrole danych wejściowych i wyjściowych, zrealizowano przejście do usuwania nieużywanych zmiennych globalnych (uniform) w modelach shaderów 1-3.
- W backendzie dla języka shaderów GLSL (OpenGL Shading Language) zaimplementowano wsparcie dla pośredniego adresowania rejestrów wejściowych, atomowych operacji porównawczej oraz całkowitego dodawania, operacji bitowych i barier, operacji ładowania/zapisywania dla UAV (Unordered Access View) oraz pamięci wspólnej grupy wątków.
- Poprawiono wsparcie dla starego formatu binarnego shaderów Direct3D. Zrealizowano instrukcje „sub” oraz „break_cmp”, modyfikatory instrukcji „_x2”, „_x4”, „_x8”, „_d2”, „_d4” i „_d8”, a także modyfikatory operandów „_bias”, „_x2” i „_bx2”.
- Podczas konwersji do pośredniego przedstawienia shaderów SPIR-V pojawiło się wsparcie dla operacji konwersji liczb zmiennoprzecinkowych na 64-bitowe liczby całkowite.
- W libvkd3d-utils rozszerzono wsparcie dla API refleksji shaderów. Zrealizowano interfejsy ID3D10ShaderReflection, ID3D10ShaderReflection1 oraz ID3D11ShaderReflection, a także większość metod interfejsów ID3D12ShaderReflection oraz ID3D12ShaderReflectionType.
- W vkd3d-compiler dodano opcję „—allow-half-globals”, a w libvkd3d-shader flaga VKD3D_SHADER_COMPILE_OPTION_BACKCOMPAT_ALLOW_HALF_GLOBALS do kompilacji zmiennych globalnych z typem „half” w reprezentację z typem „float”.
- Wydano wersję warstwy DXVK 3.1, która implementuje DXGI (DirectX Graphics Infrastructure), Direct3D 8, 9, 10 i 11, działającą poprzez tłumaczenie wywołań na API Vulkan. Aby używać DXVK, wymagane są sterowniki obsługujące API Vulkan 1.4, takie jak NVIDIA 575.51.02, Mesa AMD RADV 25.0, NVIDIA 25.1 oraz Intel ANV 25.1. DXVK może być wykorzystywany do uruchamiania aplikacji i gier 3D w Linuxie za pomocą Wine, stanowiąc wysoce wydajną alternatywę dla wbudowanych w Wine implementacji Direct3D działających na OpenGL.
W nowej wersji:
- Dodano wsparcie dla inkrementalnego renderowania w DXGI, zaimplementowane za pomocą rozszerzenia Vulkan VK_KHR_incremental_present, które pozwala na aktualizację tylko zmienionych obszarów na ekranie. Nowa funkcjonalność rozwiązała problemy z renderowaniem w VirtualDJ oraz w różnych launcherach gier, takich jak Ubisoft Connect.
- Dodano wsparcie dla tworzenia widoków obiektów renderowania (render target view) bezpośrednio w buforach, co rozwiązało problemy z pojawianiem się artefaktów podczas renderowania chmur w niektórych grach na silniku Frostbite, takich jak Battlefield 3.
- Zaimplementowano ładowanie bibliotek w celu wsparcia specjalnych rozszerzeń GPU Intel (vendor extensions).
- Rozwiązano problemy w grach Mabinogi, The Witcher 1, Ghost Recon Breakpoint, Mirrors Edge oraz RaceRoom Racing Experience.
- Opublikowano wersję projektu D7VK 2.2, rozwijającego implementację graficznych API Direct3D 3, 5, 6 i 7, proponowanych przez firmę Microsoft w latach 1996, 1997, 1998 i 1999. D7VK działa poprzez tłumaczenie wywołań na API Vulkan i pozwala na uruchamianie retro gier w Linuxie za pomocą Wine, które opierają się na API Direct3D 3, 5, 6 i 7. Kod projektu napisany jest w języku C++ i dystrybuowany na licencji Zlib. Podczas jego tworzenia wykorzystano kod backendu d3d9 z projektu DXVK — D7VK przekształca API Direct3D 3, 5, 6 i 7 w wywołania Direct3D 9, które następnie są tłumaczone na API Vulkan. Twórca nie zamierza włączać D7VK do składu DXVK, tak jak to miało miejsce w przypadku implementacji Direct3D 8 i Direct3D 9 w oparciu o Vulkan.
W nowej wersji dokonano przejścia na pracę na bazie wydania DXVK 3.1, zrewidowano weryfikację wykonywalnych buforów D3D3 oraz liczników referencji (refcounting) dla urządzeń D3D3, poprawiono przetwarzanie tekstur dla D3D5/3. Wprowadzono poprawki, które zwiększają wsparcie dla gier: Palantírs w The Lord of the Rings, Resident Evil 2 oraz Frogger.
Źródło: opennet.ru
