From a93d258a86c7eaf1278b57d34975464c8ac9de21 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Tue, 20 May 2025 12:00:00 +0200 Subject: [PATCH] Release 1.16. --- ANNOUNCE | 925 ++++++++++++++-------------- ChangeLog.md | 99 +++ Makefile.am | 6 +- configure.ac | 2 +- demos/demo_vkd3d.h | 2 +- include/vkd3d.h | 1 + include/vkd3d_shader.h | 1 + libs/vkd3d-shader/fx.c | 2 +- libs/vkd3d-shader/spirv.c | 2 +- libs/vkd3d-utils/vkd3d_utils_main.c | 6 +- libs/vkd3d/state.c | 6 +- programs/vkd3d-compiler/main.c | 2 +- tests/shader_runner_gl.c | 2 +- tests/shader_runner_metal.m | 2 +- tests/shader_runner_vulkan.c | 2 +- 15 files changed, 583 insertions(+), 477 deletions(-) diff --git a/ANNOUNCE b/ANNOUNCE index 65a1013d4..05488f578 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,16 +1,16 @@ -The vkd3d team is proud to announce that release 1.15 of vkd3d, the Direct3D +The vkd3d team is proud to announce that release 1.16 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: - - Much more complete support for tessellation shaders in the HLSL compiler. - - Improved function overload resolution in the HLSL compiler. + - Support for DirectX Intermediate Language (DXIL) shaders. + - Initial support for geometry shaders in the HLSL compiler. - Miscellaneous bug fixes. The source is available from the following location: - + The current source can also be pulled directly from the git repository: @@ -19,488 +19,493 @@ The current source can also be pulled directly from the git repository: Vkd3d is available thanks to the work of multiple people. See the file AUTHORS for the complete list. -# What's new in vkd3d 1.15 +# What's new in vkd3d 1.16 ### 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. + - DXIL shaders are supported in the default configuration. Previously this + required building vkd3d with the ‘-DVKD3D_SHADER_UNSUPPORTED_DXIL’ + preprocessor option. The also raises the maximum supported shader model to + version 6.0. + + - Graphics pipeline state objects can be created from shaders with embedded + root signatures. This was already possible for compute pipeline state + objects. + + - The SetEventOnMultipleFenceCompletion() method of the ID3D12Device1 + interface is implemented. + + - When the VK_KHR_zero_initialize_workgroup_memory extension is supported, + libvkd3d supports zero-initialising compute shader thread group shared + memory. + + - The VK_KHR_maintenance2 extension is now explicitly required. libvkd3d + already unconditionally used features provided by this extension, but + unfortunately didn't explicitly require it. Support for this extension is + widespread, and the extension is part of Vulkan 1.1. ### libvkd3d-shader + - The previously experimental support for compiling DXIL shaders is now a + supported feature and enabled by default. Please note that this feature is + nevertheless still far from perfect. + - 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. + - Initial support for geometry shaders. + - Indirect addressing in shader model 1-3 target profiles. + - Modulus and truncation operations in shader model 1-3 target profiles. + - Vectorised output code. + - Further improved constant folding and propagation. - 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. + - AllMemoryBarrier() + - AllMemoryBarrierWithGroupSync() + - DeviceMemoryBarrier() + - DeviceMemoryBarrierWithGroupSync() + - GroupMemoryBarrier() + - GroupMemoryBarrierWithGroupSync() + - The ‘.Length’ Texture object property. + - The ‘SV_RenderTargetArrayIndex’ and ‘SV_ViewportArrayIndex’ semantics in + tessellation shaders. - - 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. + - Disassembler support for binary ‘fx_2_0’ effects. - - 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. + - Experimental built-in support for disassembling SPIR-V shaders, enabled by + building vkd3d with the ‘-DVKD3D_SHADER_UNSUPPORTED_SPIRV_PARSER’ + preprocessor option. When enabled, the built-in SPIR-V disassembler is + used instead of SPIRV-Tools for the ‘spirv-text’ target type, as well as + for the debug output enabled by the VKD3D_SHADER_DEBUG environment + variable. - - The ‘fx’ parser can parse binary effects containing inline shader blobs. + - The experimental OpenGL Shading Language (GLSL) target supports indirect + addressing of constant buffers. - - 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. + - The experimental Metal Shading Language (MSL) target supports texture + loads. - 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. + - The VKD3D_SHADER_COMPILE_OPTION_FEATURE_ZERO_INITIALIZE_WORKGROUP_MEMORY + flag indicates support for zero-initialising workgroup memory in the + SPIR-V target environment. + - The VKD3D_SHADER_COMPONENT_INT64 enumeration value indicates a 64-bit + signed integer value. + - The VKD3D_SHADER_COMPONENT_FLOAT16 enumeration value indicates a 16-bit + IEEE floating-point value. + - The VKD3D_SHADER_COMPONENT_UINT16 enumeration value indicates a 16-bit + unsigned integer value. + - The VKD3D_SHADER_COMPONENT_INT16 enumeration value indicates a 16-bit + signed integer value. + - When targeting VKD3D_SHADER_API_1_16, the + VKD3D_SHADER_RESOURCE_DATA_NONE enumeration value is returned for the + ‘resource_data_type’ field in the vkd3d_shader_descriptor_info structure + for sampler descriptors. VKD3D_SHADER_API_1_15 and before use the + VKD3D_SHADER_RESOURCE_DATA_UINT enumeration value for this. -### vkd3d-compiler +### demos - - 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’. + - The vkd3d demos now work on both the Microsoft Windows and Apple macOS + builds. The macOS versions of the vkd3d demos are completely new in vkd3d + 1.16, while the Windows demos could previously be built, but only worked + on Wine. Note that the vkd3d demos produced by a Windows build of vkd3d + are distinct from those produced by the ‘make crosstest’ target: the + former are Vulkan applications using vkd3d, while the latter are Direct3D + 12 applications. -### Changes since vkd3d 1.14: + - The vkd3d demos have basic support for DPI scaling. + +### build + + - Perl and the ‘JSON’ Perl module have been added as build dependencies. + These are used for the experimental built-in SPIR-V disassembler, as well + as for the macOS versions of the vkd3d demos. + +### Changes since vkd3d 1.15: ``` +Andrey Gusev (2): + vkd3d-shader/dxil: Store the actual return value in sm6_parser_signatures_init(). + vkd3d-shader/ir: Store the actual return value in shader_signature_map_patch_constant_index_ranges(). + Anna (navi) Figueiredo Gomes (6): - vkd3d-shader/hlsl: Implement cast from bool to int for SM1. - tests/hlsl: Add GatherCmp() tests. - vkd3d-shader/hlsl: Implement the GatherCmp() methods. - tests/shader_runner: Add a "mesa<23.3" tag. - tests/hlsl: Add mixed argument size tests. - vkd3d-shader/hlsl: Consider conversions across all parameters in function_compare(). + tests/hlsl: Add lower sm1 saturate test. + tests/hlsl: Add angle bracket state block syntax test. + vkd3d-shader: Parse angle bracket initializer in state blocks. + tests/hlsl: Add some fx_4_0 state tests. + vkd3d-shader/fx: Don't cast between int and uint in state blocks. + vkd3d-shader/hlsl: Use the source data type in clone_interlocked(). -Conor McCarthy (29): - vkd3d: Store only a single vkd3d descriptor type in each Vulkan descriptor set. - vkd3d: Introduce struct vkd3d_vk_descriptor_pool_array. - vkd3d: Introduce vkd3d_vk_descriptor_pool_array_push_array(). - vkd3d: Introduce vkd3d_vk_descriptor_pool_array_push(). - vkd3d: Introduce vkd3d_vk_descriptor_pool_array_pop(). - vkd3d: Introduce vkd3d_vk_descriptor_pool_array_destroy_pools(). - vkd3d: Create separate descriptor pools for each vkd3d descriptor type. - vkd3d: Create descriptor pools of geometrically increasing size. - tests/hlsl: Add float64 wave op tests. - tests/hlsl: Add uint64 wave op tests. - tests/hlsl: Add int64 wave op tests. - vkd3d-shader/dxil: Implement DX intrinsic EvalSampleIndex. - vkd3d-shader/dxil: Implement DX intrinsic EvalCentroid. - vkd3d: Return the correct depth/stencil plane format from GetCopyableFootprints(). - vkd3d: Return correctly aligned depth/stencil sizes from GetCopyableFootprints(). - vkd3d: Do not require the ALLOW_DEPTH_STENCIL flag for depth/stencil formats in GetCopyableFootprints(). - tests/hlsl: Add a test for SV_RenderTargetArrayIndex. - vkd3d-shader/dxil: Handle SV_RenderTargetArrayIndex. - tests/hlsl: Pass a profile string instead of a shader type to dxc_compiler_compile_shader(). - tests/hlsl: Add some arithmetic uint16 shader tests. - tests/hlsl: Add more arithmetic uint16 tests. - tests/hlsl: Add arithmetic int16 tests. - tests/hlsl: Add arithmetic float16 tests. - tests/hlsl: Add a numeric types 16-bit test. - tests/hlsl: Add constant buffer 16-bit tests. - tests/hlsl: Add GetDimensions() 16-bit tests. - tests/hlsl: Add typed buffer UAV 16-bit tests. - tests/hlsl: Add a raw buffer UAV 16-bit test. - tests/hlsl: Add structured buffer UAV 16-bit tests. +Conor McCarthy (13): + tests/hlsl: Add typed buffer SRV 16-bit tests. + tests/hlsl: Add a sampler 16-bit test. + tests/hlsl: Add a TGSM 16-bit test. + tests/hlsl: Add a typed SRV load 16-bit test. + tests/hlsl: Add interstage interface 16-bit tests. + tests/hlsl: Add a conditional 16-bit test. + tests: Replace test_vs_ps_relative_addressing() with a shader runner test. + tests/hlsl: Test casts to 16-bit float. + tests/hlsl: Test casts to 16-bit int. + tests/hlsl: Test casts to 16-bit uint. + tests/hlsl: Test casts from double to 16-bit integer types. + vkd3d-shader/tpf: Emit the resource data type only for typed resource declarations. + tests/hlsl: Add a shader model 5.1 test to srv-byteaddressbuffer.shader_test. -Elizabeth Figura (65): - vkd3d-shader/spirv: Handle SSA registers in spirv_compiler_get_register_info(). - vkd3d-shader/ir: Allow controlling fog through parameters. - vkd3d-shader/ir: Add a couple of traces for signature remapping. - vkd3d-shader/ir: Allow controlling the fog source through a parameter. - vkd3d-shader/ir: Implement exponential fog. - vkd3d-shader/hlsl: Do not abort when modifying a const expression. - vkd3d-shader/hlsl: Do not abort parsing when invalid modifiers are used. - vkd3d-shader/hlsl: Move the numeric type check to add_constructor(). - vkd3d-shader/hlsl: Return an error expression when a function is used as a variable. - vkd3d-shader/hlsl: Translate invalid implicit-size arrays to an error type. - vkd3d-shader/d3dbc: Omit unnecessary instruction maximum versions. - vkd3d-shader/d3dbc: Mark some more instructions as version-limited. - vkd3d-shader: Fix the disassembly names of IFC and BREAKC. - vkd3d-shader: Correct the disassembly for POSITIONT. - tests: Add a reflection test for shader model 4.0. - vkd3d-shader/hlsl: Remove unused expr ops. - vkd3d-shader/ir: Always initialise "*control_point_count" in vsir_signature_from_register_type(). - vkd3d-shader/hlsl: Document matrix swizzles. - vkd3d-shader/hlsl: Use a structure for matrix swizzles. - vkd3d-shader/hlsl: Use swizzle helpers in more places. - vkd3d-shader/hlsl: Store swizzles in vsir format. - tests/shader_runner: Use is_todo instead of separate shader states. - tests/shader_runner: Use a separate variable for shader type. - tests/shader_runner: Don't bother distinguishing directive substrings. - vkd3d-shader/d3dbc: Use struct vkd3d_shader_dst_param instead of struct sm1_dst_register. - vkd3d-shader/d3dbc: Use struct vkd3d_shader_src_param instead of struct sm1_src_register. - vkd3d-shader/d3dbc: Use struct vkd3d_shader_instruction instead of struct sm1_instruction. - tests/shader_runner: Record HLSL todo/fail state for each shader model. - tests/shader_runner: Test HLSL compilation in a separate pass. - tests/shader_runner: Test versions where the compilation result changes. - tests: Use fail(sm<5) instead of [require] for uav-atomics. - vkd3d-shader/spirv: Correctly implement DTOF. - vkd3d-shader/spirv: Correctly implement DTOI. - vkd3d-shader/spirv: Correctly implement DTOU. - tests/d3d12: Make the dtof test a bit more interesting. - vkd3d-shader: Explicitly translate between d3dbc and vsir register types. - vkd3d-shader/d3dbc: Normalize to a single VKD3DSPR_CONST register set when reading. - vkd3d-shader/d3d-asm: Define register names in a table. - vkd3d-shader/ir: Separate VKD3DSPR_ADDR and VKD3DSPR_TEXTURE. - vkd3d-shader/ir: Separate VKD3DSPR_OUTPUT and VKD3DSPR_TEXCRDOUT. - vkd3d-shader/d3dbc: Introduce d3dbc_parse_register(). - vkd3d-shader/hlsl: Avoid some uses of the default case when switching over hlsl_base_type. - vkd3d-shader/d3dbc: Do not access the type dimensions for non-numeric types. - vkd3d-shader/hlsl: Move the "dimx" and "dimy" fields to the type-specific union. - tests: Adjust angle-unit.shader_test to pass with 1.x. - tests: Adjust arithmetic-float.shader_test to pass with 1.x. - tests: Adjust arithmetic-float-uniform.shader_test to pass with 1.x. - tests: Adjust arithmetic-int.shader_test to pass with 1.x. - tests: Adjust array-parameters.shader_test to pass with 1.x. - tests: Adjust array-size-expr.shader_test to pass with 1.x. - tests: Adjust abs.shader_test to pass with 1.x. - tests: Add another unrolling test. - vkd3d-shader/hlsl: Implement broadcasts in constant folding. - vkd3d-utils: Fix matrix packing precedence in D3DCompile2VKD3D(). - vkd3d-shader/hlsl: Use the casted value in exp(). - tests: Add some stress tests for scope and variable definition. - vkd3d-shader/hlsl: Do not define a separate scope for function parameters. - vkd3d-shader/hlsl: Factor out the error message into hlsl_add_var(). - vkd3d-shader/hlsl: Do not abort on variable redefinition. - vkd3d-shader/hlsl: Handle error instructions in add_shader_compilation(). - vkd3d-shader/hlsl: Add an add_switch() helper. - vkd3d-shader/hlsl: Handle error instructions in add_switch(). - vkd3d-shader/hlsl: Pass the block to add_zero_mipmap_level(). - vkd3d-shader/hlsl: Use a block in prepend_input_var_copy(). - vkd3d-shader/hlsl: Use a block in hlsl_normalize_binary_exprs(). +Elizabeth Figura (70): + vkd3d-shader/hlsl: Don't mark extern variables with an explicit first_write or last_read. + vkd3d-shader/hlsl: Skip transformation passes on error. + vkd3d-shader/hlsl: Remove the type equality assertions in hlsl_new_ternary_expr(). + vkd3d-shader/hlsl: Handle error instructions in hlsl_new_swizzle(). + vkd3d-shader/hlsl: Add a hlsl_block_add_uint_constant() helper. + vkd3d-shader/hlsl: Add a hlsl_block_add_int_constant() helper. + vkd3d-shader/hlsl: Inline add_pow_expr(). + vkd3d-shader/hlsl: Add a hlsl_block_add_float_constant() helper. + vkd3d-shader/hlsl: Add a hlsl_block_add_unary_expr() helper. + vkd3d-shader/hlsl: Add a hlsl_block_add_cast() helper. + vkd3d-shader/hlsl: Add a hlsl_block_add_binary_expr() helper. + vkd3d-shader/hlsl: Add a hlsl_block_add_expr() helper. + vkd3d-shader/hlsl: Pass a block to hlsl_new_void_expr(). + vkd3d-shader/hlsl: Pass the target block to hlsl_new_load_component(). + vkd3d-shader/hlsl: Add a hlsl_block_add_store_index() helper. + vkd3d-shader/hlsl: Add a hlsl_block_add_simple_store() helper. + vkd3d-shader/hlsl: Pass the target block to hlsl_new_store_component(). + vkd3d-shader/hlsl: Return void from hlsl_block_add_store_component(). + vkd3d-shader/hlsl: Return an error expr from hlsl_add_load_component() on allocation failure. + vkd3d-shader/hlsl: Add a hlsl_block_add_load_index() helper. + vkd3d-shader/hlsl: Add a hlsl_block_add_simple_load() helper. + vkd3d-shader/hlsl: Emit the minimum-precision global flag when minimum-precision semantics are used. + vkd3d-shader/hlsl: Emit minimum-precision signatures. + vkd3d-shader/hlsl: Emit the minimum-precision SFI0 flag. + vkd3d-shader/hlsl: Use common hlsl_type_is_integer() and hlsl_base_type_is_integer() helpers. + vkd3d-shader/hlsl: Pass the correct type to base_type_get_semantic_equivalent(). + vkd3d-shader/hlsl: Make min16uint into a first-class type. + vkd3d-shader/hlsl: Add a hlsl_block_add_jump() helper. + vkd3d-shader/hlsl: Add a hlsl_block_add_if() helper. + vkd3d-shader/hlsl: Add a hlsl_block_add_loop() helper. + vkd3d-shader/hlsl: Add a hlsl_block_add_index() helper. + vkd3d-shader/hlsl: Add a hlsl_block_add_resource_store() helper. + vkd3d-shader/hlsl: Fix temp allocation for ps 1.x. + vkd3d-shader/hlsl: Fix writing the sincos extra constants. + vkd3d-shader/hlsl: Introduce hlsl_block_add_resource_load(). + vkd3d-shader/hlsl: Introduce hlsl_block_add_swizzle(). + vkd3d-shader/hlsl: Return an error expression from add_cast() on allocation failure. + vkd3d-shader/hlsl: Do not abort when performing an invalid explicit cast. + vkd3d-shader/hlsl: Do not abort when performing an invalid implicit cast. + vkd3d-shader/hlsl: Stop checking for failure from intrinsic_float_convert_arg(). + vkd3d-shader/hlsl: Don't invalidate OOB constant derefs. + vkd3d-shader/hlsl: Zero-initialize "nonconst_i" and "ret_swizzle" in copy_propagation_replace_with_deref(). + vkd3d-shader/hlsl: Reuse shader model 1-3 constants. + vkd3d-shader/hlsl: Use vsir_*_from_hlsl_node() helpers in more places. + vkd3d-shader/hlsl: Set the correct index count for sm1 DEPTHOUT. + vkd3d-shader/hlsl: Initialize the vsir dimension for sm1. + vkd3d-shader/hlsl: Leave the swizzle zero for VSIR_DIMENSION_NONE registers. + vkd3d-shader/hlsl: Initialize the temp count for sm1. + vkd3d-shader/glsl: Invert gl_FragCoord w. + vkd3d-shader/hlsl: Allow compiling directly to GLSL. + vkd3d-shader/hlsl: Introduce a compiler pass to vectorize expressions. + vkd3d-shader/hlsl: Introduce a compiler pass to vectorize stores. + vkd3d-shader/hlsl: Set the sysval for more sm1 semantics. + vkd3d-shader/hlsl: Set the right interpolation mode in the vsir signature. + vkd3d-shader/ir: Introduce a vsir_dst_param_init_null() helper. + vkd3d-shader/ir: Validate SSA write masks. + vkd3d-shader: Normalize TEXKILL to use a source register. + tests/hlsl: Show that GetRenderTargetSampleCount() returns a vector. + vkd3d-shader/hlsl: Return a uint1 from GetRenderTargetSampleCount(). + vkd3d-shader/ir: Merge tess factor used masks together. + vkd3d-shader/spirv: Return void from spirv_compiler_emit_input(). + vkd3d-shader/spirv: Do not declare inputs with an empty used_mask. + vkd3d-shader/hlsl: Emit an error when min16uint is used in d3dbc target profiles. + vkd3d-shader/hlsl: Do not emit HLSL_OP1_ABS for unsigned types. + tests/hlsl: Add more tests for the "numthreads" attribute. + vkd3d-shader/hlsl: Validate "numthreads" attribute values. + vkd3d-shader/ir: Use the .w component of the existing swizzle when lowering texldb. + vkd3d-shader/hlsl: Fix an incorrect error message for referring to non-struct types with "struct". + tests/hlsl: Add more tests for struct syntax. + vkd3d-shader/hlsl: Forbid referring to typedefs with "struct". -Feifan He (46): - vkd3d-shader/msl: Implement VKD3DSIH_ADD. - vkd3d-shader/msl: Implement support for VKD3DSPR_IMMCONST registers. - vkd3d-shader/msl: Implement support for VKD3DSPSM_ABS modifiers. - vkd3d-shader/msl: Implement VKD3DSIH_AND. - vkd3d-shader/msl: Implement VKD3DSIH_NEU. - vkd3d-shader/msl: Implement support for VSIR_DIMENSION_VEC4 immediate constants. - vkd3d-shader/msl: Implement VKD3DSIH_MUL. - vkd3d-shader/msl: Implement VKD3DSIH_INE. - vkd3d-shader/msl: Implement VKD3DSIH_OR. - vkd3d-shader/msl: Implement VKD3DSIH_DIV. - vkd3d-shader/msl: Implement support for VKD3DSPSM_NEG modifiers. - vkd3d-shader/msl: Implement VKD3DSIH_GEO. - vkd3d-shader/msl: Implement VKD3DSIH_FRC. - vkd3d-shader/msl: Implement VKD3DSIH_MOVC. - vkd3d-shader/msl: Implement VKD3DSIH_ITOF. - vkd3d-shader/msl: Implement VKD3DSIH_FTOI. - vkd3d-shader/msl: Implement VKD3DSIH_UTOF. - vkd3d-shader/msl: Implement VKD3DSIH_FTOU. - vkd3d-shader/msl: Implement VKD3DSIH_ROUND_PI. - vkd3d-shader/msl: Implement VKD3DSIH_ROUND_Z. - tests/shader_runner_metal: Implement depth texture and state. - tests/shader_runner_metal: Implement clears. - vkd3d-shader/msl: Implement support for the VKD3DSPR_DEPTHOUT register. - vkd3d-shader/msl: Implement VKD3DSIH_DP3. - vkd3d-shader/msl: Implement VKD3DSIH_DP4. - vkd3d-shader/msl: Implement VKD3DSIH_DP2. - vkd3d-shader/msl: Implement VKD3DSIH_SQRT. - vkd3d-shader/msl: Handle the VKD3DSIM_LINEAR interpolation modifier on inputs. - vkd3d-shader/msl: Implement VKD3DSIH_IEQ. - vkd3d-shader/msl: Implement VKD3DSIH_EXP. - vkd3d-shader/msl: Implement VKD3DSIH_LTO. - vkd3d-shader/msl: Implement VKD3DSIH_ROUND_NI. - vkd3d-shader/msl: Implement VKD3DSIH_IF and VKD3DSIH_ENDIF. - vkd3d-shader/msl: Implement VKD3DSIH_ROUND_NE. - vkd3d-shader/msl: Handle SV_IS_FRONT_FACE inputs. - vkd3d-shader/msl: Implement VKD3DSIH_LOG. - vkd3d-shader/msl: Implement VKD3DSIH_MAX. - vkd3d-shader/msl: Implement VKD3DSIH_MIN. - vkd3d-shader/msl: Implement VKD3DSIH_RSQ. - vkd3d-shader/msl: Implement VKD3DSIH_NOT. - vkd3d-shader/msl: Implement VKD3DSIH_ELSE. - vkd3d-shader/msl: Implement support for VKD3DSPDM_SATURATE modifiers. - vkd3d-shader/msl: Implement VKD3DSIH_MAD. - vkd3d-shader/msl: Implement VKD3DSIH_ISHL. - vkd3d-shader/msl: Implement VKD3DSIH_ISHR. - vkd3d-shader/msl: Implement VKD3DSIH_USHR. +Feifan He (3): + tests/shader_runner_metal: Introduce a helper to encode the argument buffer. + tests/shader_runner_metal: Add texture support. + vkd3d-shader/msl: Implement VKD3DSIH_LD. -Francisco Casas (55): - vkd3d-shader/tpf: Remove HLSL_IR_SWIZZLE handling. - vkd3d-shader/hlsl: Store SM4 stores in the vsir program. - vkd3d-shader/hlsl: Store SM4 loads in the vsir program. - vkd3d-shader/hlsl: Store SM4 resource stores in the vsir program. - tests: Test signature reflection for PRIMID, RTINDEX and VPINDEX. - vkd3d-shader/hlsl: Add special allocation rules for PRIMID, RTINDEX, and VPINDEX. - tests: Test allocation rules for FFACE and SAMPLE. - vkd3d-shader/hlsl: Add special allocation rules for FFACE and SAMPLE. - vkd3d-shader/hlsl: Store SM4 HLSL_RESOURCE_LOADs in the vsir program. - vkd3d-shader/hlsl: Store SM4 HLSL_RESOURCE_SAMPLEs in the vsir program. - vkd3d-shader/hlsl: Store SM4 HLSL_RESOURCE_GATHERs in the vsir program. - vkd3d-shader/hlsl: Store SM4 HLSL_RESOURCE_SAMPLE_INFOs in the vsir program. - vkd3d-shader/hlsl: Store SM4 HLSL_RESOURCE_RESINFOs in the vsir program. - vkd3d-shader/hlsl: Store SM4 jumps in the vsir program. - vkd3d-shader/tpf: Apply extra bits to all conditional ops. - vkd3d-shader/hlsl: Migrate SM4 control flow instructions to the vsir program. - vkd3d-shader/hlsl: Remove hlsl_ir_vsir_instruction_ref, again. - vkd3d-shader/dxbc: Parse the SFI0 ROV requirement. - vkd3d-shader/hlsl: Store ROV feature requirement in the vsir_program. - vkd3d-shader/hlsl: Store the global flags in the vsir program. - vkd3d-shader/hlsl: Store SM4 sampler declarations in the vsir program. - vkd3d-shader/hlsl: Store SM4 texture declarations in the vsir program. - tests: Add additional sampler allocation tests for SM1. - tests: Test sampler array allocation. - vkd3d-shader/hlsl: Lower separated samplers for SM1. - vkd3d-shader/hlsl: Support combined samplers from texture arrays. - vkd3d-shader/hlsl: Allocate samplers by decreasing bind count in SM1. - vkd3d-shader/hlsl: Allow lowering separate sampler arrays on deref offset 0. - vkd3d-shader/hlsl: Store SM4 constant buffer declarations in vsir program. - vkd3d-shader/hlsl: Generate RDEF outside tpf_compile(). - vkd3d-shader/hlsl: Generate CTAB outside sm1_generate_vsir(). - vkd3d-shader/hlsl: Store hull and domain shader properties in vsir_program. - vkd3d-shader/tpf: Remove hlsl_ctx from tpf_compiler. - vkd3d-shader/hlsl: Lower sample lods for SM1. - vkd3d-shader/ir: Properly lower texldb. - tests/hlsl: Test tex2Dproj(). - vkd3d-shader/ir: Properly lower texldp. - vkd3d-shader: Avoid passing NULL to memcpy(). (ubsan) - vkd3d-shader: Avoid passing NULL to qsort(). (ubsan) - vkd3d-shader: Avoid passing NULL to memset(). (ubsan) - vkd3d-shader: Avoid left shifting signed integers. (ubsan) - tests: Test SampleGrad() on ps_3_0. - vkd3d-shader/hlsl: Lower separate SampleGrad() for SM1. - vkd3d-shader/hlsl: Don't lower separate samples with texel offsets. - tests: Test casting negative floats to int. - vkd3d-shader/hlsl: Properly lower casts to int for negative numbers. - vkd3d-shader/hlsl: Specialize lowering SM1 casts to int for vertex shaders. - tests/hlsl: Add lhs cast tests. - tests/hlsl: Test partial assignments due to lhs casts. - tests/hlsl: Add more function cast tests. - vkd3d-shader/hlsl: Delay lowering complex casts until after parse time. - vkd3d-shader/hlsl: Support non-size-changing lhs casts. - vkd3d-shader/hlsl: Don't count cast to param type on IN as part of OUT var's lhs. - vkd3d-shader/hlsl: Don't forbid first base type cast on var assignments. - tests/shader_runner: Pass the correct buffer size to swprintf() in dxc_compiler_compile_shader(). +Francisco Casas (38): + vkd3d-shader/hlsl: Also dump preprocessed shaders. + tests/test-driver: Print the shader model for the detailed output of the hlsl backend. + tests/test-driver: Group together tags in the same line and shader model. + tests/test-driver: Merge the same consecutive tags togeter. + vkd3d-make/hlsl: Trace the number of registers allocated in allocate_temp_registers(). + vkd3d-shader/hlsl: Only use the temp copy for variables that are written. + tests: Test unused invalid samples with a static sampler. + vkd3d-shader/hlsl: Run folding passes again after lower_nonconstant_array_loads. + vkd3d-shader/hlsl: Don't cast all expressions to float. + vkd3d-shader/hlsl: Remove lower_nonfloat_exprs(). + vkd3d-shader/hlsl: Lower TRUNC expressions for SM1. + tests: Add a hard test for copy-propagation invalidation. + vkd3d-shader/hlsl: Fix invalidation of the wrong components in copy-propagation. + tests/hlsl: Test for loss of precision on integer negation in d3dbc target profiles. + tests/hlsl: Test integer modulus with big integers. + tests/hlsl: Test integer division with big integers. + vkd3d-shader/hlsl: Don't lower integer MOD and DIV on const passes for d3dbc target profiles. + vkd3d-shader/hlsl: Lower integer modulus for d3dbc target profiles. + tests/hlsl: Test vertex shader uniform indirect addressing. + tests/hlsl: Test SM1 vertex shader uniform allocation on indirect addressing. + vkd3d-shader/d3dbc: Respect "idx_count" when writing registers. + vkd3d-shader/hlsl: Implement indirect addressing for d3dbc target profiles. + vkd3d-shader/ir: Normalise MOVA and d3dbc indirect addressing. + vkd3d-shader/hlsl: Allow non-constant deref propagation on SM1. + vkd3d-shader/ir: Reset instruction pointers after shader_instruction_array_insert_at(). + tests/hlsl: Test the object .Length property. + vkd3d-shader/hlsl: Support the .Length property for Textures. + vkd3d-shader/hlsl: Make struct_declaration_without_vars return void. + vkd3d-shader/hlsl: Avoid leaking declaration_statement blocks. + vkd3d-shader/hlsl: Avoid leaking blocks on YYABORT. + vkd3d-shader/hlsl: Add parse_variable_def destructors to the parser. + vkd3d-shader/hlsl: Add switch_case destructors to the parser. + vkd3d-shader/hlsl: Remove the unnecessary "instr" field from the parser %union. + vkd3d-shader/hlsl: Parse barriers. + vkd3d-shader/hlsl: Mark stores dirty on interlocked operation in vectorize_stores(). + vkd3d-shader/hlsl: Generate vsir for HLSL_IR_SYNC operations. + tests: Add tests for DeviceMemoryBarrierWithGroupSync(). + ci: Update the DXC version used on the CI to 1.8.2502. -Giovanni Mascellani (87): - vkd3d-shader/ir: Validate the semantic index for tessellation system values. - vkd3d-shader/ir: Check that semantic indices for tessellation system values are not duplicated. - vkd3d-shader/ir: Keep track of the tessellator domain in struct vsir_program. - vkd3d-shader/ir: Validate tessellation system values for the given tessellator domain. - vkd3d-shader/ir: Check that tessellation system values only appear in the patch constant signature. - vkd3d-shader/ir: Validate index count for PRIMID registers. - vkd3d-shader/ir: Validate index count for OUTPOINTID registers. - vkd3d-shader/ir: Validate index count for FORKINSTID registers. - vkd3d-shader/ir: Validate index count for JOININSTID registers. - vkd3d-shader/ir: Validate index count for TESSCOORD registers. - vkd3d-shader/ir: Validate index count for THREADID registers. - vkd3d-shader/ir: Validate index count for THREADGROUPID registers. - vkd3d-shader/ir: Validate index count for LOCALTHREADID registers. - vkd3d-shader/ir: Validate index count for LOCALTHREADINDEX registers. - vkd3d-shader/ir: Check that all tessellation system values appear in the patch constant signature. - vkd3d-shader/ir: Check that tessellation system value registers are consecutive. - vkd3d-shader/ir: Validate index count for COVERAGE registers. - vkd3d-shader/ir: Validate index count for SAMPLEMASK registers. - vkd3d-shader/ir: Validate index count for GSINSTID registers. - vkd3d-shader/ir: Validate index count for WAVELANECOUNT registers. - vkd3d-shader/ir: Validate index count for WAVELANEINDEX registers. - vkd3d-shader/ir: Validate index count for OUTSTENCILREF registers. - vkd3d-shader/dxil: Emit register SAMPLEMASK for output sysval SV_Coverage. - vkd3d-shader/ir: Validate the register type for DCL_INPUT instructions. - vkd3d-shader/ir: Validate the register type for DCL_INPUT_SIV instructions. - vkd3d-shader/ir: Validate the register type for DCL_INPUT_SGV instructions. - vkd3d-shader/ir: Validate the register type for DCL_INPUT_PS instructions. - vkd3d-shader/ir: Validate the register type for DCL_INPUT_PS_SIV instructions. - vkd3d-shader/ir: Validate the register type for DCL_INPUT_PS_SGV instructions. - vkd3d-shader/ir: Validate the register type for DCL_OUTPUT instructions. - vkd3d-shader/ir: Validate the register type for DCL_OUTPUT_SIV instructions. - vkd3d-shader/ir: Synthesize the default control point phase in the HS control point I/O normaliser. - vkd3d-shader/ir: Evaluate OUTCONTROLPOINT usage in the patch constant phase directly. - tests: Use plain skip() when skipping a test in the shader runner. - tests: Print the file name instead of the test name in test logs. - vkd3d-shader/spirv: Merge emitting input and output registers. - vkd3d-shader/ir: Encode I/O declarations in vsir_program. - vkd3d-shader/ir: Remove I/O declarations before I/O normalisation. - vkd3d-shader/ir: Remove I/O declarations before normalising hull shader control point I/O. - vkd3d-shader/ir: Remove I/O declarations before flattening hull shader phases. - vkd3d-shader/ir: Merge removing I/O declarations in the general instruction lowering pass. - vkd3d-shader/ir: Validate the control point index when it is statically known. - vkd3d: Do not use more than a few million descriptors in Vulkan heap set layouts. - vkd3d-shader/ir: Validate the array index when it is statically known. - vkd3d-shader/ir: Validate the register type for registers used as relative addresses. - vkd3d-shader/ir: Introduce a helper function to determine the signature for a register type. - vkd3d-shader/ir: Validate the DCL_INDEX_RANGE instruction. - vkd3d-shader/ir: Check that DCL_INDEX_RANGE ranges do not overlap with unrelated signature elements. - vkd3d-shader/spirv: Introduce a SPIR-V parser. - vkd3d-shader/spirv: Parse the SPIR-V magic number. - vkd3d-shader/spirv: Parse the SPIR-V version number. - vkd3d-shader/spirv: Parse the SPIR-V generator magic number. - vkd3d-shader/spirv: Parse the SPIR-V id bound. - vkd3d-shader/spirv: Parse the SPIR-V instruction schema. - vkd3d-shader/ir: Check that the DCL_INDEX_RANGE effective mask stabilizes after one iteration. - vkd3d-shader/ir: Check that signature element masks are left-aligned with in a DCL_INDEX_RANGE. - vkd3d-shader/ir: Validate the register index and count for signature elements. - vkd3d-shader/ir: Validate the signature element stream index. - vkd3d-shader/ir: Validate the signature element register index, for some sysvals. - vkd3d-shader/ir: Check that signature elements do not conflict with each other. - vkd3d-shader/ir: Give more meaningful names to I/O normalisation levels. - vkd3d-shader/d3dbc: Normalise I/O register write masks when not disassembling. - vkd3d-shader/ir: Represent information about I/O registers with a table. - vkd3d-shader/ir: Validate INPUT destination parameters using a uniform helper. - vkd3d-shader/ir: Validate PATCHCONST destination parameters using a uniform helper. - vkd3d-shader/ir: Validate OUTPUT destination parameters. - vkd3d-shader/ir: Validate INCONTROLPOINT destination parameters. - vkd3d-shader/ir: Validate OUTCONTROLPOINT destination parameters. - vkd3d-shader/ir: Remove a redundant assignment. - vkd3d-shader/ir: Simplify shader_register_normalise_arrayed_addressing(). - tests/hlsl: Add tests for the EvaluateAttribute*() intrinsics. - tests/hlsl: Add some clip/cull distance tests. - vkd3d-shader/ir: Disallow array signature elements for normalisation levels < SM6. - vkd3d-shader/ir: Validate OUTPUT source parameters using a uniform helper. - vkd3d-shader/ir: Validate PATCHCONST source parameters using a uniform helper. - vkd3d-shader/ir: Validate INPUT source parameters. - vkd3d-shader/ir: Validate INCONTROLPOINT source parameters. - vkd3d-shader/ir: Validate OUTCONTROLPOINT source parameters. - vkd3d: Log the requested feature levels for D3D12_FEATURE_FEATURE_LEVELS. - vkd3d: Describe DXGI_UNKNOWN as having one plane. - vkd3d: Only call d3d12_fence_garbage_collect_vk_semaphores_locked() when using binary semaphores. - vkd3d: Release queued fences when stopping the fence worker. - vkd3d: Support signalling a fence once all outstanding work is submitted to Vulkan. - vkd3d: Explicitly call the appropriate waiting function in the fence worker. - vkd3d-shader/spirv: Interpret the write mask as a destination swizzle for double comparison operations. - vkd3d-common: Write a thread id in the log on macOS too. - ci: Explicitly install SPIRV-Tools in the macOS CI environment. +Giovanni Mascellani (104): + tests: Enable tessellation shaders in the Vulkan shader runner. + tests: Test I/O index ranges not intersecting a signature element for a given register. + vkd3d-shader/ir: Report errors in the I/O normaliser instead of asserting. + vkd3d-shader/ir: Use a structure to record range data in the I/O normaliser. + vkd3d-shader/ir: Handle index ranges that do not touch a signature element for each register. + vkd3d-shader/tpf: Allow I/O index ranges to not intersect a signature element for a given register. + vkd3d: Require extension VK_KHR_maintenance2. + vkd3d: Rename push_descriptor_set to root_descriptor_set. + vkd3d: Put all root descriptors in a single Vulkan descriptor set when using Vulkan heaps. + tests: Test embedding the root signature in shaders for graphics pipelines. + vkd3d: Take the root signature from shaders when creating graphics pipelines. + vkd3d/device: Require VK_KHR_zero_initialize_workgroup_memory when appropriate. + vkd3d: Split Vulkan debug messages. + vkd3d-shader/spirv: Emit immediate words for unhandled instructions. + tests/shader_runner: Allow selecting the executor. + tests/shader_runner: Allow selecting the compiler. + tests: Store the compiler string in the shader runner capabilities. + tests/shader_runner: Avoid creating devices for backends that won't execute. + vkd3d-shader/ir: Validate CONSTBUFFER registers. + vkd3d-shader/ir: Disallow CONSTBUFFER registers in destination parameters. + vkd3d-shader/ir: Disallow IMMCONSTBUFFER registers in destination parameters. + ci: Define VKD3D_TEST_DEBUG when running the CI scripts. + tests: Mark a few other timestamp query tests as buggy on MoltenVK. + tests: Mark two other tessellation tests as buggy on MoltenVK. + tests: Transition texture state to inherit aliased data. + tests: Mark a test about resource aliasing as todo on MoltenVK. + vkd3d-shader/spirv: Run the vsir passes before creating the SPIR-V generator. + vkd3d-shader/spirv: Immediately store a reference to the program in the SPIR-V generator. + vkd3d-shader/spirv: Do not store duplicate references to the signatures. + vkd3d-shader/spirv: Do not steal the instruction array from the vsir program. + vkd3d-shader: Represent descriptor information in the vsir program. + tests: Mark a queue synchronization test as buggy on MoltenVK. + tests: Mark an early depth stencil test as buggy on MoltenVK. + vkd3d-shader/ir: Validate register id and index for RESOURCE registers. + vkd3d-shader/ir: Validate register id and index for UAV registers. + vkd3d-shader/ir: Validate register id and index for SAMPLER registers. + vkd3d-shader/ir: Validate register id and index for CONSTBUFFER registers. + tests: Mark a number of test failures as buggy on macOS before Sequoia. + ci: Disable testing with DXC on macOS. + tests: Mark a todo as resolved on MoltenVK 1.2.12. + vkd3d-shader/msl: Set the prefix to "unknown" for unhandled shader types in msl_generator_init(). + tests/d3d12: Always set descriptor heaps. + tests/shader_runner: Always set descriptor heaps. + tests/shader_runner_metal: Handle multisampled 2D texture arrays properly. + tests/shader_runner_metal: Do not use shared buffers. + vkd3d-shader/msl: Access descriptors with a type-erased array. + tests/shader_runner_d3d11: Do not create CPU-readable multisample resolution textures. + tests: Create structured buffers with the appropriate stride. + vkd3d-shader: Represent resource data types as vkd3d_data_type in struct vkd3d_shader_descriptor_info1. + vkd3d-shader/d3d-asm: Expose the raw value if unknown in shader_dump_resource_type(). + vkd3d-shader/d3d-asm: Expose the raw value if unknown in shader_dump_data_type(). + vkd3d-shader/d3d-asm: Include the program descriptors when tracing vsir code. + vkd3d-shader/d3d-asm: Trace register names for I/O declarations. + vkd3d-shader: Describe the resource data types of samplers as NONE. + vkd3d-shader/ir: Validate descriptor types in vsir programs. + vkd3d-shader/ir: Validate descriptor resource types in vsir programs. + vkd3d-shader/ir: Validate descriptor resource data types in vsir programs. + vkd3d-shader/ir: Validate descriptor counts in vsir programs. + tests/shader_runner_d3d9: Request the adapter specified on the command line. + tests/hlsl: Do not test 16-bit out-of-bound SRV buffer reads. + tests/hlsl: Do not test 16-bit out-of-bound UAV writes. + tests/hlsl: Remove a test in which a function reads an "out" argument. + tests/hlsl: Do not test 16-bit out-of-bound varyings. + tests/hlsl: Do not test dst() on integer arguments with SM6. + tests/hlsl: Fix the precision for a 16-bit arithmetic test. + tests/hlsl: Do not test the implicit passthrough control point phase for SM6. + vkd3d-shader/ir: Validate that DEPTHOUT registers aren't used as sources. + vkd3d-shader/ir: Validate that DEPTHOUTGE registers aren't used as sources. + vkd3d-shader/ir: Validate that DEPTHOUTLE registers aren't used as sources. + tests/d3d12: Set the descriptor heap when clearing UAVs. + tests/d3d12: Check that B5G6R5_UNORM and B5G5R5A1_UNORM are supported before testing them. + tests/d3d12: Do not allow texture creation to fail when testing UAV uint clears. + tests/d3d12: Do not test out-of-bound UAV uint clears. + tests/d3d12: Do not validate the semantic of uint-clearing R11G11B10_FLOAT resources. + tests/d3d12: Skip testing NULL VBVs on NVIDIA on Windows. + vkd3d-shader/msl: Introduce msl_print_src(). + vkd3d-shader/msl: Introduce msl_print_bitcast(). + vkd3d-shader/msl: Use the standard helper to print bitcasts. + vkd3d-shader/dxil: Create vsir registers from DXIL handles when needed. + vkd3d-shader/dxil: Have sm6_parser_emit_reg_composite_construct() accept an array of registers. + vkd3d-shader/dxil: Introduce a uniform interface to synthesize a register from a SM6 value. + vkd3d-shader/dxil: Move the VSIR register in the SM6 value outside of the union. + vkd3d-shader/dxil: Generate SSA values in sm6_parser_get_value_idx_by_ref(). + vkd3d-shader/dxil: Generate SSA values in instruction_dst_param_init_ssa_vector(). + vkd3d-shader/dxil: Generate SSA values in instruction_dst_param_init_ssa_scalar(). + vkd3d-shader/dxil: Generate SSA values in sm6_parser_emit_atomicrmw(). + vkd3d-shader/dxil: Generate SSA values in sm6_parser_emit_binop(). + vkd3d-shader/dxil: Do not encode the offset twice for structured TGSM loads. + vkd3d-shader/dxil: Generate SSA values in sm6_parser_emit_dx_atomic_binop(). + vkd3d-shader/dxil: Generate SSA values in sm6_parser_emit_dx_sincos(). + vkd3d-shader/dxil: Generate SSA values in sm6_parser_emit_cmpxchg(). + vkd3d-shader/dxil: Generate SSA values in sm6_parser_emit_phi(). + vkd3d-shader/dxil: Generate UNDEFINED values in sm6_parser_constants_init(). + vkd3d-shader/dxil: Generate INVALID values in sm6_parser_constants_init(). + vkd3d-shader/dxil: Generate INVALID values in sm6_parser_emit_unhandled(). + vkd3d-shader/dxil: Rename VALUE_TYPE_ICB to VALUE_TYPE_DATA. + vkd3d-shader/dxil: Generate ICB values in sm6_parser_declare_icb(). + vkd3d-shader/dxil: Generate IDXTEMP values in sm6_parser_declare_indexable_temp(). + vkd3d-shader/dxil: Generate GROUPSHAREDMEM values in sm6_parser_declare_tgsm_raw(). + vkd3d-shader/dxil: Generate GROUPSHAREDMEM values in sm6_parser_declare_tgsm_structured(). + vkd3d-shader/dxil: Call register_get_float_value() directly in sm6_value_get_constant_float(). + tests: Expect success when creating resources in certain cases. + tests: Allow creating GPU upload heaps. + tests: Check that shader-visible descriptor heaps have a valid GPU descriptor handle start. -Henri Verbeet (31): - tests: Get rid of some redundant "glsl" todo's. - vkd3d-shader/hlsl: Use hlsl_error() instead of hlsl_fixme() for ambiguous function calls. - vkd3d-shader/hlsl: Introduce hlsl_dump_type(). - vkd3d-shader/hlsl: Introduce hlsl_dump_ir_function_decl(). - vkd3d-shader/hlsl: Output the candidates for ambiguous function calls. - vkd3d: Introduce d3d12_descriptor_set_layout_init(). - vkd3d-shader/spirv: Parse SPIR-V instructions. - vkd3d: Drop smaller pools in d3d12_command_allocator_reset_descriptor_pool_array(). - tests: Add yet more overload resolution tests. - vkd3d-shader/hlsl: Prefer overload candidates without component count narrowing. - vkd3d-shader/hlsl: Prefer overload candidates with matching component type classes. - vkd3d-shader/hlsl: Prefer overload candidates with matching component types. - vkd3d-shader/hlsl: Prefer overload candidates without component type narrowing. - vkd3d-shader/hlsl: Prefer overload candidates without component count widening. - vkd3d-shader/d3dbc: Separate writing the comment bytecode from write_sm1_uniforms(). - vkd3d-shader/hlsl: Move CTAB generation to hlsl_codegen.c. - tests/shader_runner: Ignore the "backcompat" option for shader model 5.1+. - vkd3d-shader/hlsl: Make sm4_get_interpolation_mode() static. - vkd3d-shader/hlsl: Move sm4_get_extern_resources() to hlsl_codegen.c. - vkd3d-shader/hlsl: Move sm4_free_extern_resources() to hlsl_codegen.c. - tests/shader_runner: Do not use skip() for shader model requirements. - vkd3d-shader/hlsl: Move RDEF generation to hlsl_codegen.c. - demos: Use the assembler to embed HLSL sources. - vkd3d-shader/msl: Get rid of a stray vkd3d_string_buffer_printf() in the VEC4 UINT immediate constant handling. - vkd3d: Avoid freeing the input signature twice on error paths in d3d12_pipeline_state_init_graphics(). - vkd3d-compiler: Store the target type as a struct target_type_info pointer. - vkd3d-compiler: Store the source type as a struct source_type_info pointer. - vkd3d-compiler: Introduce "dxbc-fx" as a source type. - include: Add vkd3d_shader_scan_hull_shader_tessellation_info to the list of chained compilation structures. - include: Add missing VKD3D_FORCE_32_BIT_ENUM enum elements. - vkd3d-shader/ir: Remove vForkInstanceId and vJoinInstanceId declarations in vsir_program_flatten_hull_shader_phases(). +Henri Verbeet (58): + vkd3d-shader/dxbc: Update the vkd3d_shader_parse_input_signature() documentation for dxbc-dxil shaders. + vkd3d-shader/dxil: Avoid using the I/O signatures from the DXBC container. + vkd3d-shader/dxbc: Do not extract I/O signatures for DXIL shaders. + tests: Add a signature reflection test for arrayed inputs and outputs. + vkd3d-shader: Handle arrayed elements in vkd3d_shader_signature_from_shader_signature(). + vkd3d: Avoid vkd3d_shader_parse_input_signature(). + vkd3d-shader/dxbc: Set the "elements_capacity" field as well in shader_parse_signature(). + vkd3d-shader/dxbc: Output messages for invalid semantic name references in shader_parse_signature(). + vkd3d-shader/dxbc: Validate component types in shader_parse_signature(). + vkd3d-shader/dxil: Generate I/O signatures with 16-bit component types for native 16-bit shaders. + tests: Add a shader model 6 signature reflection test for different types. + vkd3d-shader: Enable DXIL support in the default configuration. + vkd3d-shader/fx: Use vkd3d_string_buffer_print_f32() in parse_fx_4_numeric_value(). + ci: Install libjson-perl. + vkd3d-shader/spirv: Do not sign-extend *ptr in vkd3d_spirv_build_string(). + vkd3d-shader/fx: Output error messages for invalid sizes. + vkd3d-shader/fx: Handle parser failures in fx_parse(). + vkd3d-shader/spirv: Implement outputting instruction offsets. + vkd3d-shader/spirv: Implement outputting opcode names. + vkd3d-shader/spirv: Handle "IdRef" operands. + vkd3d-shader/spirv: Handle "IdResult" operands. + vkd3d-shader/spirv: Handle "IdResultType" operands. + vkd3d-shader/spirv: Handle "LiteralInteger" operands. + vkd3d-shader/spirv: Handle "LiteralString" operands. + vkd3d-shader/spirv: Handle "ValueEnum" operands. + vkd3d-shader/spirv: Handle "BitEnum" operands. + build: Get rid of some redundant instances of "checking" in AC_MSG_CHECKING messages. + demos: Add copyright headers to the HLSL shaders. + tests/hlsl: Add another constant folding test. + vkd3d-shader/hlsl: Do not collect expressions across different operations in hlsl_normalize_binary_exprs(). + vkd3d-shader/glsl: Implement VKD3DSIH_XOR. + build: Add @DL_LIBS@ to tests_vkd3d_shader_api_LDADD. + demos: Add basic DPI handling. + demos: Get rid of some unused includes. + demos: Move the vkd3d parts of demo_xcb.h into a separate header. + tests/shader_runner: Get rid of enum texture_data_type. + vkd3d-shader/d3d-asm: Include the I/O signatures when tracing vsir code. + vkd3d-shader/spirv: We can parse up to SPIR-V 1.6. + build: Do not add libvkd3d-shader.la to DEMOS_LDADD twice. + ci: Install mingw-w64-tools in the Linux image. + demos: Split demo_win32.h. + demos: Make the demos work in the Windows build. + vkd3d: Introduce struct vkd3d_null_event. + vkd3d: Introduce d3d12_fence_add_waiting_event(). + tests/d3d12: Test ID3D12Device1_SetEventOnMultipleFenceCompletion(). + vkd3d: Validate the fence count in d3d12_device_SetEventOnMultipleFenceCompletion(). + vkd3d: Handle single fence waits in d3d12_device_SetEventOnMultipleFenceCompletion(). + vkd3d: Handle multiple fence ALL waits in d3d12_device_SetEventOnMultipleFenceCompletion(). + vkd3d: Handle multiple fence ANY waits in d3d12_device_SetEventOnMultipleFenceCompletion(). + vkd3d: Handle multiple fence NULL event waits in d3d12_device_SetEventOnMultipleFenceCompletion(). + demos: Make the demos work in the macOS build. + demos: Avoid objc_msgSend_fpret() on ARM64 macOS. + ci: Build the demos on macOS. + demos: Build with -fno-lto. + build: Sort the $(vkd3d_shader_tests) list. + vkd3d-shader/dxil: Document the supported dxbc-dxil transformations. + build: Add the SPIR-V grammar JSON to the distribution. + build: Add the Objective-C API JSON to the distribution. -Nikolay Sivov (5): - vkd3d-shader/hlsl: Add parser support for stream-output object types. - vkd3d-shader/fx: Implement parsing inline shader blobs. - vkd3d-shader/fx: Remove newlines from the parser error messages. - vkd3d-compiler: Support fx_4_0 sources embedded in DXBC containers. - vkd3d-shader/hlsl: Implement the isinf() intrinsic. +Nikolay Sivov (23): + vkd3d-shader/preproc: Do not attempt to load empty included files. + vkd3d-shader/fx: Implement parsing complex value and index expressions. + vkd3d-shader/fx: Improve state object nesting for the fx -> text output. + vkd3d-shader/fx: Fix condition when printing literal constant arguments. + vkd3d-shader/fx: Parse technique and pass blocks for fx_2_0. + vkd3d-shader/fx: Add support for parsing fx_2_0 annotations. + vkd3d-shader/fx: Fix const strings array types. + vkd3d-shader/fx: Add support for parsing fx_2_0 parameters. + vkd3d-shader/fx: Add support for parsing numeric states in fx_2_0 passes. + vkd3d-shader/fx: Output object initialiser IDs for fx_2_0. + vkd3d-shader/fx: Print string object entries for fx_2_0. + vkd3d-shader/fx: Add a helper to escape printed strings. + vkd3d-shader/fx: Read fx_2_0 assignment data outside of its dumping helper. + vkd3d-shader/fx: Add support for parsing fx_2_0 sampler states. + vkd3d-shader/fx: Add support for dumping fx_2_0 shader blobs. + vkd3d-shader/fx: Dump complex state value blobs for fx_2_0. + vkd3d-shader/fx: Support dumping parameter and array selector assignments for fx_2_0. + vkd3d-shader/fx: Pad fx_2_0 object data blobs with zeroes. + vkd3d-shader/fx: Set GeometryShader state type as an object type. + vkd3d-shader/fx: Accept int(0) as well as uint(0) constant value for object-type states. + tests: Add a fx_4_1 compilation test for the BlendState states. + vkd3d-shader/fx: Use the same BlendState states description for both fx_4_1 and fx_5_0. + vkd3d-shader/fx: Use appropriate BlendState description when tracing. -Shaun Ren (43): - vkd3d-shader/dxil: Allow zero domain input control point count. - vkd3d-shader: Implement scanning hull shader tessellation information. - tests/shader_runner_vulkan: Enable patch list topology support. - tests/shader_runner_gl: Implement tessellation support. - vkd3d-shader/hlsl: Implement normalization of binary expressions. - vkd3d-shader/hlsl: Collect together terms with constant coefficients. - tests/shader_runner_vulkan: Check if create_shader_stage() fails in create_compute_pipeline(). - tests/shader_runner_gl: Add "opengl" tag. - tests/shader_runner_gl: Bind buffer UAVs for compute shaders. - tests/hlsl: Add a test for UAV InterlockedCompareExchange(). - tests/hlsl: Add tests to check the types of the value arguments of atomic ops. - tests/hlsl: Add tests to check the void return type of atomic ops. - tests/hlsl: Add tests for valid destination types of atomic operations. - vkd3d-shader/hlsl: Implement the InterlockedAdd() intrinsic. - vkd3d-shader/hlsl: Implement the InterlockedAnd() intrinsic. - vkd3d-shader/hlsl: Implement the InterlockedCompareExchange() intrinsic. - vkd3d-shader/hlsl: Implement the InterlockedCompareStore() intrinsic. - vkd3d-shader/hlsl: Implement the InterlockedExchange() intrinsic. - vkd3d-shader/hlsl: Implement the InterlockedMax() intrinsic. - vkd3d-shader/hlsl: Implement the InterlockedMin() intrinsic. - vkd3d-shader/hlsl: Implement the InterlockedOr() intrinsic. - vkd3d-shader/hlsl: Implement the InterlockedXor() intrinsic. - vkd3d-shader/spirv: Emit the tessellator domain for domain shaders. - vkd3d-shader/hlsl: Forbid declaring parameters as both out and const. - tests: Test invalid out const parameters. - vkd3d-shader/d3d-asm: Print vocp registers with subscript. - vkd3d-shader/hlsl: Forbid declaring const variables with no initializer. - tests/hlsl: Test invalid const variables with no initializer. - vkd3d-shader/hlsl: Parse InputPatch and OutputPatch objects. - vkd3d-shader/hlsl: Validate and record InputPatch/OutputPatch types. - tests/hlsl: Test the syntax of InputPatch/OutputPatch variables. - tests/hlsl: Test passthrough hull shader control point function. - tests/hlsl: Test hull shader control point function output parameters. - tests/hlsl: Test OutputPatch usage in patch constant functions. - vkd3d-shader/hlsl: Add an "is_patch_constant_func" field to struct hlsl_ctx. - vkd3d-shader/hlsl: Implement input semantic variable copies for patch variables. - vkd3d-shader/tpf: Improve readability of compat mapping in sm4_sysval_semantic_from_semantic_name(). - vkd3d-shader/hlsl: Generate vsir signature entries for patch variables. - vkd3d-shader/hlsl: Declare semantics for patch variables in vsir. - vkd3d-shader/hlsl: Allocate semantic registers for patch variables. - tests/shader_runner: Support the negation of tag matches. - vkd3d-shader/hlsl: Generate vsir registers from patch variable derefs. - tests: Test signature reflection for patch inputs in hull/domain shaders. +Petrichor Park (1): + tests/shader_runner: Allow controlling which shader models to run via command line. -Victor Chiletto (10): - tests: Add more function overloading tests. - vkd3d-shader/hlsl: Explicitly track the copy propagation state stack. - vkd3d-shader/hlsl: Allow copy propagation to be stopped early. - vkd3d-shader/hlsl: Constant fold casts to boolean. - vkd3d-shader/hlsl: Run copy propagation incrementally during loop unrolling. - vkd3d-shader/hlsl: Do not clone the entire program for loop unrolling. - vkd3d-shader/hlsl: Remove loop_unrolling_find_unrollable_loop(). - vkd3d-shader/hlsl: Partially defer continue resolution. - vkd3d-shader/hlsl: Unroll loops with conditional jumps. - vkd3d-shader/hlsl: Drop the _ir_ infix from enum hlsl_loop_unroll_type. +Shaun Ren (44): + vkd3d-shader/tpf: Write non-zero static offsets in relative addressing mode in sm4_write_register_index(). + vkd3d-shader/glsl: Implement support for indirect constant buffer addressing. + vkd3d-shader/hlsl: Allow uint1-typed deref path nodes. + vkd3d-shader/hlsl: Allow non-constant indices in register_deref_usage(). + vkd3d-shader/hlsl: Support patch arrays in hlsl_reg_from_deref(). + vkd3d-shader/hlsl: Support indirect addressing of uniforms in sm4_generate_vsir_reg_from_deref(). + vkd3d-shader/hlsl: Introduce simplify_exprs(). + vkd3d-shader/hlsl: Introduce component_index_from_deref_path_node(). + vkd3d-shader/hlsl: Rename init_deref() to hlsl_init_deref(). + vkd3d-shader/hlsl: Implement copy-propagation of derefs with a non-constant index. + tests/hlsl: Add dynamic addressing copy-propagation tests. + vkd3d-shader/hlsl: Parse the maxvertexcount attribute. + vkd3d-shader/hlsl: Parse primitive type modifiers in geometry shaders. + vkd3d-shader/hlsl: Validate and record input primitive types in geometry shaders. + vkd3d-shader/hlsl: Validate stream output object declarations. + vkd3d-shader/hlsl: Validate stream output parameters in geometry shaders. + vkd3d-shader/hlsl: Forbid output parameters in geometry shaders. + tests/hlsl: Add geometry shader syntax tests. + vkd3d-shader/hlsl: Remove the unused hlsl_array_type_to_string() declaration. + vkd3d-shader/hlsl: Support input primitive arrays in geometry shaders. + vkd3d-shader/hlsl: Implement input semantics for geometry shaders. + vkd3d-shader/hlsl: Store geometry shader properties in struct vsir_program. + vkd3d-shader/tpf: Emit geometry shader property declarations. + tests: Add a signature reflection test for geometry shader inputs. + vkd3d-shader/hlsl: Divert written uniform derefs to temps before copy-propagation passes. + vkd3d-shader/hlsl: Ensure that uniform objects are never written to in copy_propagation_transform_object_load(). + tests/hlsl: Add a test for copy-propagation of uniform texture object writes. + vkd3d-shader/hlsl: Use dcl_output_siv for patch constant function sysval outputs. + vkd3d-shader/hlsl: Free all allocators in allocate_semantic_registers(). + vkd3d-shader/hlsl: Prioritize smaller writemasks for all allocators in allocate_semantic_registers(). + vkd3d-shader/tpf: Support SV_RenderTargetArrayIndex/SV_ViewportArrayIndex sysvals in tessellation shaders. + tests: Add signature reflection tests for register allocation rules in tessellation shaders. + vkd3d-shader/hlsl: Add special allocation rules for patch constant data. + vkd3d-shader/hlsl: Support HLSL_CLASS_STREAM_OUTPUT in hlsl type helpers. + vkd3d-shader/hlsl: Parse the Append() method for stream outputs. + vkd3d-shader/hlsl: Parse the RestartStrip() method for stream outputs. + vkd3d-shader/hlsl: Introduce HLSL_REGSET_STREAM_OUTPUTS regset. + vkd3d-shader/hlsl: Allocate registers for stream output objects. + vkd3d-shader/hlsl: Validate and record stream output objects. + tests/hlsl: Add geometry shader stream output syntax tests. + vkd3d-shader/hlsl: Use a block in append_output_copy*(). + vkd3d-shader/hlsl: Append output copies for stream output Append() invocations. + vkd3d-shader/hlsl: Validate maximum output size in geometry shaders. + vkd3d-shader/hlsl: Generate vsir instructions for stream output operations. + +Victor Chiletto (3): + tests/shader_runner_d3d12: Pass the structure byte stride for SRVs. + tests/hlsl: Attempt to deduce the data type of unspecified type texture data. + tests/hlsl: Add tests for SRV structured buffers. ``` diff --git a/ChangeLog.md b/ChangeLog.md index 26bbc4676..92edaed62 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,3 +1,102 @@ +# What's new in vkd3d 1.16 (20 May 2025) + +### libvkd3d + + - DXIL shaders are supported in the default configuration. Previously this + required building vkd3d with the ‘-DVKD3D_SHADER_UNSUPPORTED_DXIL’ + preprocessor option. The also raises the maximum supported shader model to + version 6.0. + + - Graphics pipeline state objects can be created from shaders with embedded + root signatures. This was already possible for compute pipeline state + objects. + + - The SetEventOnMultipleFenceCompletion() method of the ID3D12Device1 + interface is implemented. + + - When the VK_KHR_zero_initialize_workgroup_memory extension is supported, + libvkd3d supports zero-initialising compute shader thread group shared + memory. + + - The VK_KHR_maintenance2 extension is now explicitly required. libvkd3d + already unconditionally used features provided by this extension, but + unfortunately didn't explicitly require it. Support for this extension is + widespread, and the extension is part of Vulkan 1.1. + +### libvkd3d-shader + + - The previously experimental support for compiling DXIL shaders is now a + supported feature and enabled by default. Please note that this feature is + nevertheless still far from perfect. + + - New features for the HLSL source type: + - Initial support for geometry shaders. + - Indirect addressing in shader model 1-3 target profiles. + - Modulus and truncation operations in shader model 1-3 target profiles. + - Vectorised output code. + - Further improved constant folding and propagation. + - The following intrinsic functions are supported: + - AllMemoryBarrier() + - AllMemoryBarrierWithGroupSync() + - DeviceMemoryBarrier() + - DeviceMemoryBarrierWithGroupSync() + - GroupMemoryBarrier() + - GroupMemoryBarrierWithGroupSync() + - The ‘.Length’ Texture object property. + - The ‘SV_RenderTargetArrayIndex’ and ‘SV_ViewportArrayIndex’ semantics in + tessellation shaders. + + - Disassembler support for binary ‘fx_2_0’ effects. + + - Experimental built-in support for disassembling SPIR-V shaders, enabled by + building vkd3d with the ‘-DVKD3D_SHADER_UNSUPPORTED_SPIRV_PARSER’ + preprocessor option. When enabled, the built-in SPIR-V disassembler is + used instead of SPIRV-Tools for the ‘spirv-text’ target type, as well as + for the debug output enabled by the VKD3D_SHADER_DEBUG environment + variable. + + - The experimental OpenGL Shading Language (GLSL) target supports indirect + addressing of constant buffers. + + - The experimental Metal Shading Language (MSL) target supports texture + loads. + + - New interfaces: + - The VKD3D_SHADER_COMPILE_OPTION_FEATURE_ZERO_INITIALIZE_WORKGROUP_MEMORY + flag indicates support for zero-initialising workgroup memory in the + SPIR-V target environment. + - The VKD3D_SHADER_COMPONENT_INT64 enumeration value indicates a 64-bit + signed integer value. + - The VKD3D_SHADER_COMPONENT_FLOAT16 enumeration value indicates a 16-bit + IEEE floating-point value. + - The VKD3D_SHADER_COMPONENT_UINT16 enumeration value indicates a 16-bit + unsigned integer value. + - The VKD3D_SHADER_COMPONENT_INT16 enumeration value indicates a 16-bit + signed integer value. + - When targeting VKD3D_SHADER_API_1_16, the + VKD3D_SHADER_RESOURCE_DATA_NONE enumeration value is returned for the + ‘resource_data_type’ field in the vkd3d_shader_descriptor_info structure + for sampler descriptors. VKD3D_SHADER_API_1_15 and before use the + VKD3D_SHADER_RESOURCE_DATA_UINT enumeration value for this. + +### demos + + - The vkd3d demos now work on both the Microsoft Windows and Apple macOS + builds. The macOS versions of the vkd3d demos are completely new in vkd3d + 1.16, while the Windows demos could previously be built, but only worked + on Wine. Note that the vkd3d demos produced by a Windows build of vkd3d + are distinct from those produced by the ‘make crosstest’ target: the + former are Vulkan applications using vkd3d, while the latter are Direct3D + 12 applications. + + - The vkd3d demos have basic support for DPI scaling. + +### build + + - Perl and the ‘JSON’ Perl module have been added as build dependencies. + These are used for the experimental built-in SPIR-V disassembler, as well + as for the macOS versions of the vkd3d demos. + # What's new in vkd3d 1.15 (19 February 2025) ### libvkd3d diff --git a/Makefile.am b/Makefile.am index 7e47ea15d..2b7a05cb9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -419,7 +419,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 14:0:13 +libvkd3d_shader_la_LDFLAGS = $(AM_LDFLAGS) -version-info 15:0:14 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 @@ -454,7 +454,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 16:0:15 +libvkd3d_la_LDFLAGS = $(AM_LDFLAGS) -version-info 17:0:16 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 @@ -467,7 +467,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:1:6 +libvkd3d_utils_la_LDFLAGS = $(AM_LDFLAGS) -version-info 7:2: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 diff --git a/configure.ac b/configure.ac index 66a9b6029..abf9f58d7 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ([2.69]) -AC_INIT([vkd3d],[1.15]) +AC_INIT([vkd3d],[1.16]) AC_CONFIG_AUX_DIR([bin]) AC_CONFIG_MACRO_DIR([m4]) diff --git a/demos/demo_vkd3d.h b/demos/demo_vkd3d.h index b97656ecc..7f4aa541d 100644 --- a/demos/demo_vkd3d.h +++ b/demos/demo_vkd3d.h @@ -28,7 +28,7 @@ #ifdef HAVE_XCB # define VK_USE_PLATFORM_XCB_KHR #endif -#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_15 +#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_16 #include #include #ifdef HAVE_XCB diff --git a/include/vkd3d.h b/include/vkd3d.h index 847d0eb84..0b55fc18f 100644 --- a/include/vkd3d.h +++ b/include/vkd3d.h @@ -100,6 +100,7 @@ enum vkd3d_api_version VKD3D_API_VERSION_1_13, VKD3D_API_VERSION_1_14, VKD3D_API_VERSION_1_15, + VKD3D_API_VERSION_1_16, VKD3D_FORCE_32_BIT_ENUM(VKD3D_API_VERSION), }; diff --git a/include/vkd3d_shader.h b/include/vkd3d_shader.h index 1b7bdd196..30b6a0700 100644 --- a/include/vkd3d_shader.h +++ b/include/vkd3d_shader.h @@ -58,6 +58,7 @@ enum vkd3d_shader_api_version VKD3D_SHADER_API_VERSION_1_13, VKD3D_SHADER_API_VERSION_1_14, VKD3D_SHADER_API_VERSION_1_15, + VKD3D_SHADER_API_VERSION_1_16, VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_API_VERSION), }; diff --git a/libs/vkd3d-shader/fx.c b/libs/vkd3d-shader/fx.c index 6f67af2f7..a4f1a3712 100644 --- a/libs/vkd3d-shader/fx.c +++ b/libs/vkd3d-shader/fx.c @@ -4037,7 +4037,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_15}, + {VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_16}, }; info.type = VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO; diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index f1f6e8510..b49c2f8e2 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -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 15 +#define VKD3D_SPIRV_GENERATOR_VERSION 16 #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 diff --git a/libs/vkd3d-utils/vkd3d_utils_main.c b/libs/vkd3d-utils/vkd3d_utils_main.c index d3aa1d792..8005582fe 100644 --- a/libs/vkd3d-utils/vkd3d_utils_main.c +++ b/libs/vkd3d-utils/vkd3d_utils_main.c @@ -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_15; + option->value = VKD3D_SHADER_API_VERSION_1_16; 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_15}, + {VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_16}, }; 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_15}, + {VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_16}, }; TRACE("data %p, data_size %"PRIuPTR", flags %#x, comments %p, blob %p.\n", diff --git a/libs/vkd3d/state.c b/libs/vkd3d/state.c index a1f094223..819185796 100644 --- a/libs/vkd3d/state.c +++ b/libs/vkd3d/state.c @@ -2389,7 +2389,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_15}, + {VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_16}, {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)}, @@ -2444,7 +2444,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_15}, + {VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_16}, {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_15}, + {VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_16}, }; info.type = VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO; diff --git a/programs/vkd3d-compiler/main.c b/programs/vkd3d-compiler/main.c index fb7bf361f..5bf243f92 100644 --- a/programs/vkd3d-compiler/main.c +++ b/programs/vkd3d-compiler/main.c @@ -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_15); + add_compile_option(&options, VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_16); 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, diff --git a/tests/shader_runner_gl.c b/tests/shader_runner_gl.c index 6cb863b55..dabb40d7a 100644 --- a/tests/shader_runner_gl.c +++ b/tests/shader_runner_gl.c @@ -594,7 +594,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_15}, + {VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_16}, {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)}, diff --git a/tests/shader_runner_metal.m b/tests/shader_runner_metal.m index 92175eab6..3eec87b4b 100644 --- a/tests/shader_runner_metal.m +++ b/tests/shader_runner_metal.m @@ -336,7 +336,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_15}, + {VKD3D_SHADER_COMPILE_OPTION_API_VERSION, VKD3D_SHADER_API_VERSION_1_16}, {VKD3D_SHADER_COMPILE_OPTION_FEATURE, shader_runner_caps_get_feature_flags(&runner->caps)}, }; diff --git a/tests/shader_runner_vulkan.c b/tests/shader_runner_vulkan.c index 886af0d52..9b2ce7633 100644 --- a/tests/shader_runner_vulkan.c +++ b/tests/shader_runner_vulkan.c @@ -353,7 +353,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_15; + options[0].value = VKD3D_SHADER_API_VERSION_1_16; options[1].name = VKD3D_SHADER_COMPILE_OPTION_FEATURE; options[1].value = shader_runner_caps_get_feature_flags(&runner->caps);