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).
114 lines
2.6 KiB
Plaintext
114 lines
2.6 KiB
Plaintext
% The main objective of this test is to see if operations for SM1 vertex shaders work, because they
|
|
% have a different instruction set than pixel shaders.
|
|
|
|
% Considerations so that the vertex shader output matches the pixel shader input properly on all
|
|
% backends:
|
|
% - sv_position must be the last field in the output signature.
|
|
% - the d3d9 backend, on Windows, clamps the value of the COLORX semantics before passing it to
|
|
% the pixel shader, so their values must be between 0.0 and 1.0.
|
|
|
|
[pixel shader]
|
|
float4 main(in float4 res : COLOR1) : sv_target
|
|
{
|
|
return res;
|
|
}
|
|
|
|
|
|
% Check that -0.0f is not less than 0.0f
|
|
[vertex shader]
|
|
float a;
|
|
|
|
void main(out float4 res : COLOR1, in float4 pos : position, out float4 out_pos : sv_position)
|
|
{
|
|
out_pos = pos;
|
|
|
|
res = -0.0f < a;
|
|
}
|
|
|
|
[test]
|
|
if(sm<4) uniform 0 float 0.0
|
|
if(sm>=4) uniform 0 float4 0.0 0.0 0.0 0.0
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (0.0, 0.0, 0.0, 0.0)
|
|
|
|
|
|
[vertex shader]
|
|
int a, b;
|
|
|
|
void main(out float4 res : COLOR1, in float4 pos : position, out float4 out_pos : sv_position)
|
|
{
|
|
out_pos = pos;
|
|
|
|
res.x = a == b;
|
|
res.y = a != b;
|
|
res.z = a > b;
|
|
res.w = b >= a;
|
|
}
|
|
|
|
[test]
|
|
if(sm<4) uniform 0 float 3
|
|
if(sm<4) uniform 4 float 4
|
|
if(sm>=4) uniform 0 int4 3 4 0 0
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (0.0, 1.0, 0.0, 1.0)
|
|
if(sm<4) uniform 0 float -2
|
|
if(sm<4) uniform 4 float -2
|
|
if(sm>=4) uniform 0 int4 -2 -2 0 0
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (1.0, 0.0, 0.0, 1.0)
|
|
|
|
|
|
[vertex shader]
|
|
int a, b;
|
|
|
|
void main(out float4 res : COLOR1, in float4 pos : position, out float4 out_pos : sv_position)
|
|
{
|
|
out_pos = pos;
|
|
|
|
res.x = a && b;
|
|
res.y = a || b;
|
|
res.z = b && a;
|
|
res.w = b || a;
|
|
}
|
|
|
|
[test]
|
|
if(sm<4) uniform 0 float 0
|
|
if(sm<4) uniform 4 float 2
|
|
if(sm>=4) uniform 0 int4 0 2 0 0
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (0.0, 1.0, 0.0, 1.0)
|
|
if(sm<4) uniform 0 float -2
|
|
if(sm<4) uniform 4 float 8
|
|
if(sm>=4) uniform 0 int4 -2 8 0 0
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0)
|
|
|
|
|
|
[require]
|
|
% The ternary operator works differently in sm6. See sm6-ternary.shader_test.
|
|
shader model < 6.0
|
|
|
|
[vertex shader]
|
|
int a, b, c;
|
|
|
|
void main(out float4 res : COLOR1, in float4 pos : position, out float4 out_pos : sv_position)
|
|
{
|
|
out_pos = pos;
|
|
|
|
res = a ? b/1000.0 : c/1000.0;
|
|
}
|
|
|
|
[test]
|
|
if(sm<4) uniform 0 float 0
|
|
if(sm<4) uniform 4 float 100
|
|
if(sm<4) uniform 8 float 200
|
|
if(sm>=4) uniform 0 int4 0 100 200 0
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (0.2, 0.2, 0.2, 0.2)
|
|
if(sm<4) uniform 0 float -4
|
|
if(sm<4) uniform 4 float 100
|
|
if(sm<4) uniform 8 float 200
|
|
if(sm>=4) uniform 0 int4 -4 100 200 0
|
|
todo(glsl) draw quad
|
|
probe (0, 0) rgba (0.1, 0.1, 0.1, 0.1)
|