Opublikowano eksperymentalną wersję otwartej implementacji Win32 API — Wine 10.20. Od czasu wydania 10.19 zamknięto 31 raport o błędach i wprowadzono 337 zmian.
Najważniejsze zmiany:
- Wbudowany pakiet Vkd3d z implementacją Direct3D 12 został zaktualizowany do wersji 1.18.
- Dodano okno dialogowe do wyświetlania postępu skanowania dokumentów.
- Kontynuowana jest implementacja mechanizmu Reparse Point, dzięki któremu można do plików i katalogów dołączać dodatkowe dane, identyfikowane przez tagi. Zapewniono wsparcie dla Reparse Point w funkcjach CreateHardLink(), SetFileAttributes(), FindNextFile(), MoveFileWithProgress().
- Kontynuowano refaktoryzację implementacji Common Control po podziale biblioteki COMCTL32 na oddzielne moduły dla wersji 5 i 6.
- Rozwiązano problem z awaryjnym kończeniem wielu gier (np. Syberia 2) przy użyciu trybu WoW64 na systemach z GPU NVIDIA.
- Rozwiązano problem z opóźnieniem reakcji po naciśnięciu klawiszy sterujących kursorem w niektórych grach, takich jak Might and Magic VI.
- Rozwiązano problem z zawieszaniem się lub brakiem możliwości uruchomienia niektórych wersji aplikacji Windows korzystających z biblioteki GTK, takich jak Meld i Geany.
- Zamknięto raporty o błędach związane z działaniem aplikacji: SQL Server 2012/2014, instalator MS Office 365, QuarkXPress 2024, TomTom MyDrive Connect 4.x, Spine, GenLauncher, grepwinNP3, PlayOnline Viewer, tlReader 10.1.0.2004, cmd.exe, CLM Explorer, HiveMQ CE 2025.5.
- Zamknięto raporty o błędach związane z działaniem gier: Civilization 1.2, StarCraft, Last Stand: Aftermath, Mega Man X DiVE, Wagotabi, Geneforge 1 — Mutagen.
Projekt Wine opublikował również wydanie pakietu vkd3d 1.18 z realizacją Direct3D 12, działającą poprzez translację wywołań w graficzny API Vulkan. W skład pakietu wchodzą biblioteki libvkd3d z realizacją Direct3D 12, libvkd3d-shader z translatorem modeli szeregów 4 i 5 oraz libvkd3d-utils z funkcjami ułatwiającymi portowanie aplikacji Direct3D 12, a także zestaw przykładowych demonstracji, w tym port glxgears na Direct3D 12. Kod projektu udostępniono na licencji LGPLv2.1.
Biblioteka libvkd3d obsługuje większość możliwości Direct3D 12, w tym narzędzia do grafiki i obliczeń, kolejki i listy poleceń, deskryptory i deskryptory sterty, sygnały korzenia, dostęp nieuporządkowany, Samplery, sygnały poleceń, stałe korzenia, niezależne renderowanie, metody Clear*() i Copy*(). W libvkd3d-shader zrealizowano translację kodu bajtowego modeli shaderów do pośredniego formatu SPIR-V. Obsługiwane są shadery wierzchołków, pikseli, tesselacyjne, obliczeniowe i proste shadery geometryczne, serializacja i deserializacja sygnału korzenia. Z instrukcji shaderowych zrealizowane zostały operacje arytmetyczne, atomowe i bitowe, operatory porównania i zarządzania przepływem danych, instrukcje sample, gather i load, operacje dostępu nieuporządkowanego (UAV, Unordered Access View).
W nowej wersji vkd3d:
- Do implementacji języka shaderów HLSL dodano wbudowane funkcje countbits(), firstbithigh(), firstbitlow(), frexp() oraz texCUBEbias(). Dla profili Shader Model 1-3 dodano wsparcie dla wyrażeń warunkowych z typami całkowitymi.
- W kompilatorze shaderów HLSL zoptymalizowano kompilację kodu z warunkowymi operatorami if/else. Rozszerzono obliczanie stałych na etapie kompilacji (constant folding). Tego rodzaju optymalizacja może teraz być stosowana dla wyrażeń typu „true ? x : y” oraz funkcji asfloat(), asint(), asuint(), cos(), mad(), round() i sin().
- W bibliotece libvkd3d do implementacji interfejsu ID3D12Device4 dodano metodę CreateCommandList1().
- Dodano instrukcje bajtkodu Direct3D: bem, tex, texbem, texbeml i texcoord.
- Kontynuowano rozwój implementacji języka shaderów MSL (Metal Shading Language), używanego przez Apple w graficznym API Metal. Dodano wsparcie dla obliczeniowych shaderów, natychmiastowo inicjalizowanych buforów stałych, funkcji trygonometrycznych, operacji uzyskiwania reszty i bitowego przeszukiwania.
- Do implementacji języka shaderów GLSL (OpenGL Shading Language) dodano bezznakowe operacje całkowite dzielenia i uzyskiwania reszty, funkcje sin() i cos(), oraz możliwość przesunięcia tekstur przy ładowaniu tekstur.
Ponadto firma Valve opublikowała wydanie VKD3D-Proton 3.0, odgałęzienie od bazy kodu vkd3d, stworzone w celu poprawy wsparcia Direct3D 12 w pakiecie do uruchamiania gier Proton. W VKD3D-Proton wspierane są specyficzne dla Proton zmiany, optymalizacje i ulepszenia, aby zapewnić lepszą wydajność gier Windows opartych na Direct3D 12, które dotychczas nie zostały przyjęte do głównego składu vkd3d. Wśród różnic zauważono również orientację na wykorzystanie nowoczesnych rozszerzeń Vulkan oraz możliwości nowych wydań sterowników graficznych, aby osiągnąć pełną zgodność z Direct3D 12.
Wśród zmian w nowej wersji vkd3d-proton:
- Przepisano backend shaderów DXBC (DirectX ByteCode), który zastąpił backend vkd3d-shader. Nowy backend rozwiązał problemy w wielu grach, które wcześniej występowały z powodu braku w vkd3d-shader wymaganej funkcjonalności, na przykład przywrócono działanie gry Red Dead Redemption 2 w trybie D3D12.
- Dodano wsparcie dla technologii supersampling FSR4 (AMD FidelityFX Super Resolution).
- Dodano eksperymentalne wsparcie dla grafów zadań D3D12 (Work Graphs).
- Dodano eksperymentalne wsparcie dla mikro map przezroczystości (OMM — Opacity MicroMaps).
- Rozwiązano problemy w grach Star Citizen, Ninja Gaiden 4, Monster Hunter Wilds, Wreckfest 2, Satisfactory, Street Fighter 6, Death Stranding, Wuthering Waves, Dune, Spider-Man Remastered, Gray Zone Warfare, Rise of the Tomb Raider, Port Royal, Mafia: Definitive Edition, Final Fantasy Tactics.
Źródło: opennet.ru
