vkd3d 1.11 arrives with initial support for compiling Direct3D bytecode, DXIL, improvements and more

vkd3d

vkd3d, is Wine's Direct3D 12 to Vulkan translation layer

The Wine project announced a few days ago the release of new version of vkd3d 1.11 package, a version in which improvements have been introduced in the use of vulkan extensions, as well as support improvements, new functions and more.

For those who do not know about Vkd3d, you should know that this is a package that offers a Direct3D 12 implementation using calls to the Vulkan graphics API and includes several key libraries. The libvkd3d library contains implementations of Direct3D 12, covering a wide range of functions such as computing and graphics, command queues and lists, identifiers, among others.

The libvkd3d-shader library is also provided which provides a translator for shader models 4 and 5 to an intermediate SPIR-V representation. This library supports vertex, pixel, tessellation, computation, and simple geometry shaders, as well as root signature serialization and deserialization.

What's new in vkd3d 1.11?

Vkd3d 1.11 introduces a initial support for compiling legacy Direct3D bytecode in an intermediate representation of SPIR-V shaders, as well as the sinitial support with the HLSL p compilerto compile effects profiles.

Another improvement that is presented in this new version is the experimental support for compiling DXIL (DirectX intermediate language) in the SPIR-V representation, providing new options for the development of Direct3D applications. This feature requires compiling vkd3d with the 'preprocessor' option-DVKD3D_SHADER_UNSUPPORTED_DXIL' and is considered experimental.

Also the use of groups and descriptor sets has been optimized when extensions are available VK_EXT_mutable_descriptor_type and VK_EXT_shader_viewport_index_layer, which is provided to improve the efficiency of working with the descriptor pool and speed up the rendering of tessellation and vertex shader arrays.

The c has been implementedSupport for standard border colors, such as black and white and the method has been implemented GetResourceAllocationInfo1() of the ID3D12Device4 interface, as well as support for the ID3D12Device7 and ID3D12Resource2 interfaces.

Several new feature queries are supported, including D3D12_FEATURE_D3D12_OPTIONS6 a D3D12_FEATURE_D3D12_OPTIONS13.

Have been implemented new build options: VKD3D_SHADER_COMPILE_OPTION_FEATURE can be used for
specify the features available in the target environment, while VKD3D_SHADER_COMPILE_OPTION_FEATURE_INT64 indicates compatibility with
the 64-bit integer types in the SPIR target environment and  VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLOAT64 indicates compatibility with
64-bit floating point types in the SPIR-V target environment.

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

  • Descriptor updates now occur asynchronously on an internal worker thread, improving performance in applications that update many descriptors per frame.
  • New features have been added for the SPIR-V target type, including support for globally consistent out-of-order access views, thread group out-of-order access view barriers, and more.
  • ID3D12Device7 interface is supported.
  • The minimum required version of Vulkan-Headers for this release is version
    1.3.228.
  • The ID3D12Resource2 interface is supported.
  • Several new feature queries are supported:
    – D3D12_FEATURE_D3D12_OPTIONS6
    – D3D12_FEATURE_D3D12_OPTIONS7
    – D3D12_FEATURE_D3D12_OPTIONS8
    – D3D12_FEATURE_D3D12_OPTIONS9
    – D3D12_FEATURE_D3D12_OPTIONS10
    – D3D12_FEATURE_D3D12_OPTIONS11
    – D3D12_FEATURE_D3D12_OPTIONS12
    – D3D12_FEATURE_D3D12_OPTIONS13
  • The intrinsic functions acos(), asin(), atan() and atan2() are already supported.
  • Explicit register mapping using 'register()' keyword
  • Converting from integer types to floating point in shader model profiles 1-3.

For those interested in learning more about it, you should know that the project code is distributed under LGPL 2.1 and you can consult the details of this new release In the following link.

How to install vkd3d 1.11?

For interested in being able to install vkd3d They must know that they must compile the source code, so we must obtain it first, it is important to mention that Vkd3d depends on SPIRV-Headers and Vulkan-Headers (>= 1.3.228).

The compilation is quite simple and to do this we must open a terminal in which we are going to type the following command:

git clone https://gitlab.winehq.org/wine/vkd3d.git

We proceed to enter the folder where it was downloaded with:

cd vkd3d

And we proceed to compile by executing the following commands:

./configure
make
make install

Si you want to know more about the compilation of vkd3d you can check the details in this link.


Leave a Comment

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

*

*

  1. Responsible for the data: AB Internet Networks 2008 SL
  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.