Giovanni Mascellani
9867d48c3a
vkd3d-shader/ir: Use the iterator in vsir_program_lower_ifc().
2025-07-17 14:04:28 +02:00
Giovanni Mascellani
2d848b5bc0
vkd3d-shader/ir: Introduce an abstraction to iterate through vsir instructions.
2025-07-17 14:04:00 +02:00
Giovanni Mascellani
ba545669cd
vkd3d-shader/ir: Validate ISHR operations.
2025-07-16 18:07:26 +02:00
Giovanni Mascellani
126ff8e4f5
vkd3d-shader/ir: Validate ISHL operations.
2025-07-16 18:07:26 +02:00
Giovanni Mascellani
94d999bd8a
vkd3d-shader/ir: Validate IREM operations.
2025-07-16 18:07:26 +02:00
Giovanni Mascellani
636e9a91bb
vkd3d-shader/ir: Validate INEG operations.
2025-07-16 18:07:26 +02:00
Giovanni Mascellani
7d92142fe0
vkd3d-shader/ir: Validate INE operations.
2025-07-16 18:07:26 +02:00
Giovanni Mascellani
d288d3c088
vkd3d-shader/ir: Validate IMIN operations.
2025-07-16 18:07:26 +02:00
Giovanni Mascellani
2a62b7035c
vkd3d-shader/ir: Validate IMAX operations.
2025-07-16 18:07:26 +02:00
Giovanni Mascellani
5fc8baabfb
vkd3d-shader/ir: Validate IMAD operations.
2025-07-16 18:07:26 +02:00
Giovanni Mascellani
56247130c1
vkd3d-shader/ir: Validate UAV flags in vsir programs.
2025-07-16 17:44:13 +02:00
Giovanni Mascellani
32bf71ba96
vkd3d-shader/ir: Validate descriptor flags in vsir programs.
2025-07-16 17:34:35 +02:00
Giovanni Mascellani
15561c1e56
vkd3d-shader/ir: Do not make a local copy of the instructions array in vsir_program_flatten_hull_shader_phases().
2025-07-14 18:25:24 +02:00
Giovanni Mascellani
44ca7b7b1b
vkd3d-shader/ir: Handle SSA registers when flattening hull shader phases.
...
Currently when a phase is duplicated more than once SSA registers
are not refreshed, therefore they are invalidly assigned more than
once.
2025-07-14 18:19:23 +02:00
Giovanni Mascellani
ad1aa739c2
vkd3d-shader/ir: Collect the hull shader phase flattener code together.
2025-07-14 18:19:23 +02:00
Giovanni Mascellani
ed464a4f4c
vkd3d-shader/ir: Validate ILT instructions.
2025-07-14 18:12:22 +02:00
Giovanni Mascellani
715d23ebbb
vkd3d-shader/ir: Validate IGE instructions.
2025-07-14 18:12:22 +02:00
Giovanni Mascellani
9f455667eb
vkd3d-shader/ir: Validate IEQ instructions.
2025-07-14 18:12:22 +02:00
Giovanni Mascellani
c29e8188ff
vkd3d-shader/ir: Validate IADD instructions.
2025-07-14 18:12:22 +02:00
Giovanni Mascellani
4d1fabd350
vkd3d-shader/ir: Validate HTAN instructions.
2025-07-14 18:12:22 +02:00
Giovanni Mascellani
e954f75862
vkd3d-shader/ir: Validate HSIN instructions.
2025-07-14 18:12:22 +02:00
Giovanni Mascellani
5dd452a5c7
vkd3d-shader/ir: Validate HCOS instructions.
2025-07-14 18:12:22 +02:00
Giovanni Mascellani
98b0ca544a
vkd3d-shader/ir: Test the data type when validating comparison operations.
...
I had forgot that bit.
2025-07-14 18:06:55 +02:00
Henri Verbeet
22ebccfeb7
vkd3d-shader/ir: Create SSA values with the corresponding dimension in vsir_program_lower_udiv().
2025-06-26 16:08:32 +02:00
Henri Verbeet
043f6f21b0
vkd3d-shader/ir: Create SSA values with the corresponding dimension in vsir_program_lower_sm4_sincos().
...
For example, in the final test from trigonometry.shader_test, we have:
sincos r1.x <v4:float>, null <float>, l(3.00000000e+01) <s:float>
which currently gets turned into
mov sr0.xyzw <v4:float>, l(3.00000000e+01) <s:float>
sin r1.x <v4:float>, sr0.xyzw <v4:float>
That doesn't seem ideal, and should possibly be rejected by the
validator, but ends up working out well enough for the SPIR-V backend.
It's a bit more problematic to deal with for the GLSL backend.
2025-06-26 16:02:38 +02:00