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. ```
participants (1)
-
Alexandre Julliard