The new version of vkd3d 1.3 has already been released

After a year and a half of development, andhe Wine project announced the launch of the new version of the package «vkd3d 1.3″ with a Direct3D 12 implementation that works through the translation of calls to the Vulkan graphics API.

This version contains various improvements and of which in this new version the highlights are the initial HLS build supportL, as well as the Shader Model 5.1 descriptor array support, support for unmounting Direct3D shaders, and more.

For those who are unaware of the package, they should know that includes libvkd3d libraries with Direct3D 12 implementations, libvkd3d-shader with model 4 and 5 shader translator and libvkd3d-utils with functions to simplify the migration of Direct3D 12 applications, as well as a set of demos, including the glxgears port to Direct3D 12. The project code is distributed licensed under LGPLv2.1.

Library libvkd3d supports most of the Direct3D 12 features, including graph and compute functions, command lists and queues, descriptors and heap descriptors, root signatures, unordered access, samplers, command signatures, root constants, proxy representation, etc.

libvkd3d-shader implements the translation of byte code 4 and 5 of the shading models in the SPIR-V intermediate representation. Vertices, pixels, tessellation, computational and simple geometry shaders, root signature serialization, and deserialization are supported.

The shader instructions include arithmetic, atomic and bitwise operations, data flow control and comparison operators, sampling, gathering and loading instructions, unordered access operations (UAV, Unordered access view).

At the current stage of development, not all calls to Direct3D 12 are implemented and the tests were carried out mainly on a set of demo applications.

Main new features of Vkd3d 1.3

In this new version of vkd3d 1.3 that is presented, it is highlighted that added initial support for compiling and pre-rendering shaders in HLSL (high-level shader language), which is provided since DirectX 9.0.

Another of the changes that stands out in this new version is the support for double precision floating point operations in shaders, as well as indirection for tessellation shaders, template export from shaders, the "precise" shader modifier, and global barriers for in-memory resources.

We can also find that the ability to disassemble Direct3D shaders from code of bytes to the assembler representation, as well as added support for parsing the old Direct3D bytecode format used in Direct3D 1, 2, and 3 shader models.

libvkd3d added Direct3D 12 features, such as root signatures, unordered lookup counters, output merge booleans, mirror_once texture addressing mode, and added vkd3d_host_time_domain_info structure.

Of the other changes that stand out from this new version:

  • vkd3d_shader_preprocess_info extends the vkd3d_shader_compile_info structure, and can be used to specify preprocessing parameters such as preprocessor macro definitions.
  • vkd3d_shader_hlsl_source_info extends the vkd3d_shader_compile_info structure, and can be used to specify HLSL and build parameters such as target profile and entry point.
  • Link Direct3D 12 and Vulkan models
  • VKD3D_SHADER_COMPILE_OPTION_API_VERSION can be used to specify the libvkd3d-shader API version the application is targeting. If not specified, VKD3D_SHADER_API_VERSION_1_2 will be used.
  • vkd3d-compiler will default to color output if it can determine that the
    the output is a color-capable teleprinter.
  • Added support for descriptor arrays defined in Shader Model 5.1.

Finally if you want to know more about it about this new version, you can consult the complete list of changes In the following link.

How to install vkd3d on Linux?

For those who are interested in being able to install vkd3d on their system, they should obtain the source code and proceed with the compilation, although for practical purposes or for those newbies, they can try this library without much effort. For this, they only have to install lutris and within its configurations.

As for those interested in compilation, they must obtain the code with:

git clone git://
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"

Finally, the Vulkan layers must be enabled:

export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation

The content of the article adheres to our principles of editorial ethics. To report an error click here!.

Be the first to comment

Leave a Comment

Your email address will not be published.



  1. Responsible for the data: Miguel Ángel Gatón
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.