mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
tests: Test comparison and logic operators on SM1 vertex shaders.
Currently these are failing for SM1 because VKD3DSIH_SLT is not being handled by spirv.c.
This commit is contained in:
parent
cfac67ccc2
commit
308c7941d4
Notes:
Alexandre Julliard
2024-03-11 23:06:28 +01:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Zebediah Figura (@zfigura) Approved-by: Francisco Casas (@fcasas) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/694
@ -214,6 +214,7 @@ vkd3d_shader_tests = \
|
||||
tests/hlsl/uniform-semantics.shader_test \
|
||||
tests/hlsl/vector-indexing-uniform.shader_test \
|
||||
tests/hlsl/vector-indexing.shader_test \
|
||||
tests/hlsl/vertex-shader-ops.shader_test \
|
||||
tests/hlsl/writemask-assignop-0.shader_test \
|
||||
tests/hlsl/writemask-assignop-1.shader_test \
|
||||
tests/hlsl/writemask-assignop-2.shader_test \
|
||||
|
95
tests/hlsl/vertex-shader-ops.shader_test
Normal file
95
tests/hlsl/vertex-shader-ops.shader_test
Normal file
@ -0,0 +1,95 @@
|
||||
% 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;
|
||||
}
|
||||
|
||||
|
||||
[vertex shader todo(sm<4)]
|
||||
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(sm<4) draw quad
|
||||
probe all 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(sm<4) draw quad
|
||||
probe all rgba (1.0, 0.0, 0.0, 1.0)
|
||||
|
||||
|
||||
[vertex shader todo(sm<4)]
|
||||
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(sm<4) draw quad
|
||||
probe all 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(sm<4) draw quad
|
||||
probe all 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 todo(sm<4)]
|
||||
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(sm<4) draw quad
|
||||
probe all 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(sm<4) draw quad
|
||||
probe all rgba (0.1, 0.1, 0.1, 0.1)
|
Loading…
Reference in New Issue
Block a user