diff --git a/ANNOUNCE b/ANNOUNCE index bc98c971..abc46f45 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,16 +1,17 @@ -The Wine team is proud to announce that release 1.6 of vkd3d, the Direct3D to +The Wine team is proud to announce that release 1.7 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: - - Initial support for HLSL compute shaders. - - More support for HLSL features and intrinsics. + - Support for many more HLSL features and intrinsics. + - Much improved support for the Direct3D shader model 1/2/3 HLSL profiles. + - Public vkd3d-shader API for parsing and serialising DXBC blobs. - Miscellaneous bug fixes. The source is available from the following location: - https://dl.winehq.org/vkd3d/source/vkd3d-1.6.tar.xz + https://dl.winehq.org/vkd3d/source/vkd3d-1.7.tar.xz The current source can also be pulled directly from the git repository: @@ -21,40 +22,49 @@ for the complete list. ---------------------------------------------------------------- -What's new in vkd3d 1.6 +What's new in vkd3d 1.7 ======================= *** libvkd3d-shader - New features for the HLSL source type: - - Initial support for compute shaders. - - Improved support for initialisation and assignment of compound objects - like structures and arrays, including casts and implicit conversions. - - Support for loads and stores of texture resource unordered-access views. - - Support for function attributes. In particular, the required "numthreads" - attribute for compute shader entry points is now supported. - - Support for the asuint() intrinsic function. - - Support for the length() intrinsic function. - - Support for the normalize() intrinsic function. - - Support for integer division and modulus. - - Support for taking the absolute value of integers. - - Support for floating-point modulus. + - Support for calling user-defined functions. + - Support for array parameters to user-defined functions. + - Much improved support for the Direct3D shader model 1/2/3 profiles. + - Support for the SV_DispatchThreadID, SV_GroupID, and SV_GroupThreadID + compute shader system-value semantics. + - Support for the optional "offset" parameter of the texture object Load() + method. + - Support for the all() intrinsic function. + - Support for the distance() intrinsic function. + - Support for the exp() and exp2() intrinsic functions. + - Support for the frac() intrinsic function. + - Support for the lit() intrinsic function. + - Support for the reflect() intrinsic function. + - Support for the sin() and cos() intrinsic functions. + - Support for the smoothstep() intrinsic function. + - Support for the sqrt() and rsqrt() intrinsic functions. + - Support for the step() intrinsic function. + - Support for the transpose() intrinsic function. + - Support for the case-insensitive variants of the "float" and "dword" data + types. + - Partial support for minimum precision data types like "min16float". These + are currently interpreted as their regular counterparts. + - Improved constant propagation support, in particular to constant + propagation through swizzles. +- HLSL static variables are now properly zero-initialised. + +- The Direct3D shader model 4 and 5 disassembler outputs sample counts for + multi-sampled resource declarations. - New interfaces: - - The VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_ATOMICS descriptor info flag is - used to indicate that atomic operations are used on unordered-access view - descriptors. - - -*** libvkd3d-common - -- vkd3d debug output is prefixed with "vkd3d:" in order to make it easier to - distinguish from output produced by applications or other libraries. - - -*** demos - -- The demos now use libvkd3d-shader to compile HLSL shaders at run-time. - + - vkd3d_shader_parse_dxbc() provides support for parsing DXBC blobs. + - vkd3d_shader_serialize_dxbc() provides support for serialising DXBC blobs. + - vkd3d_shader_free_dxbc() is used to free vkd3d_shader_dxbc_desc + structures, as returned by vkd3d_shader_parse_dxbc(). + - The VKD3D_SHADER_COMPILE_OPTION_WRITE_TESS_GEOM_POINT_SIZE compile option + can be used to specify whether SPIR-V shaders targeting Vulkan + environments should write point sizes for geometry and tessellation + shaders. If left unspecified, point sizes will be written. diff --git a/AUTHORS b/AUTHORS index ccdc8e89..622aecbb 100644 --- a/AUTHORS +++ b/AUTHORS @@ -8,6 +8,7 @@ Chip Davis Conor McCarthy David Gow Derek Lesho +Fabian Maurer Francisco Casas Francois Gouget Giovanni Mascellani diff --git a/COPYING b/COPYING index b7aa9277..01924415 100644 --- a/COPYING +++ b/COPYING @@ -1,4 +1,4 @@ -Copyright 2016-2022 the Vkd3d project authors (see the file AUTHORS for a +Copyright 2016-2023 the Vkd3d project authors (see the file AUTHORS for a complete list) Vkd3d is free software; you can redistribute it and/or modify it under diff --git a/Makefile.am b/Makefile.am index 22a1065a..6ac8ffb2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -259,7 +259,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 5:0:4 +libvkd3d_shader_la_LDFLAGS = $(AM_LDFLAGS) -version-info 6:0:5 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 @@ -293,7 +293,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 7:0:6 +libvkd3d_la_LDFLAGS = $(AM_LDFLAGS) -version-info 8:0:7 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 @@ -305,7 +305,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:2:3 +libvkd3d_utils_la_LDFLAGS = $(AM_LDFLAGS) -version-info 4:3:3 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 diff --git a/configure.ac b/configure.ac index 99864651..29225c8c 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ([2.69]) -AC_INIT([vkd3d],[1.6]) +AC_INIT([vkd3d],[1.7]) AC_CONFIG_AUX_DIR([bin]) AC_CONFIG_MACRO_DIR([m4]) diff --git a/demos/demo_xcb.h b/demos/demo_xcb.h index 0062d4ae..5adf44ee 100644 --- a/demos/demo_xcb.h +++ b/demos/demo_xcb.h @@ -19,7 +19,7 @@ #define VK_NO_PROTOTYPES #define VK_USE_PLATFORM_XCB_KHR -#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_6 +#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_7 #include "config.h" #include #include diff --git a/include/vkd3d.h b/include/vkd3d.h index 76b1ba65..e5159d5e 100644 --- a/include/vkd3d.h +++ b/include/vkd3d.h @@ -75,6 +75,7 @@ enum vkd3d_api_version VKD3D_API_VERSION_1_4, VKD3D_API_VERSION_1_5, VKD3D_API_VERSION_1_6, + VKD3D_API_VERSION_1_7, VKD3D_FORCE_32_BIT_ENUM(VKD3D_API_VERSION), }; diff --git a/include/vkd3d_shader.h b/include/vkd3d_shader.h index c5baecb5..859b8c79 100644 --- a/include/vkd3d_shader.h +++ b/include/vkd3d_shader.h @@ -48,6 +48,7 @@ enum vkd3d_shader_api_version VKD3D_SHADER_API_VERSION_1_4, VKD3D_SHADER_API_VERSION_1_5, VKD3D_SHADER_API_VERSION_1_6, + VKD3D_SHADER_API_VERSION_1_7, VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_API_VERSION), }; diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index 982aabf9..4ebaefeb 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -206,7 +206,7 @@ static enum vkd3d_shader_input_sysval_semantic vkd3d_siv_from_sysval(enum vkd3d_ #define VKD3D_SPIRV_VERSION 0x00010000 #define VKD3D_SPIRV_GENERATOR_ID 18 -#define VKD3D_SPIRV_GENERATOR_VERSION 6 +#define VKD3D_SPIRV_GENERATOR_VERSION 7 #define VKD3D_SPIRV_GENERATOR_MAGIC vkd3d_make_u32(VKD3D_SPIRV_GENERATOR_VERSION, VKD3D_SPIRV_GENERATOR_ID) struct vkd3d_spirv_stream diff --git a/libs/vkd3d-utils/vkd3d_utils_main.c b/libs/vkd3d-utils/vkd3d_utils_main.c index df33d546..3911c11b 100644 --- a/libs/vkd3d-utils/vkd3d_utils_main.c +++ b/libs/vkd3d-utils/vkd3d_utils_main.c @@ -210,7 +210,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_6; + option->value = VKD3D_SHADER_API_VERSION_1_7; compile_info.type = VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO; compile_info.next = &preprocess_info; @@ -315,7 +315,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_6}, + {VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_7}, }; TRACE("data %p, size %lu, filename %s, macros %p, include %p, preprocessed_blob %p, messages_blob %p.\n", diff --git a/libs/vkd3d/state.c b/libs/vkd3d/state.c index 44f57f60..c964ea8f 100644 --- a/libs/vkd3d/state.c +++ b/libs/vkd3d/state.c @@ -1958,7 +1958,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_6}, + {VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_7}, {VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV, typed_uav_compile_option(device)}, {VKD3D_SHADER_COMPILE_OPTION_WRITE_TESS_GEOM_POINT_SIZE, 0}, }; @@ -2011,7 +2011,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_6}, + {VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_7}, {VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV, typed_uav_compile_option(device)}, }; diff --git a/programs/vkd3d-compiler/main.c b/programs/vkd3d-compiler/main.c index 520ab957..52488e86 100644 --- a/programs/vkd3d-compiler/main.c +++ b/programs/vkd3d-compiler/main.c @@ -726,7 +726,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_6); + add_compile_option(&options, VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_7); info.type = VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO; info.next = &hlsl_source_info;