The Wine team is proud to announce that release 1.4 of vkd3d, the Direct3D to Vulkan translation library, is now available.
This release contains improvements that are listed in the release notes below. The main highlights are:
- Many improvements to the HLSL compiler. - A new descriptor heap implementation using the VK_EXT_descriptor_indexing extension. - A new fence implementation using the VK_KHR_timeline_semaphore extension.
The source is available from the following location:
https://dl.winehq.org/vkd3d/source/vkd3d-1.4.tar.xz
The current source can also be pulled directly from the git repository:
https://source.winehq.org/git/vkd3d.git/
Vkd3d is available thanks to the work of multiple people. See the file AUTHORS for the complete list.
----------------------------------------------------------------
What's new in vkd3d 1.4 =======================
*** libvkd3d
- A new descriptor heap implementation using the VK_EXT_descriptor_indexing extension. In particular, the new implementation is more efficient when large descriptor heaps are used by multiple command lists. The new `virtual_heaps' configuration option can be used to select the original implementation even when the VK_EXT_descriptor_indexing extension is available.
- A new fence implementation using the VK_KHR_timeline_semaphore extension. The new implementation addresses a number of edge cases the original implementation was unable to, as well as being somewhat more efficient.
- When the VK_EXT_robustness2 extension is available, it is used to implement null views. This more accurately matches Direct3D 12 behaviour. For example, all reads from such a null view return zeroes, while that isn't necessarily the case for out-of-bounds reads with the original implementation.
- New interfaces: - vkd3d_set_log_callback() allows writing log output via a custom callback. This can be used to integrate vkd3d's log output with other logging systems.
*** libvkd3d-shader
- New features for the HLSL source type: - Support for integer arithmetic, bitwise and shift operations. - Support for matrix and vector subscripting. - Support for the mul() intrinsic function. - Support for matrix copying, casting, and entry-wise operations. - Support for complex initialisers. - Support for the `nointerpolation' modifier. This modifier is applied by default to integer variables. - Support for the SV_VertexID semantic. - Support for matrix-typed varyings. - Constant folding for a number of operators. - Copy propagation across branches and loops. This allows use of non-numeric variables anywhere in a program, as well as more optimised code for accessing numeric variables within branches and loops.
- The disassembler supports the shader model 5 `msad' instruction.
- New interfaces: - vkd3d_shader_set_log_callback() allows writing log output via a custom callback.
*** libvkd3d-utils
- New interfaces: - vkd3d_utils_set_log_callback() allows writing log output via a custom callback.
*** build
- The minimum required version of Vulkan-Headers and SPIRV-Headers for this release is version 1.2.139.
- The SONAME_LIBVULKAN configure variable can be used to specify the shared object name of the Vulkan library. Because vkd3d loads the Vulkan library dynamically, specifying this removes the need for a Vulkan import library at build time.
- The `crosstests' target no longer builds Win32/PE demos or tests when these were not enabled at configure time.