Release 1.15.

This commit is contained in:
Henri Verbeet
2025-02-19 12:00:00 +01:00
committed by Henri Verbeet
parent 872a96e599
commit 985d317e0e
Notes: Henri Verbeet 2025-02-19 14:06:00 +01:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Elizabeth Figura (@zfigura)
Approved-by: Francisco Casas (@fcasas)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1378
17 changed files with 566 additions and 838 deletions

1278
ANNOUNCE

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
Copyright 2016-2024 the Vkd3d project authors (see the file AUTHORS for a
Copyright 2016-2025 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

View File

@@ -1,3 +1,89 @@
# What's new in vkd3d 1.15 (19 February 2025)
### libvkd3d
- New interfaces:
- vkd3d_queue_signal_on_cpu() allows a Direct3D 12 fence to be signalled
when all preceding work on a Direct3D 12 command queue has been submitted
to the corresponding Vulkan queue.
### libvkd3d-shader
- New features for the HLSL source type:
- InputPatch and OutputPatch tessellation shader objects. This was the
main feature required by most tessellation shaders that was still missing,
and tessellation shaders should be considered generally usable now.
- Unrolling of loops containing conditional jumps.
- Improved function overload resolution. Previously the compiler was unable
to decide between multiple function overloads with the same number of
parameters.
- The parser is able to continue parsing in a larger number of error cases.
This allows more issues in the input to be reported during a single
compilaton attempt.
- The following intrinsic functions are supported:
- GatherCmp()
- GatherCmpAlpha(), GatherCmpBlue(), GatherCmpGreen(), and GatherCmpRed()
- InterlockedAdd(), InterlockedAnd(), InterlockedCompareExchange(),
InterlockedCompareStore(), InterlockedExchange(), InterlockedMax(),
InterlockedMin(), InterlockedOr(), and InterlockedXor()
- isinf()
- Separate resource and sampler support for shader model 1-3 target
profiles.
- Casts on the left hand side of assignments.
- Reassociation and redistribution of constants in binary expressions, to
facilitate constant folding.
- Packing of interstage I/O variables with the SV_IsFrontFace,
SV_PrimitiveID, SV_RenderTargetArrayIndex, SV_SampleIndex, and
SV_ViewPortArrayIndex semantics matches d3dcompiler/fxc more closely.
- Parser support for the LineStream, PointStream, and TriangleStream
Stream-Output objects.
- A number of instructions have been implemented for the experimental MSL
target. Although more and more shaders are starting to work, support is
still fairly limited. For example, shader resource views and unordered
access views are still entirely unsupported.
- Shader code generation for fixed-function fog. Like the existing shader code
generation for other fixed-function features, this is mainly relevant for
executing shader model 1-3 sources in modern target environments like
Vulkan.
- The fx parser can parse binary effects containing inline shader blobs.
- Internal validator support for validating I/O signatures, as well as I/O
source and destination parameters. The validator is enabled by the
force_validation option, specified through the VKD3D_SHADER_CONFIG
environment variable.
- Internal validator support for validating the number of indices used with a
register, as well as basic bounds checking for static indices.
- New interfaces:
- The vkd3d_shader_scan_hull_shader_tessellation_info structure extends the
vkd3d_shader_compile_info structure, and can be used to retrieve the
output primitive type and partitioning mode used by a hull shader. This
information is particularly useful for specifying
vkd3d_shader_spirv_domain_shader_target_info structures when targetting
SPIR-V in OpenGL environments.
- The VKD3D_SHADER_PARAMETER_NAME_FOG_FRAGMENT_MODE shader parameter
specifies the kind of fog to generate in a fragment shader.
- The VKD3D_SHADER_PARAMETER_NAME_FOG_COLOUR shader parameter
specifies the fog colour.
- The VKD3D_SHADER_PARAMETER_NAME_FOG_END shader parameter
specifies the end parameter used for linear fog generation.
- The VKD3D_SHADER_PARAMETER_NAME_FOG_SCALE shader parameter
specifies the scale parameter used for fog generation.
- The VKD3D_SHADER_PARAMETER_NAME_FOG_SOURCE shader parameter
specifies the kind of fog coordinate to output from a pre-rasterisation
shader.
### vkd3d-compiler
- The new dxbc-fx source type specifies an effect binary embedded in a DXBC
container. This is a convenience feature;
vkd3d-compiler -x dxbc-fx blob.dxbc is equivalent to
vkd3d-dxbc -x t:FX10 blob.dxbc | vkd3d-compiler -x fx.
# What's new in vkd3d 1.14 (21 November 2024)
### libvkd3d

View File

@@ -400,7 +400,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 13:0:12
libvkd3d_shader_la_LDFLAGS = $(AM_LDFLAGS) -version-info 14:0:13
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
@@ -435,7 +435,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 15:0:14
libvkd3d_la_LDFLAGS = $(AM_LDFLAGS) -version-info 16:0:15
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
@@ -448,7 +448,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 7:0:6
libvkd3d_utils_la_LDFLAGS = $(AM_LDFLAGS) -version-info 7:1:6
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,2 +0,0 @@
-
0dc07f5cce72cce47b1a2787a910aeb5edc2a65e vkd3d-shader: Silence a spurious -Wmaybe-uninitialized in vsir_program_insert_alpha_test().

View File

@@ -1,5 +1,5 @@
AC_PREREQ([2.69])
AC_INIT([vkd3d],[1.14])
AC_INIT([vkd3d],[1.15])
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_14
#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_15
#include "config.h"
#include <vkd3d.h>
#include <vkd3d_utils.h>

View File

@@ -99,6 +99,7 @@ enum vkd3d_api_version
VKD3D_API_VERSION_1_12,
VKD3D_API_VERSION_1_13,
VKD3D_API_VERSION_1_14,
VKD3D_API_VERSION_1_15,
VKD3D_FORCE_32_BIT_ENUM(VKD3D_API_VERSION),
};

