mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-09-13 09:16:14 -07:00
Release 1.12.
This commit is contained in:
parent
9693271dcf
commit
36c123c005
Notes:
Alexandre Julliard
2024-05-29 22:10:39 +02:00
Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/894
153
ChangeLog.md
153
ChangeLog.md
@ -1,3 +1,156 @@
|
||||
# What's new in vkd3d 1.12 (28 May 2024)
|
||||
|
||||
### libvkd3d
|
||||
|
||||
- When the VK_EXT_fragment_shader_interlock extension is available, libvkd3d
|
||||
supports rasteriser-ordered views.
|
||||
|
||||
- Compute pipeline state objects can be created from compute shaders with
|
||||
embedded root signatures.
|
||||
|
||||
- When supported by the underlying Vulkan implementation, libvkd3d supports
|
||||
the DXGI_FORMAT_B5G6R5_UNORM, DXGI_FORMAT_B5G5R5A1_UNORM, and
|
||||
DXGI_FORMAT_B4G4R4A4_UNORM formats.
|
||||
|
||||
- The ID3D12ShaderCacheSession interface is supported.
|
||||
|
||||
- The ID3D12Device9 interface is supported.
|
||||
|
||||
- The CreateCommittedResource2(), CreatePlacedResource1(),
|
||||
GetCopyableFootprints1(), and GetResourceAllocationInfo2() methods of the
|
||||
ID3D12Device8 interface are implemented.
|
||||
|
||||
- Several new feature queries are supported:
|
||||
- D3D12_FEATURE_D3D12_OPTIONS14
|
||||
- D3D12_FEATURE_D3D12_OPTIONS15
|
||||
- D3D12_FEATURE_D3D12_OPTIONS16
|
||||
- D3D12_FEATURE_D3D12_OPTIONS17
|
||||
- D3D12_FEATURE_D3D12_OPTIONS18
|
||||
|
||||
### libvkd3d-shader
|
||||
|
||||
- The experimental DXIL source type supports the majority of Direct3D shader
|
||||
model 6.0 instructions and features. Note that this is currently still an
|
||||
unsupported feature, enabled by building vkd3d with the
|
||||
‘-DVKD3D_SHADER_UNSUPPORTED_DXIL’ preprocessor option. No API or ABI
|
||||
stability guarantees are provided for experimental features.
|
||||
|
||||
- New features for the HLSL source type:
|
||||
- Support for compiling directly to Direct3D shader assembly and SPIR-V
|
||||
target types. This is primarily a convenience feature, as targeting
|
||||
these could previously be achieved by going through either the ‘Legacy
|
||||
Direct3D byte-code’ or ‘Tokenized Program Format’ formats as
|
||||
intermediates.
|
||||
- Improved support for shader model 1-3 profiles. In particular:
|
||||
- The ternary, comparison, and logical operators are now supported for
|
||||
these profiles.
|
||||
- Support for integer and Boolean types has been improved.
|
||||
- Shader constants are allocated in an order compatible with the
|
||||
Microsoft implementation.
|
||||
- More complex array size expressions. For example, matrix and vector
|
||||
swizzles are allowed, as well as (constant) array dereferences.
|
||||
- The following intrinsic functions are supported:
|
||||
- cosh()
|
||||
- determinant()
|
||||
- refract()
|
||||
- sinh()
|
||||
- tanh()
|
||||
- Reflection data for ‘Tokenized Program Format’ targets more accurately
|
||||
reflects the source shader.
|
||||
- Constant folding of expressions like ‘x + 0’ and ‘x * 1’.
|
||||
- Support for the ‘single’ qualifier on constant buffer declarations.
|
||||
- Parser support for annotations on constant buffer declarations.
|
||||
- Parser support for effect state objects.
|
||||
|
||||
- When the SPV_EXT_fragment_shader_interlock extension is supported, SPIR-V
|
||||
targets support rasteriser-ordered views.
|
||||
|
||||
- New interfaces:
|
||||
- The VKD3D_SHADER_PARSE_DXBC_IGNORE_CHECKSUM flag indicates that
|
||||
vkd3d_shader_parse_dxbc() should skip validating the checksum of the
|
||||
DXBC blob. This allows otherwise valid blobs with a missing or invalid
|
||||
checksum to be parsed.
|
||||
- The VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_1 enumeration value
|
||||
specifies the Vulkan 1.1 environment for SPIR-V targets. Most notably,
|
||||
the Vulkan 1.1 environment implies support for SPIR-V 1.3, which is a
|
||||
requirement for supporting Direct3D shader model 6 wave operations on
|
||||
SPIR-V targets.
|
||||
- The VKD3D_SHADER_SPIRV_EXTENSION_EXT_FRAGMENT_SHADER_INTERLOCK
|
||||
enumeration value indicates support for the
|
||||
SPV_EXT_fragment_shader_interlock extension in the SPIR-V target
|
||||
environment.
|
||||
- The VKD3D_SHADER_COMPILE_OPTION_FEATURE_WAVE_OPS flag indicates support
|
||||
for Direct3D shader model 6 wave operations in the SPIR-V target
|
||||
environment.
|
||||
- The VKD3D_SHADER_COMPILE_OPTION_FORMATTING_IO_SIGNATURES flag indicates
|
||||
that vkd3d_shader_compile() should include information about input,
|
||||
output, and patch constant shader signatures when targeting Direct3D
|
||||
shader assembly. Note that this is a libvkd3d-shader extension, and
|
||||
potentially makes the output incompatible with other implementations.
|
||||
- The VKD3D_SHADER_COMPILE_OPTION_CHILD_EFFECT compile option specifies
|
||||
whether libvkd3d-shader should produce child effects for ‘fx_4_0’ and
|
||||
‘fx_4_1’ HLSL target profiles.
|
||||
- The VKD3D_SHADER_COMPILE_OPTION_INCLUDE_EMPTY_BUFFERS_IN_EFFECTS compile
|
||||
option specifies whether empty constant buffer descriptions should be
|
||||
included in the output for ‘fx_4_0’ and ‘fx_4_1’ HLSL target profiles.
|
||||
- The VKD3D_SHADER_COMPILE_OPTION_WARN_IMPLICIT_TRUNCATION compile option
|
||||
specifies whether the HLSL compiler should emit warnings for vector and
|
||||
matrix truncation in implicit type conversions.
|
||||
|
||||
### libvkd3d-utils
|
||||
|
||||
- D3D12CreateDeviceVKD3D() and D3D12CreateDevice() no longer require the
|
||||
VK_KHR_surface and VK_KHR_swapchain extensions to be available. This
|
||||
allows them to be used in environments with a windowing system, for
|
||||
example for off-screen rendering and compute tasks.
|
||||
|
||||
- The GetConstantBufferByIndex() and GetResourceBindingDesc() methods of the
|
||||
ID3D12ShaderReflection interface are implemented.
|
||||
|
||||
- The GetVariableByIndex() method of the
|
||||
ID3D12ShaderReflectionConstantBuffer interface is implemented.
|
||||
|
||||
- The GetMemberTypeByIndex() method of the ID3D12ShaderReflectionType
|
||||
interface is implemented.
|
||||
|
||||
- The GetType() method of the ID3D12ShaderReflectionVariable interface is
|
||||
implemented.
|
||||
|
||||
### vkd3d-compiler
|
||||
|
||||
- The ‘+signatures’ flag for the ‘--formatting’ option can be used to
|
||||
specify that vkd3d-compiler should include information about input,
|
||||
output, and patch constant shader signatures when outputting Direct3D
|
||||
shader assembly. Note that this is a vkd3d-compiler extension, and
|
||||
potentially makes the output incompatible with other implementations.
|
||||
|
||||
- The ‘--child-effect’ option can be used to specify that vkd3d-compiler
|
||||
should produce child effects for ‘fx_4_0’ and ‘fx_4_1’ HLSL target
|
||||
profiles.
|
||||
|
||||
- The ‘--fx-include-empty-buffers’ option can be used to specify that
|
||||
vkd3d-compiler should include empty constant buffer descriptions in the
|
||||
output for ‘fx_4_0’ and ‘fx_4_1’ HLSL target profiles.
|
||||
|
||||
### vkd3d-dxbc
|
||||
|
||||
- The ‘--ignore-checksum’ option can be used to specify that vkd3d-dxbc
|
||||
should skip validating the checksum of the DXBC input blob. This allows
|
||||
vkd3d-dxbc to operate on otherwise valid blobs with missing or invalid
|
||||
checksums.
|
||||
|
||||
- The ‘--emit’ option can be used to indicate that vkd3d-dxbc should output
|
||||
a new DXBC blob.
|
||||
|
||||
- The ‘--extract’ option can be used to specify a section to extract out of
|
||||
the input blob. For example, ‘vkd3d-dxbc -x t:PRIV blob.dxbc > priv.bin’
|
||||
would extract the private data section of ‘blob.dxbc’ to ‘priv.bin’, and
|
||||
‘vkd3d-dxbc -x t:RTS0 blob.dxbc > root_signature.bin’ would extract the
|
||||
root signature to ‘root_signature.bin’.
|
||||
|
||||
- The ‘--output’ option can be used to specify where vkd3d-dxbc should write
|
||||
its output for the ‘--emit’ and ‘--extract’ options.
|
||||
|
||||
# What's new in vkd3d 1.11 (5 Mar 2024)
|
||||
|
||||
### libvkd3d
|
||||
|
@ -352,7 +352,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 10:0:9
|
||||
libvkd3d_shader_la_LDFLAGS = $(AM_LDFLAGS) -version-info 11:0:10
|
||||
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
|
||||
@ -387,7 +387,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 12:0:11
|
||||
libvkd3d_la_LDFLAGS = $(AM_LDFLAGS) -version-info 13:0:12
|
||||
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
|
||||
@ -400,7 +400,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 6:0:5
|
||||
libvkd3d_utils_la_LDFLAGS = $(AM_LDFLAGS) -version-info 6:1:5
|
||||
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
|
||||
|
@ -1,5 +1,5 @@
|
||||
AC_PREREQ([2.69])
|
||||
AC_INIT([vkd3d],[1.11])
|
||||
AC_INIT([vkd3d],[1.12])
|
||||
|
||||
AC_CONFIG_AUX_DIR([bin])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
#define VK_NO_PROTOTYPES
|
||||
#define VK_USE_PLATFORM_XCB_KHR
|
||||
#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_11
|
||||
#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_12
|
||||
#include "config.h"
|
||||
#include <vkd3d.h>
|
||||
#include <vkd3d_utils.h>
|
||||
|
@ -96,6 +96,7 @@ enum vkd3d_api_version
|
||||
VKD3D_API_VERSION_1_9,
|
||||
VKD3D_API_VERSION_1_10,
|
||||
VKD3D_API_VERSION_1_11,
|
||||
VKD3D_API_VERSION_1_12,
|
||||
|
||||
VKD3D_FORCE_32_BIT_ENUM(VKD3D_API_VERSION),
|
||||
};
|
||||
|
@ -54,6 +54,7 @@ enum vkd3d_shader_api_version
|
||||
VKD3D_SHADER_API_VERSION_1_9,
|
||||
VKD3D_SHADER_API_VERSION_1_10,
|
||||
VKD3D_SHADER_API_VERSION_1_11,
|
||||
VKD3D_SHADER_API_VERSION_1_12,
|
||||
|
||||
VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_API_VERSION),
|
||||
};
|
||||
|
@ -228,7 +228,7 @@ enum vkd3d_shader_input_sysval_semantic vkd3d_siv_from_sysval_indexed(enum vkd3d
|
||||
#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 11
|
||||
#define VKD3D_SPIRV_GENERATOR_VERSION 12
|
||||
#define VKD3D_SPIRV_GENERATOR_MAGIC vkd3d_make_u32(VKD3D_SPIRV_GENERATOR_VERSION, VKD3D_SPIRV_GENERATOR_ID)
|
||||
|
||||
struct vkd3d_spirv_stream
|
||||
|
@ -271,7 +271,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_11;
|
||||
option->value = VKD3D_SHADER_API_VERSION_1_12;
|
||||
|
||||
compile_info.type = VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO;
|
||||
compile_info.next = &preprocess_info;
|
||||
@ -403,7 +403,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_11},
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_12},
|
||||
};
|
||||
|
||||
TRACE("data %p, size %"PRIuPTR", filename %s, macros %p, include %p, preprocessed_blob %p, messages_blob %p.\n",
|
||||
@ -949,7 +949,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_11},
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_12},
|
||||
};
|
||||
|
||||
TRACE("data %p, data_size %"PRIuPTR", flags %#x, comments %p, blob %p.\n",
|
||||
|
@ -2178,7 +2178,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_11},
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_12},
|
||||
{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)},
|
||||
@ -2233,7 +2233,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_11},
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_12},
|
||||
{VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV, typed_uav_compile_option(device)},
|
||||
};
|
||||
|
||||
@ -3911,7 +3911,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_11},
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_12},
|
||||
};
|
||||
|
||||
info.type = VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO;
|
||||
|
@ -853,7 +853,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_11);
|
||||
add_compile_option(&options, VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_12);
|
||||
if (options.target_type == VKD3D_SHADER_TARGET_SPIRV_BINARY
|
||||
|| options.target_type == VKD3D_SHADER_TARGET_SPIRV_TEXT)
|
||||
add_compile_option(&options, VKD3D_SHADER_COMPILE_OPTION_FEATURE,
|
||||
|
@ -502,7 +502,7 @@ static bool compile_shader(struct gl_runner *runner, ID3DBlob *blob, struct vkd3
|
||||
|
||||
const struct vkd3d_shader_compile_option options[] =
|
||||
{
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_11},
|
||||
{VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_12},
|
||||
{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)},
|
||||
|
@ -483,7 +483,7 @@ static bool compile_shader(struct vulkan_shader_runner *runner, const char *sour
|
||||
|
||||
option = &options[info.option_count++];
|
||||
option->name = VKD3D_SHADER_COMPILE_OPTION_API_VERSION;
|
||||
option->value = VKD3D_SHADER_API_VERSION_1_11;
|
||||
option->value = VKD3D_SHADER_API_VERSION_1_12;
|
||||
|
||||
compile_options = runner->r.compile_options;
|
||||
if (compile_options)
|
||||
|
Loading…
Reference in New Issue
Block a user