713adaa56a
vkd3d-shader/ir: Pass a uint32_t write mask to vkd3d_write_mask_component_count().
2023-12-13 22:33:04 +01:00
e1aa12f94b
vkd3d-shader/ir: Pass a uint32_t write mask to vkd3d_write_mask_get_component_idx().
2023-12-13 22:33:03 +01:00
45679a966c
vkd3d-shader/ir: Pass a local copy of location to control_point_normaliser_emit_hs_input().
2023-12-07 21:57:49 +01:00
b5c067b41a
vkd3d-shader/ir: Do not merge signature elements which have different interpolation modes.
...
Regression in signature normalisation, however the old code was not
correct either because it would apply the interpolation mode to all
components. Found in an Assassin's Creed: Valhalla shader.
2023-12-06 15:31:18 +01:00
eb05e434ff
vkd3d-shader/dxil: Implement the DXIL LOAD instruction.
2023-11-22 22:07:59 +01:00
59730ecfd8
vkd3d-shader/dxil: Implement the DXIL GEP instruction.
2023-11-22 22:07:58 +01:00
b1123ed35f
vkd3d-shader/ir: Correctly compute the TEMP count after hull shader flattening.
...
The previous computation was incorrect because the count was taken
after resetting it to zero (as part of setting the instruction to NOP).
2023-11-20 22:07:41 +01:00
5cb17cfd1c
vkd3d-shader/ir: Validate IFC instructions.
2023-11-20 22:07:36 +01:00
849a8f3add
vkd3d-shader/ir: Expect two sources for LOOP in SM1-3.
2023-11-20 22:07:35 +01:00
0c5c18bdce
vkd3d-shader/ir: Validate index count for IMMCONST64 registers.
2023-11-09 21:15:51 +01:00
b74470b9d2
vkd3d-shader/ir: Validate index count for IMMCONST registers.
2023-11-09 21:15:49 +01:00
c867682982
vkd3d-shader/ir: Validate index count for NULL registers.
2023-11-09 21:15:47 +01:00
12fcb8dcc6
vkd3d-shader/ir: Validate register indices.
2023-11-09 21:15:44 +01:00
b7aeb5dd70
vkd3d-shader/ir: Use vsir_register_init() to initialize a register.
2023-11-09 21:15:42 +01:00
a869069a48
vkd3d-shader/ir: Validate the TEMP register indices in each HS phase.
2023-11-09 21:15:40 +01:00
0f4bda9c9d
vkd3d-shader/ir: Keep track of hull shader phases.
2023-11-09 21:15:38 +01:00
5768c019c1
vkd3d-shader/ir: Check the handler before changing it to NOP in remove_dead_code().
2023-11-09 21:15:29 +01:00
c7a7d9a18c
vkd3d-shader/ir: Normalize all I/O registers to INPUT/OUTPUT/PATCHCONST.
...
Specifically, map COLOROUT to OUTPUT, and map INCONTROLPOINT to INPUT for domain
shaders as well as hull shaders.
Obscure the non-existent differences from the view of the backend.
2023-11-09 21:14:52 +01:00
852eefc01d
vkd3d-shader/ir: Synthesize HS inputs with the register index and write mask of the signature element.
...
This pass was written as if to output normalized I/O, but it runs before the I/O
normalization pass.
Fixes: 98b5e2c6e0
2023-11-07 22:26:53 +01:00
12240efa79
vkd3d-shader/spirv: Use register counts from the signature and shader desc.
2023-11-07 22:26:49 +01:00
7d49f9637a
vkd3d-shader/ir: Check that SWITCH blocks are correctly nested.
2023-11-07 22:26:05 +01:00
93632fb407
vkd3d-shader/ir: Check that REP blocks are correctly nested.
2023-11-07 22:26:04 +01:00
92c36615ed
vkd3d-shader/ir: Check that LOOP blocks are correctly nested.
2023-11-07 22:26:03 +01:00
2f7d52dba4
vkd3d-shader/ir: Check that IF blocks are correctly nested.
2023-11-07 22:26:01 +01:00
0a7e200f89
vkd3d-shader/ir: Do not enfore DCL_TEMPS count for hull shaders.
...
Hull shaders have a different temps count for each phase, and the
parser only reports the count for the patch constant phase.
In order to properly check for temps count on hull shaders, we first
need to decode its phases.
2023-11-07 22:26:00 +01:00