tests: Test array parameters on functions.

This commit is contained in:
Francisco Casas 2023-01-26 11:40:02 -03:00 committed by Alexandre Julliard
parent 1b951c87f6
commit 9df54851c9
Notes: Alexandre Julliard 2023-02-20 22:45:40 +01:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Zebediah Figura (@zfigura)
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/99
2 changed files with 162 additions and 0 deletions

View File

@ -49,6 +49,7 @@ vkd3d_shader_tests = \
tests/arithmetic-int.shader_test \
tests/arithmetic-int-uniform.shader_test \
tests/arithmetic-uint.shader_test \
tests/array-parameters.shader_test \
tests/bitwise.shader_test \
tests/cast-broadcast.shader_test \
tests/cast-componentwise-equal.shader_test \

View File

@ -0,0 +1,161 @@
[pixel shader todo]
float fun(float a[2])
{
return 10 * a[0] + a[1];
}
float4 main() : sv_target
{
float f[2] = {2, 5};
return fun(f);
}
[test]
todo draw quad
todo probe all rgba (25.0, 25.0, 25.0, 25.0)
[pixel shader fail]
float fun(float a[2])
{
return 0;
}
float4 main() : sv_target
{
int f[2] = {2, 5};
return fun(f);
}
[pixel shader fail]
float fun(float a[1])
{
return 0;
}
float4 main() : sv_target
{
float f = 4;
return fun(f);
}
[pixel shader fail]
float fun(int a[2])
{
return 0;
}
float4 main() : sv_target
{
float f[2] = {1, 2};
return fun(f);
}
[pixel shader todo]
float4 fun(float a[2][4])
{
float4 res;
res.x = 10 * a[0][0] + a[1][0];
res.y = 10 * a[0][1] + a[1][1];
res.z = 10 * a[0][2] + a[1][2];
res.w = 10 * a[0][3] + a[1][3];
return res;
}
float4 main() : sv_target
{
float f[2][4] = {1, 2, 3, 4, 5, 6, 7, 8};
return fun(f);
}
[test]
todo draw quad
todo probe all rgba (15.0, 26.0, 37.0, 48.0)
[pixel shader fail]
float fun(float a[2])
{
return 0;
}
float4 main() : sv_target
{
float f[3] = {1, 2, 3};
return fun(f);
}
% Implicit size arrays are not allowed.
[pixel shader fail]
float fun(float a[])
{
return 0;
}
float4 main() : sv_target
{
float f[2] = {1, 2};
return fun(f);
}
[pixel shader fail]
float4 fun(float a[4])
{
return 0;
}
float4 main() : sv_target
{
float4 v = {1, 2, 3, 4};
return fun(v);
}
% Arrays with the same number of components are allowed.
[pixel shader todo]
float fun(float a[2][3])
{
return 100*a[0][0] + 10*a[0][2] + a[1][2];
}
float4 main() : sv_target
{
float f[3][2] = {1, 2, 3, 4, 5, 6};
return fun(f);
}
[test]
todo draw quad
todo probe all rgba (136.0, 136.0, 136.0, 136.0)
[pixel shader todo]
float fun(float a[2][3])
{
return 100*a[0][0] + 10*a[1][0] + a[1][2];
}
float4 main() : sv_target
{
float f[6] = {7, 8, 9, 0, 1, 2};
return fun(f);
}
[test]
todo draw quad
todo probe all rgba (702.0, 702.0, 702.0, 702.0)