diff options
-rw-r--r-- | lib/igt_chamelium.c | 21 | ||||
-rw-r--r-- | lib/igt_chamelium.h | 21 | ||||
-rw-r--r-- | tests/kms_chamelium.c | 9 |
3 files changed, 34 insertions, 17 deletions
diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c index dcf8e2f1..62f7e40c 100644 --- a/lib/igt_chamelium.c +++ b/lib/igt_chamelium.c @@ -1095,19 +1095,21 @@ void chamelium_assert_crc_eq_or_dump(struct chamelium *chamelium, } /** - * chamelium_assert_analog_frame_match_or_dump: + * chamelium_assert_frame_match_or_dump: * @chamelium: The chamelium instance the frame dump belongs to * @frame: The chamelium frame dump to match * @fb: pointer to an #igt_fb structure + * @check: the type of frame matching check to use * * Asserts that the provided captured frame matches the reference frame from * the framebuffer. If they do not, this saves the reference and captured frames * to a png file. */ -void chamelium_assert_analog_frame_match_or_dump(struct chamelium *chamelium, - struct chamelium_port *port, - const struct chamelium_frame_dump *frame, - struct igt_fb *fb) +void chamelium_assert_frame_match_or_dump(struct chamelium *chamelium, + struct chamelium_port *port, + const struct chamelium_frame_dump *frame, + struct igt_fb *fb, + enum chamelium_check check) { cairo_surface_t *reference; cairo_surface_t *capture; @@ -1121,7 +1123,14 @@ void chamelium_assert_analog_frame_match_or_dump(struct chamelium *chamelium, /* Grab the captured frame from chamelium */ capture = convert_frame_dump_argb32(frame); - match = igt_check_analog_frame_match(reference, capture); + switch (check) { + case CHAMELIUM_CHECK_ANALOG: + match = igt_check_analog_frame_match(reference, capture); + break; + default: + igt_assert(false); + } + if (!match && igt_frame_dump_is_enabled()) { reference_crc = malloc(sizeof(igt_crc_t)); igt_assert(reference_crc); diff --git a/lib/igt_chamelium.h b/lib/igt_chamelium.h index af9655a0..2f8e31db 100644 --- a/lib/igt_chamelium.h +++ b/lib/igt_chamelium.h @@ -40,6 +40,18 @@ struct chamelium_port; struct chamelium_frame_dump; struct chamelium_fb_crc_async_data; +/** + * chamelium_check: + * @CHAMELIUM_CHECK_ANALOG: Fuzzy checking method for analog interfaces + * @CHAMELIUM_CHECK_CRC: CRC-based checking method for pixel-perfect interfaces + * + * Checking method for comparing between reference and captured frames. + */ +enum chamelium_check { + CHAMELIUM_CHECK_ANALOG, + CHAMELIUM_CHECK_CRC, +}; + struct chamelium *chamelium_init(int drm_fd); void chamelium_deinit(struct chamelium *chamelium); void chamelium_reset(struct chamelium *chamelium); @@ -110,10 +122,11 @@ void chamelium_assert_crc_eq_or_dump(struct chamelium *chamelium, igt_crc_t *reference_crc, igt_crc_t *capture_crc, struct igt_fb *fb, int index); -void chamelium_assert_analog_frame_match_or_dump(struct chamelium *chamelium, - struct chamelium_port *port, - const struct chamelium_frame_dump *frame, - struct igt_fb *fb); +void chamelium_assert_frame_match_or_dump(struct chamelium *chamelium, + struct chamelium_port *port, + const struct chamelium_frame_dump *frame, + struct igt_fb *fb, + enum chamelium_check check); void chamelium_crop_analog_frame(struct chamelium_frame_dump *dump, int width, int height); void chamelium_destroy_frame_dump(struct chamelium_frame_dump *dump); diff --git a/tests/kms_chamelium.c b/tests/kms_chamelium.c index fe58aea9..6bf5358a 100644 --- a/tests/kms_chamelium.c +++ b/tests/kms_chamelium.c @@ -527,11 +527,6 @@ static int chamelium_get_pattern_fb(data_t *data, size_t width, size_t height, return fb_id; } -enum chamelium_check { - CHAMELIUM_CHECK_ANALOG, - CHAMELIUM_CHECK_CRC, -}; - static void do_test_display(data_t *data, struct chamelium_port *port, igt_output_t *output, drmModeModeInfo *mode, uint32_t fourcc, enum chamelium_check check, @@ -590,8 +585,8 @@ static void do_test_display(data_t *data, struct chamelium_port *port, 0, 0); chamelium_crop_analog_frame(dump, mode->hdisplay, mode->vdisplay); - chamelium_assert_analog_frame_match_or_dump(data->chamelium, - port, dump, &fb); + chamelium_assert_frame_match_or_dump(data->chamelium, port, + dump, &fb, check); chamelium_destroy_frame_dump(dump); } |