A fost publicată o versiune experimentală a implementării deschise a Win32 API — Wine 10.20. De la lansarea versiunii 10.19, au fost închise 31 de rapoarte de erori și au fost efectuate 337 de modificări.
Cele mai importante schimbări:
- Pachetul încorporat Vkd3d cu implementarea Direct3D 12 a fost actualizat la versiunea 1.18.
- A fost adătat un dialog pentru afișarea progresului scanării documentelor.
- A fost continuată implementarea mecanismului Reparse Point, prin care se pot atașa date suplimentare fișierelor și directoarelor, identificate prin etichete. Suportul pentru Reparse Point a fost asigurat în funcțiile CreateHardLink(), SetFileAttributes(), FindNextFile(), MoveFileWithProgress().
- A fost continuată refactorizarea implementării Common Control după separarea bibliotecii COMCTL32 în module separate pentru versiunile 5 și 6.
- A fost rezolvată problema cu crash-urile multor jocuri (de exemplu, Syberia 2) la utilizarea modului WoW64 pe sisteme cu GPU NVIDIA.
- A fost rezolvată problema cu întârzierile în reacția la apăsările tastelor de control în unele jocuri, cum ar fi Might and Magic VI.
- A fost rezolvată problema cu blocarea sau imposibilitatea de a porni unele aplicații Windows care utilizează biblioteca GTK, cum ar fi Meld și Geany.
- Rapoartele de erori legate de funcționarea aplicațiilor: SQL Server 2012/2014, installer-ul 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 au fost închise.
- Rapoartele de erori legate de funcționarea jocurilor: Civilization 1.2, StarCraft, Last Stand: Aftermath, Mega Man X DiVE, Wagotabi, Geneforge 1 — Mutagen au fost închise.
Proiectul Wine a publicat, de asemenea, o versiune a pachetului vkd3d 1.18 cu implementarea Direct3D 12, funcționând prin translatia apelurilor în API-ul grafic Vulkan. Pachetul include bibliotecile libvkd3d cu implementarea Direct3D 12, libvkd3d-shader cu translatorul modelelor de 4 și 5 ale shader-elor și libvkd3d-utils cu funcții pentru simplificarea portării aplicațiilor Direct3D 12, precum și un set de exemple demonstrative, inclusiv portarea glxgears pe Direct3D 12. Codul proiectului este distribuit sub licența LGPLv2.1.
Biblioteca libvkd3d suportă majoritatea funcțiilor Direct3D 12, inclusiv instrumente pentru grafică și calcul, cozi și liste de comenzi, descrieri și descrieri de grămadă, semnături de rădăcină, acces neordonat, Sampler-e, semnături de comenzi, constante de rădăcină, desenare indirectă, metode Clear*() și Copy*(). În libvkd3d-shader este implementată translatia codului binar al modelelor de șader în reprezentare intermediară SPIR-V. Sunt suportate șaderi de vârf, pixel, teselare, calcul și șaderi geometrice simple, serializare și deserializare a semnăturii de rădăcină. Instrucțiunile de șader includ operații aritmetice, atomice și bitwise, operatori de comparație și control al fluxului de date, instrucțiuni de sample, gather și load, operații de acces neordonat (UAV, Unordered Access View).
În noua versiune a vkd3d:
- În implementarea limbajului de shader HLSL au fost adăugate funcții încorporate countbits(), firstbithigh(), firstbitlow(), frexp() și texCUBEbias(). Pentru profilele Shader Model 1-3 a fost implementat suportul pentru expresii condiționale cu tipuri întregi.
- În compilatorul de șader HLSL a fost optimizată compilarea codului cu declarații condiționale if/else. S-a extins calculul constantelor în etapa de compilare (constant folding). Această optimizare poate fi acum aplicată pentru expresii de tipul „true ? x : y” și funcții like asfloat(), asint(), asuint(), cos(), mad(), round() și sin().
- Biblioteca libvkd3d a adăugat în implementarea interfeței API ID3D12Device4 metoda CreateCommandList1().
- Au fost adăugate instrucțiuni de bytecode Direct3D: bem, tex, texbem, texbeml și texcoord.
- Dezvoltarea implementării limbajului de șader MSL (Metal Shading Language), utilizat de Apple în API-ul grafic Metal, a fost continuată. S-a adăugat suport pentru șaderi computaționali, inițializarea instantanee a bufferelor constante, funcții trigonometrice, operații de obținere a restului și iterare pe biți.
- În implementarea limbajului de șader GLSL (OpenGL Shading Language) au fost adăugate operații de împărțire și obținere a restului pentru numere întregi fără semn, funcții sin() și cos(), precum și posibilitatea de desplazare a texelilor la încărcarea texturilor.
De asemenea, compania Valve a publicat versiunea VKD3D-Proton 3.0, o ramură a codului sursă vkd3d, creată pentru a îmbunătăți suportul pentru Direct3D 12 în pachetul de lansare a jocurilor Proton. VKD3D-Proton are modificări specifice Proton, optimizări și îmbunătățiri pentru o funcționare mai bună a jocurilor Windows bazate pe Direct3D 12, care încă nu au fost acceptate în versiunea principală a vkd3d. Printre diferențele notabile se numără orientarea spre utilizarea extensiilor moderne Vulkan și capacitățile noilor versiuni de drivere grafice pentru a asigura compatibilitatea totală cu Direct3D 12.
Printre modificările din noua versiune vkd3d-proton:
- Backend-ul șaderelor DXBC (DirectX ByteCode) a fost rescris, înlocuind backend-ul vkd3d-shader. Noua soluție a rezolvat problemele din multe jocuri, care anterior erau cauzate de lipsa funcționalității necesare în vkd3d-shader, de exemplu, s-a reușit să funcționeze jocul Red Dead Redemption 2 în modul D3D12.
- A fost adăugat suport pentru tehnologia de supersampling FSR4 (AMD FidelityFX Super Resolution).
- A fost adăugat suport experimental pentru grafuri de sarcini D3D12 (Work Graphs).
- A fost adăugat suport experimental pentru micro-hărți de opacitate (OMM — Opacity MicroMaps).
- Au fost rezolvate problemele în jocurile 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.
Sursa: opennet.ro
