Wine recently released the latest package, vkd3d 1.13, which features the implementation of Direct3D 12 that operates by invoking the VULKAN graphics API. This package comprises LibVKD3D libraries with Direct3D 12, LibVKD3D-SHADER translators supporting shader models 4 and 5, and LIBVKD3D-UTILS with Direct3D 12 along with a collection of demo examples, such as the GLXGEARS port on Direct3D 12. The project’s code is distributed under the lgplv2.1 license.
The Libvkd3d library provides support for most features of Direct3D 12, including graphics and compute pipelines, command queues and command lists, descriptors and descriptor heaps, root signatures, unordered access, samplers, command signatures, root constants, indirect rendering, Clear*() and Copy*() methods. Furthermore, Libvkd3D-Shader facilitates the translation of shader models into an intermediate SPIR-V representation. It offers support for vertex, pixel, tessellation, compute, and simple geometry shaders, as well as serialization and deserialization of root signatures. The shader instructions include arithmetic, atomic, and bitwise operations, comparison and control operators, Sample, Gather, and Load instructions, unordered access (UAV).
In the new version of vkd3d 1.13, additional features have been introduced:
- Enhanced support for cycles through Loop Unrolling optimization in the HLSL compiler, replacing cyclic operations with multiple copies of code for more efficient processor cache utilization and reduced branching.
- Inclusion of effects compilers for certain state objects in a streamlined model of shaders.