mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
Release 1.10.
This commit is contained in:
parent
ff674b5db5
commit
0c33f82f72
Notes:
Alexandre Julliard
2023-12-06 23:24:41 +01:00
Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/513
194
ANNOUNCE
194
ANNOUNCE
@ -1,103 +1,155 @@
|
||||
The Wine team is proud to announce that release 1.9 of vkd3d, the Direct3D to
|
||||
The Wine team is proud to announce that release 1.10 of vkd3d, the Direct3D to
|
||||
Vulkan translation library, is now available.
|
||||
|
||||
This release contains improvements that are listed in the release notes below.
|
||||
The main highlights are:
|
||||
|
||||
- Yet more improvements to the HLSL compiler.
|
||||
- A new utility to inspect the contents of DXBC blobs.
|
||||
- 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.
|
||||
- Miscellaneous bug fixes.
|
||||
|
||||
The source is available from the following location:
|
||||
|
||||
https://dl.winehq.org/vkd3d/source/vkd3d-1.9.tar.xz
|
||||
<https://dl.winehq.org/vkd3d/source/vkd3d-1.10.tar.xz>
|
||||
|
||||
The current source can also be pulled directly from the git repository:
|
||||
|
||||
https://gitlab.winehq.org/wine/vkd3d.git
|
||||
<https://gitlab.winehq.org/wine/vkd3d.git>
|
||||
|
||||
Vkd3d is available thanks to the work of multiple people. See the file AUTHORS
|
||||
for the complete list.
|
||||
|
||||
----------------------------------------------------------------
|
||||
# What's new in vkd3d 1.10
|
||||
|
||||
What's new in vkd3d 1.9
|
||||
=======================
|
||||
### 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
|
||||
### libvkd3d-shader
|
||||
|
||||
- Copying between depth/stencil and colour formats in
|
||||
ID3D12GraphicsCommandList::CopyResource() is supported.
|
||||
- The ID3D12Fence1 interface is supported.
|
||||
|
||||
|
||||
*** libvkd3d-shader
|
||||
|
||||
- vkd3d_shader_scan() supports retrieving descriptor information for `d3dbc'
|
||||
shaders. This is one of the requirements for eventual SPIR-V generation from
|
||||
`d3dbc' sources.
|
||||
|
||||
- New features for the HLSL source type:
|
||||
- New features for the HLSL source type:
|
||||
- Support for the following intrinsic functions:
|
||||
- clip()
|
||||
- ddx_coarse() and ddy_coarse()
|
||||
- ddx_fine() and ddy_fine()
|
||||
- tex1D(), tex2D(), texCUBE(), and tex3D()
|
||||
- ceil()
|
||||
- degrees() and radians()
|
||||
- fwidth()
|
||||
- tan()
|
||||
- tex2Dlod(), tex2Dproj(), texCUBEproj(), and tex3Dproj()
|
||||
- Constant folding support for more expression types. In particular:
|
||||
- comparison operators
|
||||
- floating-point min() and max()
|
||||
- logical `and' and `or'
|
||||
- dot products
|
||||
- square roots
|
||||
- logarithms
|
||||
- Support for multi-sample texture object declarations without explicit
|
||||
sample counts in shader model 4.1 and later shaders.
|
||||
- Support for using constant expressions as sample counts in multi-sample
|
||||
texture object declarations.
|
||||
- Support for variable initialisers using variables declared earlier in the
|
||||
same declaration list. E.g., `float a = 1, b = a, c = b + 1;'.
|
||||
- The GetDimensions() texture object method is implemented.
|
||||
- Matrix swizzles are implemented.
|
||||
- Parser support for if-statement attributes like `[branch]' and
|
||||
`[flatten]'.
|
||||
- Support for the `inline' function modifier.
|
||||
- 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.
|
||||
|
||||
- Previously, vkd3d_shader_compile() would in some cases return VKD3D_OK
|
||||
despite compilation failing when targeting legacy Direct3D bytecode. These
|
||||
cases have been fixed.
|
||||
- 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.
|
||||
|
||||
- Various HLSL preprocessor fixes for edge cases related to stringification.
|
||||
- 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.
|
||||
|
||||
- SPIR-V target support for the `linear noperspective centroid' input
|
||||
interpolation mode.
|
||||
- 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.
|
||||
|
||||
- New interfaces:
|
||||
- The vkd3d_shader_scan_signature_info structure extends the
|
||||
vkd3d_shader_compile_info structure, and can be used to retrieve
|
||||
descriptions of `dxbc-tpf' and `d3dbc' shader inputs and outputs.
|
||||
- vkd3d_shader_free_scan_signature_info() is used to free
|
||||
vkd3d_shader_scan_signature_info structures.
|
||||
- The VKD3D_SHADER_COMPILE_OPTION_PACK_MATRIX_ORDER compile option can be
|
||||
used to specify the default matrix packing order for HLSL sources.
|
||||
- The vkd3d_shader_varying_map_info structure extends the
|
||||
vkd3d_shader_compile_info structure, and can be used to specify a mapping
|
||||
between the outputs of a shader stage and the inputs of the next shader
|
||||
stage.
|
||||
- vkd3d_shader_build_varying_map() is used to build a mapping between the
|
||||
outputs of a shader stage and the inputs of the next shader stage.
|
||||
- The VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_RAW_BUFFER flag returned as part of
|
||||
the vkd3d_shader_descriptor_info structure indicates the descriptor refers
|
||||
to a byte-addressed (`raw') buffer resource.
|
||||
- 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.
|
||||
|
||||
*** vkd3d-compiler
|
||||
### libvkd3d-utils
|
||||
|
||||
- The `--matrix-storage-order' option can used to specify the default matrix
|
||||
storage order for HLSL sources.
|
||||
- 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-dxbc
|
||||
### vkd3d-compiler
|
||||
|
||||
- vkd3d-dxbc is a new utility that can be used to inspect the contents of DXBC
|
||||
blobs.
|
||||
- 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.
|
||||
|
3
AUTHORS
3
AUTHORS
@ -1,3 +1,4 @@
|
||||
Akihiro Sagawa
|
||||
Alexandre Julliard
|
||||
Alistair Leslie-Hughes
|
||||
Andrew Eikum
|
||||
@ -18,6 +19,7 @@ Giovanni Mascellani
|
||||
Hans-Kristian Arntzen
|
||||
Henri Verbeet
|
||||
Isabella Bosia
|
||||
Jacek Caban
|
||||
Jactry Zeng
|
||||
Jan Sikorski
|
||||
Joshua Ashton
|
||||
@ -25,6 +27,7 @@ Józef Kucia
|
||||
Martin Storsjö
|
||||
Matteo Bruni
|
||||
Nikolay Sivov
|
||||
Petrichor Park
|
||||
Philip Rebohle
|
||||
Rémi Bernon
|
||||
Robin Kertels
|
||||
|
@ -307,7 +307,7 @@ libvkd3d_shader_la_SOURCES = \
|
||||
libs/vkd3d-shader/vkd3d_shader_main.c \
|
||||
libs/vkd3d-shader/vkd3d_shader_private.h
|
||||
libvkd3d_shader_la_CFLAGS = $(AM_CFLAGS) -DLIBVKD3D_SHADER_SOURCE -I$(srcdir)/libs/vkd3d-shader @SPIRV_TOOLS_CFLAGS@
|
||||
libvkd3d_shader_la_LDFLAGS = $(AM_LDFLAGS) -version-info 8:0:7
|
||||
libvkd3d_shader_la_LDFLAGS = $(AM_LDFLAGS) -version-info 9:0:8
|
||||
libvkd3d_shader_la_LIBADD = libvkd3d-common.la @SPIRV_TOOLS_LIBS@ -lm
|
||||
if HAVE_LD_VERSION_SCRIPT
|
||||
libvkd3d_shader_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libs/vkd3d-shader/vkd3d_shader.map
|
||||
@ -342,7 +342,7 @@ libvkd3d_la_SOURCES = \
|
||||
libs/vkd3d/vkd3d_shaders.h \
|
||||
libs/vkd3d/vulkan_procs.h
|
||||
libvkd3d_la_CFLAGS = $(AM_CFLAGS) -DLIBVKD3D_SOURCE
|
||||
libvkd3d_la_LDFLAGS = $(AM_LDFLAGS) -version-info 10:0:9
|
||||
libvkd3d_la_LDFLAGS = $(AM_LDFLAGS) -version-info 11:0:10
|
||||
libvkd3d_la_LIBADD = libvkd3d-common.la libvkd3d-shader.la @DL_LIBS@ @PTHREAD_LIBS@
|
||||
if HAVE_LD_VERSION_SCRIPT
|
||||
libvkd3d_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libs/vkd3d/vkd3d.map
|
||||
@ -354,7 +354,7 @@ libvkd3d_utils_la_SOURCES = \
|
||||
libs/vkd3d-utils/vkd3d_utils_main.c \
|
||||
libs/vkd3d-utils/vkd3d_utils_private.h
|
||||
libvkd3d_utils_la_CFLAGS = $(AM_CFLAGS) -DLIBVKD3D_UTILS_SOURCE
|
||||
libvkd3d_utils_la_LDFLAGS = $(AM_LDFLAGS) -version-info 4:5:3
|
||||
libvkd3d_utils_la_LDFLAGS = $(AM_LDFLAGS) -version-info 5:0:4
|
||||
libvkd3d_utils_la_LIBADD = libvkd3d-common.la libvkd3d-shader.la libvkd3d.la @PTHREAD_LIBS@
|
||||
if HAVE_LD_VERSION_SCRIPT
|
||||
libvkd3d_utils_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libs/vkd3d-utils/vkd3d_utils.map
|
||||
|
@ -1,5 +1,5 @@
|
||||
AC_PREREQ([2.69])
|
||||
AC_INIT([vkd3d],[1.9])
|
||||
AC_INIT([vkd3d],[1.10])
|
||||
|
||||
AC_CONFIG_AUX_DIR([bin])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
#define VK_NO_PROTOTYPES
|
||||
#define VK_USE_PLATFORM_XCB_KHR
|
||||
#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_9
|
||||
#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_10
|
||||
#include "config.h"
|
||||
#include <vkd3d.h>
|
||||
#include <vkd3d_utils.h>
|
||||
|
@ -78,6 +78,7 @@ enum vkd3d_api_version
|
||||
VKD3D_API_VERSION_1_7,
|
||||
VKD3D_API_VERSION_1_8,
|
||||
VKD3D_API_VERSION_1_9,
|
||||
VKD3D_API_VERSION_1_10,
|
||||
|
||||
VKD3D_FORCE_32_BIT_ENUM(VKD3D_API_VERSION),
|
||||
};
|
||||
|
@ -51,6 +51,7 @@ enum vkd3d_shader_api_version
|
||||
VKD3D_SHADER_API_VERSION_1_7,
|
||||
VKD3D_SHADER_API_VERSION_1_8,
|
||||
VKD3D_SHADER_API_VERSION_1_9,
|
||||
VKD3D_SHADER_API_VERSION_1_10,
|
||||
|
||||
VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_API_VERSION),
|
||||
};
|
||||
|
@ -231,7 +231,7 @@ static inline bool register_is_constant_or_undef(const struct vkd3d_shader_regis
|
||||
|
||||
#define VKD3D_SPIRV_VERSION 0x00010000
|
||||
#define VKD3D_SPIRV_GENERATOR_ID 18
|
||||
#define VKD3D_SPIRV_GENERATOR_VERSION 9
|
||||
#define VKD3D_SPIRV_GENERATOR_VERSION 10
|
||||
#define VKD3D_SPIRV_GENERATOR_MAGIC vkd3d_make_u32(VKD3D_SPIRV_GENERATOR_VERSION, VKD3D_SPIRV_GENERATOR_ID)
|
||||
|
||||
struct vkd3d_spirv_stream
|
||||
|
@ -239,7 +239,7 @@ HRESULT WINAPI D3DCompile2(const void *data, SIZE_T data_size, const char *filen
|
||||
|
||||
option = &options[0];
|
||||
option->name = VKD3D_SHADER_COMPILE_OPTION_API_VERSION;
|
||||
option->value = VKD3D_SHADER_API_VERSION_1_9;
|
||||
option->value = VKD3D_SHADER_API_VERSION_1_10;
|
||||
|
||||
compile_info.type = VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO;
|
||||
compile_info.next = &preprocess_info;
|
||||
@ -362,7 +362,7 @@ HRESULT WINAPI D3DPreprocess(const void *data, SIZE_T size, const char *filename
|
||||
|
||||
static const struct vkd3d_shader_compile_option options[] =
|
||||
{
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_9},
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_10},
|
||||
};
|
||||
|
||||
TRACE("data %p, size %lu, filename %s, macros %p, include %p, preprocessed_blob %p, messages_blob %p.\n",
|
||||
|
@ -2142,7 +2142,7 @@ static HRESULT create_shader_stage(struct d3d12_device *device,
|
||||
|
||||
const struct vkd3d_shader_compile_option options[] =
|
||||
{
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_9},
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_10},
|
||||
{VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV, typed_uav_compile_option(device)},
|
||||
{VKD3D_SHADER_COMPILE_OPTION_WRITE_TESS_GEOM_POINT_SIZE, 0},
|
||||
};
|
||||
@ -2196,7 +2196,7 @@ static int vkd3d_scan_dxbc(const struct d3d12_device *device, const D3D12_SHADER
|
||||
|
||||
const struct vkd3d_shader_compile_option options[] =
|
||||
{
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_9},
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_10},
|
||||
{VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV, typed_uav_compile_option(device)},
|
||||
};
|
||||
|
||||
@ -3855,7 +3855,7 @@ static int compile_hlsl_cs(const struct vkd3d_shader_code *hlsl, struct vkd3d_sh
|
||||
|
||||
static const struct vkd3d_shader_compile_option options[] =
|
||||
{
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_9},
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_10},
|
||||
};
|
||||
|
||||
info.type = VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO;
|
||||
|
@ -827,7 +827,7 @@ int main(int argc, char **argv)
|
||||
if (!options.explicit_colour && !getenv("NO_COLOUR") && !getenv("NO_COLOR") && has_colour(output))
|
||||
options.formatting |= VKD3D_SHADER_COMPILE_OPTION_FORMATTING_COLOUR;
|
||||
add_compile_option(&options, VKD3D_SHADER_COMPILE_OPTION_FORMATTING, options.formatting);
|
||||
add_compile_option(&options, VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_9);
|
||||
add_compile_option(&options, VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_10);
|
||||
|
||||
info.type = VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO;
|
||||
info.next = &hlsl_source_info;
|
||||
|
@ -417,7 +417,7 @@ static bool compile_shader(struct gl_runner *runner, ID3DBlob *blob, struct vkd3
|
||||
|
||||
static const struct vkd3d_shader_compile_option options[] =
|
||||
{
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_9},
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_10},
|
||||
{VKD3D_SHADER_COMPILE_OPTION_FRAGMENT_COORDINATE_ORIGIN,
|
||||
VKD3D_SHADER_COMPILE_OPTION_FRAGMENT_COORDINATE_ORIGIN_LOWER_LEFT},
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user