[PATCH vkd3d 1/8] tests: Add additional subtests to implicit array initialization.
Giovanni Mascellani
gmascellani at codeweavers.com
Fri May 6 03:16:11 CDT 2022
Signed-off-by: Giovanni Mascellani <gmascellani at codeweavers.com>
Il 05/05/22 15:16, Giovanni Mascellani ha scritto:
> From: Francisco Casas <fcasas at codeweavers.com>
>
> Signed-off-by: Francisco Casas <fcasas at codeweavers.com>
>
> ---
> v3:
> - Simplified tests that are expected to fail.
> - Addeed a tests for implicit arrays in a typedef.
> - Added a test for an array of complex elements.
> - Moved all tests not expected to fail to the top.
> - Removed the 'Implicit array of elements of size 0
> with broadcast initialization' test. Replaced with a
> simple 'Broadcast to an implicit array' test from zf.
> - Calling 'implicit arrays' as 'implicit size arrays' now.
> ---
> ...lsl-initializer-implicit-array.shader_test | 223 +++++++++++++++++-
> 1 file changed, 222 insertions(+), 1 deletion(-)
>
> diff --git a/tests/hlsl-initializer-implicit-array.shader_test b/tests/hlsl-initializer-implicit-array.shader_test
> index d2b94da4..648825eb 100644
> --- a/tests/hlsl-initializer-implicit-array.shader_test
> +++ b/tests/hlsl-initializer-implicit-array.shader_test
> @@ -2,6 +2,7 @@
> float4 main() : SV_TARGET
> {
> float4 arr[] = {10, 20, 30, 40, 50, 60, 70, 80};
> +
> return arr[1];
> }
>
> @@ -10,9 +11,229 @@ todo draw quad
> todo probe all rgba (50, 60, 70, 80)
>
>
> +[pixel shader]
> +float4 main() : sv_target
> +{
> + float4 arr1[2] = {1, 2, 3, 4, 5, 6, 7, 8};
> + float4 arr2[] = arr1;
> +
> + return arr2[1];
> +}
> +
> +[test]
> +todo draw quad
> +todo probe all rgba (5.0, 6.0, 7.0, 8.0)
> +
> +
> +[pixel shader]
> +float4 main() : sv_target
> +{
> + float2 arr[][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
> +
> + return float4(arr[1][0], arr[1][1]);
> +}
> +
> +[test]
> +todo draw quad
> +todo probe all rgba (7.0, 8.0, 9.0, 10.0)
> +
> +
> +[pixel shader]
> +struct foo
> +{
> + float3 foo1;
> + float4 foo2;
> +};
> +
> +struct bar
> +{
> + struct foo aa;
> + int2 bb;
> + float4 cc[2];
> +};
> +
> +float4 main() : SV_TARGET
> +{
> + struct bar p[] = {
> + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
> + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
> + };
> + return p[0].aa.foo2 + p[1].cc[1];
> +}
> +
> +[test]
> +todo draw quad
> +todo probe all rgba (318.0, 320.0, 322.0, 324.0)
> +
> +
> [pixel shader fail]
> +// Incompatible number of arguments in implicit size array initializer
> float4 main() : SV_TARGET
> {
> float4 arr[] = {10, 20, 30, 40, 50, 60, 70};
> - return arr[0];
> +
> + return 0.0;
> +}
> +
> +
> +[pixel shader fail]
> +// Incompatible number of arguments in implicit size array initializer
> +float4 main() : SV_TARGET
> +{
> + float4 arr[] = {10, 20, 30, 40, 50, 60, 70, 80, 90};
> +
> + return 0.0;
> +}
> +
> +[pixel shader fail]
> +// Implicit size inner array
> +float4 main() : sv_target
> +{
> + float2 arr[3][] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
> +
> + return 0.0;
> +}
> +
> +
> +[pixel shader fail]
> +// Implicit size array without initializer
> +float4 main() : sv_target
> +{
> + float4 arr[];
> +
> + return 0.0;
> +}
> +
> +
> +[pixel shader fail]
> +// Implicit size array as struct member
> +struct foobar
> +{
> + int a;
> + float4 arr[];
> +};
> +
> +float4 main() : sv_target
> +{
> + struct foobar s;
> +
> + return 0.0;
> +}
> +
> +
> +[pixel shader fail]
> +// Implicit size array as function argument
> +float4 fun(float4 arr[])
> +{
> + return 1.0;
> +}
> +float4 main() : sv_target
> +{
> + float4 arr[3] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
> + return fun(arr);
> +}
> +
> +
> +[pixel shader fail]
> +// Implicit size array as function return type
> +// Note: explicit size arrays are not allowed either.
> +float4[] fun()
> +{
> + float4 ret[2] = {1, 2, 3, 4, 5, 6, 7, 8};
> +
> + return ret;
> +}
> +
> +float4 main() : sv_target
> +{ fun();
> + return 0.0;
> +}
> +
> +
> +[pixel shader fail]
> +// Implicit size array as a cast
> +float4 main() : sv_target
> +{
> + float2 arr1[4] = {1, 2, 3, 4, 5, 6, 7, 8};
> + float4 arr2[2] = (float4 []) arr1;
> +
> + return 0.0;
> +}
> +
> +
> +[pixel shader fail]
> +// Implicit size array as a typedef
> +typedef float4 arrtype[];
> +
> +float4 main() : sv_target
> +{
> + arrtype arr1 = {1, 2, 3, 4, 5, 6, 7, 8};
> +
> + return 0.0;
> +}
> +
> +
> +[pixel shader fail]
> +// Implicit size array of elements of size 0
> +struct emp
> +{
> +};
> +
> +float4 main() : sv_target
> +{
> + struct emp arr[] = {1, 2, 3, 4};
> +
> + return 0.0;
> +}
> +
> +
> +[pixel shader fail]
> +// Implicit size array of elements of size 0, without initializer
> +struct emp
> +{
> +};
> +
> +float4 main() : sv_target
> +{
> + struct emp arr[];
> +
> + return 0.0;
> +}
> +
> +
> +[pixel shader fail]
> +// Broadcast to an implicit size array
> +float4 main() : sv_target
> +{
> + int a[4] = (int[]) 0;
> +
> + return 0.0;
> +}
> +
> +
> +[pixel shader fail]
> +// Implicit size array with an initializer of size 0
> +struct emp
> +{
> +};
> +
> +float4 main() : sv_target
> +{
> + float4 arr[] = (struct emp) 42;
> +
> + return 0.0;
> +}
> +
> +
> +[pixel shader fail]
> +// Implicit size array of elements of size 0 with initializer of size 0
> +struct emp
> +{
> +};
> +
> +float4 main() : sv_target
> +{
> + struct emp arr[] = (struct emp) 42;
> +
> + return 0.0;
> }
More information about the wine-devel
mailing list