vkd3d/tests
Francisco Casas 3d9baef321 vkd3d-shader/hlsl: Support initialization of implicit size arrays.
HLSL_ARRAY_ELEMENTS_COUNT_IMPLICIT (zero) is used as a temporal value
for elements_count for implicit size arrays.
This value is replaced by the correct one after parsing the initializer.

In case the implicit array is not initialized correctly, hlsl_error()
is called but the array size is kept at 0. So the rest of the code
must handle these cases.

In shader model 5.1, unlike in 5.0, declaring a multi-dimensional
object-type array with the last dimension implicit results in
an error. This happens even in presence of an initializer.

So, both gen_struct_fields() and declare_vars() first check if the
shader model is 5.1, the array elements are objects, and if there is
at least one implicit array size to handle the whole type as an
unbounded resource array.

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
2022-08-23 15:57:54 -05:00
..
.gitignore tests: Add some C HLSL preprocessor tests. 2020-11-24 22:28:11 +01:00
abs.shader_test vkd3d-shader/hlsl: Parse the abs() intrinsic. 2021-09-20 20:53:01 +02:00
arithmetic-float.shader_test vkd3d-shader/hlsl: Do not generate infinities in SM1. 2022-04-25 22:12:17 +02:00
arithmetic-int-uniform.shader_test tests: Test arithmetic int operations without constant operands. 2022-07-05 22:43:30 +02:00
arithmetic-int.shader_test vkd3d-shader/hlsl: Test the INT_MIN / -1 constant folding special case. 2022-04-27 21:45:35 +02:00
arithmetic-uint.shader_test vkd3d-shader/hlsl: Fold constant modulus. 2022-04-15 21:18:20 +02:00
bitwise.shader_test tests: Mark some tests as requiring shader model 4.0. 2022-03-08 17:45:21 +01:00
cast-broadcast.shader_test tests: Test complex broadcasts. 2022-05-02 11:30:00 +02:00
cast-to-float.shader_test vkd3d-shader/hlsl: Write SM4 casts from bool. 2022-07-05 22:43:18 +02:00
cast-to-half.shader_test tests: Mark individual test directives as todo. 2022-04-15 21:18:06 +02:00
cast-to-int.shader_test vkd3d-shader/hlsl: Write SM4 casts from bool. 2022-07-05 22:43:18 +02:00
cast-to-uint.shader_test vkd3d-shader/hlsl: Write SM4 casts from bool. 2022-07-05 22:43:18 +02:00
conditional.shader_test tests: Simplify "probe" directive syntax and parsing a bit. 2022-04-20 23:01:04 +02:00
d3d12_crosstest.h tests: Load libvulkan dynamically in d3d12_crosstest.h. 2022-04-20 16:41:46 +02:00
d3d12_invalid_usage.c tests: Move invalid BC1_UNORM buffer view tests to d3d12_invalid_usage. 2019-08-12 09:31:19 +02:00
d3d12_test_utils.h tests: Move check_readback_data_vec4() to utils.h. 2022-05-31 21:53:16 +02:00
d3d12.c vkd3d: Send typed UAV unknown format read support info to vkd3d-shader. 2022-08-09 22:14:28 +02:00
floor.shader_test tests: Mark some tests as requiring shader model 4.0. 2022-03-08 17:45:21 +01:00
hlsl_d3d12.c vkd3d-shader: Add predefined macros to the macro list. 2021-01-26 21:28:14 +01:00
hlsl-array-dimension.shader_test tests: Mark individual test directives as todo. 2022-04-15 21:18:06 +02:00
hlsl-bool-cast.shader_test vkd3d-shader/hlsl: Write SM4 casts from bool. 2022-07-05 22:43:18 +02:00
hlsl-clamp.shader_test tests: Use SM1-compatible uniform layouts in shader tests. 2022-03-08 17:45:16 +01:00
hlsl-comma.shader_test tests: Import comma tests from Wine. 2020-10-02 19:04:03 +02:00
hlsl-cross.shader_test vkd3d-shader/hlsl: Implement cross() intrinsic function. 2021-11-22 16:25:05 +01:00
hlsl-dot.shader_test vkd3d-shader/hlsl: Write SM4 dot product instructions. 2022-06-27 21:23:28 +02:00
hlsl-duplicate-modifiers.shader_test vkd3d-shader/hlsl: Lower matrix casts. 2022-06-09 19:13:22 +02:00
hlsl-for.shader_test tests: Simplify "probe" directive syntax and parsing a bit. 2022-04-20 23:01:04 +02:00
hlsl-function-cast.shader_test tests: Mark individual test directives as todo. 2022-04-15 21:18:06 +02:00
hlsl-function-overload.shader_test tests: Mark individual test directives as todo. 2022-04-15 21:18:06 +02:00
hlsl-function.shader_test tests: Mark individual invalid shaders as todo. 2022-04-20 23:00:57 +02:00
hlsl-gather-offset.shader_test tests: Add tests for texture gather methods. 2022-01-26 18:36:28 +01:00
hlsl-gather.shader_test tests: Mark individual test directives as todo. 2022-04-15 21:18:06 +02:00
hlsl-initializer-flatten.shader_test vkd3d-shader/hlsl: Support all complex initalizers. 2022-04-27 21:45:41 +02:00
hlsl-initializer-implicit-array.shader_test vkd3d-shader/hlsl: Support initialization of implicit size arrays. 2022-08-23 15:57:54 -05:00
hlsl-initializer-invalid-arg-count.shader_test vkd3d-shader/hlsl: Support all complex initalizers. 2022-04-27 21:45:41 +02:00
hlsl-initializer-local-array.shader_test vkd3d-shader/hlsl: Support all complex initalizers. 2022-04-27 21:45:41 +02:00
hlsl-initializer-matrix.shader_test vkd3d-shader/hlsl: Lower matrix casts. 2022-06-09 19:13:22 +02:00
hlsl-initializer-nested.shader_test vkd3d-shader/hlsl: Support all complex initalizers. 2022-04-27 21:45:41 +02:00
hlsl-initializer-numeric.shader_test vkd3d-shader/hlsl: Support complex numeric initializers. 2022-04-15 21:18:15 +02:00
hlsl-initializer-objects.shader_test vkd3d-shader/hlsl: Skip implicit conversion if types are equal. 2022-08-23 15:57:54 -05:00
hlsl-initializer-static-array.shader_test vkd3d-shader/hlsl: Support all complex initalizers. 2022-04-27 21:45:41 +02:00
hlsl-initializer-struct.shader_test vkd3d-shader/hlsl: Support all complex initalizers. 2022-04-27 21:45:41 +02:00
hlsl-intrinsic-override.shader_test tests: Mark individual test directives as todo. 2022-04-15 21:18:06 +02:00
hlsl-invalid.shader_test vkd3d-shader: Apply type modifiers recursively when cloning a type. 2021-06-28 13:43:52 +02:00
hlsl-ldexp.shader_test vkd3d-shader/hlsl: Parse the ldexp() intrinsic. 2022-06-27 21:23:31 +02:00
hlsl-lerp.shader_test vkd3d-shader/hlsl: Parse lerp() intrinsic. 2022-06-27 21:23:33 +02:00
hlsl-majority-pragma.shader_test vkd3d-shader/hlsl: Parse the mul() intrinsic. 2022-06-09 19:13:29 +02:00
hlsl-majority-typedef.shader_test vkd3d-shader/hlsl: Parse the mul() intrinsic. 2022-06-09 19:13:29 +02:00
hlsl-matrix-indexing.shader_test vkd3d-shader/hlsl: Allow storing to matrices. 2022-05-02 11:30:18 +02:00
hlsl-mul.shader_test vkd3d-shader/hlsl: Parse the mul() intrinsic. 2022-06-09 19:13:29 +02:00
hlsl-nested-arrays.shader_test tests: Add some tests for nested arrays. 2021-03-05 18:00:55 +01:00
hlsl-numeric-constructor-truncation.shader_test vkd3d-shader/hlsl: Parse matrix constructors. 2022-04-27 21:45:45 +02:00
hlsl-numeric-types.shader_test vkd3d-shader/hlsl: Allow storing to matrices. 2022-05-02 11:30:18 +02:00
hlsl-return-implicit-conversion.shader_test vkd3d-shader/hlsl: Lower matrix casts. 2022-06-09 19:13:22 +02:00
hlsl-return-void.shader_test tests: Mark individual test directives as todo. 2022-04-15 21:18:06 +02:00
hlsl-shape.shader_test vkd3d-shader/hlsl: Split matrix operations. 2022-06-09 19:13:27 +02:00
hlsl-single-numeric-initializer.shader_test tests: Test single numeric initializers. 2022-02-04 16:45:57 +01:00
hlsl-state-block-syntax.shader_test vkd3d-shader/hlsl: Parse state blocks in variable definitions. 2021-10-01 19:32:26 +02:00
hlsl-static-initializer.shader_test tests: Mark individual test directives as todo. 2022-04-15 21:18:06 +02:00
hlsl-storage-qualifiers.shader_test tests: Mark individual test directives as todo. 2022-04-15 21:18:06 +02:00
hlsl-struct-array.shader_test tests: Mark some more tests as requiring shader model 4.0. 2022-04-07 18:32:21 +02:00
hlsl-struct-assignment.shader_test tests: Import HLSL struct assignment tests from Wine. 2020-10-05 20:52:46 +02:00
hlsl-struct-semantics.shader_test tests: Try to avoid using SV_Position from shaders which can be tested with SM1. 2022-04-08 11:49:31 +02:00
hlsl-vector-indexing-uniform.shader_test tests: Mark individual test directives as todo. 2022-04-15 21:18:06 +02:00
hlsl-vector-indexing.shader_test vkd3d-shader/hlsl: Support vector indexing. 2022-04-20 23:02:11 +02:00
logic-operations.shader_test vkd3d-shader/hlsl: Write SM4 logic or instructions. 2022-07-05 22:43:28 +02:00
math.shader_test tests: Use SM1-compatible uniform layouts in shader tests. 2022-03-08 17:45:16 +01:00
matrix-semantics.shader_test vkd3d-shader/hlsl: Lower matrix casts. 2022-06-09 19:13:22 +02:00
max.shader_test tests: Use SM1-compatible uniform layouts in shader tests. 2022-03-08 17:45:16 +01:00
multiple-rt.shader_test tests: Add a test for multiple render targets. 2022-06-09 19:13:12 +02:00
nointerpolation.shader_test tests: Add a test for the "nointerpolation" modifier. 2022-03-22 18:41:43 +01:00
object-references.shader_test vkd3d-shader/hlsl: Check for non-static object references. 2022-08-23 15:57:54 -05:00
pow.shader_test tests: Use SM1-compatible uniform layouts in shader tests. 2022-03-08 17:45:16 +01:00
preproc-if-expr.shader_test vkd3d-shader/preproc: Allow capital U and L after integer constants as well. 2022-02-02 21:06:21 +01:00
preproc-if.shader_test tests: Add some basic tests for #if and related preprocessor directives. 2020-11-23 22:07:44 +01:00
preproc-ifdef.shader_test tests: Add some tests for #ifdef and defined(). 2020-11-23 22:07:47 +01:00
preproc-invalid.shader_test tests: Add some tests for shaders which fail to preprocess. 2020-11-24 22:27:59 +01:00
preproc-macro.shader_test tests: Add some tests for macro expansion. 2020-11-24 22:27:53 +01:00
preproc-misc.shader_test tests: Add some more miscellaneous preprocessor tests. 2020-11-24 22:28:05 +01:00
round.shader_test tests: Avoid using non-float uniforms where possible. 2022-03-08 17:45:18 +01:00
sampler-offset.shader_test tests: Mark individual test directives as todo. 2022-04-15 21:18:06 +02:00
sampler.shader_test tests: Add a shader test for texture sampling. 2021-11-09 19:56:26 +01:00
saturate.shader_test tests: Avoid using non-float uniforms where possible. 2022-03-08 17:45:18 +01:00
shader_runner_d3d9.c tests/shader_runner: Make the render target into a resource. 2022-06-09 19:13:06 +02:00
shader_runner_d3d11.c tests/shader_runner: Make the render target into a resource. 2022-06-09 19:13:06 +02:00
shader_runner_d3d12.c tests: Add a basic shader test for UAVs. 2022-06-09 19:13:09 +02:00
shader_runner_vulkan.c tests: Add a basic shader test for UAVs. 2022-06-09 19:13:09 +02:00
shader_runner.c tests: Add a test for multiple render targets. 2022-06-09 19:13:12 +02:00
shader_runner.h tests/shader_runner: Make the render target into a resource. 2022-06-09 19:13:06 +02:00
shader-interstage-interface.shader_test tests: Make test_shader_interstage_interface() into a shader test. 2022-04-05 17:50:22 +02:00
swizzle-0.shader_test tests: Import HLSL swizzle tests from Wine. 2020-10-01 21:47:51 +02:00
swizzle-1.shader_test tests: Import HLSL swizzle tests from Wine. 2020-10-01 21:47:51 +02:00
swizzle-2.shader_test tests: Import HLSL swizzle tests from Wine. 2020-10-01 21:47:51 +02:00
swizzle-3.shader_test tests: Import HLSL swizzle tests from Wine. 2020-10-01 21:47:51 +02:00
swizzle-4.shader_test tests: Import HLSL swizzle tests from Wine. 2020-10-01 21:47:51 +02:00
swizzle-5.shader_test tests: Import HLSL swizzle tests from Wine. 2020-10-01 21:47:51 +02:00
swizzle-6.shader_test tests: Import HLSL swizzle tests from Wine. 2020-10-01 21:47:51 +02:00
swizzle-7.shader_test tests: Import HLSL swizzle tests from Wine. 2020-10-01 21:47:51 +02:00
texture-load-typed.shader_test tests: Mark some more tests as requiring shader model 4.0. 2022-04-07 18:32:21 +02:00
texture-load.shader_test tests: Simplify "probe" directive syntax and parsing a bit. 2022-04-20 23:01:04 +02:00
trigonometry.shader_test tests: Simplify "probe" directive syntax and parsing a bit. 2022-04-20 23:01:04 +02:00
uav.shader_test tests: Add a basic shader test for UAVs. 2022-06-09 19:13:09 +02:00
utils.h tests/shader_runner: Allow probing a single component. 2022-05-31 21:53:26 +02:00
vkd3d_api.c tests: Load libvulkan dynamically in vkd3d_api.c. 2022-04-20 16:41:42 +02:00
vkd3d_common.c vkd3d-common: Move vkd3d_write_mask_is_contiguous() from vkd3d-shader. 2019-07-05 17:52:04 +02:00
vkd3d_shader_api.c vkd3d-shader/sm1: Add support for vkd3d_shader_scan(). 2021-10-06 18:35:46 +02:00
vulkan_procs.h tests: Introduce a Vulkan shader runner. 2022-04-12 19:00:19 +02:00
writemask-assignop-0.shader_test tests: Add some tests for fused assignment operations with writemasks. 2021-03-15 20:39:13 +01:00
writemask-assignop-1.shader_test tests: Add some tests for fused assignment operations with writemasks. 2021-03-15 20:39:13 +01:00
writemask-assignop-2.shader_test tests: Add some tests for fused assignment operations with writemasks. 2021-03-15 20:39:13 +01:00
writemask-assignop-3.shader_test tests: Add some tests for fused assignment operations with writemasks. 2021-03-15 20:39:13 +01:00