Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- Makefile.am | 6 ++++-- tests/shader_runner_d3d12.c | 23 +++++++++++++++++++++++ tests/trigonometry.shader_test | 24 ++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 tests/trigonometry.shader_test
diff --git a/Makefile.am b/Makefile.am index 27bc00b6..2e286bc8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -61,7 +61,8 @@ vkd3d_shader_tests = \ tests/swizzle-4.shader_test \ tests/swizzle-5.shader_test \ tests/swizzle-6.shader_test \ - tests/swizzle-7.shader_test + tests/swizzle-7.shader_test \ + tests/trigonometry.shader_test
vkd3d_test_headers = \ tests/d3d12_crosstest.h \ @@ -192,7 +193,8 @@ XFAIL_TESTS = \ tests/swizzle-4.shader_test \ tests/swizzle-5.shader_test \ tests/swizzle-6.shader_test \ - tests/swizzle-7.shader_test + tests/swizzle-7.shader_test \ + tests/trigonometry.shader_test endif
if BUILD_DEMOS diff --git a/tests/shader_runner_d3d12.c b/tests/shader_runner_d3d12.c index 709fc006..0e9694a4 100644 --- a/tests/shader_runner_d3d12.c +++ b/tests/shader_runner_d3d12.c @@ -190,6 +190,29 @@ static void parse_test_directive(struct shader_context *context, const char *lin release_resource_readback(&rb); reset_command_list(context->c.list, context->c.allocator); } + else if (match_string(line, "probe rgba", &line)) + { + struct resource_readback rb; + unsigned int x, y, ulps; + struct vec4 v; + RECT rect; + int ret; + + ret = sscanf(line, "( %u , %u ) ( %f , %f , %f , %f ) %u", &x, &y, &v.x, &v.y, &v.z, &v.w, &ulps); + if (ret < 6) + goto err; + if (ret < 7) + ulps = 0; + + get_texture_readback_with_command_list(context->c.render_target, 0, &rb, context->c.queue, context->c.list); + rect.left = x; + rect.right = x + 1; + rect.top = y; + rect.bottom = y + 1; + check_readback_data_vec4(&rb, &rect, &v, ulps); + release_resource_readback(&rb); + reset_command_list(context->c.list, context->c.allocator); + } else if (match_string(line, "uniform", &line)) { unsigned int offset; diff --git a/tests/trigonometry.shader_test b/tests/trigonometry.shader_test new file mode 100644 index 00000000..07a280a0 --- /dev/null +++ b/tests/trigonometry.shader_test @@ -0,0 +1,24 @@ +[pixel shader] +float4 main(float4 pos : SV_POSITION) : SV_TARGET +{ + return float4(sin(pos.x - 0.5), cos(pos.x - 0.5), 0, 0); +} + +[test] +draw quad +probe rgba ( 0, 0) ( 0.00000000, 1.00000000, 0.0, 0.0) +probe rgba ( 1, 0) ( 0.84147098, 0.54030231, 0.0, 0.0) 1024 +probe rgba ( 2, 0) ( 0.90929743, -0.41614684, 0.0, 0.0) 1024 +probe rgba ( 3, 0) ( 0.14112001, -0.98999250, 0.0, 0.0) 1024 +probe rgba ( 4, 0) (-0.75680250, -0.65364362, 0.0, 0.0) 1024 +probe rgba ( 5, 0) (-0.95892427, 0.28366219, 0.0, 0.0) 1024 +probe rgba ( 6, 0) (-0.27941550, 0.96017029, 0.0, 0.0) 1024 +probe rgba ( 7, 0) ( 0.65698660, 0.75390225, 0.0, 0.0) 1024 +probe rgba ( 8, 0) ( 0.98935825, -0.14550003, 0.0, 0.0) 1024 +probe rgba ( 9, 0) ( 0.41211849, -0.91113026, 0.0, 0.0) 1024 +probe rgba (10, 0) (-0.54402111, -0.83907153, 0.0, 0.0) 1024 +probe rgba (11, 0) (-0.99999021, 0.00442570, 0.0, 0.0) 1024 +probe rgba (12, 0) (-0.53657292, 0.84385396, 0.0, 0.0) 1024 +probe rgba (13, 0) ( 0.42016704, 0.90744678, 0.0, 0.0) 1024 +probe rgba (14, 0) ( 0.99060736, 0.13673722, 0.0, 0.0) 1024 +probe rgba (15, 0) ( 0.65028784, -0.75968791, 0.0, 0.0) 1024