856f4b55f6
vkd3d-shader/hlsl: Set the correct index count for sm1 DEPTHOUT.
2025-04-02 17:58:26 +02:00
227e2cc0f5
vkd3d-shader/hlsl: Use vsir_*_from_hlsl_node() helpers in more places.
2025-04-02 17:58:18 +02:00
bd055fac1c
vkd3d-shader/hlsl: Store geometry shader properties in struct vsir_program.
2025-03-18 15:46:02 +01:00
b1ace5763a
vkd3d-shader/hlsl: Implement input semantics for geometry shaders.
2025-03-18 15:40:11 +01:00
8af3173955
vkd3d-shader/hlsl: Support input primitive arrays in geometry shaders.
2025-03-18 15:40:11 +01:00
ea99d2c2cd
vkd3d-shader/hlsl: Lower integer modulus for d3dbc target profiles.
2025-03-18 15:27:04 +01:00
828afe188c
vkd3d-shader/hlsl: Don't lower integer MOD and DIV on const passes for d3dbc target profiles.
...
These bitwise operations are not available in these profiles.
2025-03-18 15:27:03 +01:00
bc382c6835
vkd3d-shader/hlsl: Reuse shader model 1-3 constants.
2025-03-18 14:21:02 +01:00
c9a5f586b7
vkd3d-shader/hlsl: Zero-initialize "nonconst_i" and "ret_swizzle" in copy_propagation_replace_with_deref().
...
GCC without LTO is unable to determine that these are never used
uninitialized.
2025-03-13 13:59:05 +01:00
09b9f8ff9f
vkd3d-shader/hlsl: Fix invalidation of the wrong components in copy-propagation.
...
Fixes: 1bba18aa75
.
2025-03-12 22:14:25 +01:00
a87b1efbd2
vkd3d-shader/hlsl: Don't invalidate OOB constant derefs.
2025-03-12 22:09:57 +01:00
0642531c2a
vkd3d-shader/hlsl: Introduce hlsl_block_add_swizzle().
2025-03-12 22:02:31 +01:00
f8c53fae37
vkd3d-shader/hlsl: Introduce hlsl_block_add_resource_load().
2025-03-12 22:02:21 +01:00
ae5261b98b
vkd3d-shader/hlsl: Forbid output parameters in geometry shaders.
...
Outputs in geometry shaders must be written to streams.
2025-03-12 21:15:15 +01:00
4137ea5ab7
vkd3d-shader/hlsl: Validate stream output parameters in geometry shaders.
2025-03-12 21:13:59 +01:00
870c68dd27
vkd3d-shader/hlsl: Validate and record input primitive types in geometry shaders.
2025-03-12 21:11:46 +01:00
e880b11626
vkd3d-shader/hlsl: Parse the maxvertexcount attribute.
2025-03-12 20:42:15 +01:00
7be7e589a9
vkd3d-shader/hlsl: Lower TRUNC expressions for SM1.
...
Basically, separate lower_casts_to_int() into the lowering of the CAST
and the lowering of the TRUNC, so that TRUNCs that are not part of a
cast are lowered as well.
2025-03-12 18:26:23 +01:00
7ab7b2ab8b
vkd3d-shader/hlsl: Implement copy-propagation of derefs with a non-constant index.
...
We implement a transformation that propagates loads with a single
non-constant index in its deref path. Consider a load of the form
var[[a0][a1]...[i]...[an]], where ak are integral constants, and i is
an arbitrary non-constant node. If, for all j, the following holds:
var[[a0][a1]...[j]...[an]] = x[[c0*j + d0][c1*j + d1]...[cm*j + dm]],
where ck, dk are constants, then we can replace the load with
x[[c0*i + d0]...[cm*i + dm]]. This pass is implemented by
copy_propagation_replace_with_deref().
2025-03-12 18:16:59 +01:00
2bc7fa568f
vkd3d-shader/hlsl: Introduce component_index_from_deref_path_node().
2025-03-12 17:19:56 +01:00
2368ff6637
vkd3d-shader/hlsl: Introduce simplify_exprs().
...
Also invoke simplify_exprs() after replace_deref_path_with_offset().
2025-03-12 17:18:52 +01:00
c6f18c9394
vkd3d-shader/hlsl: Support indirect addressing of uniforms in sm4_generate_vsir_reg_from_deref().
2025-03-12 17:14:52 +01:00
f6c35144e4
vkd3d-shader/hlsl: Support patch arrays in hlsl_reg_from_deref().
2025-03-12 17:10:32 +01:00
261b5120f6
vkd3d-shader/hlsl: Allow non-constant indices in register_deref_usage().
2025-03-12 17:10:32 +01:00
1c2434f4d3
vkd3d-shader/hlsl: Allow uint1-typed deref path nodes.
...
When derefs with non-constant indices are copy-propagated, it is
possible to end up with uint1-typed path nodes.
Also, introduce hlsl_is_vec1().
2025-03-12 17:09:35 +01:00