The Wine project has released the vkd3d 1.5 package, which implements Direct3D 12 through call translation to the Vulkan graphics API. The package includes the libvkd3d libraries with Direct3D 12 implementations, libvkd3d-shader with a translator for shader models 4 and 5, and libvkd3d-utils with functions to ease the porting of Direct3D 12 applications. Additionally, it includes a set of demonstration examples, including the port of glxgears to Direct3D 12. The project code is distributed under the LGPLv2.1 license.
The libvkd3d library supports most of the features of Direct3D 12, including graphics and compute capabilities, command queues and command lists, descriptors and heap descriptors, root signatures, unordered access, samplers, command signatures, root constants, indirect rendering, as well as Clear*() and Copy*() methods.
The libvkd3d-shader implements the translation of shader models 4 and 5 bytecode to the SPIR-V intermediate representation. It supports vertex, pixel, tessellation, compute, and simple geometry shaders, along with serialization and deserialization of root signatures. Implemented shader instructions include arithmetic, atomic, and bitwise operations, comparison and control flow operators, sample, gather, and load instructions, and unordered access operations (UAV).
In the new version:
- Numerous improvements have been made to the HLSL (High-Level Shader Language) compiler provided since DirectX 9.0. Support for object types in HLSL structures and arrays, such as Texture2D, has been enhanced, and support for built-in functions dot(), ldexp(), and lerp() has been added. For shader models 4 and 5, support for logical operators 'and', 'or', and 'not', as well as type casting for boolean types, has been introduced.
- 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).
Source: opennet.ru
