Signed-off-by: Giovanni Mascellani gmascellani@codeweavers.com
Il 16/02/22 06:29, Zebediah Figura ha scritto:
Signed-off-by: Zebediah Figura zfigura@codeweavers.com
Makefile.am | 2 + tests/hlsl-function-cast.shader_test | 103 +++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 tests/hlsl-function-cast.shader_test
diff --git a/Makefile.am b/Makefile.am index dd5966ee..75c5e4b1 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 00000000..72ee61eb --- /dev/null +++ b/tests/hlsl-function-cast.shader_test @@ -0,0 +1,103 @@ +% 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)
+% You can't cast an inout parameter, though.
+[pixel shader fail]
+void func(inout float4 a) +{
- a += 0.1;
+}
+float4 main(uniform int4 i) : sv_target +{
- int4 x = i;
- func((float4)x);
- return x;
+}