Commit Graph

8535 Commits

Author SHA1 Message Date
Giovanni Mascellani
44c80c60b8 vkd3d-shader/dxil: Parse string attributes with string value in parameter attribute groups. 2025-11-20 17:47:47 +01:00
Giovanni Mascellani
64738f5d9f vkd3d-shader/dxil: Parse string attributes in parameter attribute groups. 2025-11-20 17:43:07 +01:00
Giovanni Mascellani
e8db25750c vkd3d-shader/dxil: Parse well-known attributes with numeric value in parameter attribute groups. 2025-11-20 17:42:23 +01:00
Giovanni Mascellani
090490576a vkd3d-shader/dxil: Parse well-known attributes in parameter attribute groups. 2025-11-20 17:41:00 +01:00
Giovanni Mascellani
b174c64308 vkd3d-shader/dxil: Parse the parameter attribute group records.
Except that individual attributes are not parsed yet.
2025-11-20 17:30:22 +01:00
Giovanni Mascellani
c8d95c2fe4 vkd3d-shader: Explicitly initialize the parser status to VKD3D_OK.
That's already happening because all parsers are zero-initialized,
but making it explicit is clearer.
2025-11-20 17:24:39 +01:00
Conor McCarthy
25719f93fa vkd3d-shader/dxil: Get rid of struct sm6_block.
Emission of code into individual block instruction arrays was done to
enable construction of a control flow graph. A graph is constructed from
the flat instruction array in a later pass, so blocks are not needed.

It is possible to emit instructions directly into the array in struct
vsir_program instead of from sm6_function_emit_instructions(), but since
the patch constant function occurs first in DXIL hull shaders, this would
reverse the current order of functions in the flat array. That may be
acceptable, but it is left for a later patch in case any issues arise.
2025-11-20 17:21:16 +01:00
Conor McCarthy
6643c848fd vkd3d-shader/dxil: Emit phi instructions during parsing. 2025-11-20 17:21:16 +01:00
Conor McCarthy
28e58e0c85 vkd3d-shader/dxil: Move relative index validation outside sm6_parser_get_value_index().
This allows sm6_parser_get_value_index() to be called with relative indices
requiring different validation.
2025-11-20 17:21:16 +01:00
Conor McCarthy
7d3a520060 vkd3d-shader/dxil: Initialise or validate forward-referenced values in a helper function.
A future patch needs to call this function from another location.
2025-11-20 17:21:16 +01:00
Conor McCarthy
8a6c5cb401 vkd3d-shader/dxil: Emit an error if a return instruction has operands. 2025-11-20 17:21:16 +01:00
Conor McCarthy
32d0613bcb vkd3d-shader/dxil: Emit return instructions during parsing. 2025-11-20 17:21:15 +01:00
Conor McCarthy
c9f660ec55 vkd3d-shader/dxil: Emit switch instructions during parsing. 2025-11-20 17:21:15 +01:00
Conor McCarthy
8fdc156adb vkd3d-shader/dxil: Emit branch instructions during parsing. 2025-11-20 17:21:15 +01:00
Henri Verbeet
cfe9cd3794 Release 1.18. vkd3d-1.18 2025-11-20 11:36:06 +01:00
Francisco Casas
5fe8a0c70f vkd3d-shader/hlsl: Retrieve error_instr instead of NULL in hlsl_block_add_resource_load().
Fixes: 06a503975f
2025-11-20 11:31:00 +01:00
Francisco Casas
06a503975f vkd3d-shader/hlsl: Avoid member access on NULL resource load (ubsan).
In some scenarios this resource load is NULL, and we are still doing
&load->node on it.

    vkd3d/libs/vkd3d-shader/hlsl.c:2195:12: runtime error: member access
            within null pointer of type 'struct hlsl_ir_resource_load'

This happens in tests/hlsl/sampler-state.shader_test, in the following
test:

    [pixel shader fail]
    Texture2D tex;

    float4 main(): sv_target
    {
        return tex.Sample(sampler_state {}, float2(0, 0));
    }
2025-11-18 17:42:11 +01:00
Giovanni Mascellani
654c96fc94 tests/d3d12: Mark a texture aliasing test as todo on Intel. 2025-11-17 15:21:08 +01:00
Giovanni Mascellani
ffbf0320ba tests/hlsl: Mark a denormalization mode test as todo on Intel.
It behaves the same as llvmpipe.
2025-11-17 15:20:47 +01:00
Henri Verbeet
124bdae77c vkd3d-shader: Explicitly support all chained compilation structures with vkd3d_shader_scan().
Most of these will have no effect on the returned information, but it is
always valid to include them.
2025-11-17 15:19:07 +01:00
Henri Verbeet
c8c52933d3 vkd3d-shader: Document vkd3d_shader_scan_thread_group_size_info as a supported chained compilation structure. 2025-11-17 15:19:07 +01:00
Anna (navi) Figueiredo Gomes
dd3524444d vkd3d-shader/hlsl: Properly free default values when discarding them. 2025-11-17 15:17:45 +01:00
Anna (navi) Figueiredo Gomes
990be02cca vkd3d-shader/hlsl: Add a default value fail test with all allowed instructions.
Co-Authored-By: Francisco Casas <fcasas@codeweavers.com>
2025-11-17 15:15:47 +01:00
Giovanni Mascellani
7f377879fc vkd3d-shader/spirv: Clamp push constant CBV sizes to those of the push constant ranges backing them.
Otherwise invalid SPIR-V may be generated, because the CBV field in
"push_cb_struct" may end up overlapping with a subsequent one.
2025-11-12 15:24:30 +01:00
Giovanni Mascellani
2903831f79 tests/hlsl: Test using an SRV in combination with a CBV larger than the declared uniforms.
This appears to be valid on native (no validation message is
raised) but is not properly handled by vkd3d.
2025-11-12 15:19:33 +01:00