WineHQ has recently released the vkd3d 1.7 packet, which features the implementation of Direct3D 12 that works through calls to the graphic API Vulkan. The LibVKD3D libraries with Direct3D 12, LibVKD3D-SHADER translators with a 4 and 5 model of shaders, and LibVKD3D-UTILS with Direct3D 12 are included in the package. Along with a set of demonstration examples that feature the GLXGEARS port on Direct3D 12, Direct12’s project code is distributed under LGPLv2.1 license.
The Libvkd3d Library has support for most of the Direct3D 12 capabilities, including funds for graphs and calculations, queues and lists of teams, descriptors and deskrips of heaps, root signatures, disordered access, sampler, command signatures, root constants, indirect rendering, methods of Clear*() and Copy*(), and more. Libvkd3D-Shader has a broadcast of the Baitcode of 4 and 5 models of shaders in the intermediate representation of SPIR-V. It also supports pixel, tesselia, computing and simple geometric shaders, serialization and deserization of the root signature. The shader instructions it supports include arithmetic, atomic and bit operations, comparison and data control operators, Sample, Gather and Load instructions, disordered access (UAV, Unordered Access View).
The new version of vkd3d includes continued work to improve the compiles of shaders in HLSL (High-Level Shader Language). Added to the new version is the possibility of calling user functions and arrays as parameters of user functions. There is support for SV_DISPATCHHEDIDID, SV_GROUPID and SV_GroupREADIDID, and built-in functions All(), Distance(), Exp(), Exp2(), Frac(), Lit(), Reflect(), Sin(), COS(), SMOOTHSTEP(), SQRT(), RSQRT(), STEP(), and transpose(). Initial support of low accuracy types with floating commas, such as Min16float, have also been added. The new version also supports profiles of the model of shader Direct3D 1/2/3, and added public API for analysis (VKD3D_SHADER_PARSE_DXBC) and serialization (VKD3D_SHADER_SERIALIZE_DXBC) DXBC.