View File

@@ -57,6 +57,7 @@ enum vkd3d_shader_api_version
VKD3D_SHADER_API_VERSION_1_12,
VKD3D_SHADER_API_VERSION_1_13,
VKD3D_SHADER_API_VERSION_1_14,
VKD3D_SHADER_API_VERSION_1_15,
VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_API_VERSION),
};

View File

@@ -3237,7 +3237,7 @@ static void fx_4_parse_shader_blob(struct fx_parser *parser, unsigned int object
static const struct vkd3d_shader_compile_option options[] =
{
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_14},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_15},
};
fx_parser_read_unstructured(parser, &data_size, shader->offset, sizeof(data_size));

View File

@@ -37,7 +37,7 @@
#define VKD3D_SPIRV_VERSION_1_0 0x00010000
#define VKD3D_SPIRV_VERSION_1_3 0x00010300
#define VKD3D_SPIRV_GENERATOR_ID 18
#define VKD3D_SPIRV_GENERATOR_VERSION 14
#define VKD3D_SPIRV_GENERATOR_VERSION 15
#define VKD3D_SPIRV_GENERATOR_MAGIC vkd3d_make_u32(VKD3D_SPIRV_GENERATOR_VERSION, VKD3D_SPIRV_GENERATOR_ID)
#ifndef VKD3D_SHADER_UNSUPPORTED_SPIRV_PARSER
# define VKD3D_SHADER_UNSUPPORTED_SPIRV_PARSER 0

View File

@@ -271,7 +271,7 @@ HRESULT WINAPI D3DCompile2VKD3D(const void *data, SIZE_T data_size, const char *
option = &options[0];
option->name = VKD3D_SHADER_COMPILE_OPTION_API_VERSION;
option->value = VKD3D_SHADER_API_VERSION_1_14;
option->value = VKD3D_SHADER_API_VERSION_1_15;
compile_info.type = VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO;
compile_info.next = &preprocess_info;
@@ -435,7 +435,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_14},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_15},
};
TRACE("data %p, size %"PRIuPTR", filename %s, macros %p, include %p, preprocessed_blob %p, messages_blob %p.\n",
@@ -981,7 +981,7 @@ HRESULT WINAPI D3DDisassemble(const void *data, SIZE_T data_size,
static const struct vkd3d_shader_compile_option options[] =
{
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_14},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_15},
};
TRACE("data %p, data_size %"PRIuPTR", flags %#x, comments %p, blob %p.\n",

View File

@@ -2333,7 +2333,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_14},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_15},
{VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV, typed_uav_compile_option(device)},
{VKD3D_SHADER_COMPILE_OPTION_WRITE_TESS_GEOM_POINT_SIZE, 0},
{VKD3D_SHADER_COMPILE_OPTION_FEATURE, feature_flags_compile_option(device)},
@@ -2388,7 +2388,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_14},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_15},
{VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV, typed_uav_compile_option(device)},
};
@@ -4067,7 +4067,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_14},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_15},
};
info.type = VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO;

View File

@@ -932,7 +932,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_14);
add_compile_option(&options, VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_15);
if (options.target_type->type == VKD3D_SHADER_TARGET_SPIRV_BINARY
|| options.target_type->type == VKD3D_SHADER_TARGET_SPIRV_TEXT)
add_compile_option(&options, VKD3D_SHADER_COMPILE_OPTION_FEATURE,

View File

@@ -593,7 +593,7 @@ static bool compile_shader(struct gl_runner *runner, enum shader_type shader_typ
const struct vkd3d_shader_compile_option options[] =
{
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_14},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_15},
{VKD3D_SHADER_COMPILE_OPTION_FRAGMENT_COORDINATE_ORIGIN,
VKD3D_SHADER_COMPILE_OPTION_FRAGMENT_COORDINATE_ORIGIN_LOWER_LEFT},
{VKD3D_SHADER_COMPILE_OPTION_FEATURE, shader_runner_caps_get_feature_flags(&runner->caps)},

View File

@@ -254,7 +254,7 @@ static bool compile_shader(struct metal_runner *runner, enum shader_type type, s
const struct vkd3d_shader_compile_option options[] =
{
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_13},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_15},
{VKD3D_SHADER_COMPILE_OPTION_FEATURE, shader_runner_caps_get_feature_flags(&runner->caps)},
};

View File

@@ -354,7 +354,7 @@ static bool compile_d3d_code(struct vulkan_shader_runner *runner,
int ret;
options[0].name = VKD3D_SHADER_COMPILE_OPTION_API_VERSION;
options[0].value = VKD3D_SHADER_API_VERSION_1_14;
options[0].value = VKD3D_SHADER_API_VERSION_1_15;
options[1].name = VKD3D_SHADER_COMPILE_OPTION_FEATURE;
options[1].value = shader_runner_caps_get_feature_flags(&runner->caps);