È stata pubblicata una versione sperimentale dell'implementazione aperta dell'API Win32 — Wine 11.17. Dall'uscita della versione 11.16 sono stati chiusi 44 rapporti di bug e apportate 387 modifiche.
Le modifiche più importanti:
- È stata aggiunta la supporto iniziale per l'emulazione delle modalità dello schermo, consentendo l'esecuzione di applicazioni e giochi a schermo intero con la propria risoluzione virtuale, che viene scalata in base al DPI del monitor effettivo durante il rendering. Ad esempio, un vecchio gioco può utilizzare una risoluzione di 640×480, ma apparire su uno schermo con una risoluzione maggiore mantenendo le proporzioni.
- È stata aggiunta la supporto per le funzioni RtlGetSystemPreferredUILanguages e RtlGetUserPreferredUILanguages per recuperare l'elenco delle lingue preferite nell'interfaccia impostate nel registro per l'intero sistema e per singoli utenti, generato per impostazione predefinita in base alle impostazioni locali. Sono state inoltre aggiunte le funzioni RtlGetProcessPreferredUILanguages, SetProcessPreferredUILanguages, RtlGetSetThreadPreferredUILanguages, SetThreadPreferredUILanguages per determinare e impostare l'elenco delle lingue preferite a livello di processi e thread.
- Il pacchetto integrato Vkd3d con implementazione Direct3D 12 è stato aggiornato alla versione 2.1.
- Chiusi rapporti di bug relativi a: 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.
- Chiusi rapporti di bug relativi ai giochi: 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.
In aggiunta, si possono notare nuove uscite di progetti correlati a Wine:
- È stata generata la release del progetto Wine Staging 11.17, che fornisce build avanzate di Wine contenenti patch non completamente pronte o rischiose, attualmente non adatte per l'integrazione nel ramo principale di Wine. Rispetto a Wine, Wine Staging offre 279 patch aggiuntive. Nella nuova release di Wine Staging è stata effettuata la sincronizzazione con la base di codice di Wine 11.17 e aggiornato il codice di vkd3d. Nel ramo principale di Wine è stata trasferita una patch che implementa nella libreria kernel32.dll la funzione SetThreadpoolTimerEx.
- È stata pubblicata la versione del pacchetto vkd3d 2.1 con l'implementazione di Direct3D 12, che funziona tramite la traslitterazione delle chiamate nell'API grafica Vulkan. Il pacchetto include le librerie libvkd3d con l'implementazione di Direct3D 12, libvkd3d-shader con il traduttore dei modelli shader e libvkd3d-utils con funzioni per semplificare il porting di applicazioni Direct3D 12, oltre a un insieme di esempi dimostrativi, incluso il porting di glxgears su Direct3D 12. La libreria libvkd3d supporta la maggior parte delle funzionalità di Direct3D 12, incluse le risorse per grafica e calcolo, code e liste di comandi, descrittori e heap, firme radice, accesso non ordinato, sampler, firme di comando, costanti radice, rendering indiretto, metodi Clear*() e Copy*(). In libvkd3d-shader è stata implementata la traslitterazione del bytecode dei modelli shader in un'interfaccia intermedia SPIR-V.
Nella nuova versione di vkd3d:
- Nell'implementazione del linguaggio shader HLSL è stata aggiunta il supporto per operazioni aritmetiche con il tipo 'half' per l'uso dei modelli shader 4 e 5.
- Nel compilatore degli shader HLSL sono state potenziate le verifiche per i dati di input e output, implementata una fase di rimozione delle variabili globali non utilizzate (uniform) nei modelli shader 1-3.
- Nel backend per il linguaggio shader GLSL (OpenGL Shading Language) è stato implementato il supporto per l'indirizzamento indiretto dei registri di input, operazioni atomiche di confronto e somma intera, operazioni bitwise e barriere, operazioni di caricamento/salvataggio per UAV (Unordered Access View) e memoria condivisa per il gruppo di thread.
- Migliorato il supporto per il formato binario obsoleto degli shader Direct3D. Sono state implementate le istruzioni 'sub' e 'break_cmp', i modificatori di istruzione '_x2', '_x4', '_x8', '_d2', '_d4' e '_d8', nonché i modificatori degli operandi '_bias', '_x2' e '_bx2'.
- Durante la conversione in un'interfaccia intermedia degli shader SPIR-V è stato aggiunto il supporto per operazioni di conversione di numeri in virgola mobile in interi a 64 bit.
- In libvkd3d-utils è stato ampliato il supporto per l'API di riflessione degli shader. Sono stati implementati gli interface ID3D10ShaderReflection, ID3D10ShaderReflection1 e ID3D11ShaderReflection, oltre alla maggior parte dei metodi delle interfacce ID3D12ShaderReflection e ID3D12ShaderReflectionType.
- In vkd3d-compiler è stata aggiunta l'opzione '--allow-half-globals', e in libvkd3d-shader il flag VKD3D_SHADER_COMPILE_OPTION_BACKCOMPAT_ALLOW_HALF_GLOBALS per la compilazione di variabili globali di tipo 'half' in un'interfaccia di tipo 'float'.
- È stato rilasciato il layer DXVK 3.1, che fornisce un'implementazione di DXGI (DirectX Graphics Infrastructure), Direct3D 8, 9, 10 e 11, funzionante tramite la traslazione delle chiamate nell'API Vulkan. Per utilizzare DXVK sono necessari i driver che supportano l'API Vulkan 1.4, come NVIDIA 575.51.02, Mesa AMD RADV 25.0, NVIDIA 25.1 e Intel ANV 25.1. DXVK può essere utilizzato per eseguire applicazioni 3D e giochi su Linux tramite Wine, fungendo da alternativa ad alte prestazioni alle implementazioni di Direct3D integrate in Wine, che funzionano sopra OpenGL.
Nella nuova versione:
- È stato aggiunto il supporto per il rendering incrementale in DXGI, implementato tramite l'estensione Vulkan VK_KHR_incremental_present, che consente di aggiornare solo le aree modificate dello schermo. Questa nuova funzionalità ha risolto problemi di rendering in VirtualDJ e vari launcher di giochi, come Ubisoft Connect.
- È stato aggiunto il supporto per la creazione delle viste degli oggetti di rendering (render target view) direttamente nei buffer, risolvendo problemi di artefatti nel rendering delle nuvole in alcuni giochi basati sul motore Frostbite, come Battlefield 3.
- È stata implementata il caricamento di librerie per supportare le estensioni specifiche per GPU Intel (vendor extensions).
- Sono stati risolti problemi nei giochi Mabinogi, The Witcher 1, Ghost Recon Breakpoint, Mirrors Edge, RaceRoom Racing Experience.
- È stata pubblicata una versione del progetto D7VK 2.2, che sviluppa l'implementazione delle API grafiche Direct3D 3, 5, 6 e 7, proposte da Microsoft nel 1996, 1997, 1998 e 1999. D7VK funziona tramite la traslazione delle chiamate nell'API Vulkan e consente di eseguire giochi retro su Linux legati alle API Direct3D 3, 5, 6 e 7 tramite Wine. Il codice del progetto è scritto in C++ e distribuito con licenza Zlib. Per lo sviluppo è stato utilizzato il codice del backend d3d9 del progetto DXVK - D7VK trasforma le API Direct3D 3, 5, 6 e 7 in chiamate Direct3D 9, che vengono poi tradotte nell'API Vulkan. Lo sviluppatore non intende integrare D7VK in DXVK, come per le implementazioni di Direct3D 8 e Direct3D 9 sopra Vulkan.
Nella nuova versione è stato effettuato un passaggio a lavorare sopra la versione DXVK 3.1, rielaborata la verifica dei buffer eseguibili D3D3 e il conteggio dei riferimenti (refcounting) per i dispositivi D3D3, migliorata la gestione delle texture per D3D5/3. Sono state apportate correzioni che migliorano il supporto per i giochi: Palantírs in The Lord of the Rings, Resident Evil 2 e Frogger.
Fonte: opennet.ru
