The Wine project has released version 1.14 of the vkd3d package, which implements Direct3D 12 through call translation to the Vulkan graphics API. The package includes libvkd3d libraries with Direct3D 12 implementations, libvkd3d-shader with a translator for shader models 4 and 5, and libvkd3d-utils with functions to simplify the porting of Direct3D 12 applications, along with a set of demonstration examples, including the port of glxgears to Direct3D 12. The project's code is distributed under the LGPLv2.1 license.
The libvkd3d library supports most of the capabilities of Direct3D 12, including graphics and compute tools, command queues and command lists, descriptors and heap descriptors, root signatures, unordered access, samplers, command signatures, root constants, indirect drawing, and Clear*() and Copy*() methods. The libvkd3d-shader implements the translation of shader model bytecode to the SPIR-V intermediate representation. Vertex, pixel, tessellation, compute, and simple geometry shaders are supported, including serialization and deserialization of root signatures. Arithmetic, atomic, and bitwise operations, comparison and data flow control instructions, sample, gather, and load instructions, and unordered access operations (UAV, Unordered Access View) are implemented from shader instructions.
In the new version:
- Initial support for the MSL (Metal Shading Language) shader language, used by Apple in the Metal graphics API, has been added.
- Support for a disassembler for binary effects has been implemented.
- In the libvkd3 library, the ID3D12GraphicsCommandList1 interface has implemented the OMSetDepthBounds() method for dynamically changing the allowable range of depth values in the Z-buffer.
- An environment variable VKD3D_CAPS_OVERRIDE has been added to override the information provided to applications about available capabilities, such as maximum supported feature levels and resource bindings.
- Initial support for tessellation shaders has been added to the HLSL shader language implementation. Built-in functions dst(), f32tof16(), mad(), modf(), and sincos() have been implemented. Support for the 'discard' operation has been added for shader model profiles 1, 2, and 3. Support for input semantic SV_SampleIndex for fragment shaders and SV_GroupIndex for compute shaders has been added.
- A significant number of new instructions for the GLSL shader language have been implemented.
Source: opennet.ru
