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
Elizabeth Figura
f4042ba752
vkd3d-shader/hlsl: Add a hlsl_block_add_resource_store() helper.
2025-03-10 14:56:11 +01:00
Elizabeth Figura
e7ff5da5b1
vkd3d-shader/hlsl: Add a hlsl_block_add_index() helper.
2025-03-10 14:56:11 +01:00
Elizabeth Figura
e5cabeafe5
vkd3d-shader/hlsl: Add a hlsl_block_add_loop() helper.
2025-03-10 14:56:11 +01:00
Elizabeth Figura
62196b2bf1
vkd3d-shader/hlsl: Add a hlsl_block_add_if() helper.
2025-03-10 14:56:11 +01:00
Elizabeth Figura
20aa37237d
vkd3d-shader/hlsl: Add a hlsl_block_add_jump() helper.
2025-03-10 14:56:11 +01:00
Elizabeth Figura
18ca7affad
vkd3d-shader/hlsl: Make min16uint into a first-class type.
...
And properly implement translation into some binary enumerations.
2025-03-06 17:15:15 +01:00
Elizabeth Figura
3cf4a4e95e
vkd3d-shader/hlsl: Use common hlsl_type_is_integer() and hlsl_base_type_is_integer() helpers.
2025-03-06 17:15:15 +01:00
Elizabeth Figura
055625448b
vkd3d-shader/hlsl: Add a hlsl_block_add_simple_load() helper.
2025-03-05 14:12:12 +01:00
Elizabeth Figura
d52df527ba
vkd3d-shader/hlsl: Add a hlsl_block_add_load_index() helper.
2025-03-05 14:12:12 +01:00
Elizabeth Figura
009f5765df
vkd3d-shader/hlsl: Return void from hlsl_block_add_store_component().
2025-03-05 14:12:12 +01:00
Elizabeth Figura
9e3ac35669
vkd3d-shader/hlsl: Pass the target block to hlsl_new_store_component().
2025-03-05 14:12:12 +01:00
Elizabeth Figura
e76c596d56
vkd3d-shader/hlsl: Add a hlsl_block_add_simple_store() helper.
2025-03-03 17:48:03 +01:00
Elizabeth Figura
fc4f440245
vkd3d-shader/hlsl: Add a hlsl_block_add_store_index() helper.
2025-03-03 17:48:03 +01:00
Elizabeth Figura
eafc97bcb3
vkd3d-shader/hlsl: Pass the target block to hlsl_new_load_component().
2025-03-03 17:48:03 +01:00
Elizabeth Figura
d053f3665d
vkd3d-shader/hlsl: Pass a block to hlsl_new_void_expr().
2025-03-03 17:48:03 +01:00
Elizabeth Figura
662d60ad6b
vkd3d-shader/hlsl: Add a hlsl_block_add_expr() helper.
2025-03-03 17:48:03 +01:00
Francisco Casas
7cb1970952
vkd3d-shader/hlsl: Don't cast all expressions to float.
...
Instead, allow half, bool, int, and uint, expressions that map to the
same float op to reach sm1_generate_vsir_instr_expr().
2025-03-03 17:26:15 +01:00