* [igt-dev] [PATCH i-g-t v2] tests/kms_rotation_crc: Remove hardcoding of platforms in igt_require()
@ 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
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Radhakrishna Sripada @ 2018-03-09 21:45 UTC (permalink / raw)
To: igt-dev
Cc: Anusha Srivatsa, intel-gfx, Manasi Navare, Rodrigo Vivi,
Daniel Vetter
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(-)
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 1c46186e8a9d..c306aa1f5b8d 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -289,6 +289,7 @@ typedef enum {
#define IGT_ROTATION_MASK \
(IGT_ROTATION_0 | IGT_ROTATION_90 | IGT_ROTATION_180 | IGT_ROTATION_270)
+#define IGT_REFLECT_MASK (IGT_REFLECT_X | IGT_REFLECT_Y)
typedef struct {
/*< private >*/
diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index 0cd5c6e52b57..8f7e5d4f2dd2 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -38,6 +38,7 @@ typedef struct {
igt_crc_t flip_crc;
igt_pipe_crc_t *pipe_crc;
igt_rotation_t rotation;
+ int **supported_rotation;
int pos_x;
int pos_y;
uint32_t override_fmt;
@@ -373,13 +374,14 @@ 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_output_set_pipe(output, pipe);
plane = igt_output_get_plane_type(output, plane_type);
igt_require(igt_plane_has_prop(plane, IGT_PLANE_ROTATION));
+ igt_require(data->supported_rotation[pipe][plane->index] & data->rotation);
+
+ if (data->rotation & IGT_REFLECT_MASK)
+ igt_require(data->supported_rotation[pipe][plane->index] & IGT_REFLECT_MASK);
prepare_crtc(data, output, pipe, plane);
@@ -460,6 +462,36 @@ static void test_plane_rotation_exhaust_fences(data_t *data,
igt_remove_fb(fd, &fb[i]);
}
+static void igt_supported_rotation_init(data_t *data)
+{
+ igt_display_t *display = &data->display;
+ bool found;
+ int i, j, k, n_pipes = display->n_pipes;
+ int **s_rotation;
+
+ s_rotation = calloc(sizeof(int *), n_pipes);
+
+ for (i = 0; i < n_pipes; i++) {
+ s_rotation[i] = calloc(sizeof(int), (display->pipes + i)->n_planes);
+
+ for (j = 0; j < (display->pipes + i)->n_planes; j++) {
+ drmModePropertyPtr prop;
+ found = kmstest_get_property(data->gfx_fd, display->pipes[i].planes[j].drm_plane->plane_id,
+ DRM_MODE_OBJECT_PLANE, "rotation", NULL, NULL, &prop);
+ igt_assert(found);
+ igt_assert(prop->flags & DRM_MODE_PROP_BITMASK);
+
+ for (k = 0; k < prop->count_enums; k++) {
+ s_rotation[i][j] |= 1 << (prop->enums[k].value);
+ }
+
+ drmModeFreeProperty(prop);
+ }
+ }
+
+ data->supported_rotation = s_rotation;
+}
+
static const char *plane_test_str(unsigned plane)
{
switch (plane) {
@@ -552,15 +584,13 @@ igt_main
igt_require_pipe_crc(data.gfx_fd);
igt_display_init(&data.display, data.gfx_fd);
+ igt_supported_rotation_init(&data);
}
for (subtest = subtests; subtest->rot; subtest++) {
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);
}
@@ -596,9 +626,7 @@ 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));
+ igt_require(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);
--
2.9.3
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 7+ messages in thread* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Remove hardcoding of platforms in igt_require() (rev2) 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 23:29 ` 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 2 siblings, 0 replies; 7+ messages in thread From: Patchwork @ 2018-03-09 23:29 UTC (permalink / raw) To: Anusha Srivatsa; +Cc: igt-dev == Series Details == Series: tests/kms_rotation_crc: Remove hardcoding of platforms in igt_require() (rev2) URL : https://patchwork.freedesktop.org/series/38205/ State : success == Summary == IGT patchset tested on top of latest successful build 5d71d7782a830843c7231fbd72ab3edae19b48d7 igt/gem_fd_exhaustion: Modify fs.nr_open for duration of the test with latest DRM-Tip kernel build CI_DRM_3908 7e5ff4244a75 drm-tip: 2018y-03m-09d-22h-21m-43s UTC integration manifest No testlist changes. ---- Known issues: Test gem_exec_suspend: Subgroup basic-s3: pass -> DMESG-WARN (fi-skl-6700k2) fdo#104108 Test gem_mmap_gtt: Subgroup basic-small-bo-tiledx: pass -> FAIL (fi-gdg-551) fdo#102575 fdo#104108 https://bugs.freedesktop.org/show_bug.cgi?id=104108 fdo#102575 https://bugs.freedesktop.org/show_bug.cgi?id=102575 fi-bdw-5557u total:288 pass:267 dwarn:0 dfail:0 fail:0 skip:21 time:425s fi-blb-e6850 total:288 pass:223 dwarn:1 dfail:0 fail:0 skip:64 time:373s fi-bsw-n3050 total:288 pass:242 dwarn:0 dfail:0 fail:0 skip:46 time:504s fi-bwr-2160 total:288 pass:183 dwarn:0 dfail:0 fail:0 skip:105 time:279s fi-bxt-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:491s fi-bxt-j4205 total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:491s fi-byt-j1900 total:288 pass:253 dwarn:0 dfail:0 fail:0 skip:35 time:483s fi-byt-n2820 total:288 pass:249 dwarn:0 dfail:0 fail:0 skip:39 time:472s fi-cfl-8700k total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:405s fi-cfl-s2 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:574s fi-cnl-y3 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:583s fi-elk-e7500 total:288 pass:229 dwarn:0 dfail:0 fail:0 skip:59 time:415s fi-gdg-551 total:288 pass:179 dwarn:0 dfail:0 fail:1 skip:108 time:290s fi-glk-1 total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:518s fi-hsw-4770 total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:396s fi-ilk-650 total:288 pass:228 dwarn:0 dfail:0 fail:0 skip:60 time:412s fi-ivb-3520m total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:468s fi-ivb-3770 total:288 pass:255 dwarn:0 dfail:0 fail:0 skip:33 time:425s fi-kbl-7500u total:288 pass:263 dwarn:1 dfail:0 fail:0 skip:24 time:469s fi-kbl-7567u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:466s fi-kbl-r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:508s fi-pnv-d510 total:288 pass:222 dwarn:1 dfail:0 fail:0 skip:65 time:587s fi-skl-6260u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:428s fi-skl-6600u total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:527s fi-skl-6700hq total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:536s fi-skl-6700k2 total:288 pass:263 dwarn:1 dfail:0 fail:0 skip:24 time:504s fi-skl-6770hq total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:480s fi-skl-guc total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:422s fi-skl-gvtdvm total:288 pass:265 dwarn:0 dfail:0 fail:0 skip:23 time:429s fi-snb-2520m total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:530s fi-snb-2600 total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:395s Blacklisted hosts: fi-cfl-u total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:505s fi-cnl-drrs total:288 pass:257 dwarn:3 dfail:0 fail:0 skip:19 time:515s == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1102/issues.html _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 7+ messages in thread
* [igt-dev] ✗ Fi.CI.IGT: failure for tests/kms_rotation_crc: Remove hardcoding of platforms in igt_require() (rev2) 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 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 ` 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 2 siblings, 0 replies; 7+ messages in thread From: Patchwork @ 2018-03-10 7:02 UTC (permalink / raw) To: Anusha Srivatsa; +Cc: igt-dev == Series Details == Series: tests/kms_rotation_crc: Remove hardcoding of platforms in igt_require() (rev2) URL : https://patchwork.freedesktop.org/series/38205/ State : failure == Summary == ---- Possible new issues: Test kms_color: Subgroup pipe-c-ctm-negative: pass -> FAIL (shard-apl) Test kms_cursor_crc: Subgroup cursor-64x64-suspend: skip -> PASS (shard-snb) ---- Known issues: Test kms_flip: Subgroup flip-vs-panning-vs-hang-interruptible: pass -> DMESG-WARN (shard-snb) fdo#103821 Test kms_rotation_crc: Subgroup primary-rotation-270: pass -> FAIL (shard-apl) fdo#105185 Test kms_setmode: Subgroup basic: fail -> PASS (shard-apl) fdo#99912 Test kms_vblank: Subgroup pipe-b-accuracy-idle: pass -> FAIL (shard-hsw) fdo#102583 fdo#103821 https://bugs.freedesktop.org/show_bug.cgi?id=103821 fdo#105185 https://bugs.freedesktop.org/show_bug.cgi?id=105185 fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912 fdo#102583 https://bugs.freedesktop.org/show_bug.cgi?id=102583 shard-apl total:3409 pass:1800 dwarn:1 dfail:0 fail:8 skip:1598 time:11955s shard-hsw total:3467 pass:1772 dwarn:1 dfail:0 fail:2 skip:1691 time:11613s shard-snb total:3467 pass:1364 dwarn:2 dfail:0 fail:1 skip:2100 time:6991s Blacklisted hosts: shard-kbl total:3409 pass:1923 dwarn:1 dfail:0 fail:7 skip:1476 time:8814s == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1102/shards.html _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v2] tests/kms_rotation_crc: Remove hardcoding of platforms in igt_require() 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 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 ` Maarten Lankhorst 2018-03-12 14:23 ` Ville Syrjälä 2 siblings, 1 reply; 7+ messages in thread From: Maarten Lankhorst @ 2018-03-12 11:03 UTC (permalink / raw) To: Radhakrishna Sripada, igt-dev Cc: Anusha Srivatsa, intel-gfx, Manasi Navare, Rodrigo Vivi, Daniel Vetter 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.. 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 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v2] tests/kms_rotation_crc: Remove hardcoding of platforms in igt_require() 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 14:23 ` Ville Syrjälä 2018-03-12 15:09 ` Maarten Lankhorst 0 siblings, 1 reply; 7+ messages in thread From: Ville Syrjälä @ 2018-03-12 14:23 UTC (permalink / raw) To: Maarten Lankhorst Cc: Manasi Navare, Anusha Srivatsa, intel-gfx, igt-dev, Rodrigo Vivi, Daniel Vetter 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 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v2] tests/kms_rotation_crc: Remove hardcoding of platforms in igt_require() 2018-03-12 14:23 ` Ville Syrjälä @ 2018-03-12 15:09 ` Maarten Lankhorst 2018-03-12 15:22 ` [Intel-gfx] " Ville Syrjälä 0 siblings, 1 reply; 7+ messages in thread From: Maarten Lankhorst @ 2018-03-12 15:09 UTC (permalink / raw) To: Ville Syrjälä Cc: Manasi Navare, Anusha Srivatsa, intel-gfx, igt-dev, Rodrigo Vivi, Daniel Vetter Op 12-03-18 om 15:23 schreef Ville Syrjälä: > 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 So can we leave it the way it is now? ~Maarten _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Intel-gfx] [igt-dev] [PATCH i-g-t v2] tests/kms_rotation_crc: Remove hardcoding of platforms in igt_require() 2018-03-12 15:09 ` Maarten Lankhorst @ 2018-03-12 15:22 ` Ville Syrjälä 0 siblings, 0 replies; 7+ messages in thread From: Ville Syrjälä @ 2018-03-12 15:22 UTC (permalink / raw) To: Maarten Lankhorst; +Cc: intel-gfx, igt-dev, Rodrigo Vivi, Daniel Vetter On Mon, Mar 12, 2018 at 04:09:06PM +0100, Maarten Lankhorst wrote: > Op 12-03-18 om 15:23 schreef Ville Syrjälä: > > 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 > So can we leave it the way it is now? Maybe. I don't really know what we're trying to test here. Someone should probably remove the bogus x-tiling check from chv at least. Perhaps the best solution would be to make it as generic as possible by checking the plane supported rotations, while still keeoing the manual checks for the few exceptions I listed above. Might even be nice to put the generic stuff into something like igt_plane_has_rotation(). And maybe the exceptions should be there as well? -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-03-12 15:22 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 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 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 14:23 ` Ville Syrjälä 2018-03-12 15:09 ` Maarten Lankhorst 2018-03-12 15:22 ` [Intel-gfx] " Ville Syrjälä
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox