Module: vkd3d Branch: master Commit: d1da5436f4535a46a7936f823b57a4d4e831a7ef URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/d1da5436f4535a46a7936f823b57a4...
Author: Giovanni Mascellani gmascellani@codeweavers.com Date: Fri Oct 14 15:10:13 2022 +0200
tests: Test sign rules for integer division and modulus.
---
tests/arithmetic-int-uniform.shader_test | 60 ++++++++++++++++++++++++++++++++ tests/arithmetic-int.shader_test | 52 +++++++++++++++++++++++++++ 2 files changed, 112 insertions(+)
diff --git a/tests/arithmetic-int-uniform.shader_test b/tests/arithmetic-int-uniform.shader_test index cac2a234..bd35f566 100644 --- a/tests/arithmetic-int-uniform.shader_test +++ b/tests/arithmetic-int-uniform.shader_test @@ -28,6 +28,66 @@ uniform 0 float4 5.0 16.0 0.0 0.0 draw quad probe all rgba (5.0, 5.0, -5.0, 3.0)
+[pixel shader] +uniform float2 a; + +float4 main() : SV_TARGET +{ + int x = a.x; + int y = a.y; + return float4(x / y, -x / y, x / -y, -x / -y); +} + +[test] +uniform 0 float4 42.0 5.0 0.0 0.0 +draw quad +probe all rgba (8.0, -8.0, -8.0, 8.0) + +[pixel shader] +uniform float2 a; + +float4 main() : SV_TARGET +{ + int x = a.x; + int y = a.y; + return float4(x % y, -x % y, x % -y, -x % -y); +} + +[test] +uniform 0 float4 42.0 5.0 0.0 0.0 +draw quad +probe all rgba (2.0, -2.0, 2.0, -2.0) + +[pixel shader] +uniform float2 a; + +float4 main() : SV_TARGET +{ + int x = a.x; + int y = a.y; + return float4(x / y, -x / y, x / -y, -x / -y); +} + +[test] +uniform 0 float4 45.0 5.0 0.0 0.0 +draw quad +probe all rgba (9.0, -9.0, -9.0, 9.0) + +[pixel shader] +uniform float2 a; + +float4 main() : SV_TARGET +{ + int x = a.x; + int y = a.y; + return float4(x % y, -x % y, x % -y, -x % -y); +} + +[test] +uniform 0 float4 45.0 5.0 0.0 0.0 +draw quad +probe all rgba (0.0, 0.0, 0.0, 0.0) + [pixel shader] uniform float4 a;
diff --git a/tests/arithmetic-int.shader_test b/tests/arithmetic-int.shader_test index 8b6d6d7c..f4c98904 100644 --- a/tests/arithmetic-int.shader_test +++ b/tests/arithmetic-int.shader_test @@ -24,6 +24,58 @@ float4 main() : SV_TARGET draw quad probe all rgba (5.0, 5.0, -5.0, 3.0)
+[pixel shader] +float4 main() : SV_TARGET +{ + int x = 42; + int y = 5; + + return float4(x / y, -x / y, x / -y, -x / -y); +} + +[test] +draw quad +probe all rgba (8.0, -8.0, -8.0, 8.0) + +[pixel shader] +float4 main() : SV_TARGET +{ + int x = 42; + int y = 5; + + return float4(x % y, -x % y, x % -y, -x % -y); +} + +[test] +draw quad +probe all rgba (2.0, -2.0, 2.0, -2.0) + +[pixel shader] +float4 main() : SV_TARGET +{ + int x = 45; + int y = 5; + + return float4(x / y, -x / y, x / -y, -x / -y); +} + +[test] +draw quad +probe all rgba (9.0, -9.0, -9.0, 9.0) + +[pixel shader] +float4 main() : SV_TARGET +{ + int x = 45; + int y = 5; + + return float4(x % y, -x % y, x % -y, -x % -y); +} + +[test] +draw quad +probe all rgba (0.0, 0.0, 0.0, 0.0) + [pixel shader fail] float4 main() : SV_TARGET {