Henri Verbeet
45d9a097e6
vkd3d-shader/hlsl: Move sm4_free_extern_resources() to hlsl_codegen.c.
2024-12-19 21:09:32 +01:00
Henri Verbeet
b143754360
vkd3d-shader/hlsl: Move sm4_get_extern_resources() to hlsl_codegen.c.
2024-12-19 21:09:32 +01:00
Henri Verbeet
0236c480e3
vkd3d-shader/hlsl: Make sm4_get_interpolation_mode() static.
2024-12-19 21:09:32 +01:00
Francisco Casas
59df26af79
vkd3d-shader/hlsl: Lower sample lods for SM1.
...
For SM1 the lod bias should be in src0.w.
2024-12-18 17:27:43 +01:00
Anna (navi) Figueiredo Gomes
f09ac4959e
vkd3d-shader/hlsl: Implement the GatherCmp() methods.
2024-12-18 17:27:43 +01:00
Henri Verbeet
e8cc288426
vkd3d-shader/hlsl: Move CTAB generation to hlsl_codegen.c.
2024-12-17 16:42:53 +01:00
Giovanni Mascellani
64126a00c3
vkd3d-shader/ir: Give more meaningful names to I/O normalisation levels.
...
The previous names "not normalised" and "fully normalised" have meanings
which are likely to change with time. OTOH including a description of the
normalisation level in the enumerant seems excessive. Relating
normalisation levels to shader model versions might be a reasonable
compromise.
2024-12-12 17:21:49 +01:00
Elizabeth Figura
09095403ac
vkd3d-shader/hlsl: Store swizzles in vsir format.
...
The previous format matched sm1 and sm4, but if we're going to be feeding
everything through vsir, we want vsir's format.
2024-12-12 17:20:23 +01:00
Elizabeth Figura
474a0ac4e2
vkd3d-shader/hlsl: Use swizzle helpers in more places.
2024-12-12 17:11:53 +01:00
Elizabeth Figura
a905a78a96
vkd3d-shader/hlsl: Use a structure for matrix swizzles.
2024-12-12 17:11:27 +01:00
Victor Chiletto
ed6061dfae
vkd3d-shader/hlsl: Drop the _ir_ infix from enum hlsl_loop_unroll_type.
2024-12-12 16:54:07 +01:00
Victor Chiletto
a1d995e740
vkd3d-shader/hlsl: Unroll loops with conditional jumps.
2024-12-12 16:54:04 +01:00
Victor Chiletto
351d58a95b
vkd3d-shader/hlsl: Partially defer continue resolution.
...
We need 'for' iter blocks to be separate for loop unrolling.
2024-12-12 16:41:34 +01:00
Victor Chiletto
5d8448a44e
vkd3d-shader/hlsl: Remove loop_unrolling_find_unrollable_loop().
...
Since loop unrolling doesn't clone the entire program anymore, we can
express it as a hlsl_transform_ir() transform.
2024-12-12 16:41:34 +01:00
Victor Chiletto
de3a365fea
vkd3d-shader/hlsl: Do not clone the entire program for loop unrolling.
2024-12-12 16:41:34 +01:00
Victor Chiletto
0a8c4a6fa2
vkd3d-shader/hlsl: Run copy propagation incrementally during loop unrolling.
2024-12-12 16:41:34 +01:00
Victor Chiletto
7bee33f948
vkd3d-shader/hlsl: Allow copy propagation to be stopped early.
2024-12-12 16:41:34 +01:00
Victor Chiletto
3cb9e8dc3b
vkd3d-shader/hlsl: Explicitly track the copy propagation state stack.
2024-12-12 16:41:18 +01:00
Shaun Ren
2c9cf7c78b
vkd3d-shader/hlsl: Implement normalization of binary expressions.
...
We normalize binary expressions by attempting to group constants
together, in order to facilitate further simplification of the
expressions.
For any binary operator OP, non-constants x, y, and constants a, b, we
apply the following rewrite rules:
a OP x -> x OP a, if OP is commutative.
(x OP a) OP b -> x OP (a OP b), if OP is associative.
(x OP a) OP y -> (x OP y) OP a, if OP is associative and commutative.
x OP (y OP a) -> (x OP y) OP a, if OP is associative.
Note that we consider floating point operations to be
non-associative.
2024-12-11 15:32:22 +01:00
Francisco Casas
65b67e84a8
vkd3d-shader/tpf: Remove hlsl_ctx from tpf_compiler.
...
This completes the hlsl->vsir->tpf translation.
2024-12-10 15:52:52 +01:00
Francisco Casas
f22729461e
vkd3d-shader/hlsl: Store hull and domain shader properties in vsir_program.
...
The alternative to adding the vsir_program->tess_output_primitive and
vsir_program->tess_partitioning fields would be to emit the vsir
DCL_TESSELLATOR_OUTPUT_PRIMITIVE and DCL_TESSELLATOR_PARTITIONING
instructions, like DXIL does, but I think that the preference is to store
these kind of data directly in the vsir_program.
2024-12-10 15:52:52 +01:00
Francisco Casas
347e7a396d
vkd3d-shader/hlsl: Generate CTAB outside sm1_generate_vsir().
...
For consistency with the sm4_generate_rdef() and sm4_generate_vsir()
functions.
2024-12-10 15:52:52 +01:00
Francisco Casas
ca9bb2e089
vkd3d-shader/hlsl: Generate RDEF outside tpf_compile().
2024-12-10 15:52:52 +01:00
Francisco Casas
ecddc39b31
vkd3d-shader/hlsl: Store SM4 constant buffer declarations in vsir program.
2024-12-10 15:52:52 +01:00
Francisco Casas
aa3a716249
vkd3d-shader/hlsl: Allow lowering separate sampler arrays on deref offset 0.
2024-12-10 15:52:52 +01:00