Elizabeth Figura
03d02f9018
vkd3d-shader/hlsl: Write the used sampler dimension for generic samplers in the CTAB.
2025-11-10 16:18:59 +01:00
Francisco Casas
6ca05f458e
vkd3d-shader/hlsl: Actually emit 0xf write masks for FOG and PSIZE destination operands.
2025-11-10 15:54:59 +01:00
Shaun Ren
58d02da892
vkd3d-shader/hlsl: Use a bool type for "new_cond" in lower_conditional_block_discard_nz().
...
This fixes the assertion error
"sm4_generate_vsir_instr_expr Failed assertion: dst_type->e.numeric.type == HLSL_TYPE_BOOL"
which occurs when compiling the following HLSL shader using the ps_4_0 target profile:
uniform float4 x;
uniform bool b;
float4 main() : SV_Target
{
if (!b)
clip(x.x);
else
clip(x.y);
return x;
}
2025-11-10 15:51:26 +01:00
Elizabeth Figura
67d391fad8
vkd3d-shader/hlsl: Use replace_ir() for lower_discard_nz().
2025-11-06 15:59:50 +01:00
Elizabeth Figura
88b218cae1
vkd3d-shader/hlsl: Use replace_ir() for lower_resource_load_bias().
2025-11-06 15:59:01 +01:00
Elizabeth Figura
bf702331d9
vkd3d-shader/hlsl: Use replace_ir() for hlsl_normalize_binary_exprs().
2025-11-06 14:10:53 +01:00
Elizabeth Figura
974db85d07
vkd3d-shader/hlsl: Use replace_ir() for fold_unary_identities().
2025-11-06 14:10:53 +01:00
Shaun Ren
59b87c769a
vkd3d-shader/hlsl: Flatten conditional blocks containing discard_neg instructions.
...
For any `discard_neg c` instruction in a conditional block, we replace c with
cond ? c : 0 in a then block,
and
cond ? 0 : c in an else block.
2025-10-30 17:46:12 +01:00
Shaun Ren
787d49d6d8
vkd3d-shader/hlsl: Flatten conditional blocks containing discard_nz instructions.
...
For any `discard_nz c` instruction in a conditional block, we replace c with
(cond && c) in a then block,
and
(!cond && c) in an else block.
2025-10-30 17:46:12 +01:00
Shaun Ren
4d5a1528ab
vkd3d-shader/hlsl: Flatten conditional branches containing stores.
...
For an if block
if (cond)
{
<then_block>
}
else
{
<else_block>
}
We flatten it by first replacing any store instruction `v[[k]] = x`
in the then_block with the following:
1: load(v[[k]])
2: cond ? x : @1
3: v[[k]] = @2
Similarly, we replace any store instruction `v[[k]] = x` in the
else_block with the following:
1: load(v[[k]])
2: cond ? @1 : x
3: v[[k]] = @2
Then we can concatenate <then_block> and <else_block> together and
get rid of the if block.
2025-10-30 17:46:12 +01:00
Shaun Ren
200e66ba4f
vkd3d-shader/hlsl: Store the flatten type in struct hlsl_ir_if.
2025-10-30 17:46:12 +01:00
Shaun Ren
cf688f87f1
vkd3d-shader/hlsl: Cast discard_neg conditions to vec4 for d3dbc target profiles.
2025-10-30 17:46:12 +01:00
Elizabeth Figura
94c9595196
vkd3d-shader/hlsl: Use replace_ir() for fold_conditional_identities().
2025-10-28 16:30:49 +01:00
Elizabeth Figura
1f40222a0d
vkd3d-shader/hlsl: Use replace_ir() for hlsl_fold_constant_exprs().
2025-10-28 16:30:49 +01:00
Elizabeth Figura
6e8eeb8f7a
vkd3d-shader/hlsl: Use replace_ir() for hlsl_fold_constant_identities().
2025-10-28 16:30:49 +01:00
Elizabeth Figura
bdb31a4983
vkd3d-shader/hlsl: Use replace_ir() for hlsl_fold_constant_swizzles().
2025-10-28 16:30:49 +01:00
Elizabeth Figura
deb7a67d67
vkd3d-shader/hlsl: Introduce hlsl_block_add_constant().
2025-10-28 16:30:49 +01:00
Elizabeth Figura
937b80f3f2
vkd3d-shader: Remove the no longer used flat_constant_count field from struct vsir_program.
2025-10-13 18:40:25 +02:00
Elizabeth Figura
db41ba557b
vkd3d-shader/hlsl: Create vsir descriptor info in hlsl_parse().
2025-10-13 18:25:05 +02:00
Elizabeth Figura
0bfed6587a
vkd3d-shader/hlsl: Use replace_ir() for fold_redundant_casts().
2025-10-09 13:21:47 +02:00
Elizabeth Figura
adc8d5cfad
vkd3d-shader/hlsl: Use replace_ir() for fold_trivial_swizzles().
2025-10-09 13:21:47 +02:00
Elizabeth Figura
2a4ac90ad2
vkd3d-shader/hlsl: Use replace_ir() for fold_swizzle_chains().
2025-10-09 13:21:47 +02:00
Elizabeth Figura
f3522eae2e
vkd3d-shader/hlsl: Rename lower_ir() to replace_ir().
...
We want to use it for folding passes as well, but describing these as "lowering"
is not very accurate. Use the more generic term "replace".
2025-10-09 13:21:47 +02:00
Elizabeth Figura
be31842197
vkd3d-shader/hlsl: Return a node from lower_ir().
...
This allows us to use the same function for "folding" passes, which usually
replace with a node other than the last one added in a block.
2025-10-09 13:20:46 +02:00
Shaun Ren
d5770cd347
vkd3d-shader/hlsl: Add support for the centroid interpolation mode in SM1.
2025-10-06 15:18:50 +02:00