tests: run subsurface-shot on GL too
This adds the necessary fuzz to image matching to let GL-renderer pass. The difference is due to rounding. weston-test-desktop-shell.c uses weston_surface_set_color(dts->background_surface, 0.16, 0.32, 0.48, 1.); to set the background color. Pixman-renderer will truncate those to uint8, but GL-renderer seems to round instead, which causes the +1 in background color channel values. 0.16 * 255 = 40.8 0.32 * 255 = 81.6 0.48 * 255 = 122.4 Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
This commit is contained in:
committed by
Pekka Paalanen
parent
1eae54714f
commit
741fca40b5
@@ -50,10 +50,6 @@ fixture_setup(struct weston_test_harness *harness, const enum renderer_type *arg
|
|||||||
setup.shell = SHELL_TEST_DESKTOP;
|
setup.shell = SHELL_TEST_DESKTOP;
|
||||||
setup.logging_scopes = "log,test-harness-plugin";
|
setup.logging_scopes = "log,test-harness-plugin";
|
||||||
|
|
||||||
/* This test fails due to color rounding on GL */
|
|
||||||
if (setup.renderer == RENDERER_GL)
|
|
||||||
return RESULT_SKIP;
|
|
||||||
|
|
||||||
return weston_test_harness_execute_as_client(harness, &setup);
|
return weston_test_harness_execute_as_client(harness, &setup);
|
||||||
}
|
}
|
||||||
DECLARE_FIXTURE_SETUP_WITH_ARG(fixture_setup, renderers);
|
DECLARE_FIXTURE_SETUP_WITH_ARG(fixture_setup, renderers);
|
||||||
@@ -124,7 +120,8 @@ write_visual_diff(pixman_image_t *ref_image,
|
|||||||
struct buffer *shot,
|
struct buffer *shot,
|
||||||
const struct rectangle *clip,
|
const struct rectangle *clip,
|
||||||
const char *test_name,
|
const char *test_name,
|
||||||
int seq_no)
|
int seq_no,
|
||||||
|
const struct range *fuzz)
|
||||||
{
|
{
|
||||||
char *fname;
|
char *fname;
|
||||||
char *ext_test_name;
|
char *ext_test_name;
|
||||||
@@ -135,7 +132,7 @@ write_visual_diff(pixman_image_t *ref_image,
|
|||||||
assert(ret >= 0);
|
assert(ret >= 0);
|
||||||
|
|
||||||
fname = screenshot_output_filename(ext_test_name, seq_no);
|
fname = screenshot_output_filename(ext_test_name, seq_no);
|
||||||
diff = visualize_image_difference(shot->image, ref_image, clip, NULL);
|
diff = visualize_image_difference(ref_image, shot->image, clip, fuzz);
|
||||||
write_image_as_png(diff, fname);
|
write_image_as_png(diff, fname);
|
||||||
|
|
||||||
pixman_image_unref(diff);
|
pixman_image_unref(diff);
|
||||||
@@ -151,6 +148,7 @@ check_screen(struct client *client,
|
|||||||
int seq_no)
|
int seq_no)
|
||||||
{
|
{
|
||||||
const char *test_name = get_test_name();
|
const char *test_name = get_test_name();
|
||||||
|
const struct range gl_fuzz = { 0, 1 };
|
||||||
struct buffer *shot;
|
struct buffer *shot;
|
||||||
pixman_image_t *ref;
|
pixman_image_t *ref;
|
||||||
char *ref_fname;
|
char *ref_fname;
|
||||||
@@ -166,13 +164,13 @@ check_screen(struct client *client,
|
|||||||
shot = capture_screenshot_of_output(client);
|
shot = capture_screenshot_of_output(client);
|
||||||
assert(shot);
|
assert(shot);
|
||||||
|
|
||||||
match = check_images_match(shot->image, ref, clip, NULL);
|
match = check_images_match(ref, shot->image, clip, &gl_fuzz);
|
||||||
testlog("ref %s vs. shot %s: %s\n", ref_fname, shot_fname,
|
testlog("ref %s vs. shot %s: %s\n", ref_fname, shot_fname,
|
||||||
match ? "PASS" : "FAIL");
|
match ? "PASS" : "FAIL");
|
||||||
|
|
||||||
write_image_as_png(shot->image, shot_fname);
|
write_image_as_png(shot->image, shot_fname);
|
||||||
if (!match)
|
if (!match)
|
||||||
write_visual_diff(ref, shot, clip, test_name, seq_no);
|
write_visual_diff(ref, shot, clip, test_name, seq_no, &gl_fuzz);
|
||||||
|
|
||||||
buffer_destroy(shot);
|
buffer_destroy(shot);
|
||||||
pixman_image_unref(ref);
|
pixman_image_unref(ref);
|
||||||
|
|||||||
Reference in New Issue
Block a user