Release 1.5.

This commit is contained in:
Henri Verbeet 2022-09-19 13:11:09 +02:00 committed by Alexandre Julliard
parent d484a08d10
commit 56b2f56b86
Notes: Alexandre Julliard 2022-10-18 00:13:00 +02:00
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/15
11 changed files with 38 additions and 81 deletions

View File

@ -1,96 +1,50 @@
The Wine team is proud to announce that release 1.4 of vkd3d, the Direct3D to
The Wine team is proud to announce that release 1.5 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:
- Many improvements to the HLSL compiler.
- A new descriptor heap implementation using the VK_EXT_descriptor_indexing
extension.
- A new fence implementation using the VK_KHR_timeline_semaphore extension.
- Support for various HLSL features and intrinsics.
- Typed unordered access view loads of multicomponent formats.
- Miscellaneous bug fixes.
The source is available from the following location:
https://dl.winehq.org/vkd3d/source/vkd3d-1.4.tar.xz
https://dl.winehq.org/vkd3d/source/vkd3d-1.5.tar.xz
The current source can also be pulled directly from the git repository:
https://source.winehq.org/git/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.4
What's new in vkd3d 1.5
=======================
*** libvkd3d
- A new descriptor heap implementation using the VK_EXT_descriptor_indexing
extension. In particular, the new implementation is more efficient when
large descriptor heaps are used by multiple command lists. The new
`virtual_heaps' configuration option can be used to select the original
implementation even when the VK_EXT_descriptor_indexing extension is
available.
- A new fence implementation using the VK_KHR_timeline_semaphore extension.
The new implementation addresses a number of edge cases the original
implementation was unable to, as well as being somewhat more efficient.
- When the VK_EXT_robustness2 extension is available, it is used to implement
null views. This more accurately matches Direct3D 12 behaviour. For example,
all reads from such a null view return zeroes, while that isn't necessarily
the case for out-of-bounds reads with the original implementation.
- New interfaces:
- vkd3d_set_log_callback() allows writing log output via a custom callback.
This can be used to integrate vkd3d's log output with other logging
systems.
*** libvkd3d-shader
- New features for the HLSL source type:
- Support for integer arithmetic, bitwise and shift operations.
- Support for matrix and vector subscripting.
- Support for the mul() intrinsic function.
- Support for matrix copying, casting, and entry-wise operations.
- Support for complex initialisers.
- Support for the `nointerpolation' modifier. This modifier is applied by
default to integer variables.
- Support for the SV_VertexID semantic.
- Support for matrix-typed varyings.
- Constant folding for a number of operators.
- Copy propagation across branches and loops. This allows use of non-numeric
variables anywhere in a program, as well as more optimised code for
accessing numeric variables within branches and loops.
- The disassembler supports the shader model 5 `msad' instruction.
- 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().
- New interfaces:
- vkd3d_shader_set_log_callback() allows writing log output via a custom
callback.
*** libvkd3d-utils
- New interfaces:
- vkd3d_utils_set_log_callback() allows writing log output via a custom
callback.
*** build
- The minimum required version of Vulkan-Headers and SPIRV-Headers for this
release is version 1.2.139.
- The SONAME_LIBVULKAN configure variable can be used to specify the shared
object name of the Vulkan library. Because vkd3d loads the Vulkan library
dynamically, specifying this removes the need for a Vulkan import library at
build time.
- The `crosstests' target no longer builds Win32/PE demos or tests when these
were not enabled at configure time.
- 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.

View File

@ -16,6 +16,7 @@ Isabella Bosia
Jactry Zeng
Joshua Ashton
Józef Kucia
Martin Storsjö
Matteo Bruni
Nikolay Sivov
Philip Rebohle

View File

@ -242,7 +242,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 3:0:2
libvkd3d_shader_la_LDFLAGS = $(AM_LDFLAGS) -version-info 4:0:3
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
@ -276,7 +276,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 5:0:4
libvkd3d_la_LDFLAGS = $(AM_LDFLAGS) -version-info 6:0:5
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
@ -288,7 +288,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:0:3
libvkd3d_utils_la_LDFLAGS = $(AM_LDFLAGS) -version-info 4:1: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

View File

@ -1,5 +1,5 @@
AC_PREREQ([2.69])
AC_INIT([vkd3d],[1.4])
AC_INIT([vkd3d],[1.5])
AC_CONFIG_AUX_DIR([bin])
AC_CONFIG_MACRO_DIR([m4])

View File

@ -19,7 +19,7 @@
#define VK_NO_PROTOTYPES
#define VK_USE_PLATFORM_XCB_KHR
#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_4
#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_5
#include "config.h"
#include <vkd3d.h>
#include <vkd3d_utils.h>

View File

@ -61,6 +61,7 @@ enum vkd3d_api_version
VKD3D_API_VERSION_1_2,
VKD3D_API_VERSION_1_3,
VKD3D_API_VERSION_1_4,
VKD3D_API_VERSION_1_5,
VKD3D_FORCE_32_BIT_ENUM(VKD3D_API_VERSION),
};

View File

@ -46,6 +46,7 @@ enum vkd3d_shader_api_version
VKD3D_SHADER_API_VERSION_1_2,
VKD3D_SHADER_API_VERSION_1_3,
VKD3D_SHADER_API_VERSION_1_4,
VKD3D_SHADER_API_VERSION_1_5,
VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_API_VERSION),
};

View File

@ -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 4
#define VKD3D_SPIRV_GENERATOR_VERSION 5
#define VKD3D_SPIRV_GENERATOR_MAGIC vkd3d_make_u32(VKD3D_SPIRV_GENERATOR_VERSION, VKD3D_SPIRV_GENERATOR_ID)
struct vkd3d_spirv_stream

View File

@ -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_4;
option->value = VKD3D_SHADER_API_VERSION_1_5;
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_4},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_5},
};
TRACE("data %p, size %lu, filename %s, macros %p, include %p, preprocessed_blob %p, messages_blob %p.\n",

View File

@ -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_4},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_5},
{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_4},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_5},
{VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV, typed_uav_compile_option(device)},
};

View File

@ -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_4);
add_compile_option(&options, VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_5);
info.type = VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO;
info.next = &hlsl_source_info;