Il progetto Wine ha pubblicato la versione del pacchetto vkd3d 1.12 con l'implementazione di Direct3D 12, funzionante tramite la traduzione delle chiamate nell'API grafica Vulkan. Il pacchetto include le librerie libvkd3d con l'implementazione di Direct3D 12, libvkd3d-shader con un traduttore per i modelli di shader 4 e 5, e libvkd3d-utils con funzioni per semplificare il porting delle applicazioni Direct3D 12, oltre a un insieme di esempi dimostrativi, compreso il porting 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 strumenti per grafiche e calcoli, code e liste di comandi, deskriptori e heap descriptor, root signatures, accesso non ordinato, Sampler, command signatures, root constants, rendering indiretto, metodi Clear*() e Copy*(). In libvkd3d-shader è implementata la traduzione del bytecode dei modelli di shader in una rappresentazione intermedia SPIR-V. Sono supportati shader di vertice, pixel, tessellazione, computazionali e shader geometrici semplici, serializzazione e deserializzazione delle root signature. Tra le istruzioni shader sono implementate 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:
- Il compilatore HLSL ha aggiunto il supporto per la compilazione diretta in codice assembly per gli shader Direct3D e i tipi target SPIR-V.
- Il compilatore HLSL ha migliorato il supporto per i profili 1, 2 e 3 dei modelli di shader.
- Per l'HLSL sono state implementate funzioni integrate cosh(), determinant(), refract(), sinh() e tanh().
- In libvkd3d è stata aggiunta la supporto per i formati DXGI_FORMAT_B5G6R5_UNORM, DXGI_FORMAT_B5G5R5A1_UNORM e DXGI_FORMAT_B4G4R4A4_UNORM, se supportati dall'implementazione esistente dell'API Vulkan.
- È stato aggiunto il supporto per le interfacce ID3D12ShaderCacheSession e ID3D12Device9. Nell'interfaccia ID3D12Device8 sono stati aggiunti i metodi CreateCommittedResource2(), CreatePlacedResource1(), GetCopyableFootprints1() e GetResourceAllocationInfo2().
- Sono state implementate le richieste di verifica D3D12_FEATURE_D3D12_OPTIONS14, D3D12_FEATURE_D3D12_OPTIONS15, D3D12_FEATURE_D3D12_OPTIONS16, D3D12_FEATURE_D3D12_OPTIONS17 e D3D12_FEATURE_D3D12_OPTIONS18.
- In libvkd3d-shader per il linguaggio intermedio DXIL (DirectX Intermediate Language) è stato aggiunto il supporto sperimentale per la maggior parte dei metodi e delle istruzioni della sesta versione del modello di shader Direct3D.
Fonte: opennet.ru
