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).
278 lines
5.2 KiB
Plaintext
278 lines
5.2 KiB
Plaintext
[pixel shader todo(sm<4)]
|
|
uniform float4 u;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
if (u.x > 0.0)
|
|
return float4(0.1, 0.2, 0.3, 0.4);
|
|
else
|
|
return float4(0.9, 0.8, 0.7, 0.6);
|
|
}
|
|
|
|
[test]
|
|
uniform 0 float4 0.0 0.0 0.0 0.0
|
|
todo(sm<4 | glsl) draw quad
|
|
probe (0, 0) rgba (0.9, 0.8, 0.7, 0.6)
|
|
uniform 0 float4 0.1 0.0 0.0 0.0
|
|
todo(sm<4 | glsl) draw quad
|
|
probe (0, 0) rgba (0.1, 0.2, 0.3, 0.4)
|
|
|
|
[pixel shader todo(sm<4)]
|
|
uniform float4 u;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
[attr1]
|
|
if (u.x > 0.0)
|
|
return float4(0.1, 0.2, 0.3, 0.4);
|
|
else
|
|
return float4(0.9, 0.8, 0.7, 0.6);
|
|
}
|
|
|
|
[pixel shader todo(sm<4)]
|
|
uniform float4 u;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
[flatten]
|
|
if (u.x > 0.0)
|
|
return float4(0.1, 0.2, 0.3, 0.4);
|
|
else
|
|
return float4(0.9, 0.8, 0.7, 0.6);
|
|
}
|
|
|
|
[test]
|
|
uniform 0 float4 0.0 0.0 0.0 0.0
|
|
todo(sm<4 | glsl) draw quad
|
|
probe (0, 0) rgba (0.9, 0.8, 0.7, 0.6)
|
|
|
|
[pixel shader fail(sm<6)]
|
|
float4 u;
|
|
|
|
float main() : sv_target
|
|
{
|
|
[branch] [branch]
|
|
if (u.x > 0.0)
|
|
return float4(0.1, 0.2, 0.3, 0.4);
|
|
else
|
|
return float4(0.9, 0.8, 0.7, 0.6);
|
|
}
|
|
|
|
[pixel shader fail todo]
|
|
float4 u;
|
|
|
|
float main() : sv_target
|
|
{
|
|
[branch] [flatten]
|
|
if (u.x > 0.0)
|
|
return float4(0.1, 0.2, 0.3, 0.4);
|
|
else
|
|
return float4(0.9, 0.8, 0.7, 0.6);
|
|
}
|
|
|
|
% Using older profiles fails to compile with forced control flow instruction
|
|
[require]
|
|
shader model >= 3.0
|
|
|
|
|
|
[pixel shader]
|
|
uniform float a;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
if (a < 4)
|
|
return float4(1, 2, 3, 4);
|
|
return float4(10, 20, 30, 40);
|
|
}
|
|
|
|
[test]
|
|
uniform 0 float -2
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (1, 2, 3, 4)
|
|
uniform 0 float 10
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (10, 20, 30, 40)
|
|
|
|
|
|
[pixel shader]
|
|
uniform float4 u;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
[branch]
|
|
if (u.x > 0.0)
|
|
return float4(0.1, 0.2, 0.3, 0.4);
|
|
else
|
|
return float4(0.9, 0.8, 0.7, 0.6);
|
|
}
|
|
|
|
[test]
|
|
uniform 0 float4 0.0 0.0 0.0 0.0
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (0.9, 0.8, 0.7, 0.6)
|
|
|
|
[pixel shader]
|
|
float4 main() : sv_target
|
|
{
|
|
bool c = false;
|
|
float a = -1.0f;
|
|
if (c)
|
|
return float4(1.0, 2.0, 3.0, 4.0);
|
|
else if (a > 0)
|
|
return float4(5.0, 6.0, 7.0, 8.0);
|
|
else
|
|
return float4(9.0, 10.0, 11.0, 12.0);
|
|
}
|
|
|
|
[test]
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (9.0, 10.0, 11.0, 12.0)
|
|
|
|
|
|
[pixel shader]
|
|
int a, b;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
if (a < b)
|
|
return -1.0;
|
|
else
|
|
return 1.0;
|
|
}
|
|
|
|
[test]
|
|
if(sm<4) uniform 0 float 8
|
|
if(sm<4) uniform 4 float 9
|
|
if(sm>=4) uniform 0 int 8
|
|
if(sm>=4) uniform 1 int 9
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (-1.0, -1.0, -1.0, -1.0)
|
|
if(sm<4) uniform 0 float -3
|
|
if(sm<4) uniform 4 float -4
|
|
if(sm>=4) uniform 0 int -3
|
|
if(sm>=4) uniform 1 int -4
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0)
|
|
if(sm<4) uniform 0 float 7
|
|
if(sm<4) uniform 4 float 7
|
|
if(sm>=4) uniform 0 int 7
|
|
if(sm>=4) uniform 1 int 7
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0)
|
|
|
|
|
|
[pixel shader]
|
|
int a, b;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
if (a <= b)
|
|
return -1.0;
|
|
else
|
|
return 1.0;
|
|
}
|
|
|
|
[test]
|
|
if(sm<4) uniform 0 float 8
|
|
if(sm<4) uniform 4 float 9
|
|
if(sm>=4) uniform 0 int 8
|
|
if(sm>=4) uniform 1 int 9
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (-1.0, -1.0, -1.0, -1.0)
|
|
if(sm<4) uniform 0 float -3
|
|
if(sm<4) uniform 4 float -4
|
|
if(sm>=4) uniform 0 int -3
|
|
if(sm>=4) uniform 1 int -4
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0)
|
|
if(sm<4) uniform 0 float 7
|
|
if(sm<4) uniform 4 float 7
|
|
if(sm>=4) uniform 0 int 7
|
|
if(sm>=4) uniform 1 int 7
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (-1.0, -1.0, -1.0, -1.0)
|
|
|
|
|
|
[pixel shader]
|
|
int a, b;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
if (a != b)
|
|
return -1.0;
|
|
else
|
|
return 1.0;
|
|
}
|
|
|
|
[test]
|
|
if(sm<4) uniform 0 float -3
|
|
if(sm<4) uniform 4 float -2
|
|
if(sm>=4) uniform 0 int -3
|
|
if(sm>=4) uniform 1 int -2
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (-1.0, -1.0, -1.0, -1.0)
|
|
if(sm<4) uniform 0 float 4
|
|
if(sm<4) uniform 4 float 4
|
|
if(sm>=4) uniform 0 int 4
|
|
if(sm>=4) uniform 1 int 4
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0)
|
|
|
|
|
|
% Test "if" conditionals, using resource loads to ensure we aren't removing these instruction with optimizations.
|
|
[srv 0]
|
|
size (2d, 2, 2)
|
|
0.0 0.0 0.0 4.0 1.0 0.0 0.0 4.0
|
|
0.0 1.0 0.0 4.0 1.0 1.0 0.0 4.0
|
|
|
|
[sampler 0]
|
|
filter linear linear linear
|
|
address clamp clamp clamp
|
|
|
|
[pixel shader todo(sm<4)]
|
|
Texture2D tex;
|
|
sampler sam;
|
|
float a;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
if (a < 4)
|
|
return tex.Sample(sam, float2(0, 0));
|
|
return float4(1, 2, 3, 4);
|
|
}
|
|
|
|
[test]
|
|
uniform 0 float -2
|
|
todo(sm<4 | glsl) draw quad
|
|
probe (0, 0) rgba (0.0, 0.0, 0.0, 4.0)
|
|
uniform 0 float 4
|
|
todo(sm<4 | glsl) draw quad
|
|
probe (0, 0) rgba (1.0, 2.0, 3.0, 4.0)
|
|
|
|
|
|
[pixel shader todo(sm<4)]
|
|
Texture2D tex;
|
|
sampler sam;
|
|
float a;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
if (a >= 2)
|
|
return tex.Sample(sam, float2(0, 0));
|
|
else if (a >= 1)
|
|
return tex.Sample(sam, float2(1, 0));
|
|
else
|
|
return tex.Sample(sam, float2(1, 1));
|
|
}
|
|
|
|
[test]
|
|
uniform 0 float 2
|
|
todo(sm<4 | glsl) draw quad
|
|
probe (0, 0) rgba (0.0, 0.0, 0.0, 4.0)
|
|
uniform 0 float 1
|
|
todo(sm<4 | glsl) draw quad
|
|
probe (0, 0) rgba (1.0, 0.0, 0.0, 4.0)
|
|
uniform 0 float 0
|
|
todo(sm<4 | glsl) draw quad
|
|
probe (0, 0) rgba (1.0, 1.0, 0.0, 4.0)
|