From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Manasi Navare <manasi.d.navare@intel.com>,
Anusha Srivatsa <anusha.srivatsa@intel.com>,
intel-gfx@lists.freedesktop.org, igt-dev@lists.freedesktop.org,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Daniel Vetter <daniel.vetter@intel.com>
Subject: Re: [igt-dev] [PATCH i-g-t v2] tests/kms_rotation_crc: Remove hardcoding of platforms in igt_require()
Date: Mon, 12 Mar 2018 16:23:14 +0200 [thread overview]
Message-ID: <20180312142314.GE5453@intel.com> (raw)
In-Reply-To: <bcd3dbda-52db-eee0-8d33-0294f92c4741@linux.intel.com>
On Mon, Mar 12, 2018 at 12:03:17PM +0100, Maarten Lankhorst wrote:
> Op 09-03-18 om 22:45 schreef Radhakrishna Sripada:
> > From: Anusha Srivatsa <anusha.srivatsa@intel.com>
> >
> > 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@intel.com>
> > Cc: Daniel Vetter <daniel.vetter@intel.com>
> > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > Cc: Mika Kahola <mika.kahola@intel.com>
> > Cc: Manasi Navare <manasi.d.navare@intel.com>
> > Signed-off-by: Anusha Srivatsa <anusha.srivatsa@intel.com>
> > Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
> > ---
> > 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..
The current code is actually wrong. chv doesn't require X-tiling for
reflection.
I think the actual hardware restrictions we have are:
gen4+: 0/180 degree rotation supported always
chv: supports reflection, except with 180 degree rotation
gen9+: 90/270 degree rotation supported with y/yf tiling
gen10+: supports reflection, except with linear fb
>
> 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) {
>
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
--
Ville Syrjälä
Intel OTC
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
WARNING: multiple messages have this Message-ID (diff)
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org, igt-dev@lists.freedesktop.org,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Daniel Vetter <daniel.vetter@intel.com>
Subject: Re: [igt-dev] [PATCH i-g-t v2] tests/kms_rotation_crc: Remove hardcoding of platforms in igt_require()
Date: Mon, 12 Mar 2018 16:23:14 +0200 [thread overview]
Message-ID: <20180312142314.GE5453@intel.com> (raw)
In-Reply-To: <bcd3dbda-52db-eee0-8d33-0294f92c4741@linux.intel.com>
On Mon, Mar 12, 2018 at 12:03:17PM +0100, Maarten Lankhorst wrote:
> Op 09-03-18 om 22:45 schreef Radhakrishna Sripada:
> > From: Anusha Srivatsa <anusha.srivatsa@intel.com>
> >
> > 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@intel.com>
> > Cc: Daniel Vetter <daniel.vetter@intel.com>
> > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > Cc: Mika Kahola <mika.kahola@intel.com>
> > Cc: Manasi Navare <manasi.d.navare@intel.com>
> > Signed-off-by: Anusha Srivatsa <anusha.srivatsa@intel.com>
> > Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
> > ---
> > 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..
The current code is actually wrong. chv doesn't require X-tiling for
reflection.
I think the actual hardware restrictions we have are:
gen4+: 0/180 degree rotation supported always
chv: supports reflection, except with 180 degree rotation
gen9+: 90/270 degree rotation supported with y/yf tiling
gen10+: supports reflection, except with linear fb
>
> 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) {
>
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
--
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2018-03-12 14:23 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-09 21:45 [igt-dev] [PATCH i-g-t v2] tests/kms_rotation_crc: Remove hardcoding of platforms in igt_require() Radhakrishna Sripada
2018-03-09 21:45 ` Radhakrishna Sripada
2018-03-09 23:29 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Remove hardcoding of platforms in igt_require() (rev2) Patchwork
2018-03-10 7:02 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2018-03-12 11:03 ` [igt-dev] [PATCH i-g-t v2] tests/kms_rotation_crc: Remove hardcoding of platforms in igt_require() Maarten Lankhorst
2018-03-12 11:03 ` Maarten Lankhorst
2018-03-12 14:23 ` Ville Syrjälä [this message]
2018-03-12 14:23 ` [igt-dev] " Ville Syrjälä
2018-03-12 15:09 ` Maarten Lankhorst
2018-03-12 15:09 ` Maarten Lankhorst
2018-03-12 15:22 ` [Intel-gfx] " Ville Syrjälä
2018-03-12 15:22 ` Ville Syrjälä
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180312142314.GE5453@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=anusha.srivatsa@intel.com \
--cc=daniel.vetter@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=manasi.d.navare@intel.com \
--cc=rodrigo.vivi@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.