È stata pubblicata una versione sperimentale della realizzazione open source del Win32 API — Wine 11.10. Dalla pubblicazione della versione 11.9 sono stati chiusi 17 rapporti di errore e sono state apportate 248 modifiche.
Le modifiche più importanti:
- Il pacchetto integrato Vkd3d con implementazione di Direct3D 12 è stato aggiornato alla versione 2.0.
- È stata proposta una revisione del supporto per il linguaggio XPath, implementata senza l'uso della libreria libxml2.
- Migliorata la compatibilità con VBScript.
- Sono state aggiunte delle stub per l'API ALPC (Advanced Local Procedure Call) in ntdll: NtAlpcCreatePort(), NtAlpcConnectPort(), NtAlpcAcceptConnectPort(), NtAlpcSendWaitReceivePort(), NtAlpcDisconnectPort() e NtAlpcImpersonateClientOfPort().
- È stato migliorato il supporto per Bluetooth, aggiungendo i metodi BluetoothLEDeviceStatics::FromBluetoothAddressAsync, IBluetoothLEDevice::get_DeviceId, IBluetoothLEDevice::get_GattServices, IGattDeviceService::get_Uuid e IGattDeviceService::get_AttributeHandle.
- Nell'implementazione di d3dx10 e d3dx11 è stata aggiunta la possibilità di caricare file DDS con array di texture. Nella funzione D3DX10LoadTextureFromTexture() è stato aggiunto il supporto per texture 3D, texture con supporto per livelli di dettaglio e generazione di MIP-levels (MipMap).
- Nella DLL win32u sono state implementate le funzioni NtUserGetMessagePos() e NtUserSetMessageExtraInfo().
- Sono stati chiusi i rapporti di errore relativi al funzionamento delle applicazioni: IrfanView, Kodak EasyShare, Git for Windows, Family Tree Maker 2017, Foxit PhantomPDF Business 10.0, Vocaloid 6, Photolemur 3,
TrackChecker. - Sono stati chiusi i rapporti di errore relativi al funzionamento dei giochi: Star Wars Racer, Star Wars: Knights of the Old Republic, Age of Empires III: The Asian Dynasties.
Il progetto Wine ha anche pubblicato una versione del pacchetto vkd3d 2.0 con implementazione di Direct3D 12, che funziona tramite la traduzione delle chiamate nell'API grafica Vulkan. Il pacchetto include librerie libvkd3d con l'implementazione di Direct3D 12, libvkd3d-shader con il traduttore di modelli shader e libvkd3d-utils con funzioni per semplificare il porting delle applicazioni Direct3D 12, insieme a un insieme di esempi dimostrativi, incluso il port di glxgears su Direct3D 12. Il codice del progetto è distribuito con licenza LGPLv2.1.
La libreria libvkd3d supporta gran parte delle funzionalità di Direct3D 12, inclusi gli strumenti per la grafica e il calcolo, code e liste di comandi, descrittori e descrittori di heap, firme radice, accesso non ordinato, Sampler, firme di comando, costanti radice, rendering indiretto, metodi Clear*() e Copy*(). In libvkd3d-shader è stata implementata la traduzione del bytecode dei modelli di shader in rappresentazione intermedia SPIR-V. Sono supportati shader di vertici, pixel, tessellazione, calcolo e shader geometrici semplici, serializzazione e deserializzazione delle firme radice. Tra le istruzioni per shader sono state implementate operazioni aritmetiche, atomiche e bitwise, operatori di confronto e di controllo del flusso di dati, istruzioni sample, gather e load, operazioni di accesso non ordinato (UAV, Unordered Access View).
Nella nuova versione di vkd3d:
- Nell'implementazione del linguaggio degli shader HLSL è stato aggiunto il supporto iniziale per cicli per modelli di shader da 2 a 3, c'è la possibilità di scrivere nella memoria condivisa strutturata dei gruppi di thread, sono state implementate le funzioni integrate tex3Dbias(), tex3Dlod() e texCUBElod(), ed è stato garantito il supporto per le semantiche SV_ClipDistance, SV_CullDistance e SV_StencilRef per la gestione dell'input e dell'output dagli shader.
- Nel compilatore degli shader HLSL è stata implementata la rimozione automatica dei calcoli duplicati, consentita la valutazione in fase di compilazione di espressioni del tipo x % y con valori noti in anticipo, e migliorata la distribuzione dei registri temporanei. In conformità ai requisiti della specifica HLSL, è stata ampliata la visibilità delle variabili nei cicli "for" (la variabile resta accessibile dopo il termine del ciclo). Durante il parsing dei numeri decimali è stata interrotta la considerazione della localizzazione (ora il punto viene sempre utilizzato come separatore).
- Migliorato il supporto per il vecchio formato binario degli shader Direct3D. Implementate le istruzioni m4x4, m3x4, m4x3, m3x3, m3x2, phase, texdepth,
texreg2ar, texreg2gb, texreg2rgb. Aggiunto il supporto per i modificatori «_dz», «_db», «_dw» e «_da», che possono essere utilizzati con le istruzioni texcrd e texld. Aggiunto il supporto per i registri «vFace» e «vPos» per lavorare con gli shader pixel. - In DXIL (Direct3D Intermediate Language), nel codice, nelle operazioni di caricamento, salvataggio, modifica atomica e confronto è stata implementata la possibilità di utilizzare puntatori ai dati dichiarati in seguito.
- Nell'assemblatore degli shader Direct3D è stato aggiunto il supporto per costanti incorporate a 16 bit, così come per i flag ‘64UAVs’,
‘ROVs’,
‘UAVLoadAdditionalFormats’,
‘UAVsAtEveryStage’,
‘allResourcesBound’,
‘enable11_1ShaderExtensions’,
‘int64Ops’,
‘nativeLowPrecision’,
‘stencilRef’,
‘viewportAndRTArrayIndex’ e
‘waveOps’. - Implementate le opzioni di compilazione degli shader: VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F16, VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F32, VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F64 e VKD3D_SHADER_COMPILE_OPTION_CONST_GLOBAL_UNIFORM.
Fonte: opennet.ru
