Release 1.17.

This commit is contained in:
Henri Verbeet
2025-08-21 12:00:00 +02:00
parent 44fffee5e1
commit f732fb7889
Notes: Henri Verbeet 2025-08-21 13:05:55 +02:00
Approved-by: Elizabeth Figura (@zfigura)
Approved-by: Francisco Casas (@fcasas)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1683
15 changed files with 734 additions and 481 deletions

1099
ANNOUNCE

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,83 @@
# What's new in vkd3d 1.17 (21 August 2025)
### libvkd3d
- The EnumerateMetaCommands() method of the ID3D12Device5 interface is
implemented.
### libvkd3d-shader
- Several new features and improvements for the HLSL source type:
- Initial thread group shared memory support.
- Improved support for geometry shaders: shader model 5 multiple output
streams, as well as SV_IsFrontFace, SV_RenderTargetArrayIndex, and
SV_ViewportArrayIndex outputs.
- Structure variable input/output semantics are propagated to the
constituent structure fields.
- Shader entry point return values are allocated before any other outputs
in the output signature. This matches d3dcompiler/fxc more closely.
- Hull shader control point pass-through.
- Reflection information can be retrieved using vkd3d_shader_scan().
- Improved preprocessor handling of comments inside include directives, as
well as inclusion of empty files.
- Memory barrier intrinsics are supported in shader model 4 target
profiles. Previous these were only supported in shader model 5 target
profiles.
- Parser support for the noise() intrinsic. Although the intrinsic itself
isn't implemented, parser support for the intrinsic is required to allow
compilation of any other shaders in the same source file to succeed as
well.
- Parser support for StructuredBuffer resources.
- Various new features and improvements for the effects (FX) source type:
- Shader blob assignments and FXLVM value expressions in fx_2_0 effects.
- Nameless structure types.
- Explicit constant buffer bind points and constant packing offsets.
- The d3ds_noiseswiz, ge, lt, and noise FXLVM operations.
- The experimental Metal Shading Language (MSL) target supports the
following features:
- Texture sampling and gather operations.
- Loops and switches.
- Screen-space partial derivatives.
- Various integer arithmetic and comparison operations.
- Indirect addressing of constant buffers.
- Indexable temporary registers.
- Fragment shader output sample coverage masks.
- SV_Position and SV_SampleIndex fragment shader inputs.
- SV_VertexID inputs.
- When the experimental MSL target is enabled, the dxbc-dxil source type
can be used in combination with the msl target type to convert DXIL
shaders to MSL.
- The new tx source type can be used in combination with the d3d-asm
target type to disassemble D3DX tx_1_0 texture shaders.
- The FX target takes alignment and padding into account in fx_4_0 buffer
size calculations.
- The SPIR-V target is capable of outputting OpSource and OpLine debug
information.
- The core grammar for the experimental SPIR-V disassembler has been updated
to the vulkan-sdk-1.4.313.0 release.
- New interfaces:
- The VKD3D_SHADER_SOURCE_TX source type specifies D3DX tx_1_0 texture
shaders.
### vkd3d-compiler
- The new tx source type specifies D3DX tx_1_0 texture shaders.
### demos
- The new vkd3d-teapot demo uses tessellation shaders to render a version of
Martin Newell's famous teapot. It should be noted that current versions of
MoltenVK unfortunately do not support all features required to execute
this demo correctly.
# What's new in vkd3d 1.16 (20 May 2025)
### libvkd3d

View File

@@ -426,7 +426,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 15:0:14
libvkd3d_shader_la_LDFLAGS = $(AM_LDFLAGS) -version-info 16:0:15
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
@@ -461,7 +461,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 17:0:16
libvkd3d_la_LDFLAGS = $(AM_LDFLAGS) -version-info 18:0:17
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
@@ -474,7 +474,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:2:6
libvkd3d_utils_la_LDFLAGS = $(AM_LDFLAGS) -version-info 7:3: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,5 +1,5 @@
AC_PREREQ([2.69])
AC_INIT([vkd3d],[1.16])
AC_INIT([vkd3d],[1.17])
AC_CONFIG_AUX_DIR([bin])
AC_CONFIG_MACRO_DIR([m4])

View File

@@ -28,7 +28,7 @@
#ifdef HAVE_XCB
# define VK_USE_PLATFORM_XCB_KHR
#endif
#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_16
#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_17
#include <vkd3d.h>
#include <vkd3d_utils.h>
#ifdef HAVE_XCB

View File

@@ -101,6 +101,7 @@ enum vkd3d_api_version
VKD3D_API_VERSION_1_14,
VKD3D_API_VERSION_1_15,
VKD3D_API_VERSION_1_16,
VKD3D_API_VERSION_1_17,
VKD3D_FORCE_32_BIT_ENUM(VKD3D_API_VERSION),
};

View File

@@ -59,6 +59,7 @@ enum vkd3d_shader_api_version
VKD3D_SHADER_API_VERSION_1_14,
VKD3D_SHADER_API_VERSION_1_15,
VKD3D_SHADER_API_VERSION_1_16,
VKD3D_SHADER_API_VERSION_1_17,
VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_API_VERSION),
};

View File

@@ -4205,7 +4205,7 @@ static void fx_parse_shader_blob(struct fx_parser *parser, enum vkd3d_shader_sou
static const struct vkd3d_shader_compile_option options[] =
{
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_16},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_17},
};
info.type = VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO;

View File

@@ -38,7 +38,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 16
#define VKD3D_SPIRV_GENERATOR_VERSION 17
#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_16;
option->value = VKD3D_SHADER_API_VERSION_1_17;
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_16},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_17},
};
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_16},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_17},
};
TRACE("data %p, data_size %"PRIuPTR", flags %#x, comments %p, blob %p.\n",

View File

@@ -2391,7 +2391,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_16},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_17},
{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)},
@@ -2456,7 +2456,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_16},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_17},
{VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV, typed_uav_compile_option(device)},
};
@@ -4135,7 +4135,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_16},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_17},
};
info.type = VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO;

View File

@@ -937,7 +937,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_16);
add_compile_option(&options, VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_17);
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

@@ -645,7 +645,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_16},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_17},
{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

@@ -393,7 +393,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_16},
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_17},
{VKD3D_SHADER_COMPILE_OPTION_FEATURE, shader_runner_caps_get_feature_flags(&runner->caps)},
};

View File

@@ -371,7 +371,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_16;
options[0].value = VKD3D_SHADER_API_VERSION_1_17;
options[1].name = VKD3D_SHADER_COMPILE_OPTION_FEATURE;
options[1].value = shader_runner_caps_get_feature_flags(&runner->caps);