* [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests.
@ 2018-10-24 13:33 Juha-Pekka Heikkila
2018-10-24 18:25 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
` (18 more replies)
0 siblings, 19 replies; 28+ messages in thread
From: Juha-Pekka Heikkila @ 2018-10-24 13:33 UTC (permalink / raw)
To: igt-dev
Add three new tests which try primary and sprite planes
next to each other with different plane formats, rotations
and tiling modes.
multiplane-rotation subtest run test through with both planes
fully visible.
multiplane-rotation-cropping-top will crop primary plane to
left/top corner and sprite plane to right/top corner while running
rotation tests.
multiplane-rotation-cropping-bottom will crop primary plane to
left/bottom corner and sprite plane to right/bottom corner while
running rotation tests.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
tests/kms_rotation_crc.c | 243 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 243 insertions(+)
diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index c233ef6..06a9a61 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -26,6 +26,25 @@
#include <math.h>
#define MAX_FENCES 32
+#define MAXMULTIPLANESAMOUNT 2
+
+struct p_struct {
+ igt_plane_t *plane;
+ struct igt_fb fb;
+};
+
+enum p_pointorigo {
+ p_top = 1 << 0,
+ p_bottom = 1 << 1,
+ p_left = 1 << 2,
+ p_right = 1 << 3
+};
+
+struct p_point{
+ enum p_pointorigo origo;
+ int32_t x;
+ int32_t y;
+};
typedef struct {
int gfx_fd;
@@ -43,6 +62,9 @@ typedef struct {
uint32_t override_fmt;
uint64_t override_tiling;
int devid;
+
+ struct p_struct *multiplaneoldview;
+ struct p_point planepos[MAXMULTIPLANESAMOUNT];
} data_t;
typedef struct {
@@ -392,6 +414,191 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
}
}
+typedef struct {
+ int32_t x1, y1;
+ uint64_t width, height, tiling, planetype, format;
+ igt_rotation_t rotation_sw, rotation_hw;
+} planeinfos;
+
+static void get_multiplane_crc(data_t *data, igt_output_t *output,
+ igt_crc_t *crc_output, planeinfos* planeinfo,
+ int numplanes)
+{
+ uint32_t w, h;
+ igt_display_t *display = &data->display;
+ struct p_struct *planes, *oldplanes;
+ int c, ret;
+
+ oldplanes = data->multiplaneoldview;
+ planes = malloc(sizeof(*planes)*numplanes);
+
+ for (c = 0; c < numplanes; c++) {
+ planes[c].plane = igt_output_get_plane_type(output,
+ planeinfo[c].planetype);
+
+ w = planeinfo[c].width;
+ h = planeinfo[c].height;
+
+ if ((planeinfo[c].rotation_hw|planeinfo[c].rotation_sw)
+ &(IGT_ROTATION_90|IGT_ROTATION_270))
+ igt_swap(w, h);
+
+ igt_plane_set_size(planes[c].plane, w, h);
+
+ igt_create_fb(data->gfx_fd, w, h, planeinfo->format,
+ planeinfo[c].tiling, &planes[c].fb);
+
+ paint_squares(data, planeinfo[c].rotation_sw, &planes[c].fb, 1.0f);
+ igt_plane_set_fb(planes[c].plane, &planes[c].fb);
+ igt_plane_set_position(planes[c].plane, planeinfo[c].x1, planeinfo[c].y1);
+ igt_plane_set_rotation(planes[c].plane, planeinfo[c].rotation_hw);
+ }
+
+ ret = igt_display_try_commit2(display, COMMIT_ATOMIC);
+ igt_assert_eq(ret, 0);
+
+ igt_pipe_crc_get_current(data->gfx_fd, data->pipe_crc, crc_output);
+
+ for (c = 0; c < numplanes && oldplanes; c++)
+ igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
+
+ free(oldplanes);
+ data->multiplaneoldview = (void*)planes;
+}
+
+static void pointlocation(data_t *data, planeinfos* p, drmModeModeInfo *mode,
+ int c)
+{
+ p[c].x1 = data->planepos[c].x
+ +((data->planepos[c].origo&p_right)?mode->hdisplay:0);
+ p[c].y1 = data->planepos[c].y
+ +((data->planepos[c].origo&p_bottom)?mode->vdisplay:0);
+}
+
+/*
+ * Here is pipe parameter which is now used only for first pipe.
+ * It is left here if this test ever was wanted to be run on
+ * different pipes.
+ */
+static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
+{
+ igt_display_t *display = &data->display;
+ igt_output_t *output;
+ igt_crc_t retcrc_sw, retcrc_hw;
+ planeinfos p[2];
+ int c;
+ struct p_struct *oldplanes;
+ drmModeModeInfo *mode;
+
+ const static struct {
+ igt_rotation_t rotation;
+ uint64_t width;
+ uint64_t height;
+ uint64_t tiling;
+ } planeconfigs[] = {
+ {IGT_ROTATION_0, 512, 512, LOCAL_DRM_FORMAT_MOD_NONE },
+ {IGT_ROTATION_0, 512, 512, LOCAL_I915_FORMAT_MOD_X_TILED },
+ {IGT_ROTATION_0, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_0, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ {IGT_ROTATION_90, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_90, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ {IGT_ROTATION_180, 512, 512, LOCAL_DRM_FORMAT_MOD_NONE },
+ {IGT_ROTATION_180, 512, 512, LOCAL_I915_FORMAT_MOD_X_TILED },
+ {IGT_ROTATION_180, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_180, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ {IGT_ROTATION_270, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_270, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ };
+
+ /*
+ * These are those modes which are tested. For testing feel interesting
+ * case with tiling are 2 byte wide and 4 byte wide.
+ *
+ * TODO:
+ * Built support for NV12 here.
+ */
+ const static uint32_t formatlist[] = {DRM_FORMAT_RGB565,
+ DRM_FORMAT_XRGB8888};
+
+
+ for_each_valid_output_on_pipe(display, pipe, output) {
+ int i, j, k, l;
+ igt_output_set_pipe(output, pipe);
+
+ mode = igt_output_get_mode(output);
+
+ igt_display_require_output(display);
+ igt_display_commit2(display, COMMIT_ATOMIC);
+
+ data->pipe_crc = igt_pipe_crc_new(data->gfx_fd, pipe,
+ INTEL_PIPE_CRC_SOURCE_AUTO);
+ igt_pipe_crc_start(data->pipe_crc);
+
+ for (i = 0; i < ARRAY_SIZE(planeconfigs); i++) {
+ p[0].planetype = DRM_PLANE_TYPE_PRIMARY;
+ p[0].width = planeconfigs[i].width;
+ p[0].height = planeconfigs[i].height;
+ p[0].tiling = planeconfigs[i].tiling;
+ pointlocation(data, &p, mode, 0);
+
+ for (k = 0; k < ARRAY_SIZE(formatlist); k++) {
+ p[0].format = formatlist[k];
+
+ for (j = 0; j < ARRAY_SIZE(planeconfigs); j++) {
+ p[1].planetype = DRM_PLANE_TYPE_OVERLAY;
+ p[1].width = planeconfigs[j].width;
+ p[1].height = planeconfigs[j].height;
+ p[1].tiling = planeconfigs[j].tiling;
+ pointlocation(data, &p, mode, 1);
+
+ for (l = 0; l < ARRAY_SIZE(formatlist); l++) {
+ p[1].format = formatlist[l];
+
+ /*
+ * RGB565 90/270 degrees rotation is supported
+ * from gen11 onwards.
+ */
+ if ((p[0].format == DRM_FORMAT_RGB565||
+ p[1].format == DRM_FORMAT_RGB565) &&
+ ((planeconfigs[i].rotation|planeconfigs[j].rotation)
+ &(IGT_ROTATION_90|IGT_ROTATION_270)) &&
+ intel_gen(data->devid) < 11)
+ continue;
+
+ p[0].rotation_sw = planeconfigs[i].rotation;
+ p[0].rotation_hw = IGT_ROTATION_0;
+ p[1].rotation_sw = planeconfigs[j].rotation;
+ p[1].rotation_hw = IGT_ROTATION_0;
+ get_multiplane_crc(data, output, &retcrc_sw,
+ (planeinfos*)&p, MAXMULTIPLANESAMOUNT);
+
+ igt_swap(p[0].rotation_sw, p[0].rotation_hw);
+ igt_swap(p[1].rotation_sw, p[1].rotation_hw);
+ get_multiplane_crc(data, output, &retcrc_hw,
+ (planeinfos*)&p, MAXMULTIPLANESAMOUNT);
+
+ igt_assert_crc_equal(&retcrc_sw, &retcrc_hw);
+ }
+ }
+ }
+ }
+ igt_pipe_crc_stop(data->pipe_crc);
+ igt_pipe_crc_free(data->pipe_crc);
+ }
+
+ /*
+ * Old fbs are deleted only after new ones are set on planes.
+ * This is done to speed up the test
+ */
+ oldplanes = data->multiplaneoldview;
+ for (c = 0; c < MAXMULTIPLANESAMOUNT && oldplanes; c++)
+ igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
+
+ free(oldplanes);
+ data->multiplaneoldview = NULL;
+ data->pipe_crc = NULL;
+}
+
static void test_plane_rotation_exhaust_fences(data_t *data,
enum pipe pipe,
igt_output_t *output,
@@ -591,6 +798,42 @@ igt_main
}
}
+ igt_subtest_f("multiplane-rotation") {
+ igt_require(gen >= 9);
+ cleanup_crtc(&data);
+ data.planepos[0].origo = p_top|p_left;
+ data.planepos[0].x = 128;
+ data.planepos[0].y = 128;
+ data.planepos[1].origo = p_top|p_right;
+ data.planepos[1].x = -128-512;
+ data.planepos[1].y = 128;
+ test_multi_plane_rotation(&data, 0);
+ }
+
+ igt_subtest_f("multiplane-rotation-cropping-top") {
+ igt_require(gen >= 9);
+ cleanup_crtc(&data);
+ data.planepos[0].origo = p_top|p_left;
+ data.planepos[0].x = -128;
+ data.planepos[0].y = -128;
+ data.planepos[1].origo = p_top|p_right;
+ data.planepos[1].x = -512+128;
+ data.planepos[1].y = -128;
+ test_multi_plane_rotation(&data, 0);
+ }
+
+ igt_subtest_f("multiplane-rotation-cropping-bottom") {
+ igt_require(gen >= 9);
+ cleanup_crtc(&data);
+ data.planepos[0].origo = p_bottom|p_left;
+ data.planepos[0].x = -128;
+ data.planepos[0].y = -512+128;
+ data.planepos[1].origo = p_bottom|p_right;
+ data.planepos[1].x = -512+128;
+ data.planepos[1].y = -512+128;
+ test_multi_plane_rotation(&data, 0);
+ }
+
/*
* exhaust-fences should be last test, if it fails we may OOM in
* the following subtests otherwise.
--
2.7.4
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests.
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
@ 2018-10-24 18:25 ` Patchwork
2018-10-24 18:55 ` Patchwork
` (17 subsequent siblings)
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-10-24 18:25 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests.
URL : https://patchwork.freedesktop.org/series/51452/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_5028 -> IGTPW_1986 =
== Summary - SUCCESS ==
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/1/mbox/
== Known issues ==
Here are the changes found in IGTPW_1986 that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@kms_flip@basic-flip-vs-dpms:
fi-skl-6700hq: PASS -> DMESG-WARN (fdo#105998)
igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a:
fi-byt-clapper: PASS -> FAIL (fdo#107362)
igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
fi-byt-clapper: PASS -> FAIL (fdo#107362, fdo#103191)
==== Possible fixes ====
igt@pm_rpm@module-reload:
fi-skl-6600u: INCOMPLETE (fdo#107807) -> PASS
fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
fdo#105998 https://bugs.freedesktop.org/show_bug.cgi?id=105998
fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362
fdo#107807 https://bugs.freedesktop.org/show_bug.cgi?id=107807
== Participating hosts (47 -> 41) ==
Missing (6): fi-ilk-m540 fi-hsw-peppy fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-icl-u
== Build changes ==
* IGT: IGT_4689 -> IGTPW_1986
CI_DRM_5028: 0d4b0d09075cb5334c622099724d7b3af605bed9 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_1986: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1986/
IGT_4689: fce6109b879f720755399f37701eff30c646f89b @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Testlist changes ==
+igt@kms_rotation_crc@multiplane-rotation
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom
+igt@kms_rotation_crc@multiplane-rotation-cropping-top
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1986/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests.
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
2018-10-24 18:25 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
@ 2018-10-24 18:55 ` Patchwork
2018-10-24 23:17 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
` (16 subsequent siblings)
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-10-24 18:55 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests.
URL : https://patchwork.freedesktop.org/series/51452/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_5028 -> IGTPW_1988 =
== Summary - SUCCESS ==
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/1/mbox/
== Known issues ==
Here are the changes found in IGTPW_1988 that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@kms_flip@basic-flip-vs-dpms:
fi-skl-6700hq: PASS -> DMESG-WARN (fdo#105998)
igt@kms_frontbuffer_tracking@basic:
fi-byt-clapper: PASS -> FAIL (fdo#103167)
igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
fi-icl-u: PASS -> INCOMPLETE (fdo#107713)
fi-blb-e6850: PASS -> INCOMPLETE (fdo#107718)
==== Possible fixes ====
igt@pm_rpm@module-reload:
fi-skl-6600u: INCOMPLETE (fdo#107807) -> PASS
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#105998 https://bugs.freedesktop.org/show_bug.cgi?id=105998
fdo#107713 https://bugs.freedesktop.org/show_bug.cgi?id=107713
fdo#107718 https://bugs.freedesktop.org/show_bug.cgi?id=107718
fdo#107807 https://bugs.freedesktop.org/show_bug.cgi?id=107807
== Participating hosts (47 -> 43) ==
Missing (4): fi-ctg-p8600 fi-ilk-m540 fi-byt-squawks fi-bsw-cyan
== Build changes ==
* IGT: IGT_4689 -> IGTPW_1988
CI_DRM_5028: 0d4b0d09075cb5334c622099724d7b3af605bed9 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_1988: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1988/
IGT_4689: fce6109b879f720755399f37701eff30c646f89b @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Testlist changes ==
+igt@kms_rotation_crc@multiplane-rotation
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom
+igt@kms_rotation_crc@multiplane-rotation-cropping-top
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1988/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_rotation_crc: Add multi plane tests.
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
2018-10-24 18:25 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2018-10-24 18:55 ` Patchwork
@ 2018-10-24 23:17 ` Patchwork
2018-10-25 0:12 ` Patchwork
` (15 subsequent siblings)
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-10-24 23:17 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests.
URL : https://patchwork.freedesktop.org/series/51452/
State : success
== Summary ==
= CI Bug Log - changes from IGT_4689_full -> IGTPW_1986_full =
== Summary - WARNING ==
Minor unknown changes coming with IGTPW_1986_full need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_1986_full, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/1/mbox/
== Possible new issues ==
Here are the unknown changes that may have been introduced in IGTPW_1986_full:
=== IGT changes ===
==== Warnings ====
igt@kms_plane_lowres@pipe-b-tiling-none:
shard-apl: SKIP -> PASS
igt@pm_rc6_residency@rc6-accuracy:
shard-snb: SKIP -> PASS
== Known issues ==
Here are the changes found in IGTPW_1986_full that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@kms_busy@extended-modeset-hang-newfb-render-b:
shard-snb: NOTRUN -> DMESG-WARN (fdo#107956) +1
igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-c:
shard-kbl: PASS -> DMESG-WARN (fdo#107956)
igt@kms_ccs@pipe-b-crc-sprite-planes-basic:
shard-kbl: PASS -> FAIL (fdo#108145)
igt@kms_cursor_crc@cursor-256x256-dpms:
shard-kbl: PASS -> FAIL (fdo#103232)
igt@kms_cursor_crc@cursor-256x256-sliding:
shard-apl: PASS -> FAIL (fdo#103232)
igt@kms_flip@flip-vs-panning-vs-hang:
shard-kbl: PASS -> DMESG-WARN (fdo#103558, fdo#105602) +9
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move:
shard-kbl: PASS -> FAIL (fdo#103167)
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu:
shard-apl: PASS -> FAIL (fdo#103167) +1
igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-cpu:
shard-glk: PASS -> FAIL (fdo#103167) +1
igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max:
shard-glk: PASS -> FAIL (fdo#108145) +1
igt@kms_plane_multiple@atomic-pipe-b-tiling-y:
shard-glk: PASS -> FAIL (fdo#103166)
igt@kms_setmode@basic:
shard-snb: NOTRUN -> FAIL (fdo#99912)
igt@kms_universal_plane@universal-plane-pipe-b-functional:
shard-apl: PASS -> FAIL (fdo#103166) +1
igt@perf_pmu@idle-no-semaphores-vecs0:
shard-snb: SKIP -> INCOMPLETE (fdo#105411)
==== Possible fixes ====
igt@kms_atomic_transition@plane-toggle-modeset-transition:
shard-hsw: DMESG-WARN (fdo#102614) -> PASS
igt@kms_color@pipe-a-ctm-max:
shard-kbl: FAIL -> PASS
shard-apl: FAIL (fdo#108147) -> PASS
igt@kms_cursor_crc@cursor-128x128-random:
shard-apl: FAIL (fdo#103232) -> PASS +6
igt@kms_cursor_crc@cursor-128x128-suspend:
shard-glk: FAIL (fdo#103232) -> PASS +3
igt@kms_cursor_crc@cursor-256x85-sliding:
shard-kbl: FAIL (fdo#103232) -> PASS
igt@kms_cursor_crc@cursor-64x64-suspend:
shard-apl: FAIL (fdo#103232, fdo#103191) -> PASS
shard-kbl: FAIL (fdo#103232, fdo#103191) -> PASS
igt@kms_flip@plain-flip-fb-recreate:
shard-kbl: FAIL (fdo#100368) -> PASS
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt:
shard-snb: INCOMPLETE (fdo#105411) -> PASS
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
shard-apl: FAIL (fdo#103167) -> PASS +3
shard-kbl: FAIL (fdo#103167) -> PASS
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen:
shard-glk: FAIL (fdo#103167) -> PASS +3
igt@kms_plane@plane-position-covered-pipe-a-planes:
shard-glk: FAIL (fdo#103166) -> PASS +3
igt@kms_plane_multiple@atomic-pipe-c-tiling-yf:
shard-apl: FAIL (fdo#103166) -> PASS +4
shard-kbl: FAIL (fdo#103166) -> PASS +1
igt@kms_vblank@pipe-b-ts-continuation-dpms-suspend:
shard-apl: DMESG-WARN (fdo#103558, fdo#105602) -> PASS +1
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#102614 https://bugs.freedesktop.org/show_bug.cgi?id=102614
fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
fdo#103232 https://bugs.freedesktop.org/show_bug.cgi?id=103232
fdo#103558 https://bugs.freedesktop.org/show_bug.cgi?id=103558
fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
fdo#105602 https://bugs.freedesktop.org/show_bug.cgi?id=105602
fdo#107956 https://bugs.freedesktop.org/show_bug.cgi?id=107956
fdo#108145 https://bugs.freedesktop.org/show_bug.cgi?id=108145
fdo#108147 https://bugs.freedesktop.org/show_bug.cgi?id=108147
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
== Participating hosts (6 -> 5) ==
Missing (1): shard-skl
== Build changes ==
* IGT: IGT_4689 -> IGTPW_1986
* Linux: CI_DRM_5026 -> CI_DRM_5028
CI_DRM_5026: f442c034e365463f506d73066b568c00e0d8bbc8 @ git://anongit.freedesktop.org/gfx-ci/linux
CI_DRM_5028: 0d4b0d09075cb5334c622099724d7b3af605bed9 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_1986: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1986/
IGT_4689: fce6109b879f720755399f37701eff30c646f89b @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1986/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_rotation_crc: Add multi plane tests.
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
` (2 preceding siblings ...)
2018-10-24 23:17 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2018-10-25 0:12 ` Patchwork
2018-10-25 13:26 ` [igt-dev] [PATCH i-g-t] " Juha-Pekka Heikkila
` (14 subsequent siblings)
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-10-25 0:12 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests.
URL : https://patchwork.freedesktop.org/series/51452/
State : success
== Summary ==
= CI Bug Log - changes from IGT_4689_full -> IGTPW_1988_full =
== Summary - WARNING ==
Minor unknown changes coming with IGTPW_1988_full need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_1988_full, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/1/mbox/
== Possible new issues ==
Here are the unknown changes that may have been introduced in IGTPW_1988_full:
=== IGT changes ===
==== Possible regressions ====
{igt@kms_rotation_crc@multiplane-rotation-cropping-top}:
shard-glk: NOTRUN -> FAIL
==== Warnings ====
igt@kms_plane_lowres@pipe-b-tiling-none:
shard-apl: SKIP -> PASS
igt@pm_rc6_residency@rc6-accuracy:
shard-kbl: PASS -> SKIP
shard-snb: SKIP -> PASS
== Known issues ==
Here are the changes found in IGTPW_1988_full that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@gem_exec_nop@basic-sequential:
shard-glk: PASS -> INCOMPLETE (k.org#198133, fdo#103359)
igt@gem_ppgtt@blt-vs-render-ctx0:
shard-kbl: PASS -> INCOMPLETE (fdo#103665, fdo#106023)
igt@kms_available_modes_crc@available_mode_test_crc:
shard-snb: PASS -> FAIL (fdo#106641)
igt@kms_busy@extended-modeset-hang-newfb-render-b:
shard-snb: NOTRUN -> DMESG-WARN (fdo#107956)
igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-c:
shard-kbl: PASS -> DMESG-WARN (fdo#107956)
igt@kms_cursor_crc@cursor-128x128-dpms:
shard-apl: PASS -> FAIL (fdo#103232)
igt@kms_cursor_crc@cursor-256x256-dpms:
shard-glk: PASS -> FAIL (fdo#103232) +3
shard-kbl: PASS -> FAIL (fdo#103232)
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move:
shard-apl: PASS -> FAIL (fdo#103167)
igt@kms_frontbuffer_tracking@fbc-1p-rte:
shard-glk: PASS -> FAIL (fdo#103167, fdo#105682)
igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff:
shard-glk: PASS -> FAIL (fdo#103167) +6
igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max:
shard-glk: PASS -> FAIL (fdo#108145)
igt@kms_plane_multiple@atomic-pipe-b-tiling-y:
shard-glk: PASS -> FAIL (fdo#103166) +1
igt@kms_plane_multiple@atomic-pipe-c-tiling-y:
shard-apl: PASS -> FAIL (fdo#103166) +1
igt@kms_setmode@basic:
shard-kbl: PASS -> FAIL (fdo#99912)
==== Possible fixes ====
igt@kms_atomic_transition@plane-toggle-modeset-transition:
shard-hsw: DMESG-WARN (fdo#102614) -> PASS
igt@kms_available_modes_crc@available_mode_test_crc:
shard-apl: FAIL (fdo#106641) -> PASS
igt@kms_color@pipe-a-ctm-max:
shard-kbl: FAIL -> PASS
shard-apl: FAIL (fdo#108147) -> PASS
igt@kms_cursor_crc@cursor-128x128-random:
shard-apl: FAIL (fdo#103232) -> PASS +5
igt@kms_cursor_crc@cursor-128x42-sliding:
shard-glk: FAIL (fdo#103232) -> PASS
igt@kms_cursor_crc@cursor-256x85-sliding:
shard-kbl: FAIL (fdo#103232) -> PASS
igt@kms_cursor_crc@cursor-64x64-suspend:
shard-kbl: FAIL (fdo#103191, fdo#103232) -> PASS
igt@kms_flip@plain-flip-fb-recreate:
shard-kbl: FAIL (fdo#100368) -> PASS
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt:
shard-snb: INCOMPLETE (fdo#105411) -> PASS
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt:
shard-kbl: FAIL (fdo#103167) -> PASS +1
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
shard-apl: FAIL (fdo#103167) -> PASS +4
shard-glk: FAIL (fdo#103167) -> PASS +2
igt@kms_plane@plane-position-covered-pipe-a-planes:
shard-kbl: FAIL (fdo#103166) -> PASS
igt@kms_plane_alpha_blend@pipe-c-constant-alpha-max:
shard-glk: FAIL (fdo#108145) -> PASS
shard-kbl: FAIL (fdo#108145) -> PASS
shard-apl: FAIL (fdo#108145) -> PASS
igt@kms_plane_multiple@atomic-pipe-c-tiling-yf:
shard-apl: FAIL (fdo#103166) -> PASS +4
igt@kms_setmode@basic:
shard-apl: FAIL (fdo#99912) -> PASS
igt@kms_vblank@pipe-b-ts-continuation-dpms-suspend:
shard-apl: DMESG-WARN (fdo#105602, fdo#103558) -> PASS +1
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#102614 https://bugs.freedesktop.org/show_bug.cgi?id=102614
fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
fdo#103232 https://bugs.freedesktop.org/show_bug.cgi?id=103232
fdo#103359 https://bugs.freedesktop.org/show_bug.cgi?id=103359
fdo#103558 https://bugs.freedesktop.org/show_bug.cgi?id=103558
fdo#103665 https://bugs.freedesktop.org/show_bug.cgi?id=103665
fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
fdo#105602 https://bugs.freedesktop.org/show_bug.cgi?id=105602
fdo#105682 https://bugs.freedesktop.org/show_bug.cgi?id=105682
fdo#106023 https://bugs.freedesktop.org/show_bug.cgi?id=106023
fdo#106641 https://bugs.freedesktop.org/show_bug.cgi?id=106641
fdo#107956 https://bugs.freedesktop.org/show_bug.cgi?id=107956
fdo#108145 https://bugs.freedesktop.org/show_bug.cgi?id=108145
fdo#108147 https://bugs.freedesktop.org/show_bug.cgi?id=108147
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
k.org#198133 https://bugzilla.kernel.org/show_bug.cgi?id=198133
== Participating hosts (6 -> 5) ==
Missing (1): shard-skl
== Build changes ==
* IGT: IGT_4689 -> IGTPW_1988
* Linux: CI_DRM_5026 -> CI_DRM_5028
CI_DRM_5026: f442c034e365463f506d73066b568c00e0d8bbc8 @ git://anongit.freedesktop.org/gfx-ci/linux
CI_DRM_5028: 0d4b0d09075cb5334c622099724d7b3af605bed9 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_1988: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1988/
IGT_4689: fce6109b879f720755399f37701eff30c646f89b @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1988/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests.
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
` (3 preceding siblings ...)
2018-10-25 0:12 ` Patchwork
@ 2018-10-25 13:26 ` Juha-Pekka Heikkila
2018-10-26 12:58 ` Juha-Pekka Heikkila
2018-10-25 14:42 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev2) Patchwork
` (13 subsequent siblings)
18 siblings, 1 reply; 28+ messages in thread
From: Juha-Pekka Heikkila @ 2018-10-25 13:26 UTC (permalink / raw)
To: igt-dev
Add three new tests which try primary and sprite planes
next to each other with different plane formats, rotations
and tiling modes.
multiplane-rotation subtest run test through with both planes
fully visible.
multiplane-rotation-cropping-top will crop primary plane to
left/top corner and sprite plane to right/top corner while running
rotation tests.
multiplane-rotation-cropping-bottom will crop primary plane to
left/bottom corner and sprite plane to right/bottom corner while
running rotation tests.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
tests/kms_rotation_crc.c | 248 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 248 insertions(+)
diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index c233ef6..0282929 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -26,6 +26,25 @@
#include <math.h>
#define MAX_FENCES 32
+#define MAXMULTIPLANESAMOUNT 2
+
+struct p_struct {
+ igt_plane_t *plane;
+ struct igt_fb fb;
+};
+
+enum p_pointorigo {
+ p_top = 1 << 0,
+ p_bottom = 1 << 1,
+ p_left = 1 << 2,
+ p_right = 1 << 3
+};
+
+struct p_point{
+ enum p_pointorigo origo;
+ int32_t x;
+ int32_t y;
+};
typedef struct {
int gfx_fd;
@@ -43,6 +62,9 @@ typedef struct {
uint32_t override_fmt;
uint64_t override_tiling;
int devid;
+
+ struct p_struct *multiplaneoldview;
+ struct p_point planepos[MAXMULTIPLANESAMOUNT];
} data_t;
typedef struct {
@@ -392,6 +414,196 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
}
}
+typedef struct {
+ int32_t x1, y1;
+ uint64_t width, height, tiling, planetype, format;
+ igt_rotation_t rotation_sw, rotation_hw;
+} planeinfos;
+
+static void get_multiplane_crc(data_t *data, igt_output_t *output,
+ igt_crc_t *crc_output, planeinfos* planeinfo,
+ int numplanes)
+{
+ uint32_t w, h;
+ igt_display_t *display = &data->display;
+ struct p_struct *planes, *oldplanes;
+ int c, ret;
+
+ oldplanes = data->multiplaneoldview;
+ planes = malloc(sizeof(*planes)*numplanes);
+
+ for (c = 0; c < numplanes; c++) {
+ planes[c].plane = igt_output_get_plane_type(output,
+ planeinfo[c].planetype);
+
+ w = planeinfo[c].width;
+ h = planeinfo[c].height;
+
+ if ((planeinfo[c].rotation_hw|planeinfo[c].rotation_sw)
+ &(IGT_ROTATION_90|IGT_ROTATION_270))
+ igt_swap(w, h);
+
+ igt_plane_set_size(planes[c].plane, w, h);
+
+ igt_create_fb(data->gfx_fd, w, h, planeinfo[c].format,
+ planeinfo[c].tiling, &planes[c].fb);
+
+ paint_squares(data, planeinfo[c].rotation_sw, &planes[c].fb, 1.0f);
+ igt_plane_set_fb(planes[c].plane, &planes[c].fb);
+ igt_plane_set_position(planes[c].plane, planeinfo[c].x1, planeinfo[c].y1);
+ igt_plane_set_rotation(planes[c].plane, planeinfo[c].rotation_hw);
+ }
+
+ ret = igt_display_try_commit2(display, COMMIT_ATOMIC);
+ igt_assert_eq(ret, 0);
+
+ igt_pipe_crc_get_current(data->gfx_fd, data->pipe_crc, crc_output);
+
+ for (c = 0; c < numplanes && oldplanes; c++)
+ igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
+
+ free(oldplanes);
+ data->multiplaneoldview = (void*)planes;
+}
+
+static void pointlocation(data_t *data, planeinfos* p, drmModeModeInfo *mode,
+ int c)
+{
+ p[c].x1 = data->planepos[c].x
+ +((data->planepos[c].origo&p_right)?mode->hdisplay:0);
+ p[c].y1 = data->planepos[c].y
+ +((data->planepos[c].origo&p_bottom)?mode->vdisplay:0);
+}
+
+/*
+ * Here is pipe parameter which is now used only for first pipe.
+ * It is left here if this test ever was wanted to be run on
+ * different pipes.
+ */
+static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
+{
+ igt_display_t *display = &data->display;
+ igt_output_t *output;
+ igt_crc_t retcrc_sw, retcrc_hw;
+ planeinfos p[2];
+ int c;
+ struct p_struct *oldplanes;
+ drmModeModeInfo *mode;
+
+ const static struct {
+ igt_rotation_t rotation;
+ uint64_t width;
+ uint64_t height;
+ uint64_t tiling;
+ } planeconfigs[] = {
+ {IGT_ROTATION_0, 512, 512, LOCAL_DRM_FORMAT_MOD_NONE },
+ {IGT_ROTATION_0, 512, 512, LOCAL_I915_FORMAT_MOD_X_TILED },
+ {IGT_ROTATION_0, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_0, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ {IGT_ROTATION_90, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_90, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ {IGT_ROTATION_180, 512, 512, LOCAL_DRM_FORMAT_MOD_NONE },
+ {IGT_ROTATION_180, 512, 512, LOCAL_I915_FORMAT_MOD_X_TILED },
+ {IGT_ROTATION_180, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_180, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ {IGT_ROTATION_270, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_270, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ };
+
+ /*
+ * These are those modes which are tested. For testing feel interesting
+ * case with tiling are 2 byte wide and 4 byte wide.
+ *
+ * TODO:
+ * Built support for NV12 here.
+ */
+ const static uint32_t formatlist[] = {DRM_FORMAT_RGB565,
+ DRM_FORMAT_XRGB8888};
+
+
+ for_each_valid_output_on_pipe(display, pipe, output) {
+ int i, j, k, l;
+ igt_output_set_pipe(output, pipe);
+
+ mode = igt_output_get_mode(output);
+
+ igt_display_require_output(display);
+ igt_display_commit2(display, COMMIT_ATOMIC);
+
+ data->pipe_crc = igt_pipe_crc_new(data->gfx_fd, pipe,
+ INTEL_PIPE_CRC_SOURCE_AUTO);
+ igt_pipe_crc_start(data->pipe_crc);
+
+ for (i = 0; i < ARRAY_SIZE(planeconfigs); i++) {
+ p[0].planetype = DRM_PLANE_TYPE_PRIMARY;
+ p[0].width = planeconfigs[i].width;
+ p[0].height = planeconfigs[i].height;
+ p[0].tiling = planeconfigs[i].tiling;
+ pointlocation(data, (planeinfos*)&p, mode, 0);
+
+ for (k = 0; k < ARRAY_SIZE(formatlist); k++) {
+ p[0].format = formatlist[k];
+
+ for (j = 0; j < ARRAY_SIZE(planeconfigs); j++) {
+ p[1].planetype = DRM_PLANE_TYPE_OVERLAY;
+ p[1].width = planeconfigs[j].width;
+ p[1].height = planeconfigs[j].height;
+ p[1].tiling = planeconfigs[j].tiling;
+ pointlocation(data, (planeinfos*)&p,
+ mode, 1);
+
+ for (l = 0; l < ARRAY_SIZE(formatlist); l++) {
+ p[1].format = formatlist[l];
+
+ /*
+ * RGB565 90/270 degrees rotation is supported
+ * from gen11 onwards.
+ */
+ if (p[0].format == DRM_FORMAT_RGB565 &&
+ (planeconfigs[i].rotation&(IGT_ROTATION_90|IGT_ROTATION_270))
+ && intel_gen(data->devid) < 11)
+ continue;
+
+ if (p[1].format == DRM_FORMAT_RGB565 &&
+ (planeconfigs[j].rotation&(IGT_ROTATION_90|IGT_ROTATION_270))
+ && intel_gen(data->devid) < 11)
+ continue;
+
+
+ p[0].rotation_sw = planeconfigs[i].rotation;
+ p[0].rotation_hw = IGT_ROTATION_0;
+ p[1].rotation_sw = planeconfigs[j].rotation;
+ p[1].rotation_hw = IGT_ROTATION_0;
+ get_multiplane_crc(data, output, &retcrc_sw,
+ (planeinfos*)&p, MAXMULTIPLANESAMOUNT);
+
+ igt_swap(p[0].rotation_sw, p[0].rotation_hw);
+ igt_swap(p[1].rotation_sw, p[1].rotation_hw);
+ get_multiplane_crc(data, output, &retcrc_hw,
+ (planeinfos*)&p, MAXMULTIPLANESAMOUNT);
+
+ igt_assert_crc_equal(&retcrc_sw, &retcrc_hw);
+ }
+ }
+ }
+ }
+ igt_pipe_crc_stop(data->pipe_crc);
+ igt_pipe_crc_free(data->pipe_crc);
+ }
+
+ /*
+ * Old fbs are deleted only after new ones are set on planes.
+ * This is done to speed up the test
+ */
+ oldplanes = data->multiplaneoldview;
+ for (c = 0; c < MAXMULTIPLANESAMOUNT && oldplanes; c++)
+ igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
+
+ free(oldplanes);
+ data->multiplaneoldview = NULL;
+ data->pipe_crc = NULL;
+}
+
static void test_plane_rotation_exhaust_fences(data_t *data,
enum pipe pipe,
igt_output_t *output,
@@ -591,6 +803,42 @@ igt_main
}
}
+ igt_subtest_f("multiplane-rotation") {
+ igt_require(gen >= 9);
+ cleanup_crtc(&data);
+ data.planepos[0].origo = p_top|p_left;
+ data.planepos[0].x = 128;
+ data.planepos[0].y = 128;
+ data.planepos[1].origo = p_top|p_right;
+ data.planepos[1].x = -128-512;
+ data.planepos[1].y = 128;
+ test_multi_plane_rotation(&data, 0);
+ }
+
+ igt_subtest_f("multiplane-rotation-cropping-top") {
+ igt_require(gen >= 9);
+ cleanup_crtc(&data);
+ data.planepos[0].origo = p_top|p_left;
+ data.planepos[0].x = -128;
+ data.planepos[0].y = -128;
+ data.planepos[1].origo = p_top|p_right;
+ data.planepos[1].x = -512+128;
+ data.planepos[1].y = -128;
+ test_multi_plane_rotation(&data, 0);
+ }
+
+ igt_subtest_f("multiplane-rotation-cropping-bottom") {
+ igt_require(gen >= 9);
+ cleanup_crtc(&data);
+ data.planepos[0].origo = p_bottom|p_left;
+ data.planepos[0].x = -128;
+ data.planepos[0].y = -512+128;
+ data.planepos[1].origo = p_bottom|p_right;
+ data.planepos[1].x = -512+128;
+ data.planepos[1].y = -512+128;
+ test_multi_plane_rotation(&data, 0);
+ }
+
/*
* exhaust-fences should be last test, if it fails we may OOM in
* the following subtests otherwise.
--
2.7.4
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev2)
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
` (4 preceding siblings ...)
2018-10-25 13:26 ` [igt-dev] [PATCH i-g-t] " Juha-Pekka Heikkila
@ 2018-10-25 14:42 ` Patchwork
2018-10-26 6:10 ` Patchwork
` (12 subsequent siblings)
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-10-25 14:42 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests. (rev2)
URL : https://patchwork.freedesktop.org/series/51452/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_5033 -> IGTPW_1994 =
== Summary - WARNING ==
Minor unknown changes coming with IGTPW_1994 need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_1994, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/2/mbox/
== Possible new issues ==
Here are the unknown changes that may have been introduced in IGTPW_1994:
=== IGT changes ===
==== Warnings ====
igt@pm_rpm@module-reload:
fi-hsw-4770r: SKIP -> PASS
== Known issues ==
Here are the changes found in IGTPW_1994 that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@drv_module_reload@basic-reload:
fi-glk-j4005: PASS -> DMESG-WARN (fdo#106248, fdo#106725)
igt@kms_busy@basic-flip-c:
fi-glk-j4005: PASS -> DMESG-WARN (fdo#106097)
igt@kms_flip@basic-flip-vs-wf_vblank:
fi-glk-j4005: PASS -> FAIL (fdo#100368)
igt@pm_rpm@module-reload:
fi-glk-j4005: PASS -> DMESG-WARN (fdo#106000, fdo#107726)
==== Possible fixes ====
igt@drv_module_reload@basic-reload-inject:
fi-hsw-4770r: DMESG-WARN (fdo#107924, fdo#107425) -> PASS
igt@drv_selftest@live_hangcheck:
fi-kbl-7560u: INCOMPLETE (fdo#108044) -> PASS
igt@kms_flip@basic-flip-vs-dpms:
fi-skl-6700hq: DMESG-WARN (fdo#105998) -> PASS
igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
fi-icl-u: INCOMPLETE (fdo#107713) -> PASS
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#105998 https://bugs.freedesktop.org/show_bug.cgi?id=105998
fdo#106000 https://bugs.freedesktop.org/show_bug.cgi?id=106000
fdo#106097 https://bugs.freedesktop.org/show_bug.cgi?id=106097
fdo#106248 https://bugs.freedesktop.org/show_bug.cgi?id=106248
fdo#106725 https://bugs.freedesktop.org/show_bug.cgi?id=106725
fdo#107425 https://bugs.freedesktop.org/show_bug.cgi?id=107425
fdo#107713 https://bugs.freedesktop.org/show_bug.cgi?id=107713
fdo#107726 https://bugs.freedesktop.org/show_bug.cgi?id=107726
fdo#107924 https://bugs.freedesktop.org/show_bug.cgi?id=107924
fdo#108044 https://bugs.freedesktop.org/show_bug.cgi?id=108044
== Participating hosts (47 -> 43) ==
Missing (4): fi-ctg-p8600 fi-ilk-m540 fi-byt-squawks fi-bsw-cyan
== Build changes ==
* IGT: IGT_4691 -> IGTPW_1994
CI_DRM_5033: f935e4c7634781e6ffef10bb8a1c93225ac42d90 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_1994: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1994/
IGT_4691: d445be01f5edc7e7a324444c73e221c9ed75602e @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Testlist changes ==
+igt@kms_rotation_crc@multiplane-rotation
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom
+igt@kms_rotation_crc@multiplane-rotation-cropping-top
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1994/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev2)
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
` (5 preceding siblings ...)
2018-10-25 14:42 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev2) Patchwork
@ 2018-10-26 6:10 ` Patchwork
2018-10-26 12:21 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
` (11 subsequent siblings)
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-10-26 6:10 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests. (rev2)
URL : https://patchwork.freedesktop.org/series/51452/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_5037 -> IGTPW_1996 =
== Summary - SUCCESS ==
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/2/mbox/
== Known issues ==
Here are the changes found in IGTPW_1996 that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@gem_exec_suspend@basic-s3:
fi-blb-e6850: PASS -> INCOMPLETE (fdo#107718)
igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence:
fi-byt-clapper: PASS -> FAIL (fdo#107362, fdo#103191)
==== Possible fixes ====
igt@kms_flip@basic-flip-vs-dpms:
fi-skl-6700hq: DMESG-WARN (fdo#105998) -> PASS
fi-glk-j4005: DMESG-WARN (fdo#106000) -> PASS +1
igt@kms_flip@basic-flip-vs-wf_vblank:
fi-glk-j4005: FAIL (fdo#100368) -> PASS
igt@kms_frontbuffer_tracking@basic:
fi-glk-j4005: FAIL (fdo#103167) -> PASS
igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
fi-byt-clapper: FAIL (fdo#107362, fdo#103191) -> PASS
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
fdo#105998 https://bugs.freedesktop.org/show_bug.cgi?id=105998
fdo#106000 https://bugs.freedesktop.org/show_bug.cgi?id=106000
fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362
fdo#107718 https://bugs.freedesktop.org/show_bug.cgi?id=107718
== Participating hosts (46 -> 43) ==
Additional (1): fi-icl-u
Missing (4): fi-bsw-cyan fi-ilk-m540 fi-byt-squawks fi-icl-u2
== Build changes ==
* IGT: IGT_4694 -> IGTPW_1996
CI_DRM_5037: e11750586cb6054bd319ad217cecd045febaacc5 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_1996: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1996/
IGT_4694: ff8d1156723f235e82cb4fcfd2cd6e5a5bb211fa @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Testlist changes ==
+igt@kms_rotation_crc@multiplane-rotation
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom
+igt@kms_rotation_crc@multiplane-rotation-cropping-top
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1996/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_rotation_crc: Add multi plane tests. (rev2)
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
` (6 preceding siblings ...)
2018-10-26 6:10 ` Patchwork
@ 2018-10-26 12:21 ` Patchwork
2018-10-26 14:23 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev3) Patchwork
` (10 subsequent siblings)
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-10-26 12:21 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests. (rev2)
URL : https://patchwork.freedesktop.org/series/51452/
State : success
== Summary ==
= CI Bug Log - changes from IGT_4694_full -> IGTPW_1996_full =
== Summary - WARNING ==
Minor unknown changes coming with IGTPW_1996_full need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_1996_full, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/2/mbox/
== Possible new issues ==
Here are the unknown changes that may have been introduced in IGTPW_1996_full:
=== IGT changes ===
==== Possible regressions ====
{igt@kms_rotation_crc@multiplane-rotation-cropping-bottom}:
shard-glk: NOTRUN -> FAIL +2
==== Warnings ====
igt@kms_vblank@pipe-a-query-forked-hang:
shard-snb: SKIP -> PASS +1
== Known issues ==
Here are the changes found in IGTPW_1996_full that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@drv_suspend@fence-restore-tiled2untiled:
shard-snb: PASS -> INCOMPLETE (fdo#105411) +1
igt@gem_busy@close-race:
shard-snb: PASS -> DMESG-FAIL (fdo#108561)
shard-hsw: PASS -> DMESG-FAIL (fdo#108561)
shard-kbl: PASS -> DMESG-FAIL (fdo#108561)
shard-apl: PASS -> DMESG-FAIL (fdo#108561)
igt@kms_atomic_transition@plane-all-transition-nonblocking-fencing:
shard-snb: PASS -> DMESG-WARN (fdo#107469)
igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-a:
shard-glk: NOTRUN -> DMESG-WARN (fdo#107956) +1
igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-c:
shard-kbl: PASS -> DMESG-WARN (fdo#107956)
igt@kms_color@pipe-a-legacy-gamma:
shard-apl: PASS -> FAIL (fdo#108145, fdo#104782)
igt@kms_cursor_crc@cursor-128x128-sliding:
shard-apl: PASS -> FAIL (fdo#103232) +1
igt@kms_cursor_crc@cursor-64x21-random:
shard-kbl: PASS -> FAIL (fdo#103232)
shard-glk: PASS -> FAIL (fdo#103232)
igt@kms_cursor_crc@cursor-64x64-suspend:
shard-kbl: PASS -> DMESG-WARN (fdo#108550, fdo#108549)
igt@kms_flip@2x-flip-vs-expired-vblank:
shard-glk: PASS -> FAIL (fdo#105363)
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt:
shard-apl: PASS -> FAIL (fdo#103167) +1
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu:
shard-kbl: PASS -> FAIL (fdo#103167) +1
igt@kms_frontbuffer_tracking@fbc-1p-rte:
shard-apl: PASS -> FAIL (fdo#105682, fdo#103167)
igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-gtt:
shard-glk: NOTRUN -> FAIL (fdo#103167) +2
igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff:
shard-glk: PASS -> FAIL (fdo#103167) +5
igt@kms_plane@plane-position-covered-pipe-b-planes:
shard-glk: NOTRUN -> FAIL (fdo#103166) +2
igt@kms_plane_alpha_blend@pipe-b-constant-alpha-max:
shard-glk: NOTRUN -> FAIL (fdo#108145) +3
igt@kms_plane_multiple@atomic-pipe-a-tiling-x:
shard-apl: PASS -> FAIL (fdo#103166) +1
igt@kms_plane_multiple@atomic-pipe-b-tiling-x:
shard-glk: PASS -> FAIL (fdo#103166) +2
igt@kms_plane_multiple@atomic-pipe-c-tiling-yf:
shard-kbl: PASS -> FAIL (fdo#103166) +1
igt@kms_rotation_crc@bad-pixel-format:
shard-apl: PASS -> DMESG-WARN (fdo#108549) +19
igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm:
shard-apl: PASS -> DMESG-FAIL (fdo#108549)
igt@kms_vblank@pipe-c-wait-forked:
shard-kbl: PASS -> DMESG-WARN (fdo#108550) +9
igt@pm_rpm@fences:
shard-apl: PASS -> DMESG-WARN (fdo#105602, fdo#103558) +4
==== Possible fixes ====
igt@gem_eio@wait-wedge-10ms:
shard-glk: FAIL (fdo#105957) -> PASS
igt@gem_exec_await@wide-contexts:
shard-kbl: FAIL (fdo#106680) -> PASS
igt@gem_userptr_blits@readonly-unsync:
shard-apl: INCOMPLETE (fdo#103927) -> PASS
igt@kms_available_modes_crc@available_mode_test_crc:
shard-apl: FAIL (fdo#106641) -> PASS
igt@kms_busy@extended-pageflip-hang-newfb-render-c:
shard-glk: DMESG-WARN (fdo#107956) -> PASS
igt@kms_color@pipe-a-ctm-max:
shard-apl: FAIL (fdo#108147) -> PASS
igt@kms_color@pipe-a-degamma:
shard-apl: FAIL (fdo#108145, fdo#104782) -> PASS
igt@kms_color@pipe-b-degamma:
shard-apl: FAIL (fdo#104782) -> PASS
igt@kms_color@pipe-b-gamma:
shard-kbl: DMESG-WARN (fdo#108550) -> PASS +15
igt@kms_cursor_crc@cursor-128x128-suspend:
shard-apl: FAIL (fdo#103232, fdo#103191) -> PASS
igt@kms_cursor_crc@cursor-256x256-suspend:
shard-kbl: INCOMPLETE (fdo#103665) -> PASS
igt@kms_cursor_crc@cursor-64x21-sliding:
shard-apl: FAIL (fdo#103232) -> PASS +7
igt@kms_cursor_crc@cursor-64x64-random:
shard-glk: FAIL (fdo#103232) -> PASS
igt@kms_cursor_crc@cursor-64x64-sliding:
shard-kbl: FAIL (fdo#103232) -> PASS +1
igt@kms_cursor_legacy@cursora-vs-flipa-toggle:
shard-glk: DMESG-WARN (fdo#106538, fdo#105763) -> PASS
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
shard-apl: FAIL (fdo#103167) -> PASS +3
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-move:
shard-kbl: FAIL (fdo#103167) -> PASS
igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move:
shard-glk: FAIL (fdo#103167) -> PASS +6
igt@kms_plane@plane-position-covered-pipe-c-planes:
shard-apl: FAIL (fdo#103166) -> PASS +2
igt@kms_plane_multiple@atomic-pipe-b-tiling-yf:
shard-kbl: FAIL (fdo#103166) -> PASS +1
shard-apl: DMESG-FAIL (fdo#103166, fdo#108549) -> PASS
shard-glk: FAIL (fdo#103166) -> PASS
igt@kms_setmode@basic:
shard-kbl: FAIL (fdo#99912) -> PASS
igt@kms_universal_plane@universal-plane-pipe-c-functional:
shard-snb: INCOMPLETE (fdo#105411) -> SKIP
igt@pm_rpm@gem-mmap-cpu:
shard-apl: DMESG-WARN (fdo#108549) -> PASS +42
==== Warnings ====
igt@kms_cursor_crc@cursor-128x128-onscreen:
shard-apl: DMESG-WARN (fdo#108549) -> FAIL (fdo#103232)
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
fdo#103232 https://bugs.freedesktop.org/show_bug.cgi?id=103232
fdo#103558 https://bugs.freedesktop.org/show_bug.cgi?id=103558
fdo#103665 https://bugs.freedesktop.org/show_bug.cgi?id=103665
fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
fdo#104782 https://bugs.freedesktop.org/show_bug.cgi?id=104782
fdo#105363 https://bugs.freedesktop.org/show_bug.cgi?id=105363
fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
fdo#105602 https://bugs.freedesktop.org/show_bug.cgi?id=105602
fdo#105682 https://bugs.freedesktop.org/show_bug.cgi?id=105682
fdo#105763 https://bugs.freedesktop.org/show_bug.cgi?id=105763
fdo#105957 https://bugs.freedesktop.org/show_bug.cgi?id=105957
fdo#106538 https://bugs.freedesktop.org/show_bug.cgi?id=106538
fdo#106641 https://bugs.freedesktop.org/show_bug.cgi?id=106641
fdo#106680 https://bugs.freedesktop.org/show_bug.cgi?id=106680
fdo#107469 https://bugs.freedesktop.org/show_bug.cgi?id=107469
fdo#107956 https://bugs.freedesktop.org/show_bug.cgi?id=107956
fdo#108145 https://bugs.freedesktop.org/show_bug.cgi?id=108145
fdo#108147 https://bugs.freedesktop.org/show_bug.cgi?id=108147
fdo#108549 https://bugs.freedesktop.org/show_bug.cgi?id=108549
fdo#108550 https://bugs.freedesktop.org/show_bug.cgi?id=108550
fdo#108561 https://bugs.freedesktop.org/show_bug.cgi?id=108561
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
== Participating hosts (6 -> 5) ==
Missing (1): shard-skl
== Build changes ==
* IGT: IGT_4694 -> IGTPW_1996
* Linux: CI_DRM_5033 -> CI_DRM_5037
CI_DRM_5033: f935e4c7634781e6ffef10bb8a1c93225ac42d90 @ git://anongit.freedesktop.org/gfx-ci/linux
CI_DRM_5037: e11750586cb6054bd319ad217cecd045febaacc5 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_1996: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1996/
IGT_4694: ff8d1156723f235e82cb4fcfd2cd6e5a5bb211fa @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1996/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests.
2018-10-25 13:26 ` [igt-dev] [PATCH i-g-t] " Juha-Pekka Heikkila
@ 2018-10-26 12:58 ` Juha-Pekka Heikkila
2018-11-16 12:28 ` Nautiyal, Ankit K
2018-11-19 11:59 ` Juha-Pekka Heikkila
0 siblings, 2 replies; 28+ messages in thread
From: Juha-Pekka Heikkila @ 2018-10-26 12:58 UTC (permalink / raw)
To: igt-dev
Add three new tests which try primary and sprite planes
next to each other with different plane formats, rotations
and tiling modes.
multiplane-rotation subtest run test through with both planes
fully visible.
multiplane-rotation-cropping-top will crop primary plane to
left/top corner and sprite plane to right/top corner while running
rotation tests.
multiplane-rotation-cropping-bottom will crop primary plane to
left/bottom corner and sprite plane to right/bottom corner while
running rotation tests.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
tests/kms_rotation_crc.c | 249 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 249 insertions(+)
diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index 366c254..df9ac91 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -26,6 +26,25 @@
#include <math.h>
#define MAX_FENCES 32
+#define MAXMULTIPLANESAMOUNT 2
+
+struct p_struct {
+ igt_plane_t *plane;
+ struct igt_fb fb;
+};
+
+enum p_pointorigo {
+ p_top = 1 << 0,
+ p_bottom = 1 << 1,
+ p_left = 1 << 2,
+ p_right = 1 << 3
+};
+
+struct p_point{
+ enum p_pointorigo origo;
+ int32_t x;
+ int32_t y;
+};
typedef struct {
int gfx_fd;
@@ -43,6 +62,9 @@ typedef struct {
uint32_t override_fmt;
uint64_t override_tiling;
int devid;
+
+ struct p_struct *multiplaneoldview;
+ struct p_point planepos[MAXMULTIPLANESAMOUNT];
} data_t;
typedef struct {
@@ -395,6 +417,197 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
}
}
+typedef struct {
+ int32_t x1, y1;
+ uint64_t width, height, tiling, planetype, format;
+ igt_rotation_t rotation_sw, rotation_hw;
+} planeinfos;
+
+static void get_multiplane_crc(data_t *data, igt_output_t *output,
+ igt_crc_t *crc_output, planeinfos* planeinfo,
+ int numplanes)
+{
+ uint32_t w, h;
+ igt_display_t *display = &data->display;
+ struct p_struct *planes, *oldplanes;
+ int c, ret;
+
+ oldplanes = data->multiplaneoldview;
+ planes = malloc(sizeof(*planes)*numplanes);
+
+ for (c = 0; c < numplanes; c++) {
+ planes[c].plane = igt_output_get_plane_type(output,
+ planeinfo[c].planetype);
+
+ w = planeinfo[c].width;
+ h = planeinfo[c].height;
+
+ if ((planeinfo[c].rotation_hw|planeinfo[c].rotation_sw)
+ &(IGT_ROTATION_90|IGT_ROTATION_270))
+ igt_swap(w, h);
+
+ igt_plane_set_size(planes[c].plane, w, h);
+
+ igt_create_fb(data->gfx_fd, w, h, planeinfo[c].format,
+ planeinfo[c].tiling, &planes[c].fb);
+
+ paint_squares(data, planeinfo[c].rotation_sw, &planes[c].fb, 1.0f);
+ igt_plane_set_fb(planes[c].plane, &planes[c].fb);
+ igt_plane_set_position(planes[c].plane, planeinfo[c].x1, planeinfo[c].y1);
+ igt_plane_set_rotation(planes[c].plane, planeinfo[c].rotation_hw);
+ }
+
+ ret = igt_display_try_commit2(display, COMMIT_ATOMIC);
+ igt_assert_eq(ret, 0);
+
+ igt_pipe_crc_get_current(data->gfx_fd, data->pipe_crc, crc_output);
+
+ for (c = 0; c < numplanes && oldplanes; c++)
+ igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
+
+ free(oldplanes);
+ data->multiplaneoldview = (void*)planes;
+}
+
+static void pointlocation(data_t *data, planeinfos* p, drmModeModeInfo *mode,
+ int c)
+{
+ p[c].x1 = data->planepos[c].x
+ +((data->planepos[c].origo&p_right)?mode->hdisplay:0);
+ p[c].y1 = data->planepos[c].y
+ +((data->planepos[c].origo&p_bottom)?mode->vdisplay:0);
+}
+
+/*
+ * Here is pipe parameter which is now used only for first pipe.
+ * It is left here if this test ever was wanted to be run on
+ * different pipes.
+ */
+static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
+{
+ igt_display_t *display = &data->display;
+ igt_output_t *output;
+ igt_crc_t retcrc_sw, retcrc_hw;
+ planeinfos p[2];
+ int c;
+ struct p_struct *oldplanes;
+ drmModeModeInfo *mode;
+
+ const static struct {
+ igt_rotation_t rotation;
+ uint64_t width;
+ uint64_t height;
+ uint64_t tiling;
+ } planeconfigs[] = {
+ {IGT_ROTATION_0, 512, 512, LOCAL_DRM_FORMAT_MOD_NONE },
+ {IGT_ROTATION_0, 512, 512, LOCAL_I915_FORMAT_MOD_X_TILED },
+ {IGT_ROTATION_0, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_0, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ {IGT_ROTATION_90, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_90, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ {IGT_ROTATION_180, 512, 512, LOCAL_DRM_FORMAT_MOD_NONE },
+ {IGT_ROTATION_180, 512, 512, LOCAL_I915_FORMAT_MOD_X_TILED },
+ {IGT_ROTATION_180, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_180, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ {IGT_ROTATION_270, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_270, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ };
+
+ /*
+ * These are those modes which are tested. For testing feel interesting
+ * case with tiling are 2 byte wide and 4 byte wide.
+ *
+ * TODO:
+ * Built support for NV12 here.
+ */
+ const static uint32_t formatlist[] = {DRM_FORMAT_RGB565,
+ DRM_FORMAT_XRGB8888};
+
+
+ for_each_valid_output_on_pipe(display, pipe, output) {
+ int i, j, k, l;
+ igt_output_set_pipe(output, pipe);
+
+ mode = igt_output_get_mode(output);
+
+ igt_display_require_output(display);
+ igt_display_commit2(display, COMMIT_ATOMIC);
+
+ data->pipe_crc = igt_pipe_crc_new(data->gfx_fd, pipe,
+ INTEL_PIPE_CRC_SOURCE_AUTO);
+ igt_pipe_crc_start(data->pipe_crc);
+
+ for (i = 0; i < ARRAY_SIZE(planeconfigs); i++) {
+ p[0].planetype = DRM_PLANE_TYPE_PRIMARY;
+ p[0].width = planeconfigs[i].width;
+ p[0].height = planeconfigs[i].height;
+ p[0].tiling = planeconfigs[i].tiling;
+ pointlocation(data, (planeinfos*)&p, mode, 0);
+
+ for (k = 0; k < ARRAY_SIZE(formatlist); k++) {
+ p[0].format = formatlist[k];
+
+ for (j = 0; j < ARRAY_SIZE(planeconfigs); j++) {
+ p[1].planetype = DRM_PLANE_TYPE_OVERLAY;
+ p[1].width = planeconfigs[j].width;
+ p[1].height = planeconfigs[j].height;
+ p[1].tiling = planeconfigs[j].tiling;
+ pointlocation(data, (planeinfos*)&p,
+ mode, 1);
+
+ for (l = 0; l < ARRAY_SIZE(formatlist); l++) {
+ p[1].format = formatlist[l];
+
+ /*
+ * RGB565 90/270 degrees rotation is supported
+ * from gen11 onwards.
+ */
+ if (p[0].format == DRM_FORMAT_RGB565 &&
+ (planeconfigs[i].rotation&(IGT_ROTATION_90|IGT_ROTATION_270))
+ && intel_gen(data->devid) < 11)
+ continue;
+
+ if (p[1].format == DRM_FORMAT_RGB565 &&
+ (planeconfigs[j].rotation&(IGT_ROTATION_90|IGT_ROTATION_270))
+ && intel_gen(data->devid) < 11)
+ continue;
+
+
+ p[0].rotation_sw = planeconfigs[i].rotation;
+ p[0].rotation_hw = IGT_ROTATION_0;
+ p[1].rotation_sw = planeconfigs[j].rotation;
+ p[1].rotation_hw = IGT_ROTATION_0;
+ get_multiplane_crc(data, output, &retcrc_sw,
+ (planeinfos*)&p, MAXMULTIPLANESAMOUNT);
+
+ igt_swap(p[0].rotation_sw, p[0].rotation_hw);
+ igt_swap(p[1].rotation_sw, p[1].rotation_hw);
+ get_multiplane_crc(data, output, &retcrc_hw,
+ (planeinfos*)&p, MAXMULTIPLANESAMOUNT);
+
+ igt_assert_crc_equal(&retcrc_sw, &retcrc_hw);
+ }
+ }
+ }
+ }
+ igt_pipe_crc_stop(data->pipe_crc);
+ igt_pipe_crc_free(data->pipe_crc);
+ igt_output_set_pipe(output, PIPE_ANY);
+ }
+
+ /*
+ * Old fbs are deleted only after new ones are set on planes.
+ * This is done to speed up the test
+ */
+ oldplanes = data->multiplaneoldview;
+ for (c = 0; c < MAXMULTIPLANESAMOUNT && oldplanes; c++)
+ igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
+
+ free(oldplanes);
+ data->multiplaneoldview = NULL;
+ data->pipe_crc = NULL;
+}
+
static void test_plane_rotation_exhaust_fences(data_t *data,
enum pipe pipe,
igt_output_t *output,
@@ -595,6 +808,42 @@ igt_main
}
}
+ igt_subtest_f("multiplane-rotation") {
+ igt_require(gen >= 9);
+ cleanup_crtc(&data);
+ data.planepos[0].origo = p_top|p_left;
+ data.planepos[0].x = 128;
+ data.planepos[0].y = 128;
+ data.planepos[1].origo = p_top|p_right;
+ data.planepos[1].x = -128-512;
+ data.planepos[1].y = 128;
+ test_multi_plane_rotation(&data, 0);
+ }
+
+ igt_subtest_f("multiplane-rotation-cropping-top") {
+ igt_require(gen >= 9);
+ cleanup_crtc(&data);
+ data.planepos[0].origo = p_top|p_left;
+ data.planepos[0].x = -128;
+ data.planepos[0].y = -128;
+ data.planepos[1].origo = p_top|p_right;
+ data.planepos[1].x = -512+128;
+ data.planepos[1].y = -128;
+ test_multi_plane_rotation(&data, 0);
+ }
+
+ igt_subtest_f("multiplane-rotation-cropping-bottom") {
+ igt_require(gen >= 9);
+ cleanup_crtc(&data);
+ data.planepos[0].origo = p_bottom|p_left;
+ data.planepos[0].x = -128;
+ data.planepos[0].y = -512+128;
+ data.planepos[1].origo = p_bottom|p_right;
+ data.planepos[1].x = -512+128;
+ data.planepos[1].y = -512+128;
+ test_multi_plane_rotation(&data, 0);
+ }
+
/*
* exhaust-fences should be last test, if it fails we may OOM in
* the following subtests otherwise.
--
2.7.4
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev3)
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
` (7 preceding siblings ...)
2018-10-26 12:21 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2018-10-26 14:23 ` Patchwork
2018-10-26 20:41 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
` (9 subsequent siblings)
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-10-26 14:23 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests. (rev3)
URL : https://patchwork.freedesktop.org/series/51452/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_5042 -> IGTPW_1999 =
== Summary - SUCCESS ==
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/3/mbox/
== Known issues ==
Here are the changes found in IGTPW_1999 that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@gem_exec_suspend@basic-s3:
fi-icl-u: PASS -> INCOMPLETE (fdo#107713)
igt@kms_frontbuffer_tracking@basic:
fi-byt-clapper: PASS -> FAIL (fdo#103167)
igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
fi-byt-clapper: PASS -> FAIL (fdo#107362, fdo#103191) +1
igt@kms_setmode@basic-clone-single-crtc:
fi-ilk-650: PASS -> DMESG-WARN (fdo#106387)
igt@pm_rpm@module-reload:
fi-glk-j4005: PASS -> DMESG-WARN (fdo#107726)
==== Possible fixes ====
igt@drv_selftest@live_hangcheck:
fi-kbl-7560u: INCOMPLETE (fdo#108044) -> PASS
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
fdo#106387 https://bugs.freedesktop.org/show_bug.cgi?id=106387
fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362
fdo#107713 https://bugs.freedesktop.org/show_bug.cgi?id=107713
fdo#107726 https://bugs.freedesktop.org/show_bug.cgi?id=107726
fdo#108044 https://bugs.freedesktop.org/show_bug.cgi?id=108044
== Participating hosts (48 -> 43) ==
Missing (5): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600
== Build changes ==
* IGT: IGT_4696 -> IGTPW_1999
CI_DRM_5042: 591c74093dc70bdceaa02441c494dd7090533564 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_1999: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1999/
IGT_4696: ff2db94acb53543acd7ba4e2badff59807069365 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Testlist changes ==
+igt@kms_rotation_crc@multiplane-rotation
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom
+igt@kms_rotation_crc@multiplane-rotation-cropping-top
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1999/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] ✗ Fi.CI.IGT: failure for tests/kms_rotation_crc: Add multi plane tests. (rev3)
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
` (8 preceding siblings ...)
2018-10-26 14:23 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev3) Patchwork
@ 2018-10-26 20:41 ` Patchwork
2018-10-27 5:52 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
` (8 subsequent siblings)
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-10-26 20:41 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests. (rev3)
URL : https://patchwork.freedesktop.org/series/51452/
State : failure
== Summary ==
= CI Bug Log - changes from IGT_4696_full -> IGTPW_1999_full =
== Summary - FAILURE ==
Serious unknown changes coming with IGTPW_1999_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_1999_full, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/3/mbox/
== Possible new issues ==
Here are the unknown changes that may have been introduced in IGTPW_1999_full:
=== IGT changes ===
==== Possible regressions ====
igt@pm_rpm@system-suspend:
shard-apl: PASS -> DMESG-WARN
==== Warnings ====
igt@pm_rc6_residency@rc6-accuracy:
shard-snb: SKIP -> PASS
== Known issues ==
Here are the changes found in IGTPW_1999_full that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@gem_workarounds@suspend-resume-fd:
shard-kbl: PASS -> INCOMPLETE (fdo#103665)
igt@kms_atomic_transition@plane-all-modeset-transition-fencing:
shard-apl: PASS -> INCOMPLETE (fdo#103927)
igt@kms_available_modes_crc@available_mode_test_crc:
shard-apl: PASS -> FAIL (fdo#106641)
igt@kms_cursor_crc@cursor-128x128-suspend:
shard-apl: PASS -> FAIL (fdo#103232, fdo#103191) +1
igt@kms_cursor_crc@cursor-256x256-onscreen:
shard-kbl: PASS -> FAIL (fdo#103232) +4
igt@kms_cursor_crc@cursor-256x256-sliding:
shard-glk: PASS -> FAIL (fdo#103232) +5
igt@kms_cursor_crc@cursor-64x21-sliding:
shard-apl: PASS -> FAIL (fdo#103232) +4
igt@kms_cursor_crc@cursor-64x64-random:
shard-kbl: PASS -> DMESG-WARN (fdo#108550) +23
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite:
shard-apl: PASS -> FAIL (fdo#103167) +1
igt@kms_frontbuffer_tracking@fbc-1p-rte:
shard-apl: PASS -> DMESG-WARN (fdo#108131, fdo#103558)
igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff:
shard-glk: PASS -> FAIL (fdo#103167) +8
igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
shard-kbl: PASS -> DMESG-WARN (fdo#108550, fdo#108549)
igt@kms_plane@plane-panning-bottom-right-pipe-c-planes:
shard-apl: NOTRUN -> DMESG-WARN (fdo#103558, fdo#105602)
igt@kms_plane@plane-position-covered-pipe-b-planes:
shard-glk: PASS -> FAIL (fdo#103166) +3
igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max:
shard-apl: PASS -> FAIL (fdo#108145)
igt@kms_plane_alpha_blend@pipe-c-constant-alpha-max:
shard-glk: PASS -> FAIL (fdo#108145) +1
igt@kms_plane_multiple@atomic-pipe-c-tiling-y:
shard-apl: PASS -> FAIL (fdo#103166) +1
igt@kms_rotation_crc@sprite-rotation-90-pos-100-0:
shard-apl: PASS -> DMESG-WARN (fdo#108549) +22
igt@kms_vblank@pipe-a-ts-continuation-modeset:
shard-apl: PASS -> DMESG-FAIL (fdo#108549)
igt@kms_vblank@pipe-b-query-idle-hang:
shard-apl: PASS -> DMESG-WARN (fdo#103558, fdo#105602) +9
==== Possible fixes ====
igt@gem_ctx_isolation@vcs1-s3:
shard-kbl: DMESG-WARN (fdo#108549) -> PASS
igt@kms_atomic_transition@plane-all-modeset-transition:
shard-apl: INCOMPLETE (fdo#103927) -> PASS
igt@kms_busy@extended-modeset-hang-newfb-render-c:
shard-kbl: DMESG-WARN (fdo#107956) -> PASS
igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-c:
shard-apl: DMESG-WARN (fdo#107956) -> PASS
igt@kms_color@pipe-c-legacy-gamma:
shard-kbl: FAIL (fdo#104782) -> PASS
shard-apl: FAIL (fdo#104782) -> PASS
igt@kms_cursor_crc@cursor-256x85-sliding:
shard-apl: FAIL (fdo#103232) -> PASS +2
igt@kms_cursor_crc@cursor-64x64-sliding:
shard-glk: FAIL (fdo#103232) -> PASS +1
igt@kms_flip@flip-vs-expired-vblank:
shard-glk: FAIL (fdo#105363) -> PASS
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
shard-apl: FAIL (fdo#103167) -> PASS
igt@kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-gtt:
shard-glk: FAIL (fdo#103167) -> PASS +2
igt@kms_pipe_crc_basic@hang-read-crc-pipe-c:
shard-apl: DMESG-WARN (fdo#108549) -> PASS +44
igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes:
shard-kbl: DMESG-WARN (fdo#108550, fdo#108549) -> PASS +1
igt@kms_plane_alpha_blend@pipe-c-alpha-7efc:
shard-glk: FAIL (fdo#108146) -> PASS +1
igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
shard-kbl: FAIL (fdo#108146) -> PASS +1
shard-apl: FAIL (fdo#108146) -> PASS +1
igt@kms_plane_multiple@atomic-pipe-b-tiling-y:
shard-glk: FAIL (fdo#103166) -> PASS +1
shard-apl: FAIL (fdo#103166) -> PASS
igt@kms_vblank@pipe-b-query-busy-hang:
shard-kbl: DMESG-WARN (fdo#108550) -> PASS +7
igt@kms_vblank@pipe-b-ts-continuation-modeset-hang:
shard-apl: DMESG-FAIL (fdo#108549) -> PASS +1
igt@pm_rpm@modeset-stress-extra-wait:
shard-glk: INCOMPLETE (k.org#198133, fdo#103359) -> PASS
==== Warnings ====
igt@kms_color@pipe-c-degamma:
shard-apl: DMESG-WARN (fdo#108549) -> FAIL (fdo#104782)
igt@kms_cursor_crc@cursor-256x85-onscreen:
shard-apl: DMESG-WARN (fdo#108549) -> FAIL (fdo#103232)
igt@kms_plane@plane-position-covered-pipe-b-planes:
shard-apl: DMESG-WARN (fdo#108549) -> FAIL (fdo#103166)
igt@kms_plane_alpha_blend@pipe-b-alpha-transparant-fb:
shard-apl: DMESG-FAIL (fdo#108549, fdo#108145) -> FAIL (fdo#108145)
fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
fdo#103232 https://bugs.freedesktop.org/show_bug.cgi?id=103232
fdo#103359 https://bugs.freedesktop.org/show_bug.cgi?id=103359
fdo#103558 https://bugs.freedesktop.org/show_bug.cgi?id=103558
fdo#103665 https://bugs.freedesktop.org/show_bug.cgi?id=103665
fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
fdo#104782 https://bugs.freedesktop.org/show_bug.cgi?id=104782
fdo#105363 https://bugs.freedesktop.org/show_bug.cgi?id=105363
fdo#105602 https://bugs.freedesktop.org/show_bug.cgi?id=105602
fdo#106641 https://bugs.freedesktop.org/show_bug.cgi?id=106641
fdo#107956 https://bugs.freedesktop.org/show_bug.cgi?id=107956
fdo#108131 https://bugs.freedesktop.org/show_bug.cgi?id=108131
fdo#108145 https://bugs.freedesktop.org/show_bug.cgi?id=108145
fdo#108146 https://bugs.freedesktop.org/show_bug.cgi?id=108146
fdo#108549 https://bugs.freedesktop.org/show_bug.cgi?id=108549
fdo#108550 https://bugs.freedesktop.org/show_bug.cgi?id=108550
k.org#198133 https://bugzilla.kernel.org/show_bug.cgi?id=198133
== Participating hosts (6 -> 5) ==
Missing (1): shard-skl
== Build changes ==
* IGT: IGT_4696 -> IGTPW_1999
* Linux: CI_DRM_5041 -> CI_DRM_5042
CI_DRM_5041: a45f611eae66546bb297a81c88e89bfd409bf199 @ git://anongit.freedesktop.org/gfx-ci/linux
CI_DRM_5042: 591c74093dc70bdceaa02441c494dd7090533564 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_1999: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1999/
IGT_4696: ff2db94acb53543acd7ba4e2badff59807069365 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1999/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev3)
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
` (9 preceding siblings ...)
2018-10-26 20:41 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
@ 2018-10-27 5:52 ` Patchwork
2018-10-27 9:25 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
` (7 subsequent siblings)
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-10-27 5:52 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests. (rev3)
URL : https://patchwork.freedesktop.org/series/51452/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_5042 -> IGTPW_2002 =
== Summary - SUCCESS ==
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/3/mbox/
== Known issues ==
Here are the changes found in IGTPW_2002 that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@debugfs_test@read_all_entries:
fi-icl-u2: NOTRUN -> DMESG-WARN (fdo#108070)
igt@drv_selftest@live_contexts:
fi-icl-u2: NOTRUN -> DMESG-FAIL (fdo#108569)
igt@drv_selftest@live_sanitycheck:
fi-glk-j4005: PASS -> DMESG-WARN (fdo#107726)
igt@gem_exec_suspend@basic-s3:
fi-icl-u2: NOTRUN -> DMESG-WARN (fdo#106612)
igt@gem_mmap_gtt@basic-small-copy:
fi-glk-dsi: PASS -> INCOMPLETE (k.org#198133, fdo#103359)
igt@kms_chamelium@hdmi-hpd-fast:
fi-icl-u2: NOTRUN -> FAIL (fdo#108559) +3
igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
fi-byt-clapper: PASS -> FAIL (fdo#103191, fdo#107362)
==== Possible fixes ====
igt@drv_selftest@live_hangcheck:
fi-kbl-7560u: INCOMPLETE (fdo#108044) -> PASS
igt@kms_flip@basic-plain-flip:
fi-glk-j4005: DMESG-WARN (fdo#106097) -> PASS
fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
fdo#103359 https://bugs.freedesktop.org/show_bug.cgi?id=103359
fdo#106097 https://bugs.freedesktop.org/show_bug.cgi?id=106097
fdo#106612 https://bugs.freedesktop.org/show_bug.cgi?id=106612
fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362
fdo#107726 https://bugs.freedesktop.org/show_bug.cgi?id=107726
fdo#108044 https://bugs.freedesktop.org/show_bug.cgi?id=108044
fdo#108070 https://bugs.freedesktop.org/show_bug.cgi?id=108070
fdo#108559 https://bugs.freedesktop.org/show_bug.cgi?id=108559
fdo#108569 https://bugs.freedesktop.org/show_bug.cgi?id=108569
k.org#198133 https://bugzilla.kernel.org/show_bug.cgi?id=198133
== Participating hosts (48 -> 42) ==
Additional (1): fi-icl-u2
Missing (7): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-icl-u
== Build changes ==
* IGT: IGT_4696 -> IGTPW_2002
CI_DRM_5042: 591c74093dc70bdceaa02441c494dd7090533564 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2002: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2002/
IGT_4696: ff2db94acb53543acd7ba4e2badff59807069365 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Testlist changes ==
+igt@kms_rotation_crc@multiplane-rotation
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom
+igt@kms_rotation_crc@multiplane-rotation-cropping-top
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2002/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_rotation_crc: Add multi plane tests. (rev3)
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
` (10 preceding siblings ...)
2018-10-27 5:52 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
@ 2018-10-27 9:25 ` Patchwork
2018-11-19 15:01 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev4) Patchwork
` (6 subsequent siblings)
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-10-27 9:25 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests. (rev3)
URL : https://patchwork.freedesktop.org/series/51452/
State : success
== Summary ==
= CI Bug Log - changes from IGT_4696_full -> IGTPW_2002_full =
== Summary - SUCCESS ==
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/3/mbox/
== Known issues ==
Here are the changes found in IGTPW_2002_full that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@gem_mmap_gtt@big-bo:
shard-snb: PASS -> INCOMPLETE (fdo#105411)
igt@kms_cursor_crc@cursor-128x128-random:
shard-apl: PASS -> FAIL (fdo#103232) +2
igt@kms_cursor_crc@cursor-256x256-onscreen:
shard-glk: PASS -> FAIL (fdo#103232)
igt@kms_cursor_crc@cursor-64x64-sliding:
shard-kbl: PASS -> FAIL (fdo#103232)
igt@kms_cursor_legacy@cursorb-vs-flipb-toggle:
shard-glk: PASS -> DMESG-WARN (fdo#105763, fdo#106538) +1
igt@kms_cursor_legacy@nonblocking-modeset-vs-cursor-atomic:
shard-kbl: PASS -> DMESG-WARN (fdo#108550) +10
igt@kms_flip@flip-vs-expired-vblank-interruptible:
shard-kbl: PASS -> FAIL (fdo#102887)
shard-glk: PASS -> FAIL (fdo#102887, fdo#105363)
igt@kms_flip@flip-vs-modeset-vs-hang:
shard-apl: PASS -> DMESG-WARN (fdo#108549) +24
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu:
shard-apl: PASS -> FAIL (fdo#103167) +3
igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-cpu:
shard-glk: PASS -> FAIL (fdo#103167) +2
igt@kms_plane@plane-position-covered-pipe-a-planes:
shard-kbl: PASS -> FAIL (fdo#103166) +1
igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max:
shard-glk: PASS -> FAIL (fdo#108145)
shard-apl: PASS -> FAIL (fdo#108145)
igt@kms_plane_multiple@atomic-pipe-a-tiling-y:
shard-glk: PASS -> FAIL (fdo#103166) +6
igt@kms_plane_multiple@atomic-pipe-b-tiling-x:
shard-apl: PASS -> FAIL (fdo#103166)
igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm:
shard-apl: PASS -> DMESG-FAIL (fdo#108549) +1
==== Possible fixes ====
igt@gem_busy@close-race:
shard-glk: DMESG-FAIL (fdo#108561) -> PASS
shard-apl: DMESG-FAIL (fdo#108561) -> PASS
igt@gem_ctx_isolation@vcs1-s3:
shard-kbl: DMESG-WARN (fdo#108549) -> PASS
igt@kms_atomic_transition@plane-all-modeset-transition:
shard-apl: INCOMPLETE (fdo#103927) -> PASS
igt@kms_busy@extended-pageflip-hang-newfb-render-b:
shard-apl: DMESG-WARN (fdo#107956) -> PASS
igt@kms_color@pipe-c-legacy-gamma:
shard-kbl: FAIL (fdo#104782) -> PASS
shard-apl: FAIL (fdo#104782) -> PASS
igt@kms_cursor_crc@cursor-256x85-sliding:
shard-apl: FAIL (fdo#103232) -> PASS +3
igt@kms_cursor_crc@cursor-64x64-sliding:
shard-glk: FAIL (fdo#103232) -> PASS +1
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
shard-apl: FAIL (fdo#103167) -> PASS
igt@kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-gtt:
shard-glk: FAIL (fdo#103167) -> PASS +2
igt@kms_pipe_crc_basic@hang-read-crc-pipe-c:
shard-apl: DMESG-WARN (fdo#108549) -> PASS +39
igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes:
shard-kbl: DMESG-WARN (fdo#108549, fdo#108550) -> PASS +1
igt@kms_plane_alpha_blend@pipe-b-alpha-opaque-fb:
shard-glk: FAIL (fdo#108145) -> PASS
shard-apl: FAIL (fdo#108145) -> PASS
shard-kbl: FAIL (fdo#108145) -> PASS
igt@kms_plane_alpha_blend@pipe-c-alpha-7efc:
shard-glk: FAIL (fdo#108146) -> PASS +1
igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
shard-kbl: FAIL (fdo#108146) -> PASS +1
shard-apl: FAIL (fdo#108146) -> PASS +1
igt@kms_plane_multiple@atomic-pipe-b-tiling-y:
shard-glk: FAIL (fdo#103166) -> PASS
shard-apl: FAIL (fdo#103166) -> PASS
igt@kms_vblank@pipe-b-query-busy-hang:
shard-kbl: DMESG-WARN (fdo#108550) -> PASS +5
igt@kms_vblank@pipe-c-ts-continuation-modeset:
shard-apl: DMESG-FAIL (fdo#108549) -> PASS
igt@pm_rpm@modeset-stress-extra-wait:
shard-glk: INCOMPLETE (fdo#103359, k.org#198133) -> PASS
==== Warnings ====
igt@kms_available_modes_crc@available_mode_test_crc:
shard-kbl: FAIL (fdo#106641) -> DMESG-FAIL (fdo#106641)
igt@kms_cursor_crc@cursor-128x42-onscreen:
shard-apl: FAIL (fdo#103232) -> DMESG-WARN (fdo#108549)
igt@kms_cursor_crc@cursor-256x85-onscreen:
shard-apl: DMESG-WARN (fdo#108549) -> FAIL (fdo#103232)
shard-kbl: DMESG-WARN (fdo#108550) -> FAIL (fdo#103232)
igt@kms_plane@plane-position-covered-pipe-a-planes:
shard-apl: DMESG-WARN (fdo#108549) -> FAIL (fdo#103166)
igt@kms_plane_alpha_blend@pipe-b-alpha-transparant-fb:
shard-apl: DMESG-FAIL (fdo#108549, fdo#108145) -> FAIL (fdo#108145)
fdo#102887 https://bugs.freedesktop.org/show_bug.cgi?id=102887
fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#103232 https://bugs.freedesktop.org/show_bug.cgi?id=103232
fdo#103359 https://bugs.freedesktop.org/show_bug.cgi?id=103359
fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
fdo#104782 https://bugs.freedesktop.org/show_bug.cgi?id=104782
fdo#105363 https://bugs.freedesktop.org/show_bug.cgi?id=105363
fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
fdo#105763 https://bugs.freedesktop.org/show_bug.cgi?id=105763
fdo#106538 https://bugs.freedesktop.org/show_bug.cgi?id=106538
fdo#106641 https://bugs.freedesktop.org/show_bug.cgi?id=106641
fdo#107956 https://bugs.freedesktop.org/show_bug.cgi?id=107956
fdo#108145 https://bugs.freedesktop.org/show_bug.cgi?id=108145
fdo#108146 https://bugs.freedesktop.org/show_bug.cgi?id=108146
fdo#108549 https://bugs.freedesktop.org/show_bug.cgi?id=108549
fdo#108550 https://bugs.freedesktop.org/show_bug.cgi?id=108550
fdo#108561 https://bugs.freedesktop.org/show_bug.cgi?id=108561
k.org#198133 https://bugzilla.kernel.org/show_bug.cgi?id=198133
== Participating hosts (6 -> 5) ==
Missing (1): shard-skl
== Build changes ==
* IGT: IGT_4696 -> IGTPW_2002
* Linux: CI_DRM_5041 -> CI_DRM_5042
CI_DRM_5041: a45f611eae66546bb297a81c88e89bfd409bf199 @ git://anongit.freedesktop.org/gfx-ci/linux
CI_DRM_5042: 591c74093dc70bdceaa02441c494dd7090533564 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2002: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2002/
IGT_4696: ff2db94acb53543acd7ba4e2badff59807069365 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2002/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests.
2018-10-26 12:58 ` Juha-Pekka Heikkila
@ 2018-11-16 12:28 ` Nautiyal, Ankit K
2018-11-19 11:45 ` Juha-Pekka Heikkila
2018-11-19 11:59 ` Juha-Pekka Heikkila
1 sibling, 1 reply; 28+ messages in thread
From: Nautiyal, Ankit K @ 2018-11-16 12:28 UTC (permalink / raw)
To: Juha-Pekka Heikkila, igt-dev
[-- Attachment #1.1: Type: text/plain, Size: 11404 bytes --]
Hi Juha-Pekka,
The new test added do cover the gap of having multiple-plane rotation
together, along with the top and bottom cropping scenarios.
The test work well for square figures i.e. the width = height =512, but
for rectangular figure, the test needs some fix in get_multiplane_crc(),
as this function does not assume that the width and height are same.
Please find suggestions inline.
Other than that, I could only nitpick some of the styling issues given
inline.
On 10/26/2018 6:28 PM, Juha-Pekka Heikkila wrote:
> Add three new tests which try primary and sprite planes
> next to each other with different plane formats, rotations
> and tiling modes.
>
> multiplane-rotation subtest run test through with both planes
> fully visible.
>
> multiplane-rotation-cropping-top will crop primary plane to
> left/top corner and sprite plane to right/top corner while running
> rotation tests.
>
> multiplane-rotation-cropping-bottom will crop primary plane to
> left/bottom corner and sprite plane to right/bottom corner while
> running rotation tests.
>
> Signed-off-by: Juha-Pekka Heikkila<juhapekka.heikkila@gmail.com>
> ---
> tests/kms_rotation_crc.c | 249 +++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 249 insertions(+)
>
> diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
> index 366c254..df9ac91 100644
> --- a/tests/kms_rotation_crc.c
> +++ b/tests/kms_rotation_crc.c
> @@ -26,6 +26,25 @@
> #include <math.h>
>
> #define MAX_FENCES 32
> +#define MAXMULTIPLANESAMOUNT 2
> +
> +struct p_struct {
> + igt_plane_t *plane;
> + struct igt_fb fb;
> +};
> +
> +enum p_pointorigo {
> + p_top = 1 << 0,
> + p_bottom = 1 << 1,
> + p_left = 1 << 2,
> + p_right = 1 << 3
> +};
> +
> +struct p_point{
> + enum p_pointorigo origo;
> + int32_t x;
> + int32_t y;
> +};
>
> typedef struct {
> int gfx_fd;
> @@ -43,6 +62,9 @@ typedef struct {
> uint32_t override_fmt;
> uint64_t override_tiling;
> int devid;
> +
> + struct p_struct *multiplaneoldview;
> + struct p_point planepos[MAXMULTIPLANESAMOUNT];
> } data_t;
>
> typedef struct {
> @@ -395,6 +417,197 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
> }
> }
>
> +typedef struct {
> + int32_t x1, y1;
> + uint64_t width, height, tiling, planetype, format;
> + igt_rotation_t rotation_sw, rotation_hw;
> +} planeinfos;
> +
> +static void get_multiplane_crc(data_t *data, igt_output_t *output,
> + igt_crc_t *crc_output, planeinfos* planeinfo,
> + int numplanes)
> +{
> + uint32_t w, h;
> + igt_display_t *display = &data->display;
> + struct p_struct *planes, *oldplanes;
> + int c, ret;
> +
> + oldplanes = data->multiplaneoldview;
> + planes = malloc(sizeof(*planes)*numplanes);
> +
> + for (c = 0; c < numplanes; c++) {
> + planes[c].plane = igt_output_get_plane_type(output,
> + planeinfo[c].planetype);
> +
> + w = planeinfo[c].width;
> + h = planeinfo[c].height;
> +
> + if ((planeinfo[c].rotation_hw|planeinfo[c].rotation_sw)
> + &(IGT_ROTATION_90|IGT_ROTATION_270))
> + igt_swap(w, h);
> +
In case of an actual hardware rotation 90 and 270, the width and height
should not be swapped.
The 'if condition' should have only check for rotation_sw, and not for
rotation_hw.
> + igt_plane_set_size(planes[c].plane, w, h);
For 90 and 270 degree rotation (i.e. rotation_hw) , igt_plane_set_size()
should have height in place of width and vice-versa.
if (rotation_hw & (IGT_ROTATION_90 | IGT_ROTATION_270)
igt_plane_set_size(plane[c].plane, h, w);
Further more this function igt_plane_set_size should be called after
igt_plane_set_fb(), because igt_plane_set_fb sets the plane size with
fb.width and fb.height, thereby overwriting our values.
> +
> + igt_create_fb(data->gfx_fd, w, h, planeinfo[c].format,
> + planeinfo[c].tiling, &planes[c].fb);
> +
> + paint_squares(data, planeinfo[c].rotation_sw, &planes[c].fb, 1.0f);
> + igt_plane_set_fb(planes[c].plane, &planes[c].fb);
> + igt_plane_set_position(planes[c].plane, planeinfo[c].x1, planeinfo[c].y1);
> + igt_plane_set_rotation(planes[c].plane, planeinfo[c].rotation_hw);
> + }
> +
> + ret = igt_display_try_commit2(display, COMMIT_ATOMIC);
> + igt_assert_eq(ret, 0);
> +
> + igt_pipe_crc_get_current(data->gfx_fd, data->pipe_crc, crc_output);
> +
> + for (c = 0; c < numplanes && oldplanes; c++)
> + igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
> +
> + free(oldplanes);
> + data->multiplaneoldview = (void*)planes;
> +}
> +
> +static void pointlocation(data_t *data, planeinfos* p, drmModeModeInfo *mode,
> + int c)
> +{
> + p[c].x1 = data->planepos[c].x
> + +((data->planepos[c].origo&p_right)?mode->hdisplay:0);
> + p[c].y1 = data->planepos[c].y
> + +((data->planepos[c].origo&p_bottom)?mode->vdisplay:0);
> +}
Space around '&' and '?'
> +
> +/*
> + * Here is pipe parameter which is now used only for first pipe.
> + * It is left here if this test ever was wanted to be run on
> + * different pipes.
> + */
> +static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
> +{
> + igt_display_t *display = &data->display;
> + igt_output_t *output;
> + igt_crc_t retcrc_sw, retcrc_hw;
> + planeinfos p[2];
> + int c;
> + struct p_struct *oldplanes;
> + drmModeModeInfo *mode;
> +
> + const static struct {
> + igt_rotation_t rotation;
> + uint64_t width;
> + uint64_t height;
> + uint64_t tiling;
> + } planeconfigs[] = {
> + {IGT_ROTATION_0, 512, 512, LOCAL_DRM_FORMAT_MOD_NONE },
In my humble opinion, we can use a rectangle content, instead of a
square content. The function get_muliplane_crc already takes care of
different width and height.
Only change will be required in function point_location.
> + {IGT_ROTATION_0, 512, 512, LOCAL_I915_FORMAT_MOD_X_TILED },
> + {IGT_ROTATION_0, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
> + {IGT_ROTATION_0, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
> + {IGT_ROTATION_90, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
> + {IGT_ROTATION_90, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
> + {IGT_ROTATION_180, 512, 512, LOCAL_DRM_FORMAT_MOD_NONE },
> + {IGT_ROTATION_180, 512, 512, LOCAL_I915_FORMAT_MOD_X_TILED },
> + {IGT_ROTATION_180, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
> + {IGT_ROTATION_180, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
> + {IGT_ROTATION_270, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
> + {IGT_ROTATION_270, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
> + };
> +
> + /*
> + * These are those modes which are tested. For testing feel interesting
> + * case with tiling are 2 byte wide and 4 byte wide.
> + *
> + * TODO:
> + * Built support for NV12 here.
> + */
> + const static uint32_t formatlist[] = {DRM_FORMAT_RGB565,
> + DRM_FORMAT_XRGB8888};
> +
> +
> + for_each_valid_output_on_pipe(display, pipe, output) {
> + int i, j, k, l;
> + igt_output_set_pipe(output, pipe);
> +
> + mode = igt_output_get_mode(output);
> +
> + igt_display_require_output(display);
> + igt_display_commit2(display, COMMIT_ATOMIC);
> +
> + data->pipe_crc = igt_pipe_crc_new(data->gfx_fd, pipe,
> + INTEL_PIPE_CRC_SOURCE_AUTO);
> + igt_pipe_crc_start(data->pipe_crc);
> +
> + for (i = 0; i < ARRAY_SIZE(planeconfigs); i++) {
> + p[0].planetype = DRM_PLANE_TYPE_PRIMARY;
> + p[0].width = planeconfigs[i].width;
> + p[0].height = planeconfigs[i].height;
> + p[0].tiling = planeconfigs[i].tiling;
> + pointlocation(data, (planeinfos*)&p, mode, 0);
> +
> + for (k = 0; k < ARRAY_SIZE(formatlist); k++) {
> + p[0].format = formatlist[k];
> +
> + for (j = 0; j < ARRAY_SIZE(planeconfigs); j++) {
> + p[1].planetype = DRM_PLANE_TYPE_OVERLAY;
> + p[1].width = planeconfigs[j].width;
> + p[1].height = planeconfigs[j].height;
> + p[1].tiling = planeconfigs[j].tiling;
> + pointlocation(data, (planeinfos*)&p,
> + mode, 1);
> +
> + for (l = 0; l < ARRAY_SIZE(formatlist); l++) {
> + p[1].format = formatlist[l];
> +
> + /*
> + * RGB565 90/270 degrees rotation is supported
> + * from gen11 onwards.
> + */
> + if (p[0].format == DRM_FORMAT_RGB565 &&
> + (planeconfigs[i].rotation&(IGT_ROTATION_90|IGT_ROTATION_270))
> + && intel_gen(data->devid) < 11)
> + continue;
> +
> + if (p[1].format == DRM_FORMAT_RGB565 &&
> + (planeconfigs[j].rotation&(IGT_ROTATION_90|IGT_ROTATION_270))
Space around '&' and '|'
> + && intel_gen(data->devid) < 11)
> + continue;
> +
> +
> + p[0].rotation_sw = planeconfigs[i].rotation;
> + p[0].rotation_hw = IGT_ROTATION_0;
> + p[1].rotation_sw = planeconfigs[j].rotation;
> + p[1].rotation_hw = IGT_ROTATION_0;
> + get_multiplane_crc(data, output, &retcrc_sw,
> + (planeinfos*)&p, MAXMULTIPLANESAMOUNT);
> +
> + igt_swap(p[0].rotation_sw, p[0].rotation_hw);
> + igt_swap(p[1].rotation_sw, p[1].rotation_hw);
> + get_multiplane_crc(data, output, &retcrc_hw,
> + (planeinfos*)&p, MAXMULTIPLANESAMOUNT);
> +
> + igt_assert_crc_equal(&retcrc_sw, &retcrc_hw);
> + }
> + }
> + }
> + }
> + igt_pipe_crc_stop(data->pipe_crc);
> + igt_pipe_crc_free(data->pipe_crc);
> + igt_output_set_pipe(output, PIPE_ANY);
> + }
> +
> + /*
> + * Old fbs are deleted only after new ones are set on planes.
> + * This is done to speed up the test
> + */
> + oldplanes = data->multiplaneoldview;
> + for (c = 0; c < MAXMULTIPLANESAMOUNT && oldplanes; c++)
> + igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
> +
> + free(oldplanes);
> + data->multiplaneoldview = NULL;
> + data->pipe_crc = NULL;
> +}
> +
> static void test_plane_rotation_exhaust_fences(data_t *data,
> enum pipe pipe,
> igt_output_t *output,
> @@ -595,6 +808,42 @@ igt_main
> }
> }
>
> + igt_subtest_f("multiplane-rotation") {
> + igt_require(gen >= 9);
> + cleanup_crtc(&data);
> + data.planepos[0].origo = p_top|p_left;
> + data.planepos[0].x = 128;
> + data.planepos[0].y = 128;
> + data.planepos[1].origo = p_top|p_right;
> + data.planepos[1].x = -128-512;
Space around '|' and '-' operators. Valid for few more lines below.
Not sure if we will ever hit a case where there is a lower resolution
e.g. 640x480, the figure will be cropped, which is not desired, the test
however would still pass as crc would match.
Perhaps we can skip if resolution is less than some threshold.
> + data.planepos[1].y = 128;
> + test_multi_plane_rotation(&data, 0);
> + }
> +
> + igt_subtest_f("multiplane-rotation-cropping-top") {
> + igt_require(gen >= 9);
> + cleanup_crtc(&data);
> + data.planepos[0].origo = p_top|p_left;
> + data.planepos[0].x = -128;
> + data.planepos[0].y = -128;
> + data.planepos[1].origo = p_top|p_right;
> + data.planepos[1].x = -512+128;
> + data.planepos[1].y = -128;
> + test_multi_plane_rotation(&data, 0);
> + }
> +
> + igt_subtest_f("multiplane-rotation-cropping-bottom") {
> + igt_require(gen >= 9);
> + cleanup_crtc(&data);
> + data.planepos[0].origo = p_bottom|p_left;
> + data.planepos[0].x = -128;
> + data.planepos[0].y = -512+128;
> + data.planepos[1].origo = p_bottom|p_right;
> + data.planepos[1].x = -512+128;
> + data.planepos[1].y = -512+128;
> + test_multi_plane_rotation(&data, 0);
> + }
> +
> /*
> * exhaust-fences should be last test, if it fails we may OOM in
> * the following subtests otherwise.
>
>
>
[-- Attachment #1.2: Type: text/html, Size: 13430 bytes --]
[-- Attachment #2: Type: text/plain, Size: 154 bytes --]
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests.
2018-11-16 12:28 ` Nautiyal, Ankit K
@ 2018-11-19 11:45 ` Juha-Pekka Heikkila
0 siblings, 0 replies; 28+ messages in thread
From: Juha-Pekka Heikkila @ 2018-11-19 11:45 UTC (permalink / raw)
To: Nautiyal, Ankit K, igt-dev
Hi Ankit, thanks for the comments. I'll soon post fixed patch. I had
originally dropped idea for rectangular test figure as I didn't know if
its useful, I now following your comments fixed it to work and take into
account screen space.
/Juha-Pekka
On 16.11.2018 14:28, Nautiyal, Ankit K wrote:
> Hi Juha-Pekka,
>
> The new test added do cover the gap of having multiple-plane rotation
> together, along with the top and bottom cropping scenarios.
>
> The test work well for square figures i.e. the width = height =512, but
> for rectangular figure, the test needs some fix in get_multiplane_crc(),
> as this function does not assume that the width and height are same.
>
> Please find suggestions inline.
>
> Other than that, I could only nitpick some of the styling issues given
> inline.
>
> On 10/26/2018 6:28 PM, Juha-Pekka Heikkila wrote:
>> Add three new tests which try primary and sprite planes
>> next to each other with different plane formats, rotations
>> and tiling modes.
>>
>> multiplane-rotation subtest run test through with both planes
>> fully visible.
>>
>> multiplane-rotation-cropping-top will crop primary plane to
>> left/top corner and sprite plane to right/top corner while running
>> rotation tests.
>>
>> multiplane-rotation-cropping-bottom will crop primary plane to
>> left/bottom corner and sprite plane to right/bottom corner while
>> running rotation tests.
>>
>> Signed-off-by: Juha-Pekka Heikkila<juhapekka.heikkila@gmail.com>
>> ---
>> tests/kms_rotation_crc.c | 249 +++++++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 249 insertions(+)
>>
>> diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
>> index 366c254..df9ac91 100644
>> --- a/tests/kms_rotation_crc.c
>> +++ b/tests/kms_rotation_crc.c
>> @@ -26,6 +26,25 @@
>> #include <math.h>
>>
>> #define MAX_FENCES 32
>> +#define MAXMULTIPLANESAMOUNT 2
>> +
>> +struct p_struct {
>> + igt_plane_t *plane;
>> + struct igt_fb fb;
>> +};
>> +
>> +enum p_pointorigo {
>> + p_top = 1 << 0,
>> + p_bottom = 1 << 1,
>> + p_left = 1 << 2,
>> + p_right = 1 << 3
>> +};
>> +
>> +struct p_point{
>> + enum p_pointorigo origo;
>> + int32_t x;
>> + int32_t y;
>> +};
>>
>> typedef struct {
>> int gfx_fd;
>> @@ -43,6 +62,9 @@ typedef struct {
>> uint32_t override_fmt;
>> uint64_t override_tiling;
>> int devid;
>> +
>> + struct p_struct *multiplaneoldview;
>> + struct p_point planepos[MAXMULTIPLANESAMOUNT];
>> } data_t;
>>
>> typedef struct {
>> @@ -395,6 +417,197 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
>> }
>> }
>>
>> +typedef struct {
>> + int32_t x1, y1;
>> + uint64_t width, height, tiling, planetype, format;
>> + igt_rotation_t rotation_sw, rotation_hw;
>> +} planeinfos;
>> +
>> +static void get_multiplane_crc(data_t *data, igt_output_t *output,
>> + igt_crc_t *crc_output, planeinfos* planeinfo,
>> + int numplanes)
>> +{
>> + uint32_t w, h;
>> + igt_display_t *display = &data->display;
>> + struct p_struct *planes, *oldplanes;
>> + int c, ret;
>> +
>> + oldplanes = data->multiplaneoldview;
>> + planes = malloc(sizeof(*planes)*numplanes);
>> +
>> + for (c = 0; c < numplanes; c++) {
>> + planes[c].plane = igt_output_get_plane_type(output,
>> + planeinfo[c].planetype);
>> +
>> + w = planeinfo[c].width;
>> + h = planeinfo[c].height;
>> +
>> + if ((planeinfo[c].rotation_hw|planeinfo[c].rotation_sw)
>> + &(IGT_ROTATION_90|IGT_ROTATION_270))
>> + igt_swap(w, h);
>> +
> In case of an actual hardware rotation 90 and 270, the width and height
> should not be swapped.
> The 'if condition' should have only check for rotation_sw, and not for
> rotation_hw.
>
>> + igt_plane_set_size(planes[c].plane, w, h);
> For 90 and 270 degree rotation (i.e. rotation_hw) , igt_plane_set_size()
> should have height in place of width and vice-versa.
>
> if (rotation_hw & (IGT_ROTATION_90 | IGT_ROTATION_270)
> igt_plane_set_size(plane[c].plane, h, w);
>
> Further more this function igt_plane_set_size should be called after
> igt_plane_set_fb(), because igt_plane_set_fb sets the plane size with
> fb.width and fb.height, thereby overwriting our values.
>
>> +
>> + igt_create_fb(data->gfx_fd, w, h, planeinfo[c].format,
>> + planeinfo[c].tiling, &planes[c].fb);
>> +
>> + paint_squares(data, planeinfo[c].rotation_sw, &planes[c].fb, 1.0f);
>> + igt_plane_set_fb(planes[c].plane, &planes[c].fb);
>> + igt_plane_set_position(planes[c].plane, planeinfo[c].x1, planeinfo[c].y1);
>> + igt_plane_set_rotation(planes[c].plane, planeinfo[c].rotation_hw);
>> + }
>> +
>> + ret = igt_display_try_commit2(display, COMMIT_ATOMIC);
>> + igt_assert_eq(ret, 0);
>> +
>> + igt_pipe_crc_get_current(data->gfx_fd, data->pipe_crc, crc_output);
>> +
>> + for (c = 0; c < numplanes && oldplanes; c++)
>> + igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
>> +
>> + free(oldplanes);
>> + data->multiplaneoldview = (void*)planes;
>> +}
>> +
>> +static void pointlocation(data_t *data, planeinfos* p, drmModeModeInfo *mode,
>> + int c)
>> +{
>> + p[c].x1 = data->planepos[c].x
>> + +((data->planepos[c].origo&p_right)?mode->hdisplay:0);
>> + p[c].y1 = data->planepos[c].y
>> + +((data->planepos[c].origo&p_bottom)?mode->vdisplay:0);
>> +}
>
> Space around '&' and '?'
>
>> +
>> +/*
>> + * Here is pipe parameter which is now used only for first pipe.
>> + * It is left here if this test ever was wanted to be run on
>> + * different pipes.
>> + */
>> +static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
>> +{
>> + igt_display_t *display = &data->display;
>> + igt_output_t *output;
>> + igt_crc_t retcrc_sw, retcrc_hw;
>> + planeinfos p[2];
>> + int c;
>> + struct p_struct *oldplanes;
>> + drmModeModeInfo *mode;
>> +
>> + const static struct {
>> + igt_rotation_t rotation;
>> + uint64_t width;
>> + uint64_t height;
>> + uint64_t tiling;
>> + } planeconfigs[] = {
>> + {IGT_ROTATION_0, 512, 512, LOCAL_DRM_FORMAT_MOD_NONE },
>
> In my humble opinion, we can use a rectangle content, instead of a
> square content. The function get_muliplane_crc already takes care of
> different width and height.
> Only change will be required in function point_location.
>
>> + {IGT_ROTATION_0, 512, 512, LOCAL_I915_FORMAT_MOD_X_TILED },
>> + {IGT_ROTATION_0, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
>> + {IGT_ROTATION_0, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
>> + {IGT_ROTATION_90, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
>> + {IGT_ROTATION_90, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
>> + {IGT_ROTATION_180, 512, 512, LOCAL_DRM_FORMAT_MOD_NONE },
>> + {IGT_ROTATION_180, 512, 512, LOCAL_I915_FORMAT_MOD_X_TILED },
>> + {IGT_ROTATION_180, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
>> + {IGT_ROTATION_180, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
>> + {IGT_ROTATION_270, 512, 512, LOCAL_I915_FORMAT_MOD_Y_TILED },
>> + {IGT_ROTATION_270, 512, 512, LOCAL_I915_FORMAT_MOD_Yf_TILED },
>> + };
>> +
>> + /*
>> + * These are those modes which are tested. For testing feel interesting
>> + * case with tiling are 2 byte wide and 4 byte wide.
>> + *
>> + * TODO:
>> + * Built support for NV12 here.
>> + */
>> + const static uint32_t formatlist[] = {DRM_FORMAT_RGB565,
>> + DRM_FORMAT_XRGB8888};
>> +
>> +
>> + for_each_valid_output_on_pipe(display, pipe, output) {
>> + int i, j, k, l;
>> + igt_output_set_pipe(output, pipe);
>> +
>> + mode = igt_output_get_mode(output);
>> +
>> + igt_display_require_output(display);
>> + igt_display_commit2(display, COMMIT_ATOMIC);
>> +
>> + data->pipe_crc = igt_pipe_crc_new(data->gfx_fd, pipe,
>> + INTEL_PIPE_CRC_SOURCE_AUTO);
>> + igt_pipe_crc_start(data->pipe_crc);
>> +
>> + for (i = 0; i < ARRAY_SIZE(planeconfigs); i++) {
>> + p[0].planetype = DRM_PLANE_TYPE_PRIMARY;
>> + p[0].width = planeconfigs[i].width;
>> + p[0].height = planeconfigs[i].height;
>> + p[0].tiling = planeconfigs[i].tiling;
>> + pointlocation(data, (planeinfos*)&p, mode, 0);
>> +
>> + for (k = 0; k < ARRAY_SIZE(formatlist); k++) {
>> + p[0].format = formatlist[k];
>> +
>> + for (j = 0; j < ARRAY_SIZE(planeconfigs); j++) {
>> + p[1].planetype = DRM_PLANE_TYPE_OVERLAY;
>> + p[1].width = planeconfigs[j].width;
>> + p[1].height = planeconfigs[j].height;
>> + p[1].tiling = planeconfigs[j].tiling;
>> + pointlocation(data, (planeinfos*)&p,
>> + mode, 1);
>> +
>> + for (l = 0; l < ARRAY_SIZE(formatlist); l++) {
>> + p[1].format = formatlist[l];
>> +
>> + /*
>> + * RGB565 90/270 degrees rotation is supported
>> + * from gen11 onwards.
>> + */
>> + if (p[0].format == DRM_FORMAT_RGB565 &&
>> + (planeconfigs[i].rotation&(IGT_ROTATION_90|IGT_ROTATION_270))
>> + && intel_gen(data->devid) < 11)
>> + continue;
>> +
>> + if (p[1].format == DRM_FORMAT_RGB565 &&
>> + (planeconfigs[j].rotation&(IGT_ROTATION_90|IGT_ROTATION_270))
> Space around '&' and '|'
>> + && intel_gen(data->devid) < 11)
>> + continue;
>> +
>> +
>> + p[0].rotation_sw = planeconfigs[i].rotation;
>> + p[0].rotation_hw = IGT_ROTATION_0;
>> + p[1].rotation_sw = planeconfigs[j].rotation;
>> + p[1].rotation_hw = IGT_ROTATION_0;
>> + get_multiplane_crc(data, output, &retcrc_sw,
>> + (planeinfos*)&p, MAXMULTIPLANESAMOUNT);
>> +
>> + igt_swap(p[0].rotation_sw, p[0].rotation_hw);
>> + igt_swap(p[1].rotation_sw, p[1].rotation_hw);
>> + get_multiplane_crc(data, output, &retcrc_hw,
>> + (planeinfos*)&p, MAXMULTIPLANESAMOUNT);
>> +
>> + igt_assert_crc_equal(&retcrc_sw, &retcrc_hw);
>> + }
>> + }
>> + }
>> + }
>> + igt_pipe_crc_stop(data->pipe_crc);
>> + igt_pipe_crc_free(data->pipe_crc);
>> + igt_output_set_pipe(output, PIPE_ANY);
>> + }
>> +
>> + /*
>> + * Old fbs are deleted only after new ones are set on planes.
>> + * This is done to speed up the test
>> + */
>> + oldplanes = data->multiplaneoldview;
>> + for (c = 0; c < MAXMULTIPLANESAMOUNT && oldplanes; c++)
>> + igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
>> +
>> + free(oldplanes);
>> + data->multiplaneoldview = NULL;
>> + data->pipe_crc = NULL;
>> +}
>> +
>> static void test_plane_rotation_exhaust_fences(data_t *data,
>> enum pipe pipe,
>> igt_output_t *output,
>> @@ -595,6 +808,42 @@ igt_main
>> }
>> }
>>
>> + igt_subtest_f("multiplane-rotation") {
>> + igt_require(gen >= 9);
>> + cleanup_crtc(&data);
>> + data.planepos[0].origo = p_top|p_left;
>> + data.planepos[0].x = 128;
>> + data.planepos[0].y = 128;
>> + data.planepos[1].origo = p_top|p_right;
>> + data.planepos[1].x = -128-512;
> Space around '|' and '-' operators. Valid for few more lines below.
> Not sure if we will ever hit a case where there is a lower resolution
> e.g. 640x480, the figure will be cropped, which is not desired, the test
> however would still pass as crc would match.
> Perhaps we can skip if resolution is less than some threshold.
>
>> + data.planepos[1].y = 128;
>> + test_multi_plane_rotation(&data, 0);
>> + }
>> +
>> + igt_subtest_f("multiplane-rotation-cropping-top") {
>> + igt_require(gen >= 9);
>> + cleanup_crtc(&data);
>> + data.planepos[0].origo = p_top|p_left;
>> + data.planepos[0].x = -128;
>> + data.planepos[0].y = -128;
>> + data.planepos[1].origo = p_top|p_right;
>> + data.planepos[1].x = -512+128;
>> + data.planepos[1].y = -128;
>> + test_multi_plane_rotation(&data, 0);
>> + }
>> +
>> + igt_subtest_f("multiplane-rotation-cropping-bottom") {
>> + igt_require(gen >= 9);
>> + cleanup_crtc(&data);
>> + data.planepos[0].origo = p_bottom|p_left;
>> + data.planepos[0].x = -128;
>> + data.planepos[0].y = -512+128;
>> + data.planepos[1].origo = p_bottom|p_right;
>> + data.planepos[1].x = -512+128;
>> + data.planepos[1].y = -512+128;
>> + test_multi_plane_rotation(&data, 0);
>> + }
>> +
>> /*
>> * exhaust-fences should be last test, if it fails we may OOM in
>> * the following subtests otherwise.
>>
>>
>>
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests.
2018-10-26 12:58 ` Juha-Pekka Heikkila
2018-11-16 12:28 ` Nautiyal, Ankit K
@ 2018-11-19 11:59 ` Juha-Pekka Heikkila
2018-11-22 7:04 ` Nautiyal, Ankit K
2018-11-30 14:08 ` Juha-Pekka Heikkila
1 sibling, 2 replies; 28+ messages in thread
From: Juha-Pekka Heikkila @ 2018-11-19 11:59 UTC (permalink / raw)
To: igt-dev
Add three new tests which try primary and sprite planes
next to each other with different plane formats, rotations
and tiling modes.
multiplane-rotation subtest run test through with both planes
fully visible.
multiplane-rotation-cropping-top will crop primary plane to
left/top corner and sprite plane to right/top corner while running
rotation tests.
multiplane-rotation-cropping-bottom will crop primary plane to
left/bottom corner and sprite plane to right/bottom corner while
running rotation tests.
v2 (Nautiyal, Ankit K): Use rectangular figures instead of
square figures and fix associated code to perform correctly.
Adjust plane positions according to screen size to avoid
putting planes outside screen.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
tests/kms_rotation_crc.c | 246 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 246 insertions(+)
diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index 366c254..32814fe 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -26,6 +26,25 @@
#include <math.h>
#define MAX_FENCES 32
+#define MAXMULTIPLANESAMOUNT 2
+
+struct p_struct {
+ igt_plane_t *plane;
+ struct igt_fb fb;
+};
+
+enum p_pointorigo {
+ p_top = 1 << 0,
+ p_bottom = 1 << 1,
+ p_left = 1 << 2,
+ p_right = 1 << 3
+};
+
+struct p_point{
+ enum p_pointorigo origo;
+ float_t x;
+ float_t y;
+};
typedef struct {
int gfx_fd;
@@ -43,6 +62,9 @@ typedef struct {
uint32_t override_fmt;
uint64_t override_tiling;
int devid;
+
+ struct p_struct *multiplaneoldview;
+ struct p_point planepos[MAXMULTIPLANESAMOUNT];
} data_t;
typedef struct {
@@ -395,6 +417,194 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
}
}
+typedef struct {
+ int32_t x1, y1;
+ uint64_t width, height, tiling, planetype, format;
+ igt_rotation_t rotation_sw, rotation_hw;
+} planeinfos;
+
+static void get_multiplane_crc(data_t *data, igt_output_t *output,
+ igt_crc_t *crc_output, planeinfos* planeinfo,
+ int numplanes)
+{
+ uint32_t w, h;
+ igt_display_t *display = &data->display;
+ struct p_struct *planes, *oldplanes;
+ int c, ret;
+
+ oldplanes = data->multiplaneoldview;
+ planes = malloc(sizeof(*planes)*numplanes);
+
+ for (c = 0; c < numplanes; c++) {
+ planes[c].plane = igt_output_get_plane_type(output,
+ planeinfo[c].planetype);
+
+ w = planeinfo[c].width;
+ h = planeinfo[c].height;
+
+ if (planeinfo[c].rotation_sw & (IGT_ROTATION_90 | IGT_ROTATION_270))
+ igt_swap(w, h);
+
+ igt_create_fb(data->gfx_fd, w, h, planeinfo[c].format,
+ planeinfo[c].tiling, &planes[c].fb);
+
+ paint_squares(data, planeinfo[c].rotation_sw, &planes[c].fb, 1.0f);
+ igt_plane_set_fb(planes[c].plane, &planes[c].fb);
+
+ if (planeinfo[c].rotation_hw & (IGT_ROTATION_90 | IGT_ROTATION_270))
+ igt_plane_set_size(planes[c].plane, h, w);
+
+ igt_plane_set_position(planes[c].plane, planeinfo[c].x1, planeinfo[c].y1);
+ igt_plane_set_rotation(planes[c].plane, planeinfo[c].rotation_hw);
+ }
+
+ ret = igt_display_try_commit2(display, COMMIT_ATOMIC);
+ igt_assert_eq(ret, 0);
+
+ igt_pipe_crc_get_current(data->gfx_fd, data->pipe_crc, crc_output);
+
+ for (c = 0; c < numplanes && oldplanes; c++)
+ igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
+
+ free(oldplanes);
+ data->multiplaneoldview = (void*)planes;
+}
+
+static void pointlocation(data_t *data, planeinfos* p, drmModeModeInfo *mode,
+ int c)
+{
+ p[c].x1 = (int32_t)(data->planepos[c].x*mode->hdisplay)
+ +((data->planepos[c].origo & p_right) ? mode->hdisplay : 0);
+ p[c].y1 = (int32_t)(data->planepos[c].y*mode->vdisplay)
+ +((data->planepos[c].origo & p_bottom) ? mode->vdisplay : 0);
+}
+
+/*
+ * Here is pipe parameter which is now used only for first pipe.
+ * It is left here if this test ever was wanted to be run on
+ * different pipes.
+ */
+static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
+{
+ igt_display_t *display = &data->display;
+ igt_output_t *output;
+ igt_crc_t retcrc_sw, retcrc_hw;
+ planeinfos p[2];
+ int c;
+ struct p_struct *oldplanes;
+ drmModeModeInfo *mode;
+
+ const static struct {
+ igt_rotation_t rotation;
+ float_t width;
+ float_t height;
+ uint64_t tiling;
+ } planeconfigs[] = {
+ {IGT_ROTATION_0, .2f, .4f, LOCAL_DRM_FORMAT_MOD_NONE },
+ {IGT_ROTATION_0, .2f, .4f, LOCAL_I915_FORMAT_MOD_X_TILED },
+ {IGT_ROTATION_0, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_0, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ {IGT_ROTATION_90, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_90, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ {IGT_ROTATION_180, .2f, .4f, LOCAL_DRM_FORMAT_MOD_NONE },
+ {IGT_ROTATION_180, .2f, .4f, LOCAL_I915_FORMAT_MOD_X_TILED },
+ {IGT_ROTATION_180, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_180, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ {IGT_ROTATION_270, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_270, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ };
+
+ /*
+ * These are those modes which are tested. For testing feel interesting
+ * case with tiling are 2 byte wide and 4 byte wide.
+ *
+ * TODO:
+ * Built support for NV12 here.
+ */
+ const static uint32_t formatlist[] = {DRM_FORMAT_RGB565,
+ DRM_FORMAT_XRGB8888};
+
+ for_each_valid_output_on_pipe(display, pipe, output) {
+ int i, j, k, l;
+ igt_output_set_pipe(output, pipe);
+ mode = igt_output_get_mode(output);
+ igt_display_require_output(display);
+ igt_display_commit2(display, COMMIT_ATOMIC);
+
+ data->pipe_crc = igt_pipe_crc_new(data->gfx_fd, pipe,
+ INTEL_PIPE_CRC_SOURCE_AUTO);
+ igt_pipe_crc_start(data->pipe_crc);
+
+ for (i = 0; i < ARRAY_SIZE(planeconfigs); i++) {
+ p[0].planetype = DRM_PLANE_TYPE_PRIMARY;
+ p[0].width = (uint64_t)(planeconfigs[i].width*mode->hdisplay);
+ p[0].height = (uint64_t)(planeconfigs[i].height*mode->vdisplay);
+ p[0].tiling = planeconfigs[i].tiling;
+ pointlocation(data, (planeinfos*)&p, mode, 0);
+
+ for (k = 0; k < ARRAY_SIZE(formatlist); k++) {
+ p[0].format = formatlist[k];
+
+ for (j = 0; j < ARRAY_SIZE(planeconfigs); j++) {
+ p[1].planetype = DRM_PLANE_TYPE_OVERLAY;
+ p[1].width = (uint64_t)(planeconfigs[j].width*mode->hdisplay);
+ p[1].height = (uint64_t)(planeconfigs[j].height*mode->vdisplay);
+ p[1].tiling = planeconfigs[j].tiling;
+ pointlocation(data, (planeinfos*)&p,
+ mode, 1);
+
+ for (l = 0; l < ARRAY_SIZE(formatlist); l++) {
+ p[1].format = formatlist[l];
+
+ /*
+ * RGB565 90/270 degrees rotation is supported
+ * from gen11 onwards.
+ */
+ if (p[0].format == DRM_FORMAT_RGB565 &&
+ (planeconfigs[i].rotation & (IGT_ROTATION_90 | IGT_ROTATION_270))
+ && intel_gen(data->devid) < 11)
+ continue;
+
+ if (p[1].format == DRM_FORMAT_RGB565 &&
+ (planeconfigs[j].rotation & (IGT_ROTATION_90 | IGT_ROTATION_270))
+ && intel_gen(data->devid) < 11)
+ continue;
+
+ p[0].rotation_sw = planeconfigs[i].rotation;
+ p[0].rotation_hw = IGT_ROTATION_0;
+ p[1].rotation_sw = planeconfigs[j].rotation;
+ p[1].rotation_hw = IGT_ROTATION_0;
+ get_multiplane_crc(data, output, &retcrc_sw,
+ (planeinfos*)&p, MAXMULTIPLANESAMOUNT);
+
+ igt_swap(p[0].rotation_sw, p[0].rotation_hw);
+ igt_swap(p[1].rotation_sw, p[1].rotation_hw);
+ get_multiplane_crc(data, output, &retcrc_hw,
+ (planeinfos*)&p, MAXMULTIPLANESAMOUNT);
+
+ igt_assert_crc_equal(&retcrc_sw, &retcrc_hw);
+ }
+ }
+ }
+ }
+ igt_pipe_crc_stop(data->pipe_crc);
+ igt_pipe_crc_free(data->pipe_crc);
+ igt_output_set_pipe(output, PIPE_ANY);
+ }
+
+ /*
+ * Old fbs are deleted only after new ones are set on planes.
+ * This is done to speed up the test
+ */
+ oldplanes = data->multiplaneoldview;
+ for (c = 0; c < MAXMULTIPLANESAMOUNT && oldplanes; c++)
+ igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
+
+ free(oldplanes);
+ data->multiplaneoldview = NULL;
+ data->pipe_crc = NULL;
+}
+
static void test_plane_rotation_exhaust_fences(data_t *data,
enum pipe pipe,
igt_output_t *output,
@@ -595,6 +805,42 @@ igt_main
}
}
+ igt_subtest_f("multiplane-rotation") {
+ igt_require(gen >= 9);
+ cleanup_crtc(&data);
+ data.planepos[0].origo = p_top | p_left;
+ data.planepos[0].x = .1f;
+ data.planepos[0].y = .1f;
+ data.planepos[1].origo = p_top | p_right;
+ data.planepos[1].x = -.3f;
+ data.planepos[1].y = .1f;
+ test_multi_plane_rotation(&data, 0);
+ }
+
+ igt_subtest_f("multiplane-rotation-cropping-top") {
+ igt_require(gen >= 9);
+ cleanup_crtc(&data);
+ data.planepos[0].origo = p_top | p_left;
+ data.planepos[0].x = -.05f;
+ data.planepos[0].y = -.15f;
+ data.planepos[1].origo = p_top | p_right;
+ data.planepos[1].x = -.15f;
+ data.planepos[1].y = -.15f;
+ test_multi_plane_rotation(&data, 0);
+ }
+
+ igt_subtest_f("multiplane-rotation-cropping-bottom") {
+ igt_require(gen >= 9);
+ cleanup_crtc(&data);
+ data.planepos[0].origo = p_bottom | p_left;
+ data.planepos[0].x = -.05f;
+ data.planepos[0].y = -.20f;
+ data.planepos[1].origo = p_bottom | p_right;
+ data.planepos[1].x = -.15f;
+ data.planepos[1].y = -.20f;
+ test_multi_plane_rotation(&data, 0);
+ }
+
/*
* exhaust-fences should be last test, if it fails we may OOM in
* the following subtests otherwise.
--
2.7.4
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev4)
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
` (11 preceding siblings ...)
2018-10-27 9:25 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2018-11-19 15:01 ` Patchwork
2018-11-19 18:55 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
` (5 subsequent siblings)
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-11-19 15:01 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests. (rev4)
URL : https://patchwork.freedesktop.org/series/51452/
State : success
== Summary ==
= CI Bug Log - changes from IGT_4720 -> IGTPW_2075 =
== Summary - SUCCESS ==
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/4/mbox/
== Known issues ==
Here are the changes found in IGTPW_2075 that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@gem_ctx_create@basic-files:
fi-bsw-n3050: PASS -> FAIL (fdo#108656)
igt@i915_selftest@live_contexts:
fi-bsw-kefka: PASS -> DMESG-FAIL (fdo#108656)
igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence:
fi-byt-clapper: PASS -> FAIL (fdo#103191, fdo#107362)
==== Possible fixes ====
igt@i915_selftest@live_sanitycheck:
fi-gdg-551: INCOMPLETE -> PASS
igt@kms_frontbuffer_tracking@basic:
fi-byt-clapper: FAIL (fdo#103167) -> PASS
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362
fdo#108656 https://bugs.freedesktop.org/show_bug.cgi?id=108656
== Participating hosts (53 -> 47) ==
Missing (6): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600
== Build changes ==
* IGT: IGT_4720 -> IGTPW_2075
CI_DRM_5159: af98442486c4eeed23ed036dfa2b556def4203bd @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2075: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2075/
IGT_4720: c27aaca295d3ca2a38521e571c012449371e4bb5 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Testlist changes ==
+igt@kms_rotation_crc@multiplane-rotation
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom
+igt@kms_rotation_crc@multiplane-rotation-cropping-top
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2075/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_rotation_crc: Add multi plane tests. (rev4)
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
` (12 preceding siblings ...)
2018-11-19 15:01 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev4) Patchwork
@ 2018-11-19 18:55 ` Patchwork
2018-11-30 14:58 ` [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_rotation_crc: Add multi plane tests. (rev5) Patchwork
` (4 subsequent siblings)
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-11-19 18:55 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests. (rev4)
URL : https://patchwork.freedesktop.org/series/51452/
State : success
== Summary ==
= CI Bug Log - changes from IGT_4720_full -> IGTPW_2075_full =
== Summary - WARNING ==
Minor unknown changes coming with IGTPW_2075_full need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_2075_full, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/4/mbox/
== Possible new issues ==
Here are the unknown changes that may have been introduced in IGTPW_2075_full:
=== IGT changes ===
==== Warnings ====
igt@pm_rc6_residency@rc6-accuracy:
shard-kbl: SKIP -> PASS
== Known issues ==
Here are the changes found in IGTPW_2075_full that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@kms_atomic_transition@plane-all-modeset-transition-fencing:
shard-apl: PASS -> INCOMPLETE (fdo#103927)
igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-b:
shard-snb: NOTRUN -> DMESG-WARN (fdo#107956)
igt@kms_ccs@pipe-b-crc-sprite-planes-basic:
shard-glk: PASS -> FAIL (fdo#108145)
shard-kbl: PASS -> FAIL (fdo#107725, fdo#108145)
igt@kms_cursor_crc@cursor-256x256-random:
shard-glk: PASS -> FAIL (fdo#103232) +5
shard-apl: PASS -> FAIL (fdo#103232) +5
igt@kms_cursor_crc@cursor-64x21-onscreen:
shard-kbl: PASS -> FAIL (fdo#103232) +4
igt@kms_cursor_crc@cursor-64x64-offscreen:
shard-snb: PASS -> INCOMPLETE (fdo#105411)
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move:
shard-kbl: PASS -> FAIL (fdo#103167)
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
shard-apl: PASS -> FAIL (fdo#103167) +2
igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff:
shard-glk: PASS -> FAIL (fdo#103167) +3
igt@kms_plane@plane-position-covered-pipe-c-planes:
shard-apl: PASS -> FAIL (fdo#103166) +2
igt@kms_plane_alpha_blend@pipe-b-alpha-7efc:
shard-kbl: NOTRUN -> FAIL (fdo#108590, fdo#108145)
igt@kms_plane_alpha_blend@pipe-c-alpha-transparant-fb:
shard-kbl: NOTRUN -> FAIL (fdo#108145)
igt@kms_plane_multiple@atomic-pipe-b-tiling-y:
shard-glk: PASS -> FAIL (fdo#103166) +2
shard-kbl: PASS -> FAIL (fdo#103166) +1
igt@kms_sysfs_edid_timing:
shard-kbl: NOTRUN -> FAIL (fdo#100047)
==== Possible fixes ====
igt@gem_eio@in-flight-1us:
shard-glk: FAIL (fdo#107799) -> PASS +1
igt@gem_eio@unwedge-stress:
shard-glk: FAIL -> PASS
igt@gem_ppgtt@blt-vs-render-ctx0:
shard-kbl: INCOMPLETE (fdo#106023, fdo#106887, fdo#103665) -> PASS
igt@kms_chv_cursor_fail@pipe-c-128x128-bottom-edge:
shard-glk: DMESG-WARN (fdo#105763, fdo#106538) -> PASS +1
igt@kms_cursor_crc@cursor-256x256-onscreen:
shard-glk: FAIL (fdo#103232) -> PASS +2
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt:
shard-apl: FAIL (fdo#103167) -> PASS +2
shard-kbl: FAIL (fdo#103167) -> PASS +1
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt:
shard-glk: FAIL (fdo#103167) -> PASS +2
igt@kms_plane@plane-position-covered-pipe-a-planes:
shard-glk: FAIL (fdo#103166) -> PASS +2
igt@kms_plane_multiple@atomic-pipe-b-tiling-yf:
shard-apl: FAIL (fdo#103166) -> PASS
igt@kms_setmode@basic:
shard-kbl: FAIL (fdo#99912) -> PASS
igt@perf@blocking:
shard-hsw: FAIL (fdo#102252) -> PASS
==== Warnings ====
igt@i915_suspend@shrink:
shard-kbl: DMESG-WARN (fdo#108784) -> INCOMPLETE (fdo#106886, fdo#103665)
fdo#100047 https://bugs.freedesktop.org/show_bug.cgi?id=100047
fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252
fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#103232 https://bugs.freedesktop.org/show_bug.cgi?id=103232
fdo#103665 https://bugs.freedesktop.org/show_bug.cgi?id=103665
fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
fdo#105763 https://bugs.freedesktop.org/show_bug.cgi?id=105763
fdo#106023 https://bugs.freedesktop.org/show_bug.cgi?id=106023
fdo#106538 https://bugs.freedesktop.org/show_bug.cgi?id=106538
fdo#106886 https://bugs.freedesktop.org/show_bug.cgi?id=106886
fdo#106887 https://bugs.freedesktop.org/show_bug.cgi?id=106887
fdo#107725 https://bugs.freedesktop.org/show_bug.cgi?id=107725
fdo#107799 https://bugs.freedesktop.org/show_bug.cgi?id=107799
fdo#107956 https://bugs.freedesktop.org/show_bug.cgi?id=107956
fdo#108145 https://bugs.freedesktop.org/show_bug.cgi?id=108145
fdo#108590 https://bugs.freedesktop.org/show_bug.cgi?id=108590
fdo#108784 https://bugs.freedesktop.org/show_bug.cgi?id=108784
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
== Participating hosts (7 -> 5) ==
Missing (2): shard-skl shard-iclb
== Build changes ==
* IGT: IGT_4720 -> IGTPW_2075
CI_DRM_5159: af98442486c4eeed23ed036dfa2b556def4203bd @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2075: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2075/
IGT_4720: c27aaca295d3ca2a38521e571c012449371e4bb5 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2075/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests.
2018-11-19 11:59 ` Juha-Pekka Heikkila
@ 2018-11-22 7:04 ` Nautiyal, Ankit K
2018-11-29 21:29 ` Juha-Pekka Heikkilä
2018-11-30 14:08 ` Juha-Pekka Heikkila
1 sibling, 1 reply; 28+ messages in thread
From: Nautiyal, Ankit K @ 2018-11-22 7:04 UTC (permalink / raw)
To: Juha-Pekka Heikkila, igt-dev
Hi Juha-Pekka,
Thanks for considering the earlier suggestions. The solution looks
pretty good, nicely avoids hard-coding of fixed width and height and
making it dependent on the resolution.
I agree with the test as a whole. However I think it requires a slight
change in case of 90/270 rotation for determining the x,y for right and
bottom rectangles.
The suggested change can avoid cropped rectangles, for few resolutions.
Also minute styling issues in a couple of places.
Please find my suggestions inline:
On 11/19/2018 5:29 PM, Juha-Pekka Heikkila wrote:
> Add three new tests which try primary and sprite planes
> next to each other with different plane formats, rotations
> and tiling modes.
>
> multiplane-rotation subtest run test through with both planes
> fully visible.
>
> multiplane-rotation-cropping-top will crop primary plane to
> left/top corner and sprite plane to right/top corner while running
> rotation tests.
>
> multiplane-rotation-cropping-bottom will crop primary plane to
> left/bottom corner and sprite plane to right/bottom corner while
> running rotation tests.
>
> v2 (Nautiyal, Ankit K): Use rectangular figures instead of
> square figures and fix associated code to perform correctly.
> Adjust plane positions according to screen size to avoid
> putting planes outside screen.
>
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
> tests/kms_rotation_crc.c | 246 +++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 246 insertions(+)
>
> diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
> index 366c254..32814fe 100644
> --- a/tests/kms_rotation_crc.c
> +++ b/tests/kms_rotation_crc.c
> @@ -26,6 +26,25 @@
> #include <math.h>
>
> #define MAX_FENCES 32
> +#define MAXMULTIPLANESAMOUNT 2
> +
> +struct p_struct {
> + igt_plane_t *plane;
> + struct igt_fb fb;
> +};
> +
> +enum p_pointorigo {
> + p_top = 1 << 0,
> + p_bottom = 1 << 1,
> + p_left = 1 << 2,
> + p_right = 1 << 3
> +};
> +
> +struct p_point{
> + enum p_pointorigo origo;
> + float_t x;
> + float_t y;
> +};
>
> typedef struct {
> int gfx_fd;
> @@ -43,6 +62,9 @@ typedef struct {
> uint32_t override_fmt;
> uint64_t override_tiling;
> int devid;
> +
> + struct p_struct *multiplaneoldview;
> + struct p_point planepos[MAXMULTIPLANESAMOUNT];
> } data_t;
>
> typedef struct {
> @@ -395,6 +417,194 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
> }
> }
>
> +typedef struct {
> + int32_t x1, y1;
> + uint64_t width, height, tiling, planetype, format;
> + igt_rotation_t rotation_sw, rotation_hw;
> +} planeinfos;
> +
> +static void get_multiplane_crc(data_t *data, igt_output_t *output,
> + igt_crc_t *crc_output, planeinfos* planeinfo,
Space before '*'
> + int numplanes)
> +{
> + uint32_t w, h;
> + igt_display_t *display = &data->display;
> + struct p_struct *planes, *oldplanes;
> + int c, ret;
> +
> + oldplanes = data->multiplaneoldview;
> + planes = malloc(sizeof(*planes)*numplanes);
space around multiplication '*'
> +
> + for (c = 0; c < numplanes; c++) {
> + planes[c].plane = igt_output_get_plane_type(output,
> + planeinfo[c].planetype);
> +
> + w = planeinfo[c].width;
> + h = planeinfo[c].height;
> +
> + if (planeinfo[c].rotation_sw & (IGT_ROTATION_90 | IGT_ROTATION_270))
> + igt_swap(w, h);
> +
There can be a minor problem of cropping for rectangles right side of
screen, in case of some squarish resolutions.
We know for our multi-plane rotation test for Top Right rectangle:
width = 0.2 hdisplay
height = 0.4 vdisplay
x1 = hdisplay - 0.2hdisplay - 0.1hdisplay (margin)= 0.7hdisplay
y1 = vdisplay - 0.4vdisplay - 0.1vdisplay (margin) = 0.5vdisplay
After rotation 90/270 width and height gets swapped.
Since x1 = 0.7 hdisplay, so maximum width of top-right rectangle without
cropping = 0.3hdisplay.
So if the actual rectangle width after rotation of 90/270 is more than
the maximum available width, we'll get cropped rectangle.
Now due to swap, the width of the rectangle after rotation = 0.4vdisplay.
We will always get cropped rectangle if:
0.4 vdisplay > 0.3hdisplay.
Or in other words we'll get cropped rectangle if hdisplay/vdisplay < 4/3.
Now I am not sure whether we should even think about those resolutions
which have hdisplay:vdisplay < 4:3
But to name a few 1280x1024, 720x576 resolution will get cropped rectangle.
The problem can be solved, if we change the x1 and y1 in case of
rotation 90/270 before swapping.
if (planeinfo[c].rotation_sw & (IGT_ROTATION_90 | IGT_ROTATION_270)) {
x1 = x1 + w - h;
y1 = y1 + h - w;
igt_swap(w, h);
}
so x1 will become 0.7 hdisplay + 0.2hdisplay - 0.4 vdisplay = 0.9
hdisplay + 0.4 vdisplay [ a border/margin of 0.1 hdisplay from right side]
and y1 will become 0.5 vdisplay +0.4 vdisplay - 0.2hdisplay = 0.9
vdisplay + 0.2 hdisplay [a border/margin of 0.1 vdisplay from bottom ]
> + igt_create_fb(data->gfx_fd, w, h, planeinfo[c].format,
> + planeinfo[c].tiling, &planes[c].fb);
> +
> + paint_squares(data, planeinfo[c].rotation_sw, &planes[c].fb, 1.0f);
> + igt_plane_set_fb(planes[c].plane, &planes[c].fb);
> +
> + if (planeinfo[c].rotation_hw & (IGT_ROTATION_90 | IGT_ROTATION_270))
> + igt_plane_set_size(planes[c].plane, h, w);
> +
> + igt_plane_set_position(planes[c].plane, planeinfo[c].x1, planeinfo[c].y1);
> + igt_plane_set_rotation(planes[c].plane, planeinfo[c].rotation_hw);
> + }
> +
> + ret = igt_display_try_commit2(display, COMMIT_ATOMIC);
> + igt_assert_eq(ret, 0);
> +
> + igt_pipe_crc_get_current(data->gfx_fd, data->pipe_crc, crc_output);
> +
> + for (c = 0; c < numplanes && oldplanes; c++)
> + igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
> +
> + free(oldplanes);
> + data->multiplaneoldview = (void*)planes;
> +}
> +
> +static void pointlocation(data_t *data, planeinfos* p, drmModeModeInfo *mode,
planeinfos *p
> + int c)
> +{
> + p[c].x1 = (int32_t)(data->planepos[c].x*mode->hdisplay)
> + +((data->planepos[c].origo & p_right) ? mode->hdisplay : 0);
> + p[c].y1 = (int32_t)(data->planepos[c].y*mode->vdisplay)
> + +((data->planepos[c].origo & p_bottom) ? mode->vdisplay : 0);
> +}
> +
Space around '*'
> +/*
> + * Here is pipe parameter which is now used only for first pipe.
> + * It is left here if this test ever was wanted to be run on
> + * different pipes.
> + */
> +static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
> +{
> + igt_display_t *display = &data->display;
> + igt_output_t *output;
> + igt_crc_t retcrc_sw, retcrc_hw;
> + planeinfos p[2];
> + int c;
> + struct p_struct *oldplanes;
> + drmModeModeInfo *mode;
> +
> + const static struct {
> + igt_rotation_t rotation;
> + float_t width;
> + float_t height;
> + uint64_t tiling;
> + } planeconfigs[] = {
> + {IGT_ROTATION_0, .2f, .4f, LOCAL_DRM_FORMAT_MOD_NONE },
> + {IGT_ROTATION_0, .2f, .4f, LOCAL_I915_FORMAT_MOD_X_TILED },
> + {IGT_ROTATION_0, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
> + {IGT_ROTATION_0, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
> + {IGT_ROTATION_90, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
> + {IGT_ROTATION_90, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
> + {IGT_ROTATION_180, .2f, .4f, LOCAL_DRM_FORMAT_MOD_NONE },
> + {IGT_ROTATION_180, .2f, .4f, LOCAL_I915_FORMAT_MOD_X_TILED },
> + {IGT_ROTATION_180, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
> + {IGT_ROTATION_180, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
> + {IGT_ROTATION_270, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
> + {IGT_ROTATION_270, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
> + };
> +
> + /*
> + * These are those modes which are tested. For testing feel interesting
> + * case with tiling are 2 byte wide and 4 byte wide.
> + *
> + * TODO:
> + * Built support for NV12 here.
> + */
> + const static uint32_t formatlist[] = {DRM_FORMAT_RGB565,
> + DRM_FORMAT_XRGB8888};
> +
> + for_each_valid_output_on_pipe(display, pipe, output) {
> + int i, j, k, l;
> + igt_output_set_pipe(output, pipe);
> + mode = igt_output_get_mode(output);
> + igt_display_require_output(display);
> + igt_display_commit2(display, COMMIT_ATOMIC);
> +
> + data->pipe_crc = igt_pipe_crc_new(data->gfx_fd, pipe,
> + INTEL_PIPE_CRC_SOURCE_AUTO);
> + igt_pipe_crc_start(data->pipe_crc);
> +
> + for (i = 0; i < ARRAY_SIZE(planeconfigs); i++) {
> + p[0].planetype = DRM_PLANE_TYPE_PRIMARY;
> + p[0].width = (uint64_t)(planeconfigs[i].width*mode->hdisplay);
> + p[0].height = (uint64_t)(planeconfigs[i].height*mode->vdisplay);
Space around '*'
> + p[0].tiling = planeconfigs[i].tiling;
> + pointlocation(data, (planeinfos*)&p, mode, 0);
Space before '*'
> +
> + for (k = 0; k < ARRAY_SIZE(formatlist); k++) {
> + p[0].format = formatlist[k];
> +
> + for (j = 0; j < ARRAY_SIZE(planeconfigs); j++) {
> + p[1].planetype = DRM_PLANE_TYPE_OVERLAY;
> + p[1].width = (uint64_t)(planeconfigs[j].width*mode->hdisplay);
> + p[1].height = (uint64_t)(planeconfigs[j].height*mode->vdisplay);
space around '*'
> + p[1].tiling = planeconfigs[j].tiling;
> + pointlocation(data, (planeinfos*)&p,
> + mode, 1);
> +
Space before '*'
> + for (l = 0; l < ARRAY_SIZE(formatlist); l++) {
> + p[1].format = formatlist[l];
> +
> + /*
> + * RGB565 90/270 degrees rotation is supported
> + * from gen11 onwards.
> + */
> + if (p[0].format == DRM_FORMAT_RGB565 &&
> + (planeconfigs[i].rotation & (IGT_ROTATION_90 | IGT_ROTATION_270))
> + && intel_gen(data->devid) < 11)
> + continue;
> +
> + if (p[1].format == DRM_FORMAT_RGB565 &&
> + (planeconfigs[j].rotation & (IGT_ROTATION_90 | IGT_ROTATION_270))
> + && intel_gen(data->devid) < 11)
> + continue;
> +
> + p[0].rotation_sw = planeconfigs[i].rotation;
> + p[0].rotation_hw = IGT_ROTATION_0;
> + p[1].rotation_sw = planeconfigs[j].rotation;
> + p[1].rotation_hw = IGT_ROTATION_0;
> + get_multiplane_crc(data, output, &retcrc_sw,
> + (planeinfos*)&p, MAXMULTIPLANESAMOUNT);
Space before '*'
> +
> + igt_swap(p[0].rotation_sw, p[0].rotation_hw);
> + igt_swap(p[1].rotation_sw, p[1].rotation_hw);
> + get_multiplane_crc(data, output, &retcrc_hw,
> + (planeinfos*)&p, MAXMULTIPLANESAMOUNT);
> +
Space before '*'
> + igt_assert_crc_equal(&retcrc_sw, &retcrc_hw);
> + }
> + }
> + }
> + }
> + igt_pipe_crc_stop(data->pipe_crc);
> + igt_pipe_crc_free(data->pipe_crc);
> + igt_output_set_pipe(output, PIPE_ANY);
> + }
> +
> + /*
> + * Old fbs are deleted only after new ones are set on planes.
> + * This is done to speed up the test
> + */
> + oldplanes = data->multiplaneoldview;
> + for (c = 0; c < MAXMULTIPLANESAMOUNT && oldplanes; c++)
> + igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
> +
> + free(oldplanes);
> + data->multiplaneoldview = NULL;
> + data->pipe_crc = NULL;
> +}
> +
> static void test_plane_rotation_exhaust_fences(data_t *data,
> enum pipe pipe,
> igt_output_t *output,
> @@ -595,6 +805,42 @@ igt_main
> }
> }
>
> + igt_subtest_f("multiplane-rotation") {
> + igt_require(gen >= 9);
> + cleanup_crtc(&data);
> + data.planepos[0].origo = p_top | p_left;
> + data.planepos[0].x = .1f;
> + data.planepos[0].y = .1f;
> + data.planepos[1].origo = p_top | p_right;
> + data.planepos[1].x = -.3f;
> + data.planepos[1].y = .1f;
> + test_multi_plane_rotation(&data, 0);
> + }
> +
> + igt_subtest_f("multiplane-rotation-cropping-top") {
> + igt_require(gen >= 9);
> + cleanup_crtc(&data);
> + data.planepos[0].origo = p_top | p_left;
> + data.planepos[0].x = -.05f;
> + data.planepos[0].y = -.15f;
> + data.planepos[1].origo = p_top | p_right;
> + data.planepos[1].x = -.15f;
> + data.planepos[1].y = -.15f;
> + test_multi_plane_rotation(&data, 0);
> + }
> +
> + igt_subtest_f("multiplane-rotation-cropping-bottom") {
> + igt_require(gen >= 9);
> + cleanup_crtc(&data);
> + data.planepos[0].origo = p_bottom | p_left;
> + data.planepos[0].x = -.05f;
> + data.planepos[0].y = -.20f;
> + data.planepos[1].origo = p_bottom | p_right;
> + data.planepos[1].x = -.15f;
> + data.planepos[1].y = -.20f;
> + test_multi_plane_rotation(&data, 0);
> + }
> +
> /*
> * exhaust-fences should be last test, if it fails we may OOM in
> * the following subtests otherwise.
Sorry for lengthy details for a minor corner case, couldnt make it more
concise, and clear at the same time.
Regards,
Ankit
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests.
2018-11-22 7:04 ` Nautiyal, Ankit K
@ 2018-11-29 21:29 ` Juha-Pekka Heikkilä
0 siblings, 0 replies; 28+ messages in thread
From: Juha-Pekka Heikkilä @ 2018-11-29 21:29 UTC (permalink / raw)
To: Nautiyal, Ankit K, igt-dev
Nautiyal, Ankit K kirjoitti 22.11.2018 klo 9.04:
> Hi Juha-Pekka,
>
> Thanks for considering the earlier suggestions. The solution looks
> pretty good, nicely avoids hard-coding of fixed width and height and
> making it dependent on the resolution.
>
> I agree with the test as a whole. However I think it requires a slight
> change in case of 90/270 rotation for determining the x,y for right and
> bottom rectangles.
>
> The suggested change can avoid cropped rectangles, for few resolutions.
>
> Also minute styling issues in a couple of places.
>
> Please find my suggestions inline:
>
>
> On 11/19/2018 5:29 PM, Juha-Pekka Heikkila wrote:
>> Add three new tests which try primary and sprite planes
>> next to each other with different plane formats, rotations
>> and tiling modes.
>>
>> multiplane-rotation subtest run test through with both planes
>> fully visible.
>>
>> multiplane-rotation-cropping-top will crop primary plane to
>> left/top corner and sprite plane to right/top corner while running
>> rotation tests.
>>
>> multiplane-rotation-cropping-bottom will crop primary plane to
>> left/bottom corner and sprite plane to right/bottom corner while
>> running rotation tests.
>>
>> v2 (Nautiyal, Ankit K): Use rectangular figures instead of
>> square figures and fix associated code to perform correctly.
>> Adjust plane positions according to screen size to avoid
>> putting planes outside screen.
>>
>> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
>> ---
>> tests/kms_rotation_crc.c | 246
>> +++++++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 246 insertions(+)
>>
>> diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
>> index 366c254..32814fe 100644
>> --- a/tests/kms_rotation_crc.c
>> +++ b/tests/kms_rotation_crc.c
>> @@ -26,6 +26,25 @@
>> #include <math.h>
>> #define MAX_FENCES 32
>> +#define MAXMULTIPLANESAMOUNT 2
>> +
>> +struct p_struct {
>> + igt_plane_t *plane;
>> + struct igt_fb fb;
>> +};
>> +
>> +enum p_pointorigo {
>> + p_top = 1 << 0,
>> + p_bottom = 1 << 1,
>> + p_left = 1 << 2,
>> + p_right = 1 << 3
>> +};
>> +
>> +struct p_point{
>> + enum p_pointorigo origo;
>> + float_t x;
>> + float_t y;
>> +};
>> typedef struct {
>> int gfx_fd;
>> @@ -43,6 +62,9 @@ typedef struct {
>> uint32_t override_fmt;
>> uint64_t override_tiling;
>> int devid;
>> +
>> + struct p_struct *multiplaneoldview;
>> + struct p_point planepos[MAXMULTIPLANESAMOUNT];
>> } data_t;
>> typedef struct {
>> @@ -395,6 +417,194 @@ static void test_plane_rotation(data_t *data,
>> int plane_type, bool test_bad_form
>> }
>> }
>> +typedef struct {
>> + int32_t x1, y1;
>> + uint64_t width, height, tiling, planetype, format;
>> + igt_rotation_t rotation_sw, rotation_hw;
>> +} planeinfos;
>> +
>> +static void get_multiplane_crc(data_t *data, igt_output_t *output,
>> + igt_crc_t *crc_output, planeinfos* planeinfo,
>
> Space before '*'
>
>> + int numplanes)
>> +{
>> + uint32_t w, h;
>> + igt_display_t *display = &data->display;
>> + struct p_struct *planes, *oldplanes;
>> + int c, ret;
>> +
>> + oldplanes = data->multiplaneoldview;
>> + planes = malloc(sizeof(*planes)*numplanes);
>
> space around multiplication '*'
>> +
>> + for (c = 0; c < numplanes; c++) {
>> + planes[c].plane = igt_output_get_plane_type(output,
>> + planeinfo[c].planetype);
>> +
>> + w = planeinfo[c].width;
>> + h = planeinfo[c].height;
>> +
>> + if (planeinfo[c].rotation_sw & (IGT_ROTATION_90 |
>> IGT_ROTATION_270))
>> + igt_swap(w, h);
>> +
>
> There can be a minor problem of cropping for rectangles right side of
> screen, in case of some squarish resolutions.
> We know for our multi-plane rotation test for Top Right rectangle:
> width = 0.2 hdisplay
> height = 0.4 vdisplay
> x1 = hdisplay - 0.2hdisplay - 0.1hdisplay (margin)= 0.7hdisplay
> y1 = vdisplay - 0.4vdisplay - 0.1vdisplay (margin) = 0.5vdisplay
>
>
> After rotation 90/270 width and height gets swapped.
>
> Since x1 = 0.7 hdisplay, so maximum width of top-right rectangle without
> cropping = 0.3hdisplay.
> So if the actual rectangle width after rotation of 90/270 is more than
> the maximum available width, we'll get cropped rectangle.
>
> Now due to swap, the width of the rectangle after rotation = 0.4vdisplay.
> We will always get cropped rectangle if:
> 0.4 vdisplay > 0.3hdisplay.
>
> Or in other words we'll get cropped rectangle if hdisplay/vdisplay < 4/3.
> Now I am not sure whether we should even think about those resolutions
> which have hdisplay:vdisplay < 4:3
> But to name a few 1280x1024, 720x576 resolution will get cropped
> rectangle.
I was wondering if you have monitor which actually have such resolutions
as those you mentioned? I was looking but didn't find any such. If you
are thinking about rotating monitor it will not change the scanning
direction and the resolution flip is done via rotation -- that feature
which is under test here. I don't know if it's with modern day monitors
still but earlier scanning order of display was dictated by the lowest
of x-res vs y-res because it caused less components.
I anyway moved those planes a bit but so far I'm sticking to 4/3 being
'worst case', I'll probably tomorrow send new version of the patch.
>
> The problem can be solved, if we change the x1 and y1 in case of
> rotation 90/270 before swapping.
>
> if (planeinfo[c].rotation_sw & (IGT_ROTATION_90 | IGT_ROTATION_270)) {
>
> x1 = x1 + w - h;
> y1 = y1 + h - w;
>
> igt_swap(w, h);
> }
> so x1 will become 0.7 hdisplay + 0.2hdisplay - 0.4 vdisplay = 0.9
> hdisplay + 0.4 vdisplay [ a border/margin of 0.1 hdisplay from right side]
> and y1 will become 0.5 vdisplay +0.4 vdisplay - 0.2hdisplay = 0.9
> vdisplay + 0.2 hdisplay [a border/margin of 0.1 vdisplay from bottom ]
>
>> + igt_create_fb(data->gfx_fd, w, h, planeinfo[c].format,
>> + planeinfo[c].tiling, &planes[c].fb);
>> +
>> + paint_squares(data, planeinfo[c].rotation_sw, &planes[c].fb,
>> 1.0f);
>> + igt_plane_set_fb(planes[c].plane, &planes[c].fb);
>> +
>> + if (planeinfo[c].rotation_hw & (IGT_ROTATION_90 |
>> IGT_ROTATION_270))
>> + igt_plane_set_size(planes[c].plane, h, w);
>> +
>> + igt_plane_set_position(planes[c].plane, planeinfo[c].x1,
>> planeinfo[c].y1);
>> + igt_plane_set_rotation(planes[c].plane,
>> planeinfo[c].rotation_hw);
>> + }
>> +
>> + ret = igt_display_try_commit2(display, COMMIT_ATOMIC);
>> + igt_assert_eq(ret, 0);
>> +
>> + igt_pipe_crc_get_current(data->gfx_fd, data->pipe_crc, crc_output);
>> +
>> + for (c = 0; c < numplanes && oldplanes; c++)
>> + igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
>> +
>> + free(oldplanes);
>> + data->multiplaneoldview = (void*)planes;
>> +}
>> +
>> +static void pointlocation(data_t *data, planeinfos* p,
>> drmModeModeInfo *mode,
>
> planeinfos *p
>
>> + int c)
>> +{
>> + p[c].x1 = (int32_t)(data->planepos[c].x*mode->hdisplay)
>> + +((data->planepos[c].origo & p_right) ? mode->hdisplay : 0);
>> + p[c].y1 = (int32_t)(data->planepos[c].y*mode->vdisplay)
>> + +((data->planepos[c].origo & p_bottom) ? mode->vdisplay :
>> 0);
>> +}
>> +
>
> Space around '*'
>
>> +/*
>> + * Here is pipe parameter which is now used only for first pipe.
>> + * It is left here if this test ever was wanted to be run on
>> + * different pipes.
>> + */
>> +static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
>> +{
>> + igt_display_t *display = &data->display;
>> + igt_output_t *output;
>> + igt_crc_t retcrc_sw, retcrc_hw;
>> + planeinfos p[2];
>> + int c;
>> + struct p_struct *oldplanes;
>> + drmModeModeInfo *mode;
>> +
>> + const static struct {
>> + igt_rotation_t rotation;
>> + float_t width;
>> + float_t height;
>> + uint64_t tiling;
>> + } planeconfigs[] = {
>> + {IGT_ROTATION_0, .2f, .4f, LOCAL_DRM_FORMAT_MOD_NONE },
>> + {IGT_ROTATION_0, .2f, .4f, LOCAL_I915_FORMAT_MOD_X_TILED },
>> + {IGT_ROTATION_0, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
>> + {IGT_ROTATION_0, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
>> + {IGT_ROTATION_90, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
>> + {IGT_ROTATION_90, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
>> + {IGT_ROTATION_180, .2f, .4f, LOCAL_DRM_FORMAT_MOD_NONE },
>> + {IGT_ROTATION_180, .2f, .4f, LOCAL_I915_FORMAT_MOD_X_TILED },
>> + {IGT_ROTATION_180, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
>> + {IGT_ROTATION_180, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
>> + {IGT_ROTATION_270, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
>> + {IGT_ROTATION_270, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
>> + };
>> +
>> + /*
>> + * These are those modes which are tested. For testing feel
>> interesting
>> + * case with tiling are 2 byte wide and 4 byte wide.
>> + *
>> + * TODO:
>> + * Built support for NV12 here.
>> + */
>> + const static uint32_t formatlist[] = {DRM_FORMAT_RGB565,
>> + DRM_FORMAT_XRGB8888};
>> +
>> + for_each_valid_output_on_pipe(display, pipe, output) {
>> + int i, j, k, l;
>> + igt_output_set_pipe(output, pipe);
>> + mode = igt_output_get_mode(output);
>> + igt_display_require_output(display);
>> + igt_display_commit2(display, COMMIT_ATOMIC);
>> +
>> + data->pipe_crc = igt_pipe_crc_new(data->gfx_fd, pipe,
>> + INTEL_PIPE_CRC_SOURCE_AUTO);
>> + igt_pipe_crc_start(data->pipe_crc);
>> +
>> + for (i = 0; i < ARRAY_SIZE(planeconfigs); i++) {
>> + p[0].planetype = DRM_PLANE_TYPE_PRIMARY;
>> + p[0].width =
>> (uint64_t)(planeconfigs[i].width*mode->hdisplay);
>> + p[0].height =
>> (uint64_t)(planeconfigs[i].height*mode->vdisplay);
>
> Space around '*'
>
>> + p[0].tiling = planeconfigs[i].tiling;
>> + pointlocation(data, (planeinfos*)&p, mode, 0);
>
> Space before '*'
>
>> +
>> + for (k = 0; k < ARRAY_SIZE(formatlist); k++) {
>> + p[0].format = formatlist[k];
>> +
>> + for (j = 0; j < ARRAY_SIZE(planeconfigs); j++) {
>> + p[1].planetype = DRM_PLANE_TYPE_OVERLAY;
>> + p[1].width =
>> (uint64_t)(planeconfigs[j].width*mode->hdisplay);
>> + p[1].height =
>> (uint64_t)(planeconfigs[j].height*mode->vdisplay);
>
> space around '*'
>
>> + p[1].tiling = planeconfigs[j].tiling;
>> + pointlocation(data, (planeinfos*)&p,
>> + mode, 1);
>> +
>
> Space before '*'
>> + for (l = 0; l < ARRAY_SIZE(formatlist); l++) {
>> + p[1].format = formatlist[l];
>> +
>> + /*
>> + * RGB565 90/270 degrees rotation is supported
>> + * from gen11 onwards.
>> + */
>> + if (p[0].format == DRM_FORMAT_RGB565 &&
>> + (planeconfigs[i].rotation &
>> (IGT_ROTATION_90 | IGT_ROTATION_270))
>> + && intel_gen(data->devid) < 11)
>> + continue;
>> +
>> + if (p[1].format == DRM_FORMAT_RGB565 &&
>> + (planeconfigs[j].rotation &
>> (IGT_ROTATION_90 | IGT_ROTATION_270))
>> + && intel_gen(data->devid) < 11)
>> + continue;
>> +
>> + p[0].rotation_sw = planeconfigs[i].rotation;
>> + p[0].rotation_hw = IGT_ROTATION_0;
>> + p[1].rotation_sw = planeconfigs[j].rotation;
>> + p[1].rotation_hw = IGT_ROTATION_0;
>> + get_multiplane_crc(data, output, &retcrc_sw,
>> + (planeinfos*)&p,
>> MAXMULTIPLANESAMOUNT);
>
> Space before '*'
>> +
>> + igt_swap(p[0].rotation_sw, p[0].rotation_hw);
>> + igt_swap(p[1].rotation_sw, p[1].rotation_hw);
>> + get_multiplane_crc(data, output, &retcrc_hw,
>> + (planeinfos*)&p,
>> MAXMULTIPLANESAMOUNT);
>> +
>
> Space before '*'
>
>> + igt_assert_crc_equal(&retcrc_sw, &retcrc_hw);
>> + }
>> + }
>> + }
>> + }
>> + igt_pipe_crc_stop(data->pipe_crc);
>> + igt_pipe_crc_free(data->pipe_crc);
>> + igt_output_set_pipe(output, PIPE_ANY);
>> + }
>> +
>> + /*
>> + * Old fbs are deleted only after new ones are set on planes.
>> + * This is done to speed up the test
>> + */
>> + oldplanes = data->multiplaneoldview;
>> + for (c = 0; c < MAXMULTIPLANESAMOUNT && oldplanes; c++)
>> + igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
>> +
>> + free(oldplanes);
>> + data->multiplaneoldview = NULL;
>> + data->pipe_crc = NULL;
>> +}
>> +
>> static void test_plane_rotation_exhaust_fences(data_t *data,
>> enum pipe pipe,
>> igt_output_t *output,
>> @@ -595,6 +805,42 @@ igt_main
>> }
>> }
>> + igt_subtest_f("multiplane-rotation") {
>> + igt_require(gen >= 9);
>> + cleanup_crtc(&data);
>> + data.planepos[0].origo = p_top | p_left;
>> + data.planepos[0].x = .1f;
>> + data.planepos[0].y = .1f;
>> + data.planepos[1].origo = p_top | p_right;
>> + data.planepos[1].x = -.3f;
>> + data.planepos[1].y = .1f;
>> + test_multi_plane_rotation(&data, 0);
>> + }
>> +
>> + igt_subtest_f("multiplane-rotation-cropping-top") {
>> + igt_require(gen >= 9);
>> + cleanup_crtc(&data);
>> + data.planepos[0].origo = p_top | p_left;
>> + data.planepos[0].x = -.05f;
>> + data.planepos[0].y = -.15f;
>> + data.planepos[1].origo = p_top | p_right;
>> + data.planepos[1].x = -.15f;
>> + data.planepos[1].y = -.15f;
>> + test_multi_plane_rotation(&data, 0);
>> + }
>> +
>> + igt_subtest_f("multiplane-rotation-cropping-bottom") {
>> + igt_require(gen >= 9);
>> + cleanup_crtc(&data);
>> + data.planepos[0].origo = p_bottom | p_left;
>> + data.planepos[0].x = -.05f;
>> + data.planepos[0].y = -.20f;
>> + data.planepos[1].origo = p_bottom | p_right;
>> + data.planepos[1].x = -.15f;
>> + data.planepos[1].y = -.20f;
>> + test_multi_plane_rotation(&data, 0);
>> + }
>> +
>> /*
>> * exhaust-fences should be last test, if it fails we may OOM in
>> * the following subtests otherwise.
>
> Sorry for lengthy details for a minor corner case, couldnt make it more
> concise, and clear at the same time.
>
> Regards,
> Ankit
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests
2018-11-19 11:59 ` Juha-Pekka Heikkila
2018-11-22 7:04 ` Nautiyal, Ankit K
@ 2018-11-30 14:08 ` Juha-Pekka Heikkila
2018-12-03 8:55 ` Nautiyal, Ankit K
1 sibling, 1 reply; 28+ messages in thread
From: Juha-Pekka Heikkila @ 2018-11-30 14:08 UTC (permalink / raw)
To: igt-dev
Add three new tests which try primary and sprite planes
next to each other with different plane formats, rotations
and tiling modes.
multiplane-rotation subtest run test through with both planes
fully visible.
multiplane-rotation-cropping-top will crop primary plane to
left/top corner and sprite plane to right/top corner while running
rotation tests.
multiplane-rotation-cropping-bottom will crop primary plane to
left/bottom corner and sprite plane to right/bottom corner while
running rotation tests.
v2 (Nautiyal, Ankit K): Use rectangular figures instead of
square figures and fix associated code to perform correctly.
Adjust plane positions according to screen size to avoid
putting planes outside screen.
v3 (Nautiyal, Ankit K): Minor detail fix.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
tests/kms_rotation_crc.c | 246 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 246 insertions(+)
diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index 366c254..369936f 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -26,6 +26,25 @@
#include <math.h>
#define MAX_FENCES 32
+#define MAXMULTIPLANESAMOUNT 2
+
+struct p_struct {
+ igt_plane_t *plane;
+ struct igt_fb fb;
+};
+
+enum p_pointorigo {
+ p_top = 1 << 0,
+ p_bottom = 1 << 1,
+ p_left = 1 << 2,
+ p_right = 1 << 3
+};
+
+struct p_point{
+ enum p_pointorigo origo;
+ float_t x;
+ float_t y;
+};
typedef struct {
int gfx_fd;
@@ -43,6 +62,9 @@ typedef struct {
uint32_t override_fmt;
uint64_t override_tiling;
int devid;
+
+ struct p_struct *multiplaneoldview;
+ struct p_point planepos[MAXMULTIPLANESAMOUNT];
} data_t;
typedef struct {
@@ -395,6 +417,194 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
}
}
+typedef struct {
+ int32_t x1, y1;
+ uint64_t width, height, tiling, planetype, format;
+ igt_rotation_t rotation_sw, rotation_hw;
+} planeinfos;
+
+static void get_multiplane_crc(data_t *data, igt_output_t *output,
+ igt_crc_t *crc_output, planeinfos *planeinfo,
+ int numplanes)
+{
+ uint32_t w, h;
+ igt_display_t *display = &data->display;
+ struct p_struct *planes, *oldplanes;
+ int c, ret;
+
+ oldplanes = data->multiplaneoldview;
+ planes = malloc(sizeof(*planes) * numplanes);
+
+ for (c = 0; c < numplanes; c++) {
+ planes[c].plane = igt_output_get_plane_type(output,
+ planeinfo[c].planetype);
+
+ w = planeinfo[c].width;
+ h = planeinfo[c].height;
+
+ if (planeinfo[c].rotation_sw & (IGT_ROTATION_90 | IGT_ROTATION_270))
+ igt_swap(w, h);
+
+ igt_create_fb(data->gfx_fd, w, h, planeinfo[c].format,
+ planeinfo[c].tiling, &planes[c].fb);
+
+ paint_squares(data, planeinfo[c].rotation_sw, &planes[c].fb, 1.0f);
+ igt_plane_set_fb(planes[c].plane, &planes[c].fb);
+
+ if (planeinfo[c].rotation_hw & (IGT_ROTATION_90 | IGT_ROTATION_270))
+ igt_plane_set_size(planes[c].plane, h, w);
+
+ igt_plane_set_position(planes[c].plane, planeinfo[c].x1, planeinfo[c].y1);
+ igt_plane_set_rotation(planes[c].plane, planeinfo[c].rotation_hw);
+ }
+
+ ret = igt_display_try_commit2(display, COMMIT_ATOMIC);
+ igt_assert_eq(ret, 0);
+
+ igt_pipe_crc_get_current(data->gfx_fd, data->pipe_crc, crc_output);
+
+ for (c = 0; c < numplanes && oldplanes; c++)
+ igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
+
+ free(oldplanes);
+ data->multiplaneoldview = (void*)planes;
+}
+
+static void pointlocation(data_t *data, planeinfos *p, drmModeModeInfo *mode,
+ int c)
+{
+ p[c].x1 = (int32_t)(data->planepos[c].x * mode->hdisplay)
+ + ((data->planepos[c].origo & p_right) ? mode->hdisplay : 0);
+ p[c].y1 = (int32_t)(data->planepos[c].y * mode->vdisplay)
+ + ((data->planepos[c].origo & p_bottom) ? mode->vdisplay : 0);
+}
+
+/*
+ * Here is pipe parameter which is now used only for first pipe.
+ * It is left here if this test ever was wanted to be run on
+ * different pipes.
+ */
+static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
+{
+ igt_display_t *display = &data->display;
+ igt_output_t *output;
+ igt_crc_t retcrc_sw, retcrc_hw;
+ planeinfos p[2];
+ int c;
+ struct p_struct *oldplanes;
+ drmModeModeInfo *mode;
+
+ const static struct {
+ igt_rotation_t rotation;
+ float_t width;
+ float_t height;
+ uint64_t tiling;
+ } planeconfigs[] = {
+ {IGT_ROTATION_0, .2f, .4f, LOCAL_DRM_FORMAT_MOD_NONE },
+ {IGT_ROTATION_0, .2f, .4f, LOCAL_I915_FORMAT_MOD_X_TILED },
+ {IGT_ROTATION_0, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_0, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ {IGT_ROTATION_90, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_90, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ {IGT_ROTATION_180, .2f, .4f, LOCAL_DRM_FORMAT_MOD_NONE },
+ {IGT_ROTATION_180, .2f, .4f, LOCAL_I915_FORMAT_MOD_X_TILED },
+ {IGT_ROTATION_180, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_180, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ {IGT_ROTATION_270, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
+ {IGT_ROTATION_270, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
+ };
+
+ /*
+ * These are those modes which are tested. For testing feel interesting
+ * case with tiling are 2 byte wide and 4 byte wide.
+ *
+ * TODO:
+ * Built support for NV12 here.
+ */
+ const static uint32_t formatlist[] = {DRM_FORMAT_RGB565,
+ DRM_FORMAT_XRGB8888};
+
+ for_each_valid_output_on_pipe(display, pipe, output) {
+ int i, j, k, l;
+ igt_output_set_pipe(output, pipe);
+ mode = igt_output_get_mode(output);
+ igt_display_require_output(display);
+ igt_display_commit2(display, COMMIT_ATOMIC);
+
+ data->pipe_crc = igt_pipe_crc_new(data->gfx_fd, pipe,
+ INTEL_PIPE_CRC_SOURCE_AUTO);
+ igt_pipe_crc_start(data->pipe_crc);
+
+ for (i = 0; i < ARRAY_SIZE(planeconfigs); i++) {
+ p[0].planetype = DRM_PLANE_TYPE_PRIMARY;
+ p[0].width = (uint64_t)(planeconfigs[i].width * mode->hdisplay);
+ p[0].height = (uint64_t)(planeconfigs[i].height * mode->vdisplay);
+ p[0].tiling = planeconfigs[i].tiling;
+ pointlocation(data, (planeinfos *)&p, mode, 0);
+
+ for (k = 0; k < ARRAY_SIZE(formatlist); k++) {
+ p[0].format = formatlist[k];
+
+ for (j = 0; j < ARRAY_SIZE(planeconfigs); j++) {
+ p[1].planetype = DRM_PLANE_TYPE_OVERLAY;
+ p[1].width = (uint64_t)(planeconfigs[j].width * mode->hdisplay);
+ p[1].height = (uint64_t)(planeconfigs[j].height * mode->vdisplay);
+ p[1].tiling = planeconfigs[j].tiling;
+ pointlocation(data, (planeinfos *)&p,
+ mode, 1);
+
+ for (l = 0; l < ARRAY_SIZE(formatlist); l++) {
+ p[1].format = formatlist[l];
+
+ /*
+ * RGB565 90/270 degrees rotation is supported
+ * from gen11 onwards.
+ */
+ if (p[0].format == DRM_FORMAT_RGB565 &&
+ (planeconfigs[i].rotation & (IGT_ROTATION_90 | IGT_ROTATION_270))
+ && intel_gen(data->devid) < 11)
+ continue;
+
+ if (p[1].format == DRM_FORMAT_RGB565 &&
+ (planeconfigs[j].rotation & (IGT_ROTATION_90 | IGT_ROTATION_270))
+ && intel_gen(data->devid) < 11)
+ continue;
+
+ p[0].rotation_sw = planeconfigs[i].rotation;
+ p[0].rotation_hw = IGT_ROTATION_0;
+ p[1].rotation_sw = planeconfigs[j].rotation;
+ p[1].rotation_hw = IGT_ROTATION_0;
+ get_multiplane_crc(data, output, &retcrc_sw,
+ (planeinfos *)&p, MAXMULTIPLANESAMOUNT);
+
+ igt_swap(p[0].rotation_sw, p[0].rotation_hw);
+ igt_swap(p[1].rotation_sw, p[1].rotation_hw);
+ get_multiplane_crc(data, output, &retcrc_hw,
+ (planeinfos *)&p, MAXMULTIPLANESAMOUNT);
+
+ igt_assert_crc_equal(&retcrc_sw, &retcrc_hw);
+ }
+ }
+ }
+ }
+ igt_pipe_crc_stop(data->pipe_crc);
+ igt_pipe_crc_free(data->pipe_crc);
+ igt_output_set_pipe(output, PIPE_ANY);
+ }
+
+ /*
+ * Old fbs are deleted only after new ones are set on planes.
+ * This is done to speed up the test
+ */
+ oldplanes = data->multiplaneoldview;
+ for (c = 0; c < MAXMULTIPLANESAMOUNT && oldplanes; c++)
+ igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
+
+ free(oldplanes);
+ data->multiplaneoldview = NULL;
+ data->pipe_crc = NULL;
+}
+
static void test_plane_rotation_exhaust_fences(data_t *data,
enum pipe pipe,
igt_output_t *output,
@@ -595,6 +805,42 @@ igt_main
}
}
+ igt_subtest_f("multiplane-rotation") {
+ igt_require(gen >= 9);
+ cleanup_crtc(&data);
+ data.planepos[0].origo = p_top | p_left;
+ data.planepos[0].x = .2f;
+ data.planepos[0].y = .1f;
+ data.planepos[1].origo = p_top | p_right;
+ data.planepos[1].x = -.4f;
+ data.planepos[1].y = .1f;
+ test_multi_plane_rotation(&data, 0);
+ }
+
+ igt_subtest_f("multiplane-rotation-cropping-top") {
+ igt_require(gen >= 9);
+ cleanup_crtc(&data);
+ data.planepos[0].origo = p_top | p_left;
+ data.planepos[0].x = -.05f;
+ data.planepos[0].y = -.15f;
+ data.planepos[1].origo = p_top | p_right;
+ data.planepos[1].x = -.15f;
+ data.planepos[1].y = -.15f;
+ test_multi_plane_rotation(&data, 0);
+ }
+
+ igt_subtest_f("multiplane-rotation-cropping-bottom") {
+ igt_require(gen >= 9);
+ cleanup_crtc(&data);
+ data.planepos[0].origo = p_bottom | p_left;
+ data.planepos[0].x = -.05f;
+ data.planepos[0].y = -.20f;
+ data.planepos[1].origo = p_bottom | p_right;
+ data.planepos[1].x = -.15f;
+ data.planepos[1].y = -.20f;
+ test_multi_plane_rotation(&data, 0);
+ }
+
/*
* exhaust-fences should be last test, if it fails we may OOM in
* the following subtests otherwise.
--
2.7.4
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_rotation_crc: Add multi plane tests. (rev5)
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
` (13 preceding siblings ...)
2018-11-19 18:55 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2018-11-30 14:58 ` Patchwork
2018-11-30 17:30 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev6) Patchwork
` (3 subsequent siblings)
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-11-30 14:58 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests. (rev5)
URL : https://patchwork.freedesktop.org/series/51452/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_5230 -> IGTPW_2109
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with IGTPW_2109 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_2109, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/5/mbox/
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_2109:
### IGT changes ###
#### Possible regressions ####
* igt@kms_flip@basic-flip-vs-dpms:
- {fi-icl-u3}: PASS -> DMESG-WARN
* igt@pm_rpm@module-reload:
- fi-cfl-8109u: PASS -> FAIL
* {igt@runner@aborted}:
- {fi-icl-u3}: NOTRUN -> FAIL
Known issues
------------
Here are the changes found in IGTPW_2109 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_exec_suspend@basic-s4-devices:
- fi-ivb-3520m: PASS -> FAIL [fdo#108880]
* igt@i915_selftest@live_coherency:
- fi-gdg-551: PASS -> DMESG-FAIL [fdo#107164]
* igt@i915_selftest@live_hangcheck:
- fi-cfl-8109u: PASS -> INCOMPLETE [fdo#106070]
* igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence:
- fi-byt-clapper: PASS -> FAIL [fdo#103191] / [fdo#107362]
#### Possible fixes ####
* igt@gem_ctx_create@basic-files:
- fi-kbl-7560u: INCOMPLETE [fdo#103665] -> PASS
* igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
- fi-apl-guc: DMESG-WARN [fdo#108566] -> PASS
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
[fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
[fdo#106070]: https://bugs.freedesktop.org/show_bug.cgi?id=106070
[fdo#107164]: https://bugs.freedesktop.org/show_bug.cgi?id=107164
[fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
[fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
[fdo#108880]: https://bugs.freedesktop.org/show_bug.cgi?id=108880
Participating hosts (50 -> 43)
------------------------------
Missing (7): fi-kbl-soraka fi-cnl-u fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600
Build changes
-------------
* IGT: IGT_4736 -> IGTPW_2109
CI_DRM_5230: b0a2de64f8969163f6e01071d5e05748f18a8bab @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2109: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2109/
IGT_4736: 285ebfb3b7adc56586031afa5150c4e5ad40c229 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Testlist changes ==
+igt@kms_rotation_crc@multiplane-rotation
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom
+igt@kms_rotation_crc@multiplane-rotation-cropping-top
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2109/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev6)
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
` (14 preceding siblings ...)
2018-11-30 14:58 ` [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_rotation_crc: Add multi plane tests. (rev5) Patchwork
@ 2018-11-30 17:30 ` Patchwork
2018-12-01 12:15 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
` (2 subsequent siblings)
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-11-30 17:30 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests. (rev6)
URL : https://patchwork.freedesktop.org/series/51452/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_5235 -> IGTPW_2111
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/6/mbox/
Known issues
------------
Here are the changes found in IGTPW_2111 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_ctx_create@basic-files:
- fi-bsw-n3050: PASS -> INCOMPLETE [fdo#108714]
* igt@i915_selftest@live_coherency:
- fi-gdg-551: PASS -> DMESG-FAIL [fdo#107164]
* igt@i915_selftest@live_hangcheck:
- fi-skl-iommu: PASS -> INCOMPLETE [fdo#108602]
* igt@prime_vgem@basic-fence-flip:
- fi-gdg-551: PASS -> FAIL [fdo#103182]
* {igt@runner@aborted}:
- fi-skl-iommu: NOTRUN -> FAIL [fdo#108602]
#### Possible fixes ####
* igt@gem_ctx_create@basic-files:
- fi-bsw-kefka: FAIL [fdo#108656] -> PASS
* igt@gem_exec_suspend@basic-s3:
- fi-byt-clapper: INCOMPLETE [fdo#102657] -> PASS
* igt@i915_selftest@live_execlists:
- fi-apl-guc: INCOMPLETE [fdo#103927] -> PASS
* igt@i915_selftest@live_hangcheck:
- fi-kbl-7560u: INCOMPLETE [fdo#108044] -> PASS
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#102657]: https://bugs.freedesktop.org/show_bug.cgi?id=102657
[fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#107164]: https://bugs.freedesktop.org/show_bug.cgi?id=107164
[fdo#108044]: https://bugs.freedesktop.org/show_bug.cgi?id=108044
[fdo#108602]: https://bugs.freedesktop.org/show_bug.cgi?id=108602
[fdo#108656]: https://bugs.freedesktop.org/show_bug.cgi?id=108656
[fdo#108714]: https://bugs.freedesktop.org/show_bug.cgi?id=108714
Participating hosts (50 -> 44)
------------------------------
Missing (6): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600
Build changes
-------------
* IGT: IGT_4736 -> IGTPW_2111
CI_DRM_5235: 5e327aec3fa3fc277b40818e06785743cf16b1ad @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2111: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2111/
IGT_4736: 285ebfb3b7adc56586031afa5150c4e5ad40c229 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Testlist changes ==
+igt@kms_rotation_crc@multiplane-rotation
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom
+igt@kms_rotation_crc@multiplane-rotation-cropping-top
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2111/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] ✗ Fi.CI.IGT: failure for tests/kms_rotation_crc: Add multi plane tests. (rev6)
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
` (15 preceding siblings ...)
2018-11-30 17:30 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev6) Patchwork
@ 2018-12-01 12:15 ` Patchwork
2018-12-01 18:41 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev7) Patchwork
2018-12-01 22:51 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-12-01 12:15 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests. (rev6)
URL : https://patchwork.freedesktop.org/series/51452/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_5235_full -> IGTPW_2111_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with IGTPW_2111_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_2111_full, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/6/mbox/
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_2111_full:
### IGT changes ###
#### Possible regressions ####
* igt@gem_busy@extended-semaphore-blt:
- shard-hsw: PASS -> FAIL
* {igt@kms_rotation_crc@multiplane-rotation-cropping-top}:
- shard-kbl: NOTRUN -> DMESG-FAIL
#### Warnings ####
* igt@gem_tiled_swapping@non-threaded:
- shard-kbl: SKIP -> PASS
- shard-apl: SKIP -> PASS
* igt@perf_pmu@rc6:
- shard-kbl: PASS -> SKIP
* igt@pm_rc6_residency@rc6-accuracy:
- shard-snb: PASS -> SKIP
Known issues
------------
Here are the changes found in IGTPW_2111_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_exec_blt@dumb-buf-max:
- shard-snb: PASS -> INCOMPLETE [fdo#105411]
* igt@gem_ppgtt@blt-vs-render-ctx0:
- shard-kbl: PASS -> INCOMPLETE [fdo#103665] / [fdo#106023] / [fdo#106887]
* igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-c:
- shard-kbl: PASS -> DMESG-WARN [fdo#107956]
* igt@kms_color@pipe-b-degamma:
- shard-apl: PASS -> FAIL [fdo#104782]
* igt@kms_cursor_crc@cursor-256x256-sliding:
- shard-glk: PASS -> FAIL [fdo#103232] +8
* igt@kms_cursor_crc@cursor-64x21-sliding:
- shard-apl: PASS -> FAIL [fdo#103232] +2
* igt@kms_cursor_crc@cursor-64x64-onscreen:
- shard-kbl: PASS -> FAIL [fdo#103232] +1
* igt@kms_cursor_crc@cursor-64x64-suspend:
- shard-apl: PASS -> FAIL [fdo#103191] / [fdo#103232]
* igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic:
- shard-hsw: PASS -> FAIL [fdo#105767]
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite:
- shard-apl: PASS -> FAIL [fdo#103167] +1
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff:
- shard-glk: PASS -> FAIL [fdo#103167] +10
* igt@kms_plane@plane-position-covered-pipe-c-planes:
- shard-apl: PASS -> FAIL [fdo#103166] +3
* igt@kms_plane_alpha_blend@pipe-b-alpha-transparant-fb:
- shard-kbl: NOTRUN -> FAIL [fdo#108145]
* igt@kms_plane_multiple@atomic-pipe-b-tiling-y:
- shard-glk: PASS -> FAIL [fdo#103166] +3
* igt@kms_plane_multiple@atomic-pipe-c-tiling-yf:
- shard-kbl: PASS -> FAIL [fdo#103166] +2
#### Possible fixes ####
* igt@gem_ppgtt@blt-vs-render-ctxn:
- shard-kbl: INCOMPLETE [fdo#103665] / [fdo#106023] / [fdo#106887] -> PASS
* igt@gem_userptr_blits@readonly-unsync:
- shard-kbl: TIMEOUT -> PASS
* igt@kms_busy@extended-pageflip-hang-newfb-render-c:
- shard-apl: DMESG-WARN [fdo#107956] -> PASS
* igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-b:
- shard-hsw: DMESG-WARN [fdo#107956] -> PASS +1
* igt@kms_cursor_crc@cursor-128x128-sliding:
- shard-kbl: FAIL [fdo#103232] -> PASS +1
* igt@kms_cursor_crc@cursor-128x42-onscreen:
- shard-glk: FAIL [fdo#103232] -> PASS +1
- shard-apl: FAIL [fdo#103232] -> PASS +1
* igt@kms_flip@plain-flip-fb-recreate-interruptible:
- shard-kbl: FAIL [fdo#100368] -> PASS
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen:
- shard-apl: FAIL [fdo#103167] -> PASS
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc:
- shard-glk: FAIL [fdo#103167] -> PASS +3
* igt@kms_plane@plane-position-covered-pipe-b-planes:
- shard-glk: FAIL [fdo#103166] -> PASS +2
* igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max:
- shard-glk: FAIL [fdo#108145] -> PASS
* igt@kms_plane_alpha_blend@pipe-c-constant-alpha-max:
- shard-apl: FAIL [fdo#108145] -> PASS
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#100368]: https://bugs.freedesktop.org/show_bug.cgi?id=100368
[fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
[fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
[fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
[fdo#104782]: https://bugs.freedesktop.org/show_bug.cgi?id=104782
[fdo#105411]: https://bugs.freedesktop.org/show_bug.cgi?id=105411
[fdo#105767]: https://bugs.freedesktop.org/show_bug.cgi?id=105767
[fdo#106023]: https://bugs.freedesktop.org/show_bug.cgi?id=106023
[fdo#106887]: https://bugs.freedesktop.org/show_bug.cgi?id=106887
[fdo#107956]: https://bugs.freedesktop.org/show_bug.cgi?id=107956
[fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
Participating hosts (7 -> 5)
------------------------------
Missing (2): shard-skl shard-iclb
Build changes
-------------
* IGT: IGT_4736 -> IGTPW_2111
* Piglit: piglit_4509 -> None
CI_DRM_5235: 5e327aec3fa3fc277b40818e06785743cf16b1ad @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2111: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2111/
IGT_4736: 285ebfb3b7adc56586031afa5150c4e5ad40c229 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2111/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev7)
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
` (16 preceding siblings ...)
2018-12-01 12:15 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
@ 2018-12-01 18:41 ` Patchwork
2018-12-01 22:51 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-12-01 18:41 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests. (rev7)
URL : https://patchwork.freedesktop.org/series/51452/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_5237 -> IGTPW_2112
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/7/mbox/
Known issues
------------
Here are the changes found in IGTPW_2112 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_exec_suspend@basic-s4-devices:
- fi-ivb-3520m: PASS -> FAIL [fdo#108880]
* {igt@runner@aborted}:
- {fi-icl-y}: NOTRUN -> FAIL [fdo#108070]
#### Possible fixes ####
* igt@kms_pipe_crc_basic@hang-read-crc-pipe-a:
- fi-byt-clapper: FAIL [fdo#103191] / [fdo#107362] -> PASS
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
[fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
[fdo#108070]: https://bugs.freedesktop.org/show_bug.cgi?id=108070
[fdo#108880]: https://bugs.freedesktop.org/show_bug.cgi?id=108880
Participating hosts (49 -> 43)
------------------------------
Additional (1): fi-icl-y
Missing (7): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-kbl-7560u
Build changes
-------------
* IGT: IGT_4736 -> IGTPW_2112
CI_DRM_5237: 2f99c4889e4124f9cf50b745d037f432318c4bb4 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2112: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2112/
IGT_4736: 285ebfb3b7adc56586031afa5150c4e5ad40c229 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Testlist changes ==
+igt@kms_rotation_crc@multiplane-rotation
+igt@kms_rotation_crc@multiplane-rotation-cropping-bottom
+igt@kms_rotation_crc@multiplane-rotation-cropping-top
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2112/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_rotation_crc: Add multi plane tests. (rev7)
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
` (17 preceding siblings ...)
2018-12-01 18:41 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev7) Patchwork
@ 2018-12-01 22:51 ` Patchwork
18 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2018-12-01 22:51 UTC (permalink / raw)
To: Juha-Pekka Heikkila; +Cc: igt-dev
== Series Details ==
Series: tests/kms_rotation_crc: Add multi plane tests. (rev7)
URL : https://patchwork.freedesktop.org/series/51452/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_5237_full -> IGTPW_2112_full
====================================================
Summary
-------
**WARNING**
Minor unknown changes coming with IGTPW_2112_full need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_2112_full, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51452/revisions/7/mbox/
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_2112_full:
### IGT changes ###
#### Possible regressions ####
* {igt@kms_rotation_crc@multiplane-rotation-cropping-top}:
- shard-kbl: NOTRUN -> DMESG-FAIL
#### Warnings ####
* igt@gem_tiled_swapping@non-threaded:
- shard-kbl: SKIP -> PASS
- shard-apl: SKIP -> PASS
* igt@kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-cpu:
- shard-snb: PASS -> SKIP +1
* igt@kms_vblank@pipe-c-query-busy:
- shard-apl: PASS -> SKIP +49
* igt@perf_pmu@rc6:
- shard-kbl: PASS -> SKIP
Known issues
------------
Here are the changes found in IGTPW_2112_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_eio@in-flight-suspend:
- shard-apl: PASS -> DMESG-WARN [fdo#103558]
* igt@gem_exec_fence@basic-await-default:
- shard-hsw: PASS -> FAIL [fdo#108888]
* igt@i915_suspend@shrink:
- shard-hsw: NOTRUN -> DMESG-WARN [fdo#108784]
* igt@kms_busy@extended-modeset-hang-newfb-render-a:
- shard-snb: PASS -> DMESG-WARN [fdo#107956]
* igt@kms_ccs@pipe-a-crc-sprite-planes-basic:
- shard-glk: PASS -> FAIL [fdo#108145]
- shard-kbl: PASS -> FAIL [fdo#107725] / [fdo#108145]
* igt@kms_chv_cursor_fail@pipe-b-128x128-bottom-edge:
- shard-apl: PASS -> DMESG-WARN [fdo#103558] / [fdo#105602] +21
* igt@kms_color@pipe-a-degamma:
- shard-apl: PASS -> FAIL [fdo#104782] / [fdo#108145]
* igt@kms_cursor_crc@cursor-256x256-suspend:
- shard-glk: PASS -> FAIL [fdo#103232]
- shard-apl: PASS -> FAIL [fdo#103191] / [fdo#103232]
* igt@kms_cursor_crc@cursor-256x85-random:
- shard-apl: PASS -> FAIL [fdo#103232] +2
* igt@kms_cursor_crc@cursor-64x21-onscreen:
- shard-kbl: PASS -> FAIL [fdo#103232] +2
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite:
- shard-apl: PASS -> FAIL [fdo#103167] +3
- shard-glk: PASS -> FAIL [fdo#103167] +2
- shard-kbl: PASS -> FAIL [fdo#103167]
* igt@kms_plane@pixel-format-pipe-a-planes:
- shard-kbl: PASS -> FAIL [fdo#103166] +1
* igt@kms_plane@plane-position-covered-pipe-a-planes:
- shard-glk: PASS -> FAIL [fdo#103166] +1
- shard-apl: PASS -> FAIL [fdo#103166] +2
* igt@kms_plane@plane-position-covered-pipe-c-planes:
- shard-apl: PASS -> DMESG-FAIL [fdo#103166] / [fdo#103558] / [fdo#105602]
* igt@kms_plane_alpha_blend@pipe-b-alpha-transparant-fb:
- shard-kbl: NOTRUN -> FAIL [fdo#108145]
* igt@kms_setmode@basic:
- shard-kbl: PASS -> FAIL [fdo#99912]
#### Possible fixes ####
* igt@gem_ctx_isolation@rcs0-s3:
- shard-snb: DMESG-WARN [fdo#102365] -> PASS
* igt@gem_ppgtt@blt-vs-render-ctxn:
- shard-kbl: INCOMPLETE [fdo#103665] / [fdo#106023] / [fdo#106887] -> PASS
* igt@kms_busy@extended-modeset-hang-newfb-render-b:
- shard-apl: DMESG-WARN [fdo#107956] -> SKIP
* igt@kms_busy@extended-pageflip-hang-newfb-render-b:
- shard-apl: DMESG-WARN [fdo#107956] -> PASS
* igt@kms_content_protection@atomic:
- shard-apl: FAIL [fdo#108597] -> SKIP
* igt@kms_cursor_crc@cursor-128x128-sliding:
- shard-kbl: FAIL [fdo#103232] -> PASS +1
* igt@kms_cursor_crc@cursor-128x42-onscreen:
- shard-glk: FAIL [fdo#103232] -> PASS +1
- shard-apl: FAIL [fdo#103232] -> PASS +4
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
- shard-apl: FAIL [fdo#103167] -> PASS
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-cpu:
- shard-glk: FAIL [fdo#103167] -> PASS +6
* igt@kms_plane@plane-position-covered-pipe-b-planes:
- shard-glk: FAIL [fdo#103166] -> PASS +2
* igt@kms_plane_alpha_blend@pipe-a-alpha-opaque-fb:
- shard-apl: FAIL [fdo#108145] -> SKIP
* igt@kms_plane_multiple@atomic-pipe-c-tiling-yf:
- shard-apl: FAIL [fdo#103166] -> PASS +4
#### Warnings ####
* igt@i915_suspend@shrink:
- shard-snb: INCOMPLETE [fdo#105411] / [fdo#106886] -> DMESG-WARN [fdo#108784]
* igt@kms_plane_alpha_blend@pipe-b-alpha-basic:
- shard-apl: FAIL [fdo#108145] -> DMESG-FAIL [fdo#103558] / [fdo#105602] / [fdo#108145]
* igt@kms_plane_multiple@atomic-pipe-b-tiling-y:
- shard-apl: FAIL [fdo#103166] -> DMESG-FAIL [fdo#103166] / [fdo#103558] / [fdo#105602]
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#102365]: https://bugs.freedesktop.org/show_bug.cgi?id=102365
[fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
[fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
[fdo#103558]: https://bugs.freedesktop.org/show_bug.cgi?id=103558
[fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
[fdo#104782]: https://bugs.freedesktop.org/show_bug.cgi?id=104782
[fdo#105411]: https://bugs.freedesktop.org/show_bug.cgi?id=105411
[fdo#105602]: https://bugs.freedesktop.org/show_bug.cgi?id=105602
[fdo#106023]: https://bugs.freedesktop.org/show_bug.cgi?id=106023
[fdo#106886]: https://bugs.freedesktop.org/show_bug.cgi?id=106886
[fdo#106887]: https://bugs.freedesktop.org/show_bug.cgi?id=106887
[fdo#107725]: https://bugs.freedesktop.org/show_bug.cgi?id=107725
[fdo#107956]: https://bugs.freedesktop.org/show_bug.cgi?id=107956
[fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
[fdo#108597]: https://bugs.freedesktop.org/show_bug.cgi?id=108597
[fdo#108784]: https://bugs.freedesktop.org/show_bug.cgi?id=108784
[fdo#108888]: https://bugs.freedesktop.org/show_bug.cgi?id=108888
[fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912
Participating hosts (7 -> 5)
------------------------------
Missing (2): shard-skl shard-iclb
Build changes
-------------
* IGT: IGT_4736 -> IGTPW_2112
* Piglit: piglit_4509 -> None
CI_DRM_5237: 2f99c4889e4124f9cf50b745d037f432318c4bb4 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_2112: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2112/
IGT_4736: 285ebfb3b7adc56586031afa5150c4e5ad40c229 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2112/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests
2018-11-30 14:08 ` Juha-Pekka Heikkila
@ 2018-12-03 8:55 ` Nautiyal, Ankit K
0 siblings, 0 replies; 28+ messages in thread
From: Nautiyal, Ankit K @ 2018-12-03 8:55 UTC (permalink / raw)
To: Juha-Pekka Heikkila, igt-dev
On 11/30/2018 7:38 PM, Juha-Pekka Heikkila wrote:
> Add three new tests which try primary and sprite planes
> next to each other with different plane formats, rotations
> and tiling modes.
>
> multiplane-rotation subtest run test through with both planes
> fully visible.
>
> multiplane-rotation-cropping-top will crop primary plane to
> left/top corner and sprite plane to right/top corner while running
> rotation tests.
>
> multiplane-rotation-cropping-bottom will crop primary plane to
> left/bottom corner and sprite plane to right/bottom corner while
> running rotation tests.
>
> v2 (Nautiyal, Ankit K): Use rectangular figures instead of
> square figures and fix associated code to perform correctly.
> Adjust plane positions according to screen size to avoid
> putting planes outside screen.
>
> v3 (Nautiyal, Ankit K): Minor detail fix.
>
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
> tests/kms_rotation_crc.c | 246 +++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 246 insertions(+)
>
> diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
> index 366c254..369936f 100644
> --- a/tests/kms_rotation_crc.c
> +++ b/tests/kms_rotation_crc.c
> @@ -26,6 +26,25 @@
> #include <math.h>
>
> #define MAX_FENCES 32
> +#define MAXMULTIPLANESAMOUNT 2
> +
> +struct p_struct {
> + igt_plane_t *plane;
> + struct igt_fb fb;
> +};
> +
> +enum p_pointorigo {
> + p_top = 1 << 0,
> + p_bottom = 1 << 1,
> + p_left = 1 << 2,
> + p_right = 1 << 3
> +};
> +
> +struct p_point{
> + enum p_pointorigo origo;
> + float_t x;
> + float_t y;
> +};
>
> typedef struct {
> int gfx_fd;
> @@ -43,6 +62,9 @@ typedef struct {
> uint32_t override_fmt;
> uint64_t override_tiling;
> int devid;
> +
> + struct p_struct *multiplaneoldview;
> + struct p_point planepos[MAXMULTIPLANESAMOUNT];
> } data_t;
>
> typedef struct {
> @@ -395,6 +417,194 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
> }
> }
>
> +typedef struct {
> + int32_t x1, y1;
> + uint64_t width, height, tiling, planetype, format;
> + igt_rotation_t rotation_sw, rotation_hw;
> +} planeinfos;
> +
> +static void get_multiplane_crc(data_t *data, igt_output_t *output,
> + igt_crc_t *crc_output, planeinfos *planeinfo,
> + int numplanes)
> +{
> + uint32_t w, h;
> + igt_display_t *display = &data->display;
> + struct p_struct *planes, *oldplanes;
> + int c, ret;
> +
> + oldplanes = data->multiplaneoldview;
> + planes = malloc(sizeof(*planes) * numplanes);
> +
> + for (c = 0; c < numplanes; c++) {
> + planes[c].plane = igt_output_get_plane_type(output,
> + planeinfo[c].planetype);
> +
> + w = planeinfo[c].width;
> + h = planeinfo[c].height;
> +
> + if (planeinfo[c].rotation_sw & (IGT_ROTATION_90 | IGT_ROTATION_270))
> + igt_swap(w, h);
> +
> + igt_create_fb(data->gfx_fd, w, h, planeinfo[c].format,
> + planeinfo[c].tiling, &planes[c].fb);
> +
> + paint_squares(data, planeinfo[c].rotation_sw, &planes[c].fb, 1.0f);
> + igt_plane_set_fb(planes[c].plane, &planes[c].fb);
> +
> + if (planeinfo[c].rotation_hw & (IGT_ROTATION_90 | IGT_ROTATION_270))
> + igt_plane_set_size(planes[c].plane, h, w);
> +
> + igt_plane_set_position(planes[c].plane, planeinfo[c].x1, planeinfo[c].y1);
> + igt_plane_set_rotation(planes[c].plane, planeinfo[c].rotation_hw);
> + }
> +
> + ret = igt_display_try_commit2(display, COMMIT_ATOMIC);
> + igt_assert_eq(ret, 0);
> +
> + igt_pipe_crc_get_current(data->gfx_fd, data->pipe_crc, crc_output);
> +
> + for (c = 0; c < numplanes && oldplanes; c++)
> + igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
> +
> + free(oldplanes);
> + data->multiplaneoldview = (void*)planes;
> +}
> +
> +static void pointlocation(data_t *data, planeinfos *p, drmModeModeInfo *mode,
> + int c)
> +{
> + p[c].x1 = (int32_t)(data->planepos[c].x * mode->hdisplay)
> + + ((data->planepos[c].origo & p_right) ? mode->hdisplay : 0);
> + p[c].y1 = (int32_t)(data->planepos[c].y * mode->vdisplay)
> + + ((data->planepos[c].origo & p_bottom) ? mode->vdisplay : 0);
> +}
> +
> +/*
> + * Here is pipe parameter which is now used only for first pipe.
> + * It is left here if this test ever was wanted to be run on
> + * different pipes.
> + */
> +static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
> +{
> + igt_display_t *display = &data->display;
> + igt_output_t *output;
> + igt_crc_t retcrc_sw, retcrc_hw;
> + planeinfos p[2];
> + int c;
> + struct p_struct *oldplanes;
> + drmModeModeInfo *mode;
> +
> + const static struct {
> + igt_rotation_t rotation;
> + float_t width;
> + float_t height;
> + uint64_t tiling;
> + } planeconfigs[] = {
> + {IGT_ROTATION_0, .2f, .4f, LOCAL_DRM_FORMAT_MOD_NONE },
> + {IGT_ROTATION_0, .2f, .4f, LOCAL_I915_FORMAT_MOD_X_TILED },
> + {IGT_ROTATION_0, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
> + {IGT_ROTATION_0, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
> + {IGT_ROTATION_90, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
> + {IGT_ROTATION_90, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
> + {IGT_ROTATION_180, .2f, .4f, LOCAL_DRM_FORMAT_MOD_NONE },
> + {IGT_ROTATION_180, .2f, .4f, LOCAL_I915_FORMAT_MOD_X_TILED },
> + {IGT_ROTATION_180, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
> + {IGT_ROTATION_180, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
> + {IGT_ROTATION_270, .2f, .4f, LOCAL_I915_FORMAT_MOD_Y_TILED },
> + {IGT_ROTATION_270, .2f, .4f, LOCAL_I915_FORMAT_MOD_Yf_TILED },
> + };
> +
> + /*
> + * These are those modes which are tested. For testing feel interesting
> + * case with tiling are 2 byte wide and 4 byte wide.
> + *
> + * TODO:
> + * Built support for NV12 here.
> + */
> + const static uint32_t formatlist[] = {DRM_FORMAT_RGB565,
> + DRM_FORMAT_XRGB8888};
> +
> + for_each_valid_output_on_pipe(display, pipe, output) {
> + int i, j, k, l;
> + igt_output_set_pipe(output, pipe);
> + mode = igt_output_get_mode(output);
> + igt_display_require_output(display);
> + igt_display_commit2(display, COMMIT_ATOMIC);
> +
> + data->pipe_crc = igt_pipe_crc_new(data->gfx_fd, pipe,
> + INTEL_PIPE_CRC_SOURCE_AUTO);
> + igt_pipe_crc_start(data->pipe_crc);
> +
> + for (i = 0; i < ARRAY_SIZE(planeconfigs); i++) {
> + p[0].planetype = DRM_PLANE_TYPE_PRIMARY;
> + p[0].width = (uint64_t)(planeconfigs[i].width * mode->hdisplay);
> + p[0].height = (uint64_t)(planeconfigs[i].height * mode->vdisplay);
> + p[0].tiling = planeconfigs[i].tiling;
> + pointlocation(data, (planeinfos *)&p, mode, 0);
> +
> + for (k = 0; k < ARRAY_SIZE(formatlist); k++) {
> + p[0].format = formatlist[k];
> +
> + for (j = 0; j < ARRAY_SIZE(planeconfigs); j++) {
> + p[1].planetype = DRM_PLANE_TYPE_OVERLAY;
> + p[1].width = (uint64_t)(planeconfigs[j].width * mode->hdisplay);
> + p[1].height = (uint64_t)(planeconfigs[j].height * mode->vdisplay);
> + p[1].tiling = planeconfigs[j].tiling;
> + pointlocation(data, (planeinfos *)&p,
> + mode, 1);
> +
> + for (l = 0; l < ARRAY_SIZE(formatlist); l++) {
> + p[1].format = formatlist[l];
> +
> + /*
> + * RGB565 90/270 degrees rotation is supported
> + * from gen11 onwards.
> + */
> + if (p[0].format == DRM_FORMAT_RGB565 &&
> + (planeconfigs[i].rotation & (IGT_ROTATION_90 | IGT_ROTATION_270))
> + && intel_gen(data->devid) < 11)
> + continue;
> +
> + if (p[1].format == DRM_FORMAT_RGB565 &&
> + (planeconfigs[j].rotation & (IGT_ROTATION_90 | IGT_ROTATION_270))
> + && intel_gen(data->devid) < 11)
> + continue;
> +
> + p[0].rotation_sw = planeconfigs[i].rotation;
> + p[0].rotation_hw = IGT_ROTATION_0;
> + p[1].rotation_sw = planeconfigs[j].rotation;
> + p[1].rotation_hw = IGT_ROTATION_0;
> + get_multiplane_crc(data, output, &retcrc_sw,
> + (planeinfos *)&p, MAXMULTIPLANESAMOUNT);
> +
> + igt_swap(p[0].rotation_sw, p[0].rotation_hw);
> + igt_swap(p[1].rotation_sw, p[1].rotation_hw);
> + get_multiplane_crc(data, output, &retcrc_hw,
> + (planeinfos *)&p, MAXMULTIPLANESAMOUNT);
> +
> + igt_assert_crc_equal(&retcrc_sw, &retcrc_hw);
> + }
> + }
> + }
> + }
> + igt_pipe_crc_stop(data->pipe_crc);
> + igt_pipe_crc_free(data->pipe_crc);
> + igt_output_set_pipe(output, PIPE_ANY);
> + }
> +
> + /*
> + * Old fbs are deleted only after new ones are set on planes.
> + * This is done to speed up the test
> + */
> + oldplanes = data->multiplaneoldview;
> + for (c = 0; c < MAXMULTIPLANESAMOUNT && oldplanes; c++)
> + igt_remove_fb(data->gfx_fd, &oldplanes[c].fb);
> +
> + free(oldplanes);
> + data->multiplaneoldview = NULL;
> + data->pipe_crc = NULL;
> +}
> +
> static void test_plane_rotation_exhaust_fences(data_t *data,
> enum pipe pipe,
> igt_output_t *output,
> @@ -595,6 +805,42 @@ igt_main
> }
> }
>
> + igt_subtest_f("multiplane-rotation") {
> + igt_require(gen >= 9);
> + cleanup_crtc(&data);
> + data.planepos[0].origo = p_top | p_left;
> + data.planepos[0].x = .2f;
> + data.planepos[0].y = .1f;
> + data.planepos[1].origo = p_top | p_right;
> + data.planepos[1].x = -.4f;
> + data.planepos[1].y = .1f;
> + test_multi_plane_rotation(&data, 0);
> + }
> +
> + igt_subtest_f("multiplane-rotation-cropping-top") {
> + igt_require(gen >= 9);
> + cleanup_crtc(&data);
> + data.planepos[0].origo = p_top | p_left;
> + data.planepos[0].x = -.05f;
> + data.planepos[0].y = -.15f;
> + data.planepos[1].origo = p_top | p_right;
> + data.planepos[1].x = -.15f;
> + data.planepos[1].y = -.15f;
> + test_multi_plane_rotation(&data, 0);
> + }
> +
> + igt_subtest_f("multiplane-rotation-cropping-bottom") {
> + igt_require(gen >= 9);
> + cleanup_crtc(&data);
> + data.planepos[0].origo = p_bottom | p_left;
> + data.planepos[0].x = -.05f;
> + data.planepos[0].y = -.20f;
> + data.planepos[1].origo = p_bottom | p_right;
> + data.planepos[1].x = -.15f;
> + data.planepos[1].y = -.20f;
> + test_multi_plane_rotation(&data, 0);
> + }
> +
> /*
> * exhaust-fences should be last test, if it fails we may OOM in
> * the following subtests otherwise.
Looks good to me.
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Regards,
Ankit
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 28+ messages in thread
end of thread, other threads:[~2018-12-03 8:55 UTC | newest]
Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-24 13:33 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests Juha-Pekka Heikkila
2018-10-24 18:25 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2018-10-24 18:55 ` Patchwork
2018-10-24 23:17 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2018-10-25 0:12 ` Patchwork
2018-10-25 13:26 ` [igt-dev] [PATCH i-g-t] " Juha-Pekka Heikkila
2018-10-26 12:58 ` Juha-Pekka Heikkila
2018-11-16 12:28 ` Nautiyal, Ankit K
2018-11-19 11:45 ` Juha-Pekka Heikkila
2018-11-19 11:59 ` Juha-Pekka Heikkila
2018-11-22 7:04 ` Nautiyal, Ankit K
2018-11-29 21:29 ` Juha-Pekka Heikkilä
2018-11-30 14:08 ` Juha-Pekka Heikkila
2018-12-03 8:55 ` Nautiyal, Ankit K
2018-10-25 14:42 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev2) Patchwork
2018-10-26 6:10 ` Patchwork
2018-10-26 12:21 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2018-10-26 14:23 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev3) Patchwork
2018-10-26 20:41 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2018-10-27 5:52 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
2018-10-27 9:25 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2018-11-19 15:01 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev4) Patchwork
2018-11-19 18:55 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2018-11-30 14:58 ` [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_rotation_crc: Add multi plane tests. (rev5) Patchwork
2018-11-30 17:30 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev6) Patchwork
2018-12-01 12:15 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2018-12-01 18:41 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Add multi plane tests. (rev7) Patchwork
2018-12-01 22:51 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
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.