2023-12-06 03:00:00 -08:00
|
|
|
|
The Wine team is proud to announce that release 1.10 of vkd3d, the Direct3D to
|
2020-09-21 15:35:48 -07:00
|
|
|
|
Vulkan translation library, is now available.
|
2018-05-23 10:19:15 -07:00
|
|
|
|
|
2018-10-05 09:26:13 -07:00
|
|
|
|
This release contains improvements that are listed in the release notes below.
|
|
|
|
|
The main highlights are:
|
|
|
|
|
|
2023-12-06 03:00:00 -08:00
|
|
|
|
- libvkd3d exposes various newer Direct3D 12 interfaces.
|
|
|
|
|
- The HLSL compiler supports dynamic indexing of arrays.
|
|
|
|
|
- libvkd3d-utils implements various helper functions for manipulating DXBC
|
|
|
|
|
blobs.
|
2022-09-19 04:11:09 -07:00
|
|
|
|
- Miscellaneous bug fixes.
|
2018-05-23 10:19:15 -07:00
|
|
|
|
|
|
|
|
|
The source is available from the following location:
|
|
|
|
|
|
2023-12-06 03:00:00 -08:00
|
|
|
|
<https://dl.winehq.org/vkd3d/source/vkd3d-1.10.tar.xz>
|
2018-05-23 10:19:15 -07:00
|
|
|
|
|
|
|
|
|
The current source can also be pulled directly from the git repository:
|
|
|
|
|
|
2023-12-06 03:00:00 -08:00
|
|
|
|
<https://gitlab.winehq.org/wine/vkd3d.git>
|
2018-05-23 10:19:15 -07:00
|
|
|
|
|
|
|
|
|
Vkd3d is available thanks to the work of multiple people. See the file AUTHORS
|
|
|
|
|
for the complete list.
|
|
|
|
|
|
2023-12-06 03:00:00 -08:00
|
|
|
|
# What's new in vkd3d 1.10
|
|
|
|
|
|
|
|
|
|
### libvkd3d
|
|
|
|
|
|
|
|
|
|
- Creating pipeline state objects from pipeline state stream descriptions is
|
|
|
|
|
implemented.
|
|
|
|
|
- Depth-bounds testing is implemented.
|
|
|
|
|
- When the VK\_KHR\_maintenance2 extension is available, libvkd3d will
|
|
|
|
|
explicitly specify the usage flags of Vulkan image views. This is
|
|
|
|
|
particularly useful on MoltenVK, where 2D-array views of 3D textures are
|
|
|
|
|
subject to usage restrictions.
|
|
|
|
|
- The D3D12\_FORMAT\_SUPPORT2\_UAV\_TYPED\_LOAD and/or
|
|
|
|
|
D3D12\_FORMAT\_SUPPORT2\_UAV\_TYPED\_STORE feature flags are reported for
|
|
|
|
|
UAV formats when the ‘shaderStorageImageReadWithoutFormat’ and/or
|
|
|
|
|
‘shaderStorageImageWriteWithoutFormat’ Vulkan device features are
|
|
|
|
|
supported.
|
|
|
|
|
- The ID3D12Device5 interface is supported.
|
|
|
|
|
- The ID3D12GraphicsCommandList5 interface is supported.
|
|
|
|
|
- The ID3D12Resource1 interface is supported.
|
|
|
|
|
|
|
|
|
|
### libvkd3d-shader
|
|
|
|
|
|
|
|
|
|
- New features for the HLSL source type:
|
|
|
|
|
- Support for the following intrinsic functions:
|
|
|
|
|
- ceil()
|
|
|
|
|
- degrees() and radians()
|
|
|
|
|
- fwidth()
|
|
|
|
|
- tan()
|
|
|
|
|
- tex2Dlod(), tex2Dproj(), texCUBEproj(), and tex3Dproj()
|
|
|
|
|
- Constant folding support for more expression types. In particular:
|
|
|
|
|
- ternary operators and branches
|
|
|
|
|
- reciprocal square roots
|
|
|
|
|
- exponentials
|
|
|
|
|
- logical ‘not’ on booleans
|
|
|
|
|
- bitwise complements
|
|
|
|
|
- left/right shifts
|
|
|
|
|
- ceil(), floor(), frac(), and saturate()
|
|
|
|
|
- Support for dynamic indexing of arrays.
|
|
|
|
|
- Support for ‘break’ and ‘continue’ statements.
|
|
|
|
|
- Support for ‘switch’ statements.
|
|
|
|
|
- The ‘linear’, ‘centroid’, and ‘noperspective’ interpolation modifiers
|
|
|
|
|
are supported.
|
|
|
|
|
- The ‘RWTexture1DArray’ and ‘RWTexture2DArray’ unordered access view
|
|
|
|
|
types are supported.
|
|
|
|
|
- ‘\[loop\]’ attributes are accepted on loops.
|
|
|
|
|
- u/U and l/L suffixes on integer constants.
|
|
|
|
|
|
|
|
|
|
- Floating-point values are explicitly clamped to the upper and lower bounds
|
|
|
|
|
of the target type by ‘ftoi’ and ‘ftou’ instructions when targeting
|
|
|
|
|
SPIR-V. Similarly, NaNs are flushed to zero. Some hardware/drivers would
|
|
|
|
|
already do this implicitly, but behaviour for such inputs is undefined as
|
|
|
|
|
far as SPIR-V is concerned.
|
|
|
|
|
|
|
|
|
|
- The VKD3D\_SHADER\_CONFIG environment variable can be used to modify the
|
|
|
|
|
behaviour of libvkd3d-shader at run-time, analogous to the existing
|
|
|
|
|
VKD3D\_CONFIG environment variable for libvkd3d. See the README for a list
|
|
|
|
|
of supported options.
|
|
|
|
|
|
|
|
|
|
- When scanning legacy Direct3D bytecode using vkd3d\_shader\_scan(),
|
|
|
|
|
descriptor information for shader model 2 and 3 combined resource-sampler
|
|
|
|
|
pairs is returned in the vkd3d\_shader\_scan\_descriptor\_info structure.
|
|
|
|
|
Note that this information is not yet available for shader model 1
|
|
|
|
|
sources, although this will likely be added in a future release.
|
|
|
|
|
|
|
|
|
|
- The Direct3D shader assembly target supports the ‘rasteriser ordered view’
|
|
|
|
|
flag (‘\_rov’) on unordered access view declarations.
|
|
|
|
|
|
|
|
|
|
- New interfaces:
|
|
|
|
|
- The VKD3D\_SHADER\_COMPILE\_OPTION\_BACKWARD\_COMPATIBILITY compile
|
|
|
|
|
option can be used to specify backward compatibility options. The
|
|
|
|
|
VKD3D\_SHADER\_COMPILE\_OPTION\_BACKCOMPAT\_MAP\_SEMANTIC\_NAMES flag is
|
|
|
|
|
the only currently supported flag, and can be used to specify that
|
|
|
|
|
shader model 1-3 semantic names should be mapped to their shader model
|
|
|
|
|
4+ system value equivalents when compiling HLSL sources.
|
|
|
|
|
- The VKD3D\_SHADER\_COMPILE\_OPTION\_FRAGMENT\_COORDINATE\_ORIGIN compile
|
|
|
|
|
option can be used to specify the origin of fragment coordinates for
|
|
|
|
|
SPIR-V targets. This is especially useful in OpenGL environments, where
|
|
|
|
|
the origin may be different than in Direct3D or Vulkan environments.
|
|
|
|
|
- The vkd3d\_shader\_scan\_combined\_resource\_sampler\_info structure
|
|
|
|
|
extends the vkd3d\_shader\_compile\_info structure, and can be used to
|
|
|
|
|
retrieve information about the combined resource-sampler pairs used by a
|
|
|
|
|
shader. This is especially useful when compiling shaders for usage in
|
|
|
|
|
environments without separate binding points for samplers and resources,
|
|
|
|
|
like OpenGL.
|
|
|
|
|
- vkd3d\_shader\_free\_scan\_combined\_resource\_sampler\_info() is used
|
|
|
|
|
to free vkd3d\_shader\_scan\_combined\_resource\_sampler\_info
|
|
|
|
|
structures.
|
|
|
|
|
|
|
|
|
|
### libvkd3d-utils
|
|
|
|
|
|
|
|
|
|
- Passing the D3DCOMPILE\_ENABLE\_BACKWARDS\_COMPATIBILITY flag to
|
|
|
|
|
D3DCompile() and D3DCompile2() will enable mapping shader model 1-3
|
|
|
|
|
semantic names to their shader model 4+ system value equivalents.
|
|
|
|
|
|
|
|
|
|
- New interfaces:
|
|
|
|
|
- D3DGetBlobPart() is used to retrieve specific parts of DXBC blobs.
|
|
|
|
|
- D3DGetDebugInfo() is used to retrieve debug information from DXBC blobs.
|
|
|
|
|
- D3DGetInputAndOutputSignatureBlob() is used to retrieve input and output
|
|
|
|
|
signatures from DXBC blobs.
|
|
|
|
|
- D3DGetInputSignatureBlob() is used to retrieve input signatures from
|
|
|
|
|
DXBC blobs.
|
|
|
|
|
- D3DGetOutputSignatureBlob() is used to retrieve output signatures from
|
|
|
|
|
DXBC blobs.
|
|
|
|
|
- D3DStripShader() is used to remove specific parts from DXBC blobs.
|
|
|
|
|
|
|
|
|
|
### vkd3d-compiler
|
|
|
|
|
|
|
|
|
|
- The ‘--fragment-coordinate-origin’ option can be used to specify the
|
|
|
|
|
origin of fragment coordinates for SPIR-V targets.
|
|
|
|
|
|
|
|
|
|
- The ‘--semantic-compat-map’ option can be used to specify that shader
|
|
|
|
|
model 1-3 semantic names should be mapped to their shader model 4+ system
|
|
|
|
|
value equivalents when compiling HLSL sources.
|
|
|
|
|
|
|
|
|
|
### vkd3d-dxbc
|
|
|
|
|
|
|
|
|
|
- The ‘--list’ and ‘--list-data’ options now also output the offsets of
|
|
|
|
|
sections inside the input data.
|
|
|
|
|
|
|
|
|
|
### build
|
|
|
|
|
|
|
|
|
|
- The minimum required version of Vulkan-Headers for this release is version
|
|
|
|
|
1.2.148.
|
|
|
|
|
|
|
|
|
|
- When available, the libEGL and libOpenGL libraries are used to run the
|
|
|
|
|
vkd3d tests in additional configurations. These libraries are not used by
|
|
|
|
|
vkd3d itself.
|
|
|
|
|
|
|
|
|
|
- The SONAME\_LIBDXCOMPILER configure variable can be used specify the
|
|
|
|
|
shared object name of the dxcompiler library. When available, it's used to
|
|
|
|
|
run the vkd3d tests in additional configurations. The dxcompiler library
|
|
|
|
|
is not used by vkd3d itself.
|