Software 43969 Published by

The vkd3d team has released version 1.18, a significant update to their Direct3D-to-Vulkan translation library that brings numerous improvements and new features. The update includes advancements such as support for CreateCommandList1() on ID3D12Device4 interface, improved performance through constant folding, and enhanced shader execution flow. Additionally, the team has refined older systems by adding support for integer types in conditional expressions and translating Direct3D bytecode instructions from the past. 



vkd3d 1.18 released

The vkd3d team has announced the release of version 1.18, a significant update to their Direct3D-to-Vulkan translation library. This release brings numerous improvements and new features to the table, making it an exciting development for gamers and developers alike.

Screenshot_from_2025_05_20_14_00_32

You can grab the source code through the usual channels, like the WineHQ download page, or pull it directly from GitLab if you prefer working with the latest commits straight from the repository.

This release isn't just a minor tweak; it packs in some meaningful advancements and bug fixes that could really smooth things over for developers using Direct3D on Vulkan-capable hardware. Let's see what stands out:

For those tracking API support, a big part of this update is bringing CreateCommandList1() for the ID3D12Device4 interface into vkd3d proper.

Also, significant work has gone into the libvkd3d-shader component itself. It now handles branched code in HLSL shaders much more efficiently on certain platforms, a definite step forward. And interestingly, this branch flattening capability isn't limited to newer shader models; it's been extended back down to shader model 2.0 and earlier as well.

Performance-wise, the team hasn't just focused on command lists or shader execution flow. They've also bolstered optimizations by enhancing constant folding. New operations like mad(), round(), and even trigonometric functions such as sin() are now properly handled during compilation instead of needing runtime intervention. This should lead to cleaner, faster code across the board.

Further refinement is happening under the hood for older systems too. Support has been added for using integer types in conditional expressions for shader models 1 to profile 3 targets, ensuring that some calculations are done correctly instead of needing different methods like before.

Beyond these core areas, several other Direct3D bytecode instructions from the past (like bem, tex, texbem, texbeml, and texcoord) now get translated properly. Plus, there are ongoing tweaks to improve compatibility with Metal Shading Language (MSL) and OpenGL Shading Language (GLSL).

These additions aren't just theoretical improvements; they're practical tools for developers working with shaders. New tools (vkd3d_shader_d3dbc_source_info and vkd3d_shader_scan_thread_group_size_info) are being added to give developers more options when working with older Direct3D bytecode

Crucially, vkd3d 1.18 comes equipped to tackle bugs from previous iterations as well. A notable code change updates vsir_program_iterator_insert_before_and_move(), which is expected to improve how various parts of the shader compilation process interact with iterators, a fundamental building block for managing shader programs.

Ultimately, it's another solid step forward for vkd3d. It adds new capabilities and cleans up existing ones, making the overall experience more reliable and powerful for translating Direct3D content onto Vulkan platforms.

The source code for this release is available here