È stata pubblicata la versione sperimentale dell'implementazione open source dell'API Win32 — Wine 11.10. Dalla pubblicazione della versione 11.9, sono stati risolti 17 rapporti di errore e apportate 248 modifiche.
Le modifiche più importanti:
- Il pacchetto integrato Vkd3d con implementazione di Direct3D 12 è stato aggiornato alla versione 2.0.
- È stato proposto un supporto riveduto per il linguaggio XPath, implementato senza l'uso della libreria libxml2.
- Migliorata la compatibilità con VBScript.
- Sono stati aggiunti stub per l'API ALPC (Advanced Local Procedure Call) in ntdll: NtAlpcCreatePort(), NtAlpcConnectPort(), NtAlpcAcceptConnectPort(), NtAlpcSendWaitReceivePort(), NtAlpcDisconnectPort() e NtAlpcImpersonateClientOfPort().
- Migliorato il supporto per Bluetooth, aggiunti 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 livelli di dettaglio e generazione di MIP-level (MipMap).
- Nella DLL win32u sono state implementate le funzioni NtUserGetMessagePos() e NtUserSetMessageExtraInfo().
- 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. - I rapporti sugli errori relativi al funzionamento dei giochi sono stati chiusi: Star Wars Racer, Star Wars: Knights of the Old Republic, Age of Empires III: The Asian Dynasties.
Il progetto Wine ha anche rilasciato una nuova versione del pacchetto vkd3d 2.0, che implementa Direct3D 12, funzionante tramite traduzione delle chiamate nel API grafico Vulkan. Il pacchetto comprende 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 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 la maggior parte delle funzionalità di Direct3D 12, comprese le risorse per la grafica e i calcoli, le code e le liste di comandi, i descrittori e i descrittori delle heap, le firme radice, l'accesso non ordinato, i sampler, le firme di comando, le costanti radice, il rendering indiretto, i metodi Clear*() e Copy*(). In libvkd3d-shader è implementata la traduzione del bytecode dei modelli di shader in rappresentazione intermedia SPIR-V. Sono supportati shader di vertice, pixel, tesselazione, calcolo e geometria semplice, serializzazione e deserializzazione della firma radice. Tra le istruzioni degli shader sono realizzate operazioni aritmetiche, atomiche e bitwise, operatori di confronto e controllo del flusso di dati, istruzioni sample, gather e load, operazioni di accesso non ordinato (UAV, Unordered Access View).
Nella nuova versione di vkd3d:
- Nel linguaggio dei shader HLSL è stata aggiunta un'implementazione iniziale del supporto per i cicli per i modelli di shader 2-3, è stata introdotta la possibilità di scrivere nella memoria condivisa strutturata dei gruppi di thread, sono state implementate le funzioni integrate tex3Dbias(), tex3Dlod() e texCUBElod(), e sono stati supportati i semantica SV_ClipDistance, SV_CullDistance e SV_StencilRef per la gestione dell'input e dell'output degli shader.
- Nel compilatore degli shader HLSL è stata implementata la rimozione automatica dei calcoli duplicati, è stata garantita la valutazione in fase di compilazione di espressioni come x % y con valori noti in anticipo, e migliorata la distribuzione dei registri temporanei. In conformità con i requisiti della specifica HLSL, è stata ampliata la visibilità delle variabili nei cicli 'for' (la variabile rimane accessibile anche dopo il completamento del ciclo). Durante il parsing dei numeri decimali, è stato interrotto il riconoscimento della locale (ora viene sempre utilizzato il punto come separatore).
- È stato migliorato il supporto per il vecchio formato binario degli shader Direct3D. Sono state implementate le istruzioni m4x4, m3x4, m4x3, m3x3, m3x2, phase, texdepth,
texreg2ar, texreg2gb, texreg2rgb. Aggiunta la supporto per i modificatori «_dz», «_db», «_dw» e «_da», che possono essere utilizzati con le istruzioni texcrd e texld. Supporto per i registri «vFace» e «vPos» per lavorare con shader pixel. - In DXIL (Direct3D Intermediate Language) nel codice, per le operazioni di caricamento, salvataggio, modifica atomica e confronto è stata implementata la possibilità di utilizzare puntatori a dati dichiarati successivamente.
- Nel linguaggio assembly degli shader Direct3D è stata aggiunta la supporto per costanti incorporate a 16 bit, oltre ai flag ‘64UAVs’,
‘ROVs’,
‘UAVLoadAdditionalFormats’,
‘UAVsAtEveryStage’,
‘allResourcesBound’,
‘enable11_1ShaderExtensions’,
‘int64Ops’,
‘nativeLowPrecision’,
‘stencilRef’,
‘viewportAndRTArrayIndex’ e
‘waveOps’. - Implementate opzioni di compilazione per gli 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
