diff --git a/ANNOUNCE b/ANNOUNCE index a2728968c..bc98c9710 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,16 +1,16 @@ -The Wine team is proud to announce that release 1.5 of vkd3d, the Direct3D to +The Wine team is proud to announce that release 1.6 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: - - Support for various HLSL features and intrinsics. - - Typed unordered access view loads of multicomponent formats. + - Initial support for HLSL compute shaders. + - More support for HLSL features and intrinsics. - Miscellaneous bug fixes. The source is available from the following location: - https://dl.winehq.org/vkd3d/source/vkd3d-1.5.tar.xz + https://dl.winehq.org/vkd3d/source/vkd3d-1.6.tar.xz The current source can also be pulled directly from the git repository: @@ -21,30 +21,40 @@ for the complete list. ---------------------------------------------------------------- -What's new in vkd3d 1.5 +What's new in vkd3d 1.6 ======================= *** libvkd3d-shader - New features for the HLSL source type: - - Improved support for HLSL object types (like e.g. `Texture2D') inside - structures and arrays. - - Implicitly sized array initialisers. - - Support for the dot() intrinsic function. - - Support for the ldexp() intrinsic function. - - Support for the lerp() intrinsic function. - - Support for the logical `and', `or', and `not' operators in shader model 4 - and 5 targets. - - Support for casts from `bool' types in shader model 4 and 5 targets. - - Constant folding for integer bitwise operations. - - Constant folding for integer min() and max(). + - 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. + - New interfaces: - - The VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV compile option can be used to - specify the SPIR-V format to use for typed unordered access view loads. - When set to `Unknown', and the `shaderStorageImageReadWithoutFormat' - feature is enabled in the target environment, this allows typed loads from - multicomponent format unordered access views. If left unspecified, a R32 - format will be used, like in previous versions of libvkd3d-shader. + - 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. diff --git a/AUTHORS b/AUTHORS index a3d3a1aab..ccdc8e89a 100644 --- a/AUTHORS +++ b/AUTHORS @@ -3,6 +3,7 @@ Andrew Eikum Andrey Gusev Atharva Nimbalkar Biswapriyo Nath +Brendan Shanks Chip Davis Conor McCarthy David Gow diff --git a/Makefile.am b/Makefile.am index e877c5029..8c05338b6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -245,7 +245,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 4:0:3 +libvkd3d_shader_la_LDFLAGS = $(AM_LDFLAGS) -version-info 5:0:4 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 @@ -279,7 +279,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 6:0:5 +libvkd3d_la_LDFLAGS = $(AM_LDFLAGS) -version-info 7:0:6 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 @@ -291,7 +291,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:1:3 +libvkd3d_utils_la_LDFLAGS = $(AM_LDFLAGS) -version-info 4:2: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 577b39835..8258b4ccd 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ([2.69]) -AC_INIT([vkd3d],[1.5]) +AC_INIT([vkd3d],[1.6]) AC_CONFIG_AUX_DIR([bin]) AC_CONFIG_MACRO_DIR([m4]) diff --git a/demos/demo_xcb.h b/demos/demo_xcb.h index 878b2c6a3..0062d4ae2 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_5 +#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_6 #include "config.h" #include #include diff --git a/include/vkd3d.h b/include/vkd3d.h index 2a87e3d2d..b44f00841 100644 --- a/include/vkd3d.h +++ b/include/vkd3d.h @@ -62,6 +62,7 @@ enum vkd3d_api_version VKD3D_API_VERSION_1_3, VKD3D_API_VERSION_1_4, VKD3D_API_VERSION_1_5, + VKD3D_API_VERSION_1_6, VKD3D_FORCE_32_BIT_ENUM(VKD3D_API_VERSION), }; diff --git a/include/vkd3d_shader.h b/include/vkd3d_shader.h index 939ab42df..7b9c0ff76 100644 --- a/include/vkd3d_shader.h +++ b/include/vkd3d_shader.h @@ -47,6 +47,7 @@ enum vkd3d_shader_api_version VKD3D_SHADER_API_VERSION_1_3, VKD3D_SHADER_API_VERSION_1_4, VKD3D_SHADER_API_VERSION_1_5, + VKD3D_SHADER_API_VERSION_1_6, VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_API_VERSION), }; diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index 2d1691c68..0d0515ded 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 5 +#define VKD3D_SPIRV_GENERATOR_VERSION 6 #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 a220b2dfc..df33d546e 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_5; + option->value = VKD3D_SHADER_API_VERSION_1_6; 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_5}, + {VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_6}, }; 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 57dba25ae..5ba5eb819 100644 --- a/libs/vkd3d/state.c +++ b/libs/vkd3d/state.c @@ -1964,7 +1964,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_5}, + {VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_6}, {VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV, typed_uav_compile_option(device)}, }; @@ -2016,7 +2016,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_5}, + {VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_6}, {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 731b1d451..520ab9574 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_5); + add_compile_option(&options, VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_6); info.type = VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO; info.next = &hlsl_source_info;