Anna (navi) Figueiredo Gomes
a7266284ee
vkd3d-shader/hlsl: Move hlsl_ir_function_decl->extern_vars to a local variable.
2025-07-23 16:56:06 +02:00
Francisco Casas
844f33025e
vkd3d-shader/hlsl: Dump processed function bodies.
2025-07-23 16:31:59 +02:00
Shaun Ren
84a0a8ae86
vkd3d-shader/hlsl: Handle nodes with NULL data types in hlsl_replace_node().
2025-06-24 14:50:43 +02:00
Shaun Ren
3bf232e841
vkd3d-shader/hlsl: Only dump store writemasks for single register types.
...
This fixes a segfault on matrix stores in dump_ir_store().
2025-06-24 14:50:21 +02:00
Elizabeth Figura
288020bce8
vkd3d-shader/ir: Allocate SSA registers to temps.
2025-06-23 17:39:12 +02:00
Nikolay Sivov
f135f7fe07
vkd3d-shader/hlsl: Add a stub for the noise() intrinsic.
...
This function is used in tx_1_0 code, but is also supported in
fx_2_0 and fx_4_0 expressions.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com >
2025-06-19 20:36:27 +02:00
Elizabeth Figura
a06b9f6646
vkd3d-shader/hlsl: Do not emit HLSL_OP1_ABS for unsigned types.
2025-05-14 14:55:59 +02:00
Elizabeth Figura
cdc74a9377
vkd3d-shader/hlsl: Emit an error when min16uint is used in d3dbc target profiles.
...
Fixes: 18ca7affad
2025-05-14 14:12:19 +02:00
Anna (navi) Figueiredo Gomes
820430001f
vkd3d-shader/hlsl: Use the source data type in clone_interlocked().
2025-05-12 15:31:09 +02:00
Francisco Casas
758a4bef09
vkd3d-shader/hlsl: Parse barriers.
...
And introduce hlsl_ir_sync to represent them.
2025-05-05 14:15:14 +02:00
Shaun Ren
2a89b23ede
vkd3d-shader/hlsl: Validate and record stream output objects.
...
Validation should only be done for stream outputs that are used.
2025-04-23 18:01:06 +02:00
Shaun Ren
d620ad4942
vkd3d-shader/hlsl: Introduce HLSL_REGSET_STREAM_OUTPUTS regset.
2025-04-23 17:54:54 +02:00
Shaun Ren
8059608af9
vkd3d-shader/hlsl: Parse the RestartStrip() method for stream outputs.
2025-04-23 17:54:54 +02:00
Shaun Ren
9525eb2f0c
vkd3d-shader/hlsl: Parse the Append() method for stream outputs.
2025-04-23 17:54:54 +02:00
Shaun Ren
9b65cc8895
vkd3d-shader/hlsl: Support HLSL_CLASS_STREAM_OUTPUT in hlsl type helpers.
2025-04-23 17:54:54 +02:00
Elizabeth Figura
f576ecc992
vkd3d-shader/hlsl: Introduce a compiler pass to vectorize stores.
2025-04-03 20:29:20 +02:00
Elizabeth Figura
ea21dddec9
vkd3d-shader/hlsl: Allow compiling directly to GLSL.
2025-04-02 19:33:41 +02:00
Elizabeth Figura
0642531c2a
vkd3d-shader/hlsl: Introduce hlsl_block_add_swizzle().
2025-03-12 22:02:31 +01:00
Elizabeth Figura
f8c53fae37
vkd3d-shader/hlsl: Introduce hlsl_block_add_resource_load().
2025-03-12 22:02:21 +01:00
Shaun Ren
b650e7a503
vkd3d-shader/hlsl: Validate stream output object declarations.
...
Valid stream output objects must be single-element containing a
PointStream/LineStream/TriangleStream object.
Moreover, stream output objects cannot be declared globally.
2025-03-12 21:12:56 +01:00
Shaun Ren
870c68dd27
vkd3d-shader/hlsl: Validate and record input primitive types in geometry shaders.
2025-03-12 21:11:46 +01:00
Shaun Ren
57bb28e841
vkd3d-shader/hlsl: Parse primitive type modifiers in geometry shaders.
2025-03-12 20:42:59 +01:00
Shaun Ren
e880b11626
vkd3d-shader/hlsl: Parse the maxvertexcount attribute.
2025-03-12 20:42:15 +01:00
Shaun Ren
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
Shaun Ren
f484527cfb
vkd3d-shader/hlsl: Rename init_deref() to hlsl_init_deref().
2025-03-12 17:22:44 +01:00