Direct3D-to-Vulkan Library vkd3d 1.18 Brings HLSL Improvements

vkd3d 1.18, the Direct3D-to-Vulkan translation library used by Wine, adds HLSL constant folding, more legacy bytecode ops, and expanded shader targets.

The team behind vkd3d has announced the release of version 1.18. Developed and maintained by the Wine project, it’s an open-source library that translates Microsoft’s Direct3D graphics calls to Vulkan, thus allowing Windows applications and games that use Direct3D 12 to run on systems where only Vulkan is available.

One highlight is the addition of CreateCommandList1() from the ID3D12Device4 interface, extending coverage of newer D3D12 features used by modern Windows titles.

But the component that sees the most changes is the shader compiler. vkd3d 1.18 improves HLSL (High-Level Shading Language) handling by performing more constant folding, simplifying math expressions, and flattening if/else branches when older shader models require it. Plus, it also expands support for older Shader Model 1–3 code, adds StructuredBuffer loads, and implements several widely used HLSL intrinsics.

Older Direct3D bytecode gets attention too, with new implementations of instructions like tex, texcoord, texbem, and bem, helping older games translate shader code more reliably.

On the experimental backends side, the Metal Shading Language path now supports compute shaders, additional math functions, integer and floating-point division and remainder operations, and proper translation of signed integer min/max operations. It also allows direct HLSL-to-MSL conversion.

Additionally, the GLSL backend gains support for screen-space derivatives, sin/cos, unsigned division, texel offsets, and shader I/O features used by many engines.

The update also formalizes that text-based shader outputs include a trailing zero byte, making them easier to pass to APIs expecting null-terminated strings. Finally, new interfaces provide additional metadata for old D3DBC shaders, expose compute thread-group sizes (important for Metal), and introduce new bump-mapping parameters.

For more information, visit the announcement. vkd3d 1.18’s source code can be downloaded from GitLab’s project page.

Bobby Borisov

Bobby Borisov

Bobby, an editor-in-chief at Linuxiac, is a Linux professional with over 20 years of experience. With a strong focus on Linux and open-source software, he has worked as a Senior Linux System Administrator, Software Developer, and DevOps Engineer for small and large multinational companies.

Leave a Reply

Your email address will not be published. Required fields are marked *