Op 09-03-18 om 22:45 schreef Radhakrishna Sripada: > From: Anusha Srivatsa <anusha.srivatsa@xxxxxxxxx> > > Rework the rotate and reflect subtests by checking the > crtc supported properties against the ones that the > test is testing. Remove the hardcoded platform names in > igt_require() > > v2: Make use of the property enums to get the supported rotations > > Cc: Radhakrishna Sripada <radhakrishna.sripada@xxxxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxxx> > Cc: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> > Cc: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > Cc: Mika Kahola <mika.kahola@xxxxxxxxx> > Cc: Manasi Navare <manasi.d.navare@xxxxxxxxx> > Signed-off-by: Anusha Srivatsa <anusha.srivatsa@xxxxxxxxx> > Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@xxxxxxxxx> > --- > lib/igt_kms.h | 1 + > tests/kms_rotation_crc.c | 46 +++++++++++++++++++++++++++++++++++++--------- > 2 files changed, 38 insertions(+), 9 deletions(-) Just let it rest, it's not worth the effort to remove this, you only end up with more complicated code.. Closest I've come is below. Which will still fail because it will try to generate the wrong tilings pre-gen9.. Lets keep it as it is now? --- diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c index 0cd5c6e52b57..9b9da53054c1 100644 --- a/tests/kms_rotation_crc.c +++ b/tests/kms_rotation_crc.c @@ -42,7 +42,6 @@ typedef struct { int pos_y; uint32_t override_fmt; uint64_t override_tiling; - int devid; } data_t; typedef struct { @@ -358,11 +357,22 @@ static void test_single_case(data_t *data, enum pipe pipe, } } +static bool supports_rotation(igt_display_t *display, igt_plane_t *plane, uint64_t rotation) +{ + igt_require(igt_plane_has_prop(plane, IGT_PLANE_ROTATION)); + + igt_assert(!igt_display_try_commit_atomic(display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL)); + igt_plane_set_prop_value(plane, IGT_PLANE_ROTATION, rotation); + + return !igt_display_try_commit_atomic(display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); +} + static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_format) { igt_display_t *display = &data->display; igt_output_t *output; enum pipe pipe; + bool tested = false; if (plane_type == DRM_PLANE_TYPE_CURSOR) igt_require(display->has_cursor_plane); @@ -373,13 +383,15 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form igt_plane_t *plane; int i, j; - if (IS_CHERRYVIEW(data->devid) && pipe != PIPE_B) - continue; + igt_display_reset(display); igt_output_set_pipe(output, pipe); - plane = igt_output_get_plane_type(output, plane_type); - igt_require(igt_plane_has_prop(plane, IGT_PLANE_ROTATION)); + + if (!supports_rotation(display, plane, data->rotation)) + continue; + + tested = true; prepare_crtc(data, output, pipe, plane); @@ -410,6 +422,8 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form } } } + + igt_assert_f(tested, "Rotation for this plane type not supported on any valid pipe.\n"); } static void test_plane_rotation_exhaust_fences(data_t *data, @@ -538,14 +552,11 @@ igt_main }; data_t data = {}; - int gen = 0; igt_skip_on_simulation(); igt_fixture { data.gfx_fd = drm_open_driver_master(DRIVER_INTEL); - data.devid = intel_get_drm_devid(data.gfx_fd); - gen = intel_gen(data.devid); kmstest_set_vt_graphics_mode(); @@ -558,16 +569,12 @@ igt_main igt_subtest_f("%s-rotation-%s", plane_test_str(subtest->plane), rot_test_str(subtest->rot)) { - igt_require(!(subtest->rot & - (IGT_ROTATION_90 | IGT_ROTATION_270)) || - gen >= 9); data.rotation = subtest->rot; test_plane_rotation(&data, subtest->plane, false); } } igt_subtest_f("sprite-rotation-90-pos-100-0") { - igt_require(gen >= 9); data.rotation = IGT_ROTATION_90; data.pos_x = 100, data.pos_y = 0; @@ -577,7 +584,6 @@ igt_main data.pos_y = 0; igt_subtest_f("bad-pixel-format") { - igt_require(gen >= 9); data.rotation = IGT_ROTATION_90; data.override_fmt = DRM_FORMAT_RGB565; test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, true); @@ -585,7 +591,6 @@ igt_main data.override_fmt = 0; igt_subtest_f("bad-tiling") { - igt_require(gen >= 9); data.rotation = IGT_ROTATION_90; data.override_tiling = LOCAL_I915_FORMAT_MOD_X_TILED; test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, true); @@ -596,9 +601,6 @@ igt_main igt_subtest_f("primary-%s-reflect-x-%s", tiling_test_str(reflect_x->tiling), rot_test_str(reflect_x->rot)) { - igt_require(gen >= 10 || - (IS_CHERRYVIEW(data.devid) && reflect_x->rot == IGT_ROTATION_0 - && reflect_x->tiling == LOCAL_I915_FORMAT_MOD_X_TILED)); data.rotation = (IGT_REFLECT_X | reflect_x->rot); data.override_tiling = reflect_x->tiling; test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, false); @@ -613,7 +615,6 @@ igt_main enum pipe pipe; igt_output_t *output; - igt_require(gen >= 9); igt_display_require_output(&data.display); for_each_pipe_with_valid_output(&data.display, pipe, output) { _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx