Split creating a reference FB and capturing the CRC for it into separate functions, so in a follow-up patch we can reuse the CRC capture function for a reference FB created in a different way. Signed-off-by: Imre Deak <imre.deak@xxxxxxxxx> --- tests/kms_plane.c | 50 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/tests/kms_plane.c b/tests/kms_plane.c index 0ebf4577..358126b6 100644 --- a/tests/kms_plane.c +++ b/tests/kms_plane.c @@ -61,11 +61,9 @@ static void test_fini(data_t *data) } static void -test_grab_crc(data_t *data, igt_output_t *output, enum pipe pipe, - color_t *fb_color, igt_crc_t *crc /* out */) +test_grab_crc_for_fb(data_t *data, igt_output_t *output, enum pipe pipe, + igt_fb_t *fb, igt_crc_t *crc /* out */) { - struct igt_fb fb; - drmModeModeInfo *mode; igt_plane_t *primary; char *crc_str; int ret; @@ -74,13 +72,7 @@ test_grab_crc(data_t *data, igt_output_t *output, enum pipe pipe, primary = igt_output_get_plane(output, 0); - mode = igt_output_get_mode(output); - igt_create_color_fb(data->drm_fd, mode->hdisplay, mode->vdisplay, - DRM_FORMAT_XRGB8888, - LOCAL_DRM_FORMAT_MOD_NONE, - fb_color->red, fb_color->green, fb_color->blue, - &fb); - igt_plane_set_fb(primary, &fb); + igt_plane_set_fb(primary, fb); ret = igt_display_try_commit2(&data->display, COMMIT_LEGACY); igt_skip_on(ret != 0); @@ -89,14 +81,24 @@ test_grab_crc(data_t *data, igt_output_t *output, enum pipe pipe, igt_plane_set_fb(primary, NULL); - igt_remove_fb(data->drm_fd, &fb); - crc_str = igt_crc_to_string(crc); - igt_debug("CRC for a (%.02f,%.02f,%.02f) fb: %s\n", fb_color->red, - fb_color->green, fb_color->blue, crc_str); + igt_debug("CRC for fb: %s\n", crc_str); free(crc_str); } +static void +test_create_fb_for_output(data_t *data, igt_output_t *output, color_t *fb_color, + igt_fb_t *fb) +{ + drmModeModeInfo *mode = igt_output_get_mode(output); + + igt_create_color_fb(data->drm_fd, mode->hdisplay, mode->vdisplay, + DRM_FORMAT_XRGB8888, + LOCAL_DRM_FORMAT_MOD_NONE, + fb_color->red, fb_color->green, fb_color->blue, + fb); +} + /* * Plane position test. * - We start by grabbing a reference CRC of a full green fb being scanned @@ -223,11 +225,15 @@ test_plane_position(data_t *data, enum pipe pipe, unsigned int flags) for_each_valid_output_on_pipe(&data->display, pipe, output) { int n_planes = data->display.pipes[pipe].n_planes; + igt_fb_t reference_fb; igt_crc_t reference_crc; test_init(data, pipe); - test_grab_crc(data, output, pipe, &green, &reference_crc); + test_create_fb_for_output(data, output, &green, &reference_fb); + test_grab_crc_for_fb(data, output, pipe, &reference_fb, + &reference_crc); + igt_remove_fb(data->drm_fd, &reference_fb); for (int plane = 1; plane < n_planes; plane++) test_plane_position_with_output(data, pipe, plane, @@ -345,13 +351,21 @@ test_plane_panning(data_t *data, enum pipe pipe, unsigned int flags) for_each_valid_output_on_pipe(&data->display, pipe, output) { int n_planes = data->display.pipes[pipe].n_planes; + igt_fb_t red_fb; + igt_fb_t blue_fb; igt_crc_t red_crc; igt_crc_t blue_crc; test_init(data, pipe); - test_grab_crc(data, output, pipe, &red, &red_crc); - test_grab_crc(data, output, pipe, &blue, &blue_crc); + test_create_fb_for_output(data, output, &red, &red_fb); + test_create_fb_for_output(data, output, &blue, &blue_fb); + + test_grab_crc_for_fb(data, output, pipe, &red_fb, &red_crc); + test_grab_crc_for_fb(data, output, pipe, &blue_fb, &blue_crc); + + igt_remove_fb(data->drm_fd, &blue_fb); + igt_remove_fb(data->drm_fd, &red_fb); for (int plane = 1; plane < n_planes; plane++) test_plane_panning_with_output(data, pipe, plane, -- 2.13.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx