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).
248 lines
3.6 KiB
Plaintext
248 lines
3.6 KiB
Plaintext
% TODO: dxcompiler emits no loops for any of these test shaders.
|
|
|
|
[pixel shader todo(sm<4)]
|
|
float a;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
float res = 0;
|
|
|
|
for (int i = 0; i < 10; ++i)
|
|
{
|
|
res += a;
|
|
// The temp copy of 'a' must reserve its registers for the rest of the loop.
|
|
// It shall not be overwritten.
|
|
}
|
|
return res;
|
|
}
|
|
|
|
[test]
|
|
uniform 0 float 5.0
|
|
todo(sm<4 | glsl) draw quad
|
|
probe (0, 0) rgba (50.0, 50.0, 50.0, 50.0)
|
|
|
|
|
|
[pixel shader todo(sm<4)]
|
|
float a;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
float res = 0;
|
|
|
|
for (int i = 0; i < 10; ++i)
|
|
{
|
|
res += a;
|
|
// The temp copy of 'a' must reserve its registers for the rest of the loop.
|
|
// It shall not be overwritten.
|
|
i++;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
[test]
|
|
uniform 0 float 4.0
|
|
todo(sm<4 | glsl) draw quad
|
|
probe (0, 0) rgba (20.0, 20.0, 20.0, 20.0)
|
|
|
|
[pixel shader todo(sm<4)]
|
|
float a;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
int i = 0;
|
|
float res = a;
|
|
|
|
while (i < 10)
|
|
{
|
|
if (i == 5)
|
|
{
|
|
res += 0.1f;
|
|
break;
|
|
}
|
|
res += 1.0f;
|
|
i++;
|
|
if (i == 2) continue;
|
|
res += 100.f;
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
[test]
|
|
uniform 0 float 4.0
|
|
todo(sm<4 | glsl) draw quad
|
|
probe (0, 0) rgba (409.1, 409.1, 409.1, 409.1)
|
|
|
|
[pixel shader todo(sm<4)]
|
|
float a;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
int i = 0;
|
|
float res = a;
|
|
|
|
do
|
|
{
|
|
res += 1.0f;
|
|
if (i == 5)
|
|
{
|
|
res += 0.1f;
|
|
break;
|
|
}
|
|
i++;
|
|
if (i == 2) continue;
|
|
res += 100.f;
|
|
}
|
|
while (i < 10);
|
|
|
|
return res;
|
|
}
|
|
|
|
[test]
|
|
uniform 0 float 4.0
|
|
todo(sm<4 | glsl) draw quad
|
|
probe (0, 0) rgba (410.1, 410.1, 410.1, 410.1)
|
|
|
|
% loop attribute by itself
|
|
[pixel shader todo(sm<4)]
|
|
float4 main() : sv_target
|
|
{
|
|
float ret = 0.0;
|
|
|
|
[loop] for (int i = 0; i < 10; ++i)
|
|
{
|
|
ret += 1.0;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
[test]
|
|
todo(sm<4 | glsl) draw quad
|
|
probe (0, 0) rgba (10.0, 10.0, 10.0, 10.0)
|
|
|
|
[pixel shader todo(sm<4)]
|
|
float4 main() : sv_target
|
|
{
|
|
float ret = 0.0;
|
|
int i = 0;
|
|
|
|
[loop] while (i < 10)
|
|
{
|
|
ret += 1.0;
|
|
i++;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
[test]
|
|
todo(sm<4 | glsl) draw quad
|
|
probe (0, 0) rgba (10.0, 10.0, 10.0, 10.0)
|
|
|
|
[pixel shader todo(sm<4)]
|
|
float4 main() : sv_target
|
|
{
|
|
float ret = 0.0;
|
|
int i = 0;
|
|
|
|
[loop] do
|
|
{
|
|
i++;
|
|
ret += 1.0;
|
|
} while (i < 10);
|
|
|
|
return ret;
|
|
}
|
|
|
|
[test]
|
|
todo(sm<4 | glsl) draw quad
|
|
probe (0, 0) rgba (10.0, 10.0, 10.0, 10.0)
|
|
|
|
% unroll can't be used with fastopt or loop
|
|
[pixel shader fail]
|
|
float4 main() : sv_target
|
|
{
|
|
float ret = 0.0;
|
|
|
|
[loop] [unroll(1)] for (int i = 0; i < 10; ++i)
|
|
{
|
|
ret += 1.0;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
[pixel shader fail]
|
|
float4 main() : sv_target
|
|
{
|
|
float ret = 0.0;
|
|
|
|
[fastopt] [unroll(1)] for (int i = 0; i < 10; ++i)
|
|
{
|
|
ret += 1.0;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
[pixel shader fail]
|
|
float4 main() : sv_target
|
|
{
|
|
float ret = 0.0;
|
|
int i = 0;
|
|
|
|
[loop] [unroll(1)] while (i < 10)
|
|
{
|
|
ret += 1.0;
|
|
i++;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
[pixel shader fail]
|
|
float4 main() : sv_target
|
|
{
|
|
float ret = 0.0;
|
|
int i = 0;
|
|
|
|
[fastopt] [unroll(1)] while (i < 10)
|
|
{
|
|
ret += 1.0;
|
|
i++;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
[pixel shader fail]
|
|
float4 main() : sv_target
|
|
{
|
|
float ret = 0.0;
|
|
int i = 0;
|
|
|
|
[loop] [unroll(1)] do
|
|
{
|
|
ret += 1.0;
|
|
i++;
|
|
} while (i < 10)
|
|
|
|
return ret;
|
|
}
|
|
|
|
[pixel shader fail]
|
|
float4 main() : sv_target
|
|
{
|
|
float ret = 0.0;
|
|
int i = 0;
|
|
|
|
[fastopt] [unroll(1)] do
|
|
{
|
|
ret += 1.0;
|
|
i++;
|
|
} while (i < 10)
|
|
|
|
return ret;
|
|
}
|