Module: vkd3d Branch: master Commit: 8b2bd02a53a93812aab7b0b785b057a4280c15a3 URL: https://source.winehq.org/git/vkd3d.git/?a=commit;h=8b2bd02a53a93812aab7b0b7...
Author: Zebediah Figura zfigura@codeweavers.com Date: Thu Feb 24 15:06:14 2022 +0100
tests: Add some tests for casting output arguments to functions.
Signed-off-by: Zebediah Figura zfigura@codeweavers.com Signed-off-by: Giovanni Mascellani gmascellani@codeweavers.com Signed-off-by: Matteo Bruni mbruni@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
Makefile.am | 2 + tests/hlsl-function-cast.shader_test | 87 ++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+)
diff --git a/Makefile.am b/Makefile.am index 57cf578..e4f92bb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -66,6 +66,7 @@ vkd3d_shader_tests = \ tests/hlsl-duplicate-modifiers.shader_test \ tests/hlsl-for.shader_test \ tests/hlsl-function.shader_test \ + tests/hlsl-function-cast.shader_test \ tests/hlsl-function-overload.shader_test \ tests/hlsl-gather-offset.shader_test \ tests/hlsl-gather.shader_test \ @@ -318,6 +319,7 @@ XFAIL_TESTS = \ tests/hlsl-duplicate-modifiers.shader_test \ tests/hlsl-for.shader_test \ tests/hlsl-function.shader_test \ + tests/hlsl-function-cast.shader_test \ tests/hlsl-function-overload.shader_test \ tests/hlsl-gather.shader_test \ tests/hlsl-intrinsic-override.shader_test \ diff --git a/tests/hlsl-function-cast.shader_test b/tests/hlsl-function-cast.shader_test new file mode 100644 index 0000000..4f80ac5 --- /dev/null +++ b/tests/hlsl-function-cast.shader_test @@ -0,0 +1,87 @@ +% Test implicit and explicit casts on function output parameters. + +[pixel shader] + +uniform float4 f; + +void func(out float4 o) +{ + o = f; +} + +float4 main() : sv_target +{ + int4 x; + func(x); + return x; +} + +[test] +uniform 0 float4 -1.9 -1.0 2.9 4.0 +draw quad +probe all rgba (-1.0, -1.0, 2.0, 4.0) + +% As above, but cast "x" to float4 first. + +[pixel shader] + +uniform float4 f; + +void func(out float4 o) +{ + o = f; +} + +float4 main() : sv_target +{ + int4 x; + func((float4)x); + return x; +} + +[test] +uniform 0 float4 -1.9 -1.0 2.9 4.0 +draw quad +probe all rgba (-1.0, -1.0, 2.0, 4.0) + +% As above, but declare "x" as float4 and cast it to int4. + +[pixel shader] + +uniform float4 f; + +void func(out float4 o) +{ + o = f; +} + +float4 main() : sv_target +{ + float4 x; + func((int4)x); + return x; +} + +[test] +uniform 0 float4 -1.9 -1.0 2.9 4.0 +draw quad +probe all rgba (-1.0, -1.0, 2.0, 4.0) + +[pixel shader] + +void func(inout float4 a) +{ + a += 0.1; +} + +float4 main(uniform int4 i) : sv_target +{ + int4 x = i; + func(x); + return x; +} + +[test] +uniform 0 int4 -2 0 1 -3000000 +draw quad +probe all rgba (-1.0, 0.0, 1.0, -3000000.0)