Il progetto Wine ha rilasciato la versione del pacchetto vkd3d 1.5 con implementazione di Direct3D 12, funzionante tramite la traslazione di chiamate nell'API grafica Vulkan. Il pacchetto include le librerie libvkd3d con l'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 con licenza LGPLv2.1.
La libreria libvkd3d supporta gran 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 di heap, le firme delle radici, l'accesso non ordinato, i campionatori, le firme di comando, le costanti radice, il rendering indiretto, i metodi Clear*() e Copy*().
In libvkd3d-shader, the translation of bytecode for shader models 4 and 5 into intermediate representation SPIR-V has been implemented. Vertex, pixel, tessellation, compute, and basic geometry shaders are supported, along with serialization and deserialization of the root signature. The shader instructions include arithmetic, atomic, and bitwise operations, comparison and control flow operators, sample, gather, and load instructions, as well as unordered access (UAV, Unordered Access View) operations.
Nella nuova versione:
- Numerous improvements have been made to the HLSL (High-Level Shader Language) shader compiler, available since DirectX 9.0. This includes enhanced support for object types in HLSL structures and arrays, such as Texture2D, and added support for built-in functions dot(), ldexp(), and lerp(). For shader models 4 and 5, support for logical operators 'and', 'or', and 'not' has also been introduced, along with the capability to cast boolean types.
- The VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV option has been implemented for loading unordered access views (UAV) for multi-component SPIR-V formats (DXGI_FORMAT).
Fonte: opennet.ru
