The vkd3d team is proud to announce that release 1.19 of vkd3d, the 3D
graphics porting library, is now available.

The source is available from the following location:

  <https://dl.winehq.org/vkd3d/source/vkd3d-1.19.tar.xz>

The current source can also be pulled directly from either of these git
repositories:

  <https://gitlab.winehq.org/wine/vkd3d.git>
  <https://codeberg.org/vkd3d/vkd3d.git>

Vkd3d is available thanks to the work of multiple people. See the file AUTHORS
for the complete list.

# What's new in vkd3d 1.19

### libvkd3d

  - Barriers are inserted as required between render passes targeting the same
    images. Typical desktop GPUs tend to not care much about these, but this is
    important for correctness on tile-based renderers.

  - The ‘minimum’ and ‘maximum’ texture filtering reduction modes are supported.

### libvkd3d-shader

  - Much improved handling of clip and cull distance shader input/output arrays
    for SPIR-V targets. Direct3D source formats represent clip and cull
    distances as 2 4-component registers, while SPIR-V represents them as scalar
    arrays. The previous code for mapping between these conventions was
    unfortunately relatively fragile and unable to handle a number of cases.

  - Several new features and improvements for the HLSL source type:
    - Effects (FX) target profiles can output embedded shader blobs. These are
      created by the CompileShader() and ConstructGSWithSO() intrinsic
      functions.
    - Statically initialised variables are considered to be static expressions.
      For example, ‘int count = 4; float4 array[count];’ is now accepted as
      valid by the compiler.
    - Store operations to ‘RWStructuredBuffer’ resources.
    - Load operations from structured thread group shared memory.
    - Copy operations involving structured resources.
    - Casts of floating-point constants to Boolean values now correctly fold any
      non-zero value to ‘true’. Previously ‘(bool)0.25f’ for example would get
      constant folded to ‘false’.
    - The ‘static’ storage-class specifier is allowed on functions.
    - The ‘Buffer’, ‘StructuredBuffer’, and ‘ByteAddressBuffer’ types are
      supported in effects (FX) target profiles.

  - The following legacy Direct3D byte-code instructions are implemented:
    - dp2add
    - loop/endloop
    - lrp
    - nrm
    - pow
    - rep/endrep

  - When the VKD3D_SHADER_DUMP_PATH environment variable is used to dump input
    and output shaders, compilation messages like errors and warnings produced
    by the compiler will be dumped as well.

  - New interfaces:
    - The VKD3D_SHADER_PARAMETER_NAME_PROJECTED_TEXTURE_MASK shader parameter
      specifies which textures in a shader model 1.0-1.3 pixel shader should be
      considered to be projected textures.

### build

  - New environment variables:
    - VKD3D_TEST_WRAPPER can be used to wrap test execution.

### Changes since vkd3d 1.18:
```
Anna (navi) Figueiredo Gomes (12):
      tests/hlsl: Add const scalar array dimension tests.
      vkd3d-shader/hlsl: Store statically initialized constant scalars/vectors in ctx->static_initializers.
      vkd3d-shader/hlsl: Unify add_shader_compilation() cleanup.
      vkd3d-shader/hlsl: Store parsed values in hlsl_ir_compile().
      tests/hlsl: Add effect CompileShader() tests.
      vkd3d-shader/fx: Add HLSL_CLASS_GEOMETRY_SHADER to helper functions.
      vkd3d-shader/fx: Implement shader assignment.
      vkd3d-shader/fx: Implement shader initializers.
      vkd3d-shader/fx: Introduce write_var_type().
      vkd3d-shader/fx: Implement ConstructGSWithSO().
      vkd3d-shader/fx: Handle HLSL_IR_INDEX assignments.
      tests/shader_runner: Support requiring runner tags in [require] sections.

Conor McCarthy (9):
      vkd3d-shader/dxil: Emit branch instructions during parsing.
      vkd3d-shader/dxil: Emit switch instructions during parsing.
      vkd3d-shader/dxil: Emit return instructions during parsing.
      vkd3d-shader/dxil: Emit an error if a return instruction has operands.
      vkd3d-shader/dxil: Initialise or validate forward-referenced values in a helper function.
      vkd3d-shader/dxil: Move relative index validation outside sm6_parser_get_value_index().
      vkd3d-shader/dxil: Emit phi instructions during parsing.
      vkd3d-shader/dxil: Get rid of struct sm6_block.
      vkd3d: Implement sampler min/max reduction filtering.

Elizabeth Figura (9):
      vkd3d-shader: Implement shader model 1.0-1.3 texture projection.
      vkd3d-shader/hlsl: Calculate the bind count from the vector width.
      vkd3d-shader/hlsl: Handle HLSL_CLASS_VECTOR in hlsl_regset_index_from_deref().
      vkd3d-shader/hlsl: Avoid creating "index-val" synthetic temps if we can detect the variable was unmodified.
      vkd3d-shader/hlsl: Return an error instruction from add_call() on failure.
      tests/hlsl: Add more tests for function modifiers.
      vkd3d-shader/hlsl: Allow "static" on functions.
      vkd3d-shader/hlsl: Rename HLSL_MODIFIER_EXPORT to HLSL_STORAGE_EXPORT.
      vkd3d-shader/preproc: Add a terminating ] or } to the last macro argument.

Evan Tang (3):
      vkd3d: Add barriers between render passes to the same image.
      tests/d3d12: Add some missing UAV barriers after UAV clears.
      vkd3d: Print an error before freezing due to needing timeline semaphores.

Francisco Casas (40):
      tests/hlsl: Test clip/cull distance inputs.
      tests/hlsl: Test clip distance semantic indexes above the 0-1 range.
      vkd3d-shader/ir: Introduce vsir_opcode_is_fork_or_join_phase().
      vkd3d-shader/ir: Introduce vsir_opcode_is_control_point_phase().
      vkd3d-shader/ir: Assign new register indexes to clip plane signature elements.
      vkd3d-shader/ir: Introduce vsir_signature_element_is_array().
      vkd3d-shader/ir: Transform clip/cull inputs/outputs into arrays.
      tests/hlsl: Test clip/cull distance semantics as arrays.
      vkd3d-shader/spirv: Remove the unused "array_element_mask field" from struct vkd3d_shader_output_info.
      tests/shader_runner: Introduce struct input_layout.
      tests/shader_runner: Restore the input layout after "draw quad" operations.
      tests/shader_runner: Avoid segfaults on missing signature elements.
      tests/hlsl: Don't test values of clip distance array addressing tests on Windows.
      tests/shader_runner: Implement support for d3dbc integer constants.
      tests/hlsl: Test SM3 loops with user-provided integer registers.
      tests/hlsl: Test SM3 loops with shader-defined int registers.
      tests/hlsl: Test SM3 loops with gradient instructions.
      tests/hlsl: Test SM3 shaders that use the `loop` instruction.
      tests/hlsl: Add additional SM3 loop tests to discern when user-defined ints are used.
      tests/d3dbc: Add two SM3 loop tests.
      vkd3d-shader: Add VKD3D_SHADER_BLOCK_REP as a breakable cf_info.
      vkd3d-shader/d3d-asm: Indent REP blocks.
      vkd3d-shader/tpf: Use vkd3d_shader_verror() to report errors.
      vkd3d-shader/d3dbc: Fail compilation on LOOP instructions.
      vkd3d-shader/ir: Lower REP and ENDREP d3dbc instructions.
      vkd3d-shader/d3d-asm: Fix a comment in shader_print_dcl_usage().
      vkd3d-shader/ir: Actually retrieve the indexable temporary count in vsir_program_get_idxtemp_count().
      vkd3d-shader/ir: Remove unnecessary program traces from vsir_program_normalise_sysval_array().
      tests/d3dbc: Add SM3 tests for loop instructions.
      tests/d3dbc: Test addressing a constant buffer with the vs_2_0 loop instruction.
      vkd3d-shader/d3dbc: Initialise CONSTINT and CONSTBOOL registers with the proper vsir data type.
      vkd3d-shader/ir: Lower d3dbc loop instructions.
      vkd3d-shader/ir: Copy inputs to an IDXTEMP when there is vN[aL] access.
      vkd3d-shader/d3dbc: Add a used_mask to all input registers on indirect addressing.
      vkd3d-shader/hlsl: Initialize all blocks before any 'goto fail'.
      vkd3d-shader/hlsl: Unroll loops one at the time.
      vkd3d-shader/ir: Don't reach unreacheable code in vsir_dst_operand_io_normalise().
      vkd3d-shader/hlsl: Make "intrinsic" const in add_call().
      vkd3d-shader/fx: Make "state" const in fx_4_parse_state_object_initializer().
      tests/vkd3d_shader_api: Avoid a 'const' discard warning in test_emit_signature().

Giovanni Mascellani (146):
      vkd3d-shader: Explicitly initialize the parser status to VKD3D_OK.
      vkd3d-shader/dxil: Parse the parameter attribute group records.
      vkd3d-shader/dxil: Parse well-known attributes in parameter attribute groups.
      vkd3d-shader/dxil: Parse well-known attributes with numeric value in parameter attribute groups.
      vkd3d-shader/dxil: Parse string attributes in parameter attribute groups.
      vkd3d-shader/dxil: Parse string attributes with string value in parameter attribute groups.
      tests/shader_runner_d3d12: Do not leave a root signature around between draw calls.
      tests/shader_runner_d3d12: Do not keep a free list for pipeline states.
      tests/shader_runner_d3d12: Lay out the descriptor heap as suggested by descriptor mappings.
      tests/shader_runner: Keep a single array of shader model strings.
      tests/shader_runner: Use SHADER_MODEL_MAX to represent the maxium supported shader model.
      tests/hlsl: Test SM6.6 dynamic resources.
      vkd3d-shader/dxil: Check the fields of well-known structure types.
      tests/shader_runner_vulkan: Support explicit descriptor mapping.
      tests/d3d12: Avoid a warning about passing a pointer to a const uninitialized object.
      ci: Set the macOS runner timeout to ten minutes.
      vkd3d-shader/dxil: Move the function emission state outside the opcode switch.
      vkd3d-shader/dxil: Pass function emission state to sm6_parser_emit_alloca().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_alloca().
      vkd3d-shader/dxil: Take the record from the function emission state in sm6_parser_emit_atomicrmw().
      vkd3d-shader/dxil: Handle allocation failure in sm6_parser_emit_atomicrmw().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_atomicrmw().
      vkd3d-shader/dxil: Parse parameter attribute records.
      vkd3d-shader/dxil: Set the attribute group count to zero if allocation fails.
      tests/hlsl: Test the default denormalized mode.
      vkd3d-shader/dxil: Parse the f32 denormalization mode.
      tests/hlsl: Fix the render target format for arithmetic-float-uniform.shader_test.
      tests/d3dbc: Relax the precision for some nrm tests.
      tests: Do not put storage buffer descriptors in the descriptor pool.
      vkd3d: Remove unused field storage_buffer_max_descriptors from vkd3d_device_descriptor_limits.
      vkd3d: Rename the struct vkd3d_device_descriptor_limits fields.
      vkd3d-shader/dxil: Pass the function emission state to sm6_parser_emit_binop().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_binop().
      vkd3d-shader/dxil: Pass the function emission state to sm6_parser_emit_br().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_br().
      vkd3d-shader/dxil: Take the record from the function emission state in sm6_parser_emit_call().
      vkd3d-shader/dxil: Remove sm6_parser_emit_unhandled().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_unary().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_atomic_binop().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_barrier().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_buffer_load().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_raw_buffer_load().
      vkd3d-shader/dxil: Use sm6_parser_add_function_instruction() in sm6_parser_emit_reg_composite_construct().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_buffer_store().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_buffer_update_counter().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_calculate_lod().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_cbuffer_load().
      vkd3d-shader/dxil: Pass the function emission state to sm6_parser_emit_dx_input_register_mov().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_input_register_mov().
      vkd3d-shader/dxil: Do not access unallocated instructions in sm6_parser_emit_dx_create_handle().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_stream().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_discard().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_domain_location().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_dot().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_eval_attrib().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_fabs().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_compute_builtin().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_ma().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_binary().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_get_dimensions().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_tertiary().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_load_input().
      tests/hlsl: Add more direct SM<6 clip/cull distance array tests.
      vkd3d-shader/dxil: Do not advance the instruction pointer in sm6_parser_emit_dx_get_dimensions().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_make_double().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_quad_op().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_raw_buffer_store().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_get_sample_count().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_get_sample_pos().
      tests/hlsl: Test load/sample status and CheckAccessFullyMapped().
      vkd3d-shader/dxil: Emit warnings for unrecognised DXIL structures.
      vkd3d-shader/dxil: Recognise dx.types.ResRet.f32 structures.
      vkd3d-shader/dxil: Recognise dx.types.ResRet.i32 structures.
      vkd3d-shader/dxil: Recognise dx.types.CBufRet.f32 structures.
      vkd3d-shader/dxil: Recognise dx.types.CBufRet.i32 structures.
      vkd3d-shader/dxil: Remove the "reg_type" field from struct sm6_descriptor_info.
      vkd3d-shader/dxil: Remove the "reg_data_type" field from struct sm6_descriptor_info.
      vkd3d-shader/dxil: Use resource_kind_is_texture() in sm6_value_validate_is_texture_handle().
      vkd3d-shader/dxil: Introduce resource_kind_is_buffer().
      vkd3d-shader/dxil: Use resource_kind_is_texture() in sm6_parser_emit_dx_get_dimensions().
      vkd3d-shader/dxil: Validate the types of SSA values.
      vkd3d-shader/dxil: Parse aggregate constants.
      vkd3d-shader/dxil: Parse null structure constants.
      vkd3d-shader/d3d-asm: Dump the denormal modes.
      vkd3d-shader/dxil: Preserve f64 denormals if they're used in the shader.
      vkd3d-shader/tpf: Preserve f64 denormals if they're used in the shader.
      vkd3d-shader/ir: Introduce the f16 denormal mode.
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_sample().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_sample_index().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_saturate().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_split_double().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_store_output().
      vkd3d-shader/dxil: Use resource_kind_is_texture() in sm6_parser_emit_dx_atomic_binop().
      vkd3d-shader/dxil: Use resource_kind_is_multisampled() in sm6_parser_emit_dx_texture_load().
      vkd3d-shader/dxil: Use resource_kind_is_texture() in sm6_parser_emit_dx_texture_load().
      vkd3d-shader/dxil: Remove the "resource_type" field from struct sm6_descriptor_info.
      vkd3d-shader/dxil: Recognise dx.types.CBufRet.f64 structures.
      vkd3d-shader/dxil: Recognise dx.types.CBufRet.i64 structures.
      vkd3d-shader/dxil: Recognise dx.types.CBufRet.i16 structures.
      vkd3d-shader/dxil: Recognise dx.types.CBufRet.f16 structures.
      vkd3d-shader/dxil: Recognise dx.types.ResRet.f16 structures.
      vkd3d-shader/dxil: Recognise dx.types.ResRet.i16 structures.
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_texture_gather().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_texture_load().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_texture_store().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_wave_active_ballot().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_wave_active_bit().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_wave_op().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_dx_void().
      vkd3d-shader/dxil: Recognise dx.types.SamplePos structures.
      vkd3d-shader/dxil: Recognise dx.types.ResBind structures.
      vkd3d-shader/dxil: Recognise dx.types.ResourceProperties structures.
      vkd3d-shader/dxil: Pass the function emission state to sm6_parser_emit_cast().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_cast().
      vkd3d-shader/dxil: Pass the function emission state to sm6_parser_emit_cmp2().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_cmp2().
      vkd3d-shader/dxil: Pass the function emission state to sm6_parser_emit_cmpxchg().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_cmpxchg().
      vkd3d-shader/dxil: Pass the function emission state to sm6_parser_emit_extractval().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_extractval().
      vkd3d-shader/dxil: Pass the function emission state to sm6_parser_emit_gep().
      vkd3d-shader/dxil: Do not access unallocated instructions in sm6_parser_emit_gep().
      vkd3d-shader/dxil: Pass the function emission state to sm6_parser_emit_load().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_load().
      vkd3d-shader/dxil: Pass the function emission state to sm6_parser_emit_phi().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_phi().
      vkd3d-shader/dxil: Pass the function emission state to sm6_parser_emit_ret().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_ret().
      vkd3d-shader/dxil: Pass the function emission state to sm6_parser_emit_store().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_store().
      tests/d3dbc: Relax the precision for some POW tests.
      tests/hlsl: Mark some modulo tests as buggy on NVIDIA.
      vkd3d-shader/dxil: Pass the function emission state to sm6_parser_emit_switch().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_switch().
      vkd3d-shader/dxil: Pass the function emission state to sm6_parser_emit_vselect().
      vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_vselect().
      vkd3d-shader/dxil: Assume that all control paths update the instruction count.
      vkd3d-shader/dxil: Do not store a pointer to the current instruction in the function state any more.
      vkd3d-shader/dxil: Apply the precise modifier to all vsir instructions generated by a DXIL instruction.
      vkd3d-shader/dxil: Pass the function emission state to sm6_function_emit_label().
      vkd3d-shader/dxil: Allocate instructions directly in dxil_emit_function_label().
      vkd3d-shader/dxil: Do not preallocate vsir instructions.
      vkd3d-shader/ir: Avoid a "may be used uninitialized" warning in vsir_program_lower_d3dbc_loops().
      vkd3d-shader/dxil: Destroy instruction arrays with shader_instruction_array_destroy().
      vkd3d-shader/dxil: Use iterators in sm6_function_emit_instructions().
      vkd3d-shader/dxil: Generate MOVs for trivial casts.

Henri Verbeet (84):
      tests/hlsl: Avoid sampling on texel edges in ps1-projection.shader_test.
      vkd3d-shader/ir: Move "has_descriptor_info" and "has_no_modifiers" to struct vsir_normalisation_flags.
      vkd3d-shader: Introduce vkd3d_shader_string_from_message_context().
      tests/hlsl: Add a sampler min/max reduction filtering test.
      tests/d3dbc: Add some tests for nrm instructions.
      vkd3d-shader/ir: Lower VSIR_OP_NRM instructions.
      tests/d3dbc: Add some tests for lrp instructions.
      vkd3d-shader/ir: Lower VSIR_OP_LRP instructions.
      vkd3d-shader/ir: Rename struct vkd3d_shader_dst_param to struct vsir_dst_operand.
      vkd3d-shader/ir: Rename struct vkd3d_shader_src_param to struct vsir_src_operand.
      tests/d3dbc: Add some tests for dp2add instructions.
      vkd3d-shader/ir: Lower VSIR_OP_DP2ADD instructions.
      vkd3d-shader: Dump compilation messages as well.
      tests/shader_runner: Do not match tags that aren't present.
      tests/shader_runner: Introduce read_literal().
      tests/shader_runner: Introduce struct uniform_buffer.
      tests/d3dbc: Add some tests for pow instructions.
      vkd3d-shader/ir: Lower VSIR_OP_POW instructions.
      tests/shader_runner: Return the resource type and slot from parse_resource_reference().
      tests/shader_runner: Expect the "<type>-<slot>" format in parse_resource_reference().
      tests/shader_runner: Use parse_resource_reference() and read_literal() to implement clear operations.
      tests/shader_runner: Use parse_resource_reference() to implement probe operations.
      tests/shader_runner: Use parse_resource_reference() to implement write operations.
      vkd3d-shader/ir: Trace the progam on failure in vsir_transform_().
      vkd3d-shader/ir: Take the register count into account in vsir_program_add_fog_input().
      tests/hlsl: Require the wave-ops capability for wave-reconvergence.shader_test.
      tests/shader_runner_vulkan: Use storage image reads without format if supported.
      tests/shader_runner_vulkan: Require "shaderStorageImageReadWithoutFormat" for typed UAV loads.
      tests/shader_runner_vulkan: Allow unused input elements.
      tests/shader_runner_vulkan: Add a DXIL run.
      tests/shader_runner_vulkan: Add support for wave operations.
      tests/shader_runner_vulkan: Free the compiled shader on failure in compile_hlsl_and_scan().
      tests/shader_runner_vulkan: Free compiled shaders on error paths. (Valgrind)
      vkd3d-shader/dxil: Free attribute group attributes on cleanup. (Valgrind)
      vkd3d-shader/ir: Reset "ins" after invalidating it in vsir_program_normalise_sysval_array(). (Valgrind)
      vkd3d-shader/ir: Free the "semantic_name" field of the removed element in vsir_program_remove_signature_element().
      vkd3d-shader/hlsl: Cleanup "body" and "patch_body" in hlsl_emit_vsir(). (Valgrind)
      vkd3d-shader/hlsl: Cleanup "initializer_block" on error paths in hlsl_emit_vsir(). (Valgrind)
      vkd3d-shader: Introduce vkd3d_shader_code_from_bytecode_buffer().
      vkd3d-shader: Introduce vkd3d_bytecode_buffer_cleanup().
      vkd3d-shader/hlsl: Avoid leaking the output buffer on HLSL context errors in sm4_generate_rdef(). (Valgrind)
      vkd3d-shader/hlsl: Avoid leaking the output buffer on HLSL context errors in sm1_generate_ctab().
      vkd3d-shader/dxbc: Avoid leaking the output buffer on errors in vkd3d_shader_serialize_dxbc().
      vkd3d-shader/fx: Avoid leaking the output buffer on HLSL context errors in hlsl_fx_2_write(). (Valgrind)
      vkd3d-shader/fx: Avoid leaking the output buffer on HLSL context errors in hlsl_fx_4_write().
      vkd3d-shader/fx: Avoid leaking the output buffer on HLSL context errors in hlsl_fx_5_write().
      vkd3d-shader/fx: Do not allocate entries for anonymous types in write_type(). (Valgrind)
      vkd3d-shader/fx: Avoid accessing "entry" after freeing it in decompose_fx_4_state_function_call(). (Valgrind)
      vkd3d-shader/hlsl: Avoid leaking "body" in lower_f16tof32(). (Valgrind)
      vkd3d-shader/hlsl: Avoid leaking "body" in lower_f32tof16(). (Valgrind)
      vkd3d-shader/hlsl: Avoid leaking "body" in lower_isinf(). (Valgrind)
      vkd3d-shader/hlsl: Avoid leaking type name strings for unsigned types. (Valgrind)
      vkd3d-shader/hlsl: Avoid leaking method name strings. (Valgrind)
      vkd3d-shader/ir: Properly determine the defined block count in vsir_cfg_init(). (Valgrind)
      vkd3d-shader/hlsl: Avoid leaking modifier name strings. (Valgrind)
      vkd3d-shader/hlsl: Avoid leaking base type name strings on error paths. (Valgrind)
      vkd3d-shader/hlsl: Add a destructor for name strings. (Valgrind)
      vkd3d-shader/hlsl: Do not create name strings for KW_CONSTANTBUFFER tokens. (Valgrind)
      vkd3d-shader/hlsl: Avoid leaking expression blocks on "array" rule error paths.
      vkd3d-shader/tpf: Avoid leaking the output buffer on errors in tpf_write_signature().
      tests: Only read the requested component count in check_readback_data_vec_(). (Valgrind)
      vkd3d-shader/hlsl: Add a destructor for attribute lists. (Valgrind)
      vkd3d-shader/hlsl: Rename free_parse_initializer() to cleanup_parse_initializer().
      vkd3d-shader/hlsl: Add a destructor for initialiser lists. (Valgrind)
      vkd3d-shader/hlsl: Add a destructor for state blocks. (Valgrind)
      vkd3d-shader/hlsl: Introduce hlsl_func_parameters_cleanup().
      vkd3d-shader/hlsl: Avoid leaking redundant function declarations. (Valgrind)
      vkd3d-shader/hlsl: Add a destructor for function parameters. (Valgrind)
      readme: Provide a slightly more detailed overview of vkd3d.
      vkd3d-shader/hlsl: Avoid leaking the (empty) return block on error for returns without value. (Valgrind)
      vkd3d-shader/hlsl: Avoid leaking the RHS block on error for assignment expressions. (Valgrind)
      vkd3d-shader/hlsl: Avoid leaking conditional expression blocks on error. (Valgrind)
      tests/hlsl_d3d12: Avoid leaking the "errors" blobs in test_compile_null_terminator(). (Valgrind)
      tests/vkd3d_shader_api: Avoid leaking compiled shaders in test_parameters(). (Valgrind)
      tests/vkd3d_shader_api: Avoid leaking "compiler" in test_scan_signatures(). (Valgrind)
      tests/shader_runner: Avoid leaking "shader_source" in run_shader_tests(). (Valgrind)
      tests/test-driver: Get rid of the "line" and "model" parameters to print_entry().
      build: Use the same driver for all tests.
      build: Append $(EXEEXT) to SHADER_TEST_LOG_COMPILER.
      tests/test-driver: Introduce VKD3D_TEST_WRAPPER to wrap test execution.
      vkd3d-shader/hlsl: Introduce struct ctab_ctx.
      vkd3d-shader/hlsl: Introduce struct rdef_ctx.
      vkd3d-shader/preproc: Avoid accessing "source_name" after preproc_push_include() in preproc_lexer_parse(). (Valgrind)
      vkd3d-shader/preproc: Avoid leaking macro argument values on error paths. (Valgrind)

Nikolay Sivov (1):
      vkd3d-shader/fx: Fix shader object counters.

Santino Mazza (2):
      vkd3d-shader/hlsl: Store auxiliary CTAB type information in struct ctab_ctx.
      vkd3d-shader/hlsl: Store auxiliary RDEF type information in struct rdef_ctx.

Shaun Ren (22):
      tests/hlsl: Add some structured copy tests.
      tests/hlsl: Add more TGSM tests.
      vkd3d-shader/hlsl: Validate groupshared variables.
      vkd3d-shader/hlsl: Use a block in split_copy().
      vkd3d-shader/ir: Don't propagate SSAs when 32/64-bit conversions are performed.
      vkd3d-shader/ir: Set the correct source swizzles for immconsts in vsir_program_copy_propagation().
      vkd3d-shader/ir: Lower swapc instructions to movc.
      vkd3d-shader/ir: Optimise programs in vsir_program_transform().
      vkd3d-shader/hlsl: Emit structured TGSM declarations.
      vkd3d-shader/hlsl: Emit structured TGSM loads.
      vkd3d-shader/hlsl: Split array/struct copies with structured RHS.
      vkd3d-shader/hlsl: Introduce a split_copies() helper.
      vkd3d-shader/hlsl: Support non-load RHS in stream Append().
      tests/hlsl: Add some unroll attribute tests with non-static unroll limits.
      vkd3d-shader/hlsl: Fold casting from floating numerals to bools correctly in fold_cast().
      vkd3d-shader/hlsl: Remove flatten_conditional_branches() from hlsl_run_folding_passes().
      vkd3d-shader/hlsl: Defer evaluating unroll limit attributes until needed.
      vkd3d-shader/fx: Add some "sampler_dim" array overflow assertions.
      vkd3d-shader/fx: Write StructuredBuffer/ByteAddressBuffer object types only for fx_5_* profiles.
      vkd3d-shader/fx: Support *Buffer types in get_fx_4_type_name().
      vkd3d-shader/fx: Support *Buffer types in write_fx_4_type().
      tests/hlsl: Add effect variable tests for *Buffer types.

Victor Chiletto (6):
      vkd3d-shader/hlsl: Add an explicit hlsl_fixme() for whole struct structured stores.
      vkd3d-shader/hlsl: Add an explicit hlsl_fixme() for r-value matrix structured stores.
      tests/hlsl: Add new UAV structured store tests.
      vkd3d-shader/hlsl: Return the found index node on hlsl_index_chain_has_resource_access().
      vkd3d-shader/hlsl: Parse structured buffer subfield stores.
      vkd3d-shader/hlsl: Emit vsir structured stores.
```
