Gen10 onwards 90 and 270 degree rotations are supported for RGB565 format. v2 (Ville Syrjälä): As a side effect to keep bad-pixel-format test valid on all supported platforms it need to use DRM_FORMAT_C8 now. While at it clean up kms_rotation_crc test a bit, take out test_plane_rotation_ytiled_obj() function as test_plane_rotation() can basically do the same. v3 (Ville Syrjälä): repurpose test_plane_rotation_ytiled_obj() function for bad pixel testing with DRM_FORMAT_C8 as igt doesn't support this format. Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@xxxxxxxxx> --- tests/kms_rotation_crc.c | 58 ++++++++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c index 27d1f80..1769264 100644 --- a/tests/kms_rotation_crc.c +++ b/tests/kms_rotation_crc.c @@ -376,10 +376,6 @@ static void test_plane_rotation(data_t *data, int plane_type) igt_plane_set_size(plane, data->fb.height, data->fb.width); ret = igt_display_try_commit2(display, commit); - if (data->override_fmt || data->override_tiling) { - igt_assert_eq(ret, -EINVAL); - continue; - } /* Verify commit was ok. */ igt_assert_eq(ret, 0); @@ -421,14 +417,13 @@ static void test_plane_rotation(data_t *data, int plane_type) igt_require_f(valid_tests, "no valid crtc/connector combinations found\n"); } -static void test_plane_rotation_ytiled_obj(data_t *data, +static void test_bad_pixel_format(data_t *data, igt_output_t *output, int plane_type) { igt_display_t *display = &data->display; uint64_t tiling = LOCAL_I915_FORMAT_MOD_Y_TILED; - uint32_t format = DRM_FORMAT_XRGB8888; - int bpp = igt_drm_format_to_bpp(format); + uint32_t format = DRM_FORMAT_C8; enum igt_commit_style commit = COMMIT_LEGACY; int fd = data->gfx_fd; igt_plane_t *plane; @@ -453,7 +448,7 @@ static void test_plane_rotation_ytiled_obj(data_t *data, w = mode->hdisplay; h = mode->vdisplay; - for (stride = 512; stride < (w * bpp / 8); stride *= 2) + for (stride = 512; stride < w; stride *= 2) ; for (size = 1024*1024; size < stride * h; size *= 2) ; @@ -482,7 +477,9 @@ static void test_plane_rotation_ytiled_obj(data_t *data, kmstest_restore_vt_mode(); igt_remove_fb(fd, &data->fb); - igt_assert_eq(ret, 0); + data->fb.fb_id = 0; + + igt_assert_eq(ret, -EINVAL); } static void test_plane_rotation_exhaust_fences(data_t *data, @@ -693,12 +690,25 @@ igt_main } igt_subtest_f("bad-pixel-format") { + enum pipe pipe; + igt_output_t *output; + int valid_tests = 0; + igt_require(gen >= 9); data.pos_x = 0, data.pos_y = 0; data.rotation = IGT_ROTATION_90; - data.override_fmt = DRM_FORMAT_RGB565; - test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY); + + for_each_pipe_with_valid_output(&data.display, pipe, output) { + igt_output_set_pipe(output, pipe); + + test_bad_pixel_format(&data, output, DRM_PLANE_TYPE_PRIMARY); + + valid_tests++; + break; + } + + igt_require_f(valid_tests, "invalid pixel format accepted for rotation\n"); } igt_subtest_f("bad-tiling") { @@ -709,24 +719,20 @@ igt_main test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY); } - igt_subtest_f("primary-rotation-90-Y-tiled") { - enum pipe pipe; - igt_output_t *output; - int valid_tests = 0; + igt_subtest_f("primary-rotation-90-Y-tiled-16bpp") { + igt_require(gen >= 10); + data.rotation = IGT_ROTATION_90; + data.override_fmt = DRM_FORMAT_RGB565; + data.override_tiling = LOCAL_I915_FORMAT_MOD_Y_TILED; + test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY); + } + igt_subtest_f("primary-rotation-90-Y-tiled") { igt_require(gen >= 9); data.rotation = IGT_ROTATION_90; - - for_each_pipe_with_valid_output(&data.display, pipe, output) { - igt_output_set_pipe(output, pipe); - - test_plane_rotation_ytiled_obj(&data, output, DRM_PLANE_TYPE_PRIMARY); - - valid_tests++; - break; - } - - igt_require_f(valid_tests, "no valid crtc/connector combinations found\n"); + data.override_fmt = DRM_FORMAT_XRGB8888; + data.override_tiling = LOCAL_I915_FORMAT_MOD_Y_TILED; + test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY); } igt_subtest_f("exhaust-fences") { -- 2.7.4 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx