diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/kms_plane.c | 52 |
1 files changed, 28 insertions, 24 deletions
diff --git a/tests/kms_plane.c b/tests/kms_plane.c index 4007c894..3f14dbf8 100644 --- a/tests/kms_plane.c +++ b/tests/kms_plane.c @@ -447,8 +447,6 @@ static void test_format_plane_color(data_t *data, enum pipe pipe, static bool test_format_plane(data_t *data, enum pipe pipe, igt_output_t *output, igt_plane_t *plane) { - igt_plane_t *primary; - struct igt_fb primary_fb; struct igt_fb fb = {}; drmModeModeInfo *mode; uint32_t format, ref_format; @@ -481,18 +479,6 @@ static bool test_format_plane(data_t *data, enum pipe pipe, igt_output_name(output), kmstest_plane_type_name(plane->type), kmstest_pipe_name(pipe), plane->index); - igt_create_fb(data->drm_fd, mode->hdisplay, mode->vdisplay, - DRM_FORMAT_XRGB8888, LOCAL_DRM_FORMAT_MOD_NONE, &primary_fb); - - igt_output_set_pipe(output, pipe); - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); - igt_plane_set_fb(primary, &primary_fb); - - igt_display_commit2(&data->display, data->display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY); - - set_legacy_lut(data, pipe, 0xfc00); - - test_init(data, pipe); igt_pipe_crc_start(data->pipe_crc); igt_info("Testing format " IGT_FORMAT_FMT " on %s.%u\n", @@ -562,17 +548,9 @@ static bool test_format_plane(data_t *data, enum pipe pipe, } igt_pipe_crc_stop(data->pipe_crc); - test_fini(data); - - set_legacy_lut(data, pipe, 0xffff); - igt_plane_set_fb(primary, NULL); igt_plane_set_fb(plane, NULL); - igt_output_set_pipe(output, PIPE_NONE); - igt_display_commit2(&data->display, data->display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY); - igt_remove_fb(data->drm_fd, &fb); - igt_remove_fb(data->drm_fd, &primary_fb); return result; } @@ -580,6 +558,9 @@ static bool test_format_plane(data_t *data, enum pipe pipe, static void test_pixel_formats(data_t *data, enum pipe pipe) { + struct igt_fb primary_fb; + igt_plane_t *primary; + drmModeModeInfo *mode; bool result; igt_output_t *output; igt_plane_t *plane; @@ -587,13 +568,36 @@ test_pixel_formats(data_t *data, enum pipe pipe) output = igt_get_single_output_for_pipe(&data->display, pipe); igt_require(output); + mode = igt_output_get_mode(output); + + igt_create_fb(data->drm_fd, mode->hdisplay, mode->vdisplay, + DRM_FORMAT_XRGB8888, LOCAL_DRM_FORMAT_MOD_NONE, &primary_fb); + + igt_output_set_pipe(output, pipe); + primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); + igt_plane_set_fb(primary, &primary_fb); + + igt_display_commit2(&data->display, data->display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY); + + set_legacy_lut(data, pipe, 0xfc00); + + test_init(data, pipe); + result = true; for_each_plane_on_pipe(&data->display, pipe, plane) result &= test_format_plane(data, pipe, output, plane); - igt_assert_f(result, "At least one CRC mismatch happened\n"); + test_fini(data); - igt_output_set_pipe(output, PIPE_ANY); + set_legacy_lut(data, pipe, 0xffff); + + igt_plane_set_fb(primary, NULL); + igt_output_set_pipe(output, PIPE_NONE); + igt_display_commit2(&data->display, data->display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY); + + igt_remove_fb(data->drm_fd, &primary_fb); + + igt_assert_f(result, "At least one CRC mismatch happened\n"); } static void |