tests: Add a test for the "nointerpolation" modifier.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2022-03-21 20:42:21 -05:00 committed by Alexandre Julliard
parent c7623262cc
commit 24a27daf98
3 changed files with 46 additions and 0 deletions

View File

@ -103,6 +103,7 @@ vkd3d_shader_tests = \
tests/hlsl-vector-indexing-uniform.shader_test \ tests/hlsl-vector-indexing-uniform.shader_test \
tests/logic-operations.shader_test \ tests/logic-operations.shader_test \
tests/math.shader_test \ tests/math.shader_test \
tests/nointerpolation.shader_test \
tests/pow.shader_test \ tests/pow.shader_test \
tests/preproc-if.shader_test \ tests/preproc-if.shader_test \
tests/preproc-ifdef.shader_test \ tests/preproc-ifdef.shader_test \
@ -351,6 +352,7 @@ XFAIL_TESTS = \
tests/hlsl-vector-indexing-uniform.shader_test \ tests/hlsl-vector-indexing-uniform.shader_test \
tests/logic-operations.shader_test \ tests/logic-operations.shader_test \
tests/max.shader_test \ tests/max.shader_test \
tests/nointerpolation.shader_test \
tests/sampler-offset.shader_test \ tests/sampler-offset.shader_test \
tests/trigonometry.shader_test tests/trigonometry.shader_test
endif endif

View File

@ -0,0 +1,27 @@
[require]
shader model >= 4.0
[input layout]
0 r32g32b32a32 float texcoord
[vertex buffer 0]
0.0 1.0 0.0 1.0
1.0 0.0 0.0 1.0
0.0 0.0 1.0 1.0
[vertex shader]
void main(uint id : sv_vertexid, nointerpolation inout float4 t : texcoord, out float4 pos : sv_position)
{
float2 coords = float2((id << 1) & 2, id & 2);
pos = float4(coords * float2(2, -2) + float2(-1, 1), 0, 1);
}
[pixel shader]
float4 main(nointerpolation float4 t : texcoord) : sv_target
{
return t;
}
[test]
draw triangle list 3
probe all rgba (0.0, 1.0, 0.0, 1.0)

View File

@ -336,6 +336,23 @@ static void parse_test_directive(struct shader_runner *runner, const char *line)
runner->ops->draw(runner, D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST, 3); runner->ops->draw(runner, D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST, 3);
} }
else if (match_string(line, "draw", &line))
{
D3D_PRIMITIVE_TOPOLOGY topology;
unsigned int vertex_count;
char *rest;
if (match_string(line, "triangle list", &line))
topology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST;
else
fatal_error("Unknown primitive topology '%s'.\n", line);
vertex_count = strtoul(line, &rest, 10);
if (line == rest)
fatal_error("Malformed vertex count '%s'.\n", line);
runner->ops->draw(runner, topology, vertex_count);
}
else if (match_string(line, "probe all rgba", &line)) else if (match_string(line, "probe all rgba", &line))
{ {
static const RECT rect = {0, 0, RENDER_TARGET_WIDTH, RENDER_TARGET_HEIGHT}; static const RECT rect = {0, 0, RENDER_TARGET_WIDTH, RENDER_TARGET_HEIGHT};