Giovanni Mascellani
de9725b6ba
vkd3d-shader/ir: Remove DCL_TEMPS instructions.
...
We have to do work to keep it updated across passes and we never read it.
2024-01-23 20:26:38 +01:00
Giovanni Mascellani
4b869f73bb
vkd3d-shader/ir: Run tracing and validation for DXIL code too.
2024-01-23 20:26:36 +01:00
Conor McCarthy
6df725718a
vkd3d-shader/ir: Refactor return code checking in vkd3d_shader_normalise().
...
We started with only one or two of these but it has become excessive.
Patch originally written by Conor McCarthy and updated by Giovanni Mascellani.
2024-01-23 20:26:34 +01:00
Conor McCarthy
b3903636f7
vkd3d-shader/dxil: Implement DX intrinsic Binary.
2024-01-23 20:26:29 +01:00
Conor McCarthy
6c71cd5a72
vkd3d-shader/dxil: Add an operand type code for the return type.
2024-01-23 20:26:28 +01:00
Nikolay Sivov
0117e4fb7e
vkd3d-shader/fx: Add initial support for writing passes for fx_2_0.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-01-23 20:26:22 +01:00
Nikolay Sivov
b478f0a300
vkd3d-shader/fx: Add initial support for writing fx_2_0 binaries.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-01-23 20:26:21 +01:00
Nikolay Sivov
56100d36b1
vkd3d-shader/fx: Check technique type in global scope as well.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-01-23 20:26:20 +01:00
Nikolay Sivov
2c1905b780
vkd3d-shader/hlsl: Allow annotations on techniques.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-01-23 20:26:19 +01:00
Nikolay Sivov
76a689d43f
vkd3d-shader/hlsl: Allow annotations on passes.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-01-23 20:26:18 +01:00
Nikolay Sivov
e72f8f9a30
vkd3d-shader/hlsl: Add passes variables to the techniques.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-01-23 20:26:16 +01:00
Nikolay Sivov
fe8881747b
vkd3d-shader/hlsl: Add initial support for parsing annotations.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-01-23 20:26:15 +01:00
Giovanni Mascellani
232b2ad360
vkd3d-shader/ir: Validate PHI instructions.
2024-01-23 20:26:08 +01:00
Giovanni Mascellani
56f9057985
vkd3d-shader/ir: Do not allow IMMCONST and IMMCONST64 as destination registers.
2024-01-23 20:26:06 +01:00
Giovanni Mascellani
21633fcc52
vkd3d-shader/ir: Refactor register-type-specific code in parameter validation.
...
To better accommodate code for other register types.
2024-01-23 20:26:05 +01:00
Giovanni Mascellani
fb6409bda1
vkd3d-shader/ir: Check that all instructions appear in a block.
2024-01-23 20:26:03 +01:00
Giovanni Mascellani
dc56320b31
vkd3d-shader/tpf: Support SV_ViewportArrayIndex in pixel and vertex shaders.
2024-01-22 22:19:14 +01:00
Giovanni Mascellani
3a90f3e29d
vkd3d-shader/tpf: Support SV_InstanceID in vertex shaders.
2024-01-22 22:19:13 +01:00
Giovanni Mascellani
b500381b5c
vkd3d-shader/tpf: Support SV_RenderTargetArrayIndex in pixel and vertex shaders.
2024-01-22 22:19:12 +01:00
Giovanni Mascellani
45495f54f2
vkd3d-shader/spirv: Use capability ShaderViewportIndexLayerEXT for decoration ViewportIndex.
2024-01-22 22:19:11 +01:00
Giovanni Mascellani
6ac525d6c3
vkd3d-shader/spirv: Use capability ShaderViewportIndexLayerEXT for decoration Layer.
...
Capability Geometry allows to use the Layer builtin in geometry and pixel
shaders. For vertex and domain shaders ShaderLayer should be used, but it's only
available starting from SPIR-V 1.5. ShaderViewportIndexLayerEXT can be used
instead with extension SPV_EXT_shader_viewport_index_layer.
2024-01-22 22:19:09 +01:00
Henri Verbeet
adc02eada8
vkd3d-shader/ir: Store the temporary register count in struct vsir_program.
2024-01-22 22:18:53 +01:00
Henri Verbeet
94ca46916a
vkd3d-shader/ir: Store the SSA register count in struct vsir_program.
2024-01-22 22:18:52 +01:00
Henri Verbeet
7b85cd6a31
vkd3d-shader/ir: Store the "use_vocp" field in struct vsir_program.
2024-01-22 22:18:51 +01:00
Henri Verbeet
23dcd4f22b
vkd3d-shader/ir: Store the shader version in struct vsir_program.
2024-01-22 22:18:50 +01:00
Henri Verbeet
fc9043be3c
vkd3d-shader/ir: Introduce struct vsir_program.
2024-01-22 22:18:48 +01:00
Conor McCarthy
55c7cd5c22
vkd3d-shader/dxil: Handle semantic kind ISFRONTFACE.
2024-01-22 22:18:33 +01:00
Conor McCarthy
9f409b67d7
vkd3d-shader/dxil: Handle semantic kind VERTEXID.
2024-01-22 22:18:32 +01:00
Conor McCarthy
ca7487a56d
vkd3d-shader/spirv: Handle UINT32_MAX result from FIRSTBIT_HI and FIRSTBIT_SHI instructions.
2024-01-22 22:18:27 +01:00
Conor McCarthy
bfdc8b31a3
vkd3d-shader/dxil: Implement DX intrinsic BufferLoad for typed buffers.
2024-01-22 22:18:21 +01:00
Conor McCarthy
85052ba93e
vkd3d-shader/dxil: Load typed UAV descriptors.
2024-01-22 22:18:19 +01:00
Conor McCarthy
89d1ef83f4
vkd3d-shader/dxil: Load typed SRV descriptors.
2024-01-22 22:18:18 +01:00
Conor McCarthy
5ebe0cc717
vkd3d-shader/spirv: Do not assert VKD3D_DATA_UINT in spirv_compiler_emit_ld_raw_structured_srv_uav().
2024-01-22 22:18:17 +01:00
Conor McCarthy
80d7ea2924
vkd3d-shader/dxil: Pass the code block and instruction in a struct to intrinsic handlers.
...
Simplifies handling of intrinsics which need to emit more than one
instruction.
2024-01-22 22:18:16 +01:00
Henri Verbeet
f69c8b1cc4
vkd3d-shader/d3dbc: Store the "offset" field as an unsigned int in hlsl_sm1_register_from_semantic().
2024-01-18 23:16:06 +01:00
Giovanni Mascellani
67902d4304
vkd3d-shader/ir: Validate RET instructions.
2024-01-18 23:15:58 +01:00
Giovanni Mascellani
af96730276
vkd3d-shader/ir: Validate SWITCH_MONOLITHIC instructions.
2024-01-18 23:15:57 +01:00
Giovanni Mascellani
46ebb404d7
vkd3d-shader/ir: Validate BRANCH instructions.
2024-01-18 23:15:56 +01:00
Giovanni Mascellani
bc9db34cdc
vkd3d-shader/ir: Validate LABEL instructions.
2024-01-18 23:15:55 +01:00
Giovanni Mascellani
dd1b2feec0
vkd3d-shader/ir: Validate LABEL registers.
2024-01-18 23:15:54 +01:00
Giovanni Mascellani
17f4afc2b5
vkd3d-shader/ir: Validate that structured CF does not appear in block-based shaders.
2024-01-18 23:15:53 +01:00
Giovanni Mascellani
1d45b7a422
vkd3d-shader/spirv: Normalise the shader before allocating registers.
...
So registers are allocated after normalisation (which could require
additional registers).
2024-01-18 23:15:48 +01:00
Zebediah Figura
9ad48f16ea
vkd3d-shader/hlsl: Forbid mismatched argument types in ternaries.
2024-01-18 23:15:44 +01:00
Zebediah Figura
275901557c
vkd3d-shader/hlsl: Handle scalar values in ternaries.
2024-01-18 23:15:43 +01:00
Zebediah Figura
11112798c8
vkd3d-shader/hlsl: Handle scalar conditions in ternaries.
2024-01-18 23:15:42 +01:00
Zebediah Figura
2c8751478f
vkd3d-shader/hlsl: Forbid objects in ternary conditions.
2024-01-18 23:15:41 +01:00
Giovanni Mascellani
38fdf24002
vkd3d-shader: Make relative address sources mutable too.
...
They were forgotten in 78d95889bd
.
Fixes: 78d95889bd
2024-01-18 23:15:35 +01:00
Conor McCarthy
83851133c5
vkd3d-shader/ir: Set merged signature element interpolation mode only from used elements.
2024-01-18 23:15:27 +01:00
Conor McCarthy
b8280e4210
vkd3d-shader/ir: Revert "Do not merge signature elements which have different interpolation modes.".
...
This reverts commit b5c067b41a
.
The commit causes regressions in other shaders because unused elements
do not have an interpolation mode.
2024-01-18 23:15:25 +01:00
Conor McCarthy
efe800f7f0
vkd3d-shader/dxil: Handle the DXIL SWITCH instruction.
2024-01-18 23:15:14 +01:00