È iniziato il collaudo del primo candidato per il rilascio di Wine 9.0, un'implementazione open source di WinAPI. La base di codice è stata congelata in preparazione per il rilascio previsto nella seconda metà di gennaio. Rispetto al rilascio di Wine 8.21, sono stati chiusi 52 rapporti di bug e sono state apportate 391 modifiche.
Le modifiche più importanti:
- Il pacchetto integrato vkd3d, che implementa Direct3D 12 tramite la traduzione delle chiamate all'API grafica Vulkan, è stato aggiornato alla versione 1.10.
- Continua lo sviluppo di funzionalità mirate a consentire l'uso di Wine in ambienti basati sul protocollo Wayland senza l'uso di XWayland e componenti X11. Il driver winewayland.drv ha aggiunto supporto per le disposizioni della tastiera. È stata ampliata la compatibilità con l'API grafica Vulkan e sono state aggiunte le funzioni vkQueuePresentKHR, vkGetDeviceGroupSurfacePresentModesKHR, vkGetPhysicalDevicePresentRectanglesKHR. È stata introdotta la funzione ClipCursor e realizzata la possibilità di lavorare con coordinate relative durante il tracciamento del movimento del mouse.
- Con le recenti versioni di GnuTLS è stata aggiunta la compatibilità per le chiavi di crittografia DH (Diffie-Hellman).
- Sono stati chiusi i rapporti sugli errori relativi al funzionamento delle applicazioni: Notepad, MS Word, Roon, eFilm Workstation 2.x/3.x, Athena’s Charm Table Search 0.35b, Process Explorer, Araxis Merge 2023.5877, Framemaker 8, Internet Download Manager, Air Jura, SpeedCommander, ModOrganizer, RestoreDC, Acid-V VST plugin, MIDITrail 1.4.0.
- Sono stati chiusi i rapporti sugli errori relativi al funzionamento dei giochi: For Honor, STEEP, Far Cry 5, NFS Most Wanted, Castlevania: Lords of Shadow 2, Eurobattle, Daily Chthonicle, Crimson Skies.
Inoltre, si segnala la pubblicazione da parte del progetto Wine del pacchetto vkd3d 1.10 con implementazione di Direct3D 12, funzionante tramite la traduzione delle chiamate nell'API grafico Vulkan. Nel pacchetto sono incluse le librerie libvkd3d con implementazione di Direct3D 12, libvkd3d-shader con il traduttore per gli shader di modello 4 e 5 e libvkd3d-utils con funzioni per semplificare il porting delle applicazioni Direct3D 12, oltre a un insieme di esempi dimostrativi, incluso il port di glxgears su Direct3D 12. Il codice del progetto è distribuito sotto la licenza LGPLv2.1.
La libreria libvkd3d supporta gran parte delle funzionalità di Direct3D 12, inclusi gli strumenti per grafica e calcoli, code e liste di comandi, descrittori e descrittori heap, firme root, accesso non ordinato, sampler, firme di comandi, costanti root, rendering indiretto, metodi Clear*() e Copy*(). In libvkd3d-shader è implementata la traduzione del codice byte dei modelli di shader 4 e 5 in una rappresentazione intermedia SPIR-V. Sono supportati shader vertex, pixel, tessellazione, calcolo e geometria semplice, serializzazione e deserializzazione della firma root. Tra le istruzioni degli shader sono implementate operazioni aritmetiche, atomiche e bitwise, operatori di confronto e controllo del flusso di trasferimento dati, istruzioni sample, gather e load, e operazioni di accesso non ordinato (UAV, Unordered Access View).
Nella nuova versione continua il lavoro per il miglioramento del compilatore di shader in HLSL (High-Level Shader Language), fornito a partire da DirectX 9.0: è stata aggiunta la supporto per l'indicizzazione dinamica degli array; sono stati aggiunti le espressioni "break", "continue" e "switch"; sono state ampliate le espressioni per le quali è applicabile la semplificazione delle costanti; sono state implementate le funzioni incorporate ceil(), degrees(), radians(), fwidth(), tan(), tex2Dlod(), tex2Dproj(), texCUBEproj() e tex3Dproj().
Nella libreria libvkd3d sono stati aggiunti nuovi API Direct3D 12 (ID3D12Device5, ID3D12GraphicsCommandList5 e ID3D12Resource1) e implementata la possibilità di creare oggetti di stato del pipeline (pipeline state object). In libvkd3d-utils sono state aggiunte funzioni ausiliarie per la manipolazione di DXBC: D3DGetBlobPart(), D3DGetDebugInfo(), D3DGetInputAndOutputSignatureBlob(), D3DGetInputSignatureBlob(), D3DGetOutputSignatureBlob(), D3DStripShader(). Nel compilatore vkd3d-compiler sono state aggiunte le opzioni "--fragment-coordinate-origin" e "--semantic-compat-map".
Fonte: opennet.ru
