Giovanni Mascellani
8ec4f75654
vkd3d-shader/ir: Process all destinations when lowering SATURATE modifiers.
...
The instruction iterator should not be advanced when iterating
over more than one destination.
2025-10-16 14:56:30 +02:00
Giovanni Mascellani
737158e7b8
vkd3d-shader/ir: Remove SATURATE modifiers after lowering them.
2025-10-16 14:55:51 +02:00
Henri Verbeet
8df581b2d9
vkd3d-shader: Avoid referencing "ins" after insertion in vsir_program_materialise_phi_ssas_to_temps_in_function().
2025-10-16 14:30:41 +02:00
Shaun Ren
27f0475dbe
vkd3d-shader/ir: Keep source swizzles for registers with fixed masks in temp_allocator_set_src().
2025-10-16 14:29:11 +02:00
Shaun Ren
b5e2e1dd06
vkd3d-shader/ir: Determine the correct writemask for destinations with fixed masks.
2025-10-16 14:27:29 +02:00
Henri Verbeet
e7f258c622
vkd3d-shader/d3dbc: Get the resource/sampler index from the destination operand in vsir_program_lower_texld_sm1().
2025-10-15 12:45:39 +02:00
Conor McCarthy
997d445724
vkd3d-shader/ir: Fix the FTOU swizzle for MOVA in vsir_program_normalize_addr().
2025-10-15 12:41:49 +02:00
Conor McCarthy
13e631779d
vkd3d-shader/ir: Use an SSA intermediate in vsir_program_lower_precise_mad().
2025-10-15 12:41:49 +02:00
Conor McCarthy
1c23976660
vkd3d-shader/ir: Fix the addition swizzle in vsir_program_lower_precise_mad().
...
The swizzle from vsir_swizzle_from_writemask() is for use with a
contiguous write mask starting at bit zero, but we need the final write
mask to match that of the original MAD instruction.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58746
2025-10-15 12:41:49 +02:00
Giovanni Mascellani
8b8ee542d7
vkd3d-shader/ir: Lower SATURATE modifiers to instructions.
2025-10-14 16:21:05 +02:00
Giovanni Mascellani
835044dd8e
vkd3d-shader/ir: Introduce VSIR_OP_SATURATE to represent floating-point clamping to [0, 1].
2025-10-14 15:53:26 +02:00
Henri Verbeet
c89fd93859
vkd3d-shader/ir: Require signed operands for IREM instructions.
2025-10-14 15:49:18 +02:00
Henri Verbeet
320bdd6759
vkd3d-shader/ir: Validate IDIV instructions.
2025-10-14 15:49:18 +02:00
Giovanni Mascellani
b5b5c67b34
vkd3d-shader/ir: Lower ABSNEG modifiers to instructions.
2025-10-13 19:25:51 +02:00
Giovanni Mascellani
968eb7467c
vkd3d-shader/ir: Use VSIR_OP_NEG in insert_fragment_fog_before_ret(), in the common part.
...
The NEG source modifier is not generated any more during vsir
transformation, so it can be dropped in backends.
2025-10-13 19:13:05 +02:00
Giovanni Mascellani
ca23db5bae
vkd3d-shader/ir: Use VSIR_OP_NEG in insert_fragment_fog_before_ret(), in the doubly exponential case.
2025-10-13 19:13:01 +02:00
Giovanni Mascellani
b2d47693b4
vkd3d-shader/ir: Use VSIR_OP_NEG in insert_fragment_fog_before_ret(), in the exponential case.
2025-10-13 19:12:56 +02:00
Giovanni Mascellani
786ffe69f7
vkd3d-shader/ir: Use VSIR_OP_NEG in insert_fragment_fog_before_ret(), in the linear case.
2025-10-13 19:12:51 +02:00
Giovanni Mascellani
eb1210f517
vkd3d-shader/ir: Lower NEG modifiers to instructions.
2025-10-13 19:07:01 +02:00
Giovanni Mascellani
79736ae6ff
vkd3d-shader/ir: Introduce VSIR_OP_NEG to represent floating-point negation.
2025-10-13 19:06:34 +02:00
Henri Verbeet
9de229925d
vkd3d-shader/ir: Handle integer division by zero in vsir_program_lower_udiv().
...
This achieves two things:
- The GLSL backend no longer needs to handle this by itself. Likwise, the
MSL backend won't have to either.
- We no longer handle division by zero for DXIL UDiv and URem instructions,
which leave this undefined.
2025-10-13 19:00:05 +02:00
Elizabeth Figura
dd55b15865
vkd3d-shader/ir: Implement an initial vsir copy propagation pass.
2025-10-13 18:55:42 +02:00
Elizabeth Figura
0bb8272f26
vkd3d-shader: Introduce an interface to specify sm1 shadow samplers.
2025-10-13 18:40:52 +02:00
Elizabeth Figura
8d8132b2c7
vkd3d-shader/d3dbc: Create vsir descriptor information in the parser.
2025-10-13 18:14:41 +02:00
Francisco Casas
b1672fd3fe
vkd3d-shader/ir: Don't preallocate instructions in vsir_cfg_structure_list_emit_loop().
2025-10-08 13:43:52 +02:00