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 <[email protected]>
---
 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
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to