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
Giovanni Mascellani
8297ea9aa6
vkd3d/device: Require VK_KHR_zero_initialize_workgroup_memory when appropriate.
...
That extension (and the corresponding feature) must be enabled when
the Initializer operand is used for workgroup variables.
2025-02-26 16:11:50 +01:00
Nikolay Sivov
e746a4c12f
vkd3d-shader/fx: Improve state object nesting for the fx -> text output.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com >
2025-02-24 16:19:07 +01:00
Nikolay Sivov
09226543fe
vkd3d-shader/fx: Implement parsing complex value and index expressions.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com >
2025-02-24 16:19:07 +01:00
Henri Verbeet
58aed8fd0d
vkd3d-shader/fx: Use vkd3d_string_buffer_print_f32() in parse_fx_4_numeric_value().
...
Instead of "%f". vkd3d_string_buffer_print_f32() will use sufficient
precision to represent the stored value exactly, and will use '.' as
decimal separator regardless of the current locale.
2025-02-24 16:19:07 +01:00
Elizabeth Figura
2989373212
vkd3d-shader/hlsl: Add a hlsl_block_add_binary_expr() helper.
2025-02-24 16:19:07 +01:00
Elizabeth Figura
858b6a3e0b
vkd3d-shader/hlsl: Add a hlsl_block_add_cast() helper.
2025-02-24 16:19:07 +01:00
Elizabeth Figura
2e09257d94
vkd3d-shader/hlsl: Add a hlsl_block_add_unary_expr() helper.
2025-02-24 16:19:07 +01:00
Elizabeth Figura
b7ea23303e
vkd3d-shader/hlsl: Add a hlsl_block_add_float_constant() helper.
2025-02-24 16:19:07 +01:00
Elizabeth Figura
e830cdee71
vkd3d-shader/hlsl: Inline add_pow_expr().
...
The helper is used in one place.
2025-02-24 16:19:07 +01:00
Henri Verbeet
1fd89abcc3
vkd3d-shader: Enable DXIL support in the default configuration.
2025-02-24 15:10:08 +01:00
Henri Verbeet
fe4143ad19
vkd3d-shader/dxil: Generate I/O signatures with 16-bit component types for native 16-bit shaders.
...
Which incidentally matches the I/O signatures from the DXBC container.
2025-02-24 15:10:08 +01:00
Henri Verbeet
f5d702b09a
vkd3d-shader/dxbc: Validate component types in shader_parse_signature().
2025-02-24 15:10:08 +01:00
Henri Verbeet
b8d740ebfc
vkd3d-shader/dxbc: Output messages for invalid semantic name references in shader_parse_signature().
2025-02-24 15:10:08 +01:00
Henri Verbeet
3bcdb85ddc
vkd3d-shader/dxbc: Set the "elements_capacity" field as well in shader_parse_signature().
...
Leaving it as 0 mostly ends up doing the right thing in practice, but isn't
quite right.
2025-02-24 15:10:08 +01:00
Giovanni Mascellani
2feb3a3bba
vkd3d: Take the root signature from shaders when creating graphics pipelines.
...
If the root signature wasn't explicitly specified.
This fixes a failure in The Touryst.
2025-02-20 16:00:55 +01:00
Henri Verbeet
0796af7b4b
vkd3d: Avoid vkd3d_shader_parse_input_signature().
2025-02-20 15:57:26 +01:00
Henri Verbeet
2e62e9ea7e
vkd3d-shader: Handle arrayed elements in vkd3d_shader_signature_from_shader_signature().
2025-02-20 15:57:26 +01:00
Henri Verbeet
4e28d1c658
vkd3d-shader/dxbc: Do not extract I/O signatures for DXIL shaders.
...
The DXIL parser doesn't need them.
2025-02-20 15:57:26 +01:00
Henri Verbeet
f4a3d17269
vkd3d-shader/dxil: Avoid using the I/O signatures from the DXBC container.
...
We currently generate our own I/O signatures inside the DXIL parser, but
use the element counts from the DXBC container signatures to allocate
the input_params/output_params/patch_constant_params arrays. That
happens to work for well-behaved inputs, but it's asking for trouble.
2025-02-20 15:57:26 +01:00
Elizabeth Figura
d5a2ff5c12
vkd3d-shader/hlsl: Add a hlsl_block_add_int_constant() helper.
2025-02-20 15:56:31 +01:00
Elizabeth Figura
992d20def3
vkd3d-shader/hlsl: Add a hlsl_block_add_uint_constant() helper.
2025-02-20 15:50:13 +01:00
Elizabeth Figura
79ad8c9354
vkd3d-shader/hlsl: Handle error instructions in hlsl_new_swizzle().
...
We already check for error instructions when parsing swizzles, but if allocation
fails at codegen time we would like to avoid asserting when subsequently
constructing a swizzle.
2025-02-20 15:49:40 +01:00
Elizabeth Figura
4072aa4a4b
vkd3d-shader/hlsl: Remove the type equality assertions in hlsl_new_ternary_expr().
...
Similar to d1c2ae3f0e
, this is a bit too strict
and may prevent e.g. simultaneous use of float and float1 at codegen time.
However, in this case the inciting factor is that in the case of allocation
failure at codegen time, we would like to allow one or more arguments to have
error type.
2025-02-20 15:48:25 +01:00
Elizabeth Figura
ba868ed4a6
vkd3d-shader/hlsl: Skip transformation passes on error.
...
The primary motivation here is to avoid needing to worry about instructions
potentially pointing to the preallocated error instruction in the case of
allocation failure.
This doesn't cover all passes, but none of the other passes make assumptions
about instruction sources.
2025-02-20 15:48:24 +01:00