Conor McCarthy
06dd0ccd4c
vkd3d-shader/spirv: Use the register index count in I/O register assertions.
2023-05-26 19:11:03 +02:00
Conor McCarthy
178a7677e2
vkd3d-shader/spirv: Use the register index count in shader_register_get_io_indices().
2023-05-26 19:11:02 +02:00
Conor McCarthy
d46250a59b
vkd3d-shader/spirv: Use the register index count in default register dereferences.
2023-05-26 19:11:00 +02:00
Conor McCarthy
a2b3f70d8e
vkd3d-shader/spirv: Use the register index count in aggregate register dereferences.
2023-05-26 19:10:58 +02:00
Conor McCarthy
ad08864134
vkd3d-shader/spirv: Use the register index count in spirv_compiler_get_register_name().
2023-05-26 19:10:56 +02:00
Conor McCarthy
b3927726cc
vkd3d-shader/spirv: Use the register index count in non-I/O variable registers in vkd3d_symbol_make_register().
2023-05-26 19:10:54 +02:00
Conor McCarthy
ec5f195b6b
vkd3d-shader/spirv: Use the register index count in I/O registers in vkd3d_symbol_make_register().
2023-05-26 19:10:52 +02:00
Conor McCarthy
532fe01818
vkd3d-shader/spirv: Set the register index count in spirv_compiler_emit_default_control_point_phase().
2023-05-26 19:10:49 +02:00
Conor McCarthy
9c6040df02
vkd3d-shader/spirv: Set the register index count in spirv_compiler_emit_dcl_indexable_temp().
2023-05-26 19:10:47 +02:00
Conor McCarthy
bf1ecc0f60
vkd3d-shader/spirv: Set the register index count in spirv_compiler_emit_hull_shader_builtins().
2023-05-26 19:10:33 +02:00
Conor McCarthy
7e58511b76
vkd3d-shader/spirv: Set the register index count in spirv_compiler_get_invocation_id().
2023-05-26 19:10:30 +02:00
Ethan Lee
ea7d8c65bd
vkd3d-shader/tpf: Add support for emitting sample_l instructions.
...
Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
2023-05-24 22:00:41 +02:00
Conor McCarthy
6835e8176f
vkd3d-shader/ir: Normalise signatures and input/output registers to the Shader Model 6 pattern.
...
In Shader Model 6 each signature element can span a range of register
indices, or 'rows', and system values do not share a register index with
non-system values. Inputs and outputs are referenced by element index
instead of register index. This patch merges multiple signature elements
into a single element under the following conditions:
- The register index in a load or store is specified dynamically by
including a relative address parameter with a base register index. The
dcl_index_range instruction is used to identify these.
- A register declaration is split across multiple elements which declare
different components of the register.
- A patch constant function writes tessellation factors. These are an
array in SPIR-V, but in SM 5.x each factor is declared as a separate
register, and these are dynamically indexed by the fork/join instance
id. Elimination of multiple fork/join phases converts the indices to
constants, but merging the signature elements into a single arrayed
element matches the SPIR-V output.
All references to input/output register indices are converted to element
indices. If a relative address is present, the element index is moved up
a slot so it cannot be confused with a constant offset. Existing code
only handles register index relative addressing for tessellation factors.
This patch adds generic support for it.
2023-05-24 22:00:29 +02:00
Conor McCarthy
110e48e54d
vkd3d-shader/ir: Eliminate struct vkd3d_shader_normaliser.
2023-05-24 22:00:28 +02:00
Conor McCarthy
31682c52c7
vkd3d-shader/spirv: Support emitting multi-dimensional array variables.
2023-05-24 22:00:27 +02:00
Francisco Casas
e060773c19
vkd3d-shader/hlsl: Extend the liveness of nodes produced outside loops.
...
Otherwise, it is possible that the register used by the temp is
overridden by a subsequent instruction within the same loop.
2023-05-24 22:00:21 +02:00
Francisco Casas
fbd2df2ad5
tests: Add minimal tests for temp lifetimes within a loop.
2023-05-24 22:00:19 +02:00
Zebediah Figura
855bb71f6d
vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_nequal().
2023-05-23 21:08:22 +02:00
Zebediah Figura
d565caafb5
vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_mul().
2023-05-23 21:08:21 +02:00
Zebediah Figura
623cd94997
vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_add().
2023-05-23 21:08:20 +02:00
Zebediah Figura
7d9b24fe11
vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_neg().
2023-05-23 21:08:19 +02:00
Zebediah Figura
eb04829e66
vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_cast().
2023-05-23 21:08:17 +02:00
Ethan Lee
24d4ab7fb3
vkd3d-shader/hlsl: Add support for SampleGrad() method.
...
Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
2023-05-23 21:07:49 +02:00
Ethan Lee
c3f10fe271
tests: Add a test for SampleGrad() method.
...
Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
2023-05-23 21:07:47 +02:00
Nikolay Sivov
1af662ae50
tests: Add RWBuffer writing test.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:36 +02:00
Zebediah Figura
66dab357eb
tests: Add support for UAV buffers in the d3d11 runner.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:36 +02:00
Nikolay Sivov
f470c00453
tests: Add support for UAV buffers to d3d12 runner.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:36 +02:00
Nikolay Sivov
74c0ad0a7a
tests: Rename readback helper to be more generic.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:28 +02:00
Nikolay Sivov
a4ebde202a
tests: Add support for UAV buffers in Vulkan runner.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:28 +02:00
Nikolay Sivov
cf8cacd336
vkd3d-shader/hlsl: Improve UAV format type checking for buffer types.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:27 +02:00
Nikolay Sivov
cff22ecde8
vkd3d-shader/hlsl: Add support for writing RWStructuredBuffer declarations.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:26 +02:00
Nikolay Sivov
3de824bfd8
vkd3d-shader/hlsl: Add support for RWBuffer object.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:24 +02:00
Nikolay Sivov
44a90f5d41
vkd3d-shader: Fix dcl_uav_typed_* formatting.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:24 +02:00
Ethan Lee
fb9328d030
vkd3d-shader/hlsl: Fold constant integral abs().
...
Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
2023-05-22 22:03:18 +02:00
Nikolay Sivov
dfa0076473
vkd3d-shader/hlsl: Add support for sample index argument in Load().
2023-05-22 22:03:12 +02:00
Nikolay Sivov
dc41444941
vkd3d-shader/hlsl: Convert ternary operator true/false values to a common type.
2023-05-09 21:51:46 +02:00
Nikolay Sivov
a064009d3b
tests: Simplify conditional test.
2023-05-09 21:51:46 +02:00
Conor McCarthy
be4a71da7d
vkd3d-shader/tpf: Validate input and output index ranges for default control point phases.
2023-05-09 21:51:33 +02:00
Conor McCarthy
3e50c4d13b
vkd3d-shader/tpf: Remove an unnecessary carriage return from a parser error message.
2023-05-09 21:51:32 +02:00
Conor McCarthy
6dd1b01284
vkd3d-shader/tpf: Validate index range declarations.
2023-05-09 21:51:31 +02:00
Conor McCarthy
d565fbdcd6
vkd3d-shader/tpf: Validate input/output registers.
2023-05-09 21:51:29 +02:00
Conor McCarthy
2166088b0b
vkd3d-shader/tpf: Validate signature element masks.
2023-05-09 21:51:28 +02:00
Conor McCarthy
b8e6482365
vkd3d-shader/tpf: Validate signature element register indices.
2023-05-09 21:51:19 +02:00
Conor McCarthy
adf7db021c
vkd3d-shader/tpf: Validate input/output register index counts.
2023-05-09 21:51:17 +02:00
Zebediah Figura
b1bc4044ae
vkd3d-shader/hlsl: Use %option nodefault in the lexer.
2023-05-09 21:51:09 +02:00
Zebediah Figura
600fdcd112
vkd3d-shader/hlsl: Lex invalid characters in #line directives.
...
Avoid letting them fall through to the default rule.
2023-05-09 21:51:08 +02:00
Zebediah Figura
7b8845474d
vkd3d-shader/preproc: Use %option nodefault in the lexer.
2023-05-09 21:51:06 +02:00
Zebediah Figura
871cf0b4b5
vkd3d-shader/preproc: Ignore newlines in C comments.
...
Avoid letting them fall through to the default rule.
2023-05-09 21:51:05 +02:00
Zebediah Figura
ddbfd88e74
vkd3d-shader/preproc: Lex whitespace and invalid characters in #include and #line directives.
...
Avoid letting them fall through to the default rule.
A syntax error will be emitted by the parser.
2023-05-09 21:51:01 +02:00
Zebediah Figura
da7670f7c8
vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from add_conditional().
2023-05-09 21:50:37 +02:00