mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
d3ba810c98
This is simply unnecessary and wastes time. As part of this, simply remove the "all" directive. Only for a couple of tests is it even potentially interesting to validate all pixels (e.g. nointerpolation.shader_test), and for those "all" is replaced with an explicit (0, 0, 640, 480) rect. In all other cases we just probe (0, 0).
208 lines
3.6 KiB
Plaintext
208 lines
3.6 KiB
Plaintext
[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
|
|
todo(glsl) draw quad
|
|
probe (0, 0) 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
|
|
todo(glsl) draw quad
|
|
probe (0, 0) 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
|
|
todo(glsl) draw quad
|
|
probe (0, 0) 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
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (0.0, 0.0, 0.0, 0.0)
|
|
|
|
[pixel shader]
|
|
float4 x, y;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
return x % y;
|
|
}
|
|
|
|
[test]
|
|
uniform 0 float4 5.0 -42.1 4.0 45.0
|
|
uniform 4 float4 15.0 -5.0 4.1 5.0
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (5.0, -2.1, 4.0, 0.0) 6
|
|
|
|
[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
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (1e99, 1e99, 1e99, 1e99)
|
|
|
|
[pixel shader todo]
|
|
uniform float4 a, b, c;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
return mad(a, b, c);
|
|
}
|
|
|
|
[test]
|
|
uniform 0 float4 1.00000007 -42.1 4.0 45.0
|
|
uniform 4 float4 1.625 -5.0 4.125 5.0
|
|
uniform 8 float4 1.00000007 -1.0 0.5 -0.5
|
|
todo(sm<6) draw quad
|
|
probe (0, 0) rgba (2.62500024, 209.5, 17.0, 224.5) 1
|
|
|
|
% precise mad() is not allowed to fuse, even though unfused is less precise.
|
|
[pixel shader todo]
|
|
uniform float4 a, b, c;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
precise float4 ret = mad(a, b, c);
|
|
return ret;
|
|
}
|
|
|
|
[test]
|
|
uniform 0 float4 1.00000007 -42.1 4.0 45.0
|
|
uniform 4 float4 1.625 -5.0 4.125 5.0
|
|
uniform 8 float4 1.00000007 -1.0 0.5 -0.5
|
|
todo(sm<6) draw quad
|
|
probe (0, 0) rgba (2.62500048, 209.5, 17.0, 224.5)
|
|
|
|
[require]
|
|
shader model >= 5.0
|
|
float64
|
|
|
|
[pixel shader todo]
|
|
uniform double2 a;
|
|
|
|
float4 main() : SV_TARGET
|
|
{
|
|
double x = a.x;
|
|
double y = a.y;
|
|
return float4(x + y, x - y, x * y, x / y);
|
|
}
|
|
|
|
[test]
|
|
uniform 0 double2 7.5 -2.5
|
|
todo(sm<6) draw quad
|
|
probe (0, 0) rgba (5.0, 10.0, -18.75, -3.0)
|
|
|
|
[pixel shader todo]
|
|
uniform double2 a;
|
|
|
|
float4 main() : SV_TARGET
|
|
{
|
|
double x = a.x;
|
|
double y = a.y;
|
|
return x * y;
|
|
}
|
|
|
|
[test]
|
|
uniform 0 double2 3.0e-300 2.5e300
|
|
todo(sm<6) draw quad
|
|
probe (0, 0) rgba (7.5, 7.5, 7.5, 7.5)
|
|
|
|
% Note: DXC does not support modulo on doubles.
|
|
[pixel shader todo]
|
|
uniform double2 a;
|
|
|
|
float4 main() : SV_TARGET
|
|
{
|
|
double x = a.x;
|
|
double y = a.y;
|
|
return x / y;
|
|
}
|
|
|
|
[test]
|
|
uniform 0 double2 1.5e300 2.0e299
|
|
todo(sm<6) draw quad
|
|
probe (0, 0) rgba (7.5, 7.5, 7.5, 7.5)
|
|
|
|
[pixel shader todo]
|
|
uniform double2 a, b, c;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
return float4(fma(a, b, c), 0, 0);
|
|
}
|
|
|
|
[test]
|
|
uniform 0 double2 1.00000007 -42.1
|
|
uniform 4 double2 1.625 -5.0
|
|
uniform 8 double2 1.00000007 -1.0
|
|
todo(sm<6) draw quad
|
|
probe (0, 0) rgba (2.62500024, 209.5, 0.0, 0.0)
|
|
|
|
|
|
% Test result when instructions might be removed because they are identities such as (+0) or (*1).
|
|
[pixel shader]
|
|
float4 a;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
float4 zero = {0, 0, 0, 0};
|
|
float4 one = {1, 1, 1, 1};
|
|
|
|
return a + zero + a * one + zero * one;
|
|
}
|
|
|
|
[test]
|
|
uniform 0 float4 0.2 0.3 9.1 3.2
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (0.4, 0.6, 18.2, 6.4)
|