Module: vkd3d Branch: master Commit: c644244bcd410d94c322f79e23173ee7f7b79ab9 URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/c644244bcd410d94c322f79e23173e...
Author: Giovanni Mascellani gmascellani@codeweavers.com Date: Fri Oct 14 15:45:04 2022 +0200
tests: Test float operations with uniform inputs.
The point of the "uniform" variants is to avoid hiding code generation bugs because of the constant folding optimization.
---
Makefile.am | 1 + tests/arithmetic-float-uniform.shader_test | 78 ++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+)
diff --git a/Makefile.am b/Makefile.am index b9068728..5a5a01c4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -53,6 +53,7 @@ vkd3d_cross_tests = \ vkd3d_shader_tests = \ tests/abs.shader_test \ tests/arithmetic-float.shader_test \ + tests/arithmetic-float-uniform.shader_test \ tests/arithmetic-int.shader_test \ tests/arithmetic-int-uniform.shader_test \ tests/arithmetic-uint.shader_test \ diff --git a/tests/arithmetic-float-uniform.shader_test b/tests/arithmetic-float-uniform.shader_test new file mode 100644 index 00000000..708dc270 --- /dev/null +++ b/tests/arithmetic-float-uniform.shader_test @@ -0,0 +1,78 @@ +[pixel shader] +uniform float2 a; + +float4 main() : SV_TARGET +{ + float x = a.x; + float y = a.y; + return float4(x + y, x - y, x * y, x / y); +} + +[test] +uniform 0 float4 5.0 15.0 0.0 0.0 +draw quad +probe all rgba (20.0, -10.0, 75.0, 0.33333333) 1 + +[pixel shader] +uniform float2 a; + +float4 main() : SV_TARGET +{ + float x = a.x; + float y = a.y; + return float4(x % y, +x, -x, y / x); +} + +[test] +uniform 0 float4 5.0 15.0 0.0 0.0 +draw quad +probe all rgba (5.0, 5.0, -5.0, 3.0) 1 + +[pixel shader] +uniform float2 a; + +float4 main() : SV_TARGET +{ + float x = a.x; + float 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) 16 + +[pixel shader] +uniform float2 a; + +float4 main() : SV_TARGET +{ + float x = a.x; + float 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) + +[require] +% Infinities are not allowed in SM1 +shader model >= 4.0 + +[pixel shader] +uniform float2 a; + +float4 main() : SV_TARGET +{ + float x = a.x; + float y = a.y; + return x / y; +} + +[test] +uniform 0 float4 1.0 0.0 0.0 0.0 +draw quad +probe all rgba (1e99, 1e99, 1e99, 1e99)