* [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test
@ 2019-09-05 14:35 Simon Ser
2019-09-05 14:51 ` Ville Syrjälä
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Simon Ser @ 2019-09-05 14:35 UTC (permalink / raw)
To: igt-dev
This test performs a single atomic commit on multiple CRTCs at once. The goal
is to check that a page-flip event for each CRTC is received.
I chose not to integrate this to an existing test, because kms_atomic is
basically a single function with lots of options. Integrating this test to
kms_atomic would mix up these two and make it difficult to understand the test.
Signed-off-by: Simon Ser <simon.ser@intel.com>
---
This is basically the test I wrote while reviewing the kms_dp_tiled_display
series [1]. I'm sending it as an RFC to know if there's any interest in having
it merged.
[1]: https://lists.freedesktop.org/archives/igt-dev/2019-August/015724.html
tests/Makefile.sources | 1 +
tests/kms_atomic_multi.c | 149 +++++++++++++++++++++++++++++++++++++++
tests/meson.build | 1 +
3 files changed, 151 insertions(+)
create mode 100644 tests/kms_atomic_multi.c
diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index c02e4d9489f2..e08968d2b0fc 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -29,6 +29,7 @@ TESTS_progs = \
kms_atomic \
kms_atomic_interruptible \
kms_atomic_transition \
+ kms_atomic_multi \
kms_available_modes_crc \
kms_big_fb \
kms_busy \
diff --git a/tests/kms_atomic_multi.c b/tests/kms_atomic_multi.c
new file mode 100644
index 000000000000..96212ab9a1e6
--- /dev/null
+++ b/tests/kms_atomic_multi.c
@@ -0,0 +1,149 @@
+/*
+ * Copyright © 2018 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include <poll.h>
+#include <drm_mode.h>
+#include <drm_fourcc.h>
+#include "igt.h"
+
+struct test_connector {
+ igt_output_t *output;
+ struct igt_fb fb;
+ drmModeConnectorPtr connector;
+ enum pipe pipe;
+ bool page_flip;
+};
+
+struct test_data {
+ int drm_fd;
+ igt_display_t *display;
+ struct test_connector conns[2];
+};
+
+static void create_fb(struct test_data *data, struct test_connector *conn)
+{
+ igt_plane_t *primary;
+ drmModeModeInfo *mode;
+
+ mode = igt_output_get_mode(conn->output);
+ igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
+ DRM_FORMAT_XBGR8888, LOCAL_DRM_FORMAT_MOD_NONE,
+ &conn->fb);
+
+ primary = igt_output_get_plane_type(conn->output, DRM_PLANE_TYPE_PRIMARY);
+ igt_assert(primary);
+
+ igt_plane_set_fb(primary, &conn->fb);
+}
+
+static void pick_2_outputs(struct test_data *data)
+{
+ igt_output_t *output;
+ struct test_connector *conn;
+ size_t i;
+
+ i = 0;
+ for_each_connected_output(data->display, output) {
+ if (i >= 2)
+ break;
+
+ conn = &data->conns[i];
+ conn->output = output;
+ conn->pipe = i;
+ igt_output_set_pipe(output, conn->pipe);
+ i++;
+ }
+
+ igt_skip_on(i < 2);
+ /* TODO: test_only commit, skip on failure */
+ igt_display_commit_atomic(data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+}
+
+static void page_flip_handler(int fd, unsigned seq, unsigned tv_sec,
+ unsigned tv_usec, unsigned crtc_id, void *_data)
+{
+ struct test_data *data = _data;
+ struct test_connector *conn;
+ size_t i;
+
+ for (i = 0; i < sizeof(data->conns) / sizeof(data->conns[0]); i++) {
+ conn = &data->conns[i];
+ if (data->display->pipes[conn->pipe].crtc_id == crtc_id) {
+ igt_assert_f(!conn->page_flip,
+ "Got two page-flips for CRTC %u\n",
+ crtc_id);
+ conn->page_flip = true;
+ return;
+ }
+ }
+
+ igt_assert_f(0, "Got page-flip event for unexpected CRTC %u\n", crtc_id);
+}
+
+igt_main
+{
+ int ret;
+ struct test_data data = {0};
+ igt_display_t display;
+ struct pollfd pfd = {0};
+ drmEventContext drm_event = {0};
+ int i;
+
+ igt_fixture {
+ data.drm_fd = drm_open_driver_master(DRIVER_ANY);
+ kmstest_set_vt_graphics_mode();
+ igt_display_require(&display, data.drm_fd);
+ igt_display_reset(&display);
+ igt_require(display.is_atomic);
+ data.display = &display;
+
+ pfd.fd = data.drm_fd;
+ pfd.events = POLLIN;
+
+ drm_event.version = 3;
+ drm_event.page_flip_handler2 = page_flip_handler;
+ }
+
+ igt_subtest("2x-flip") {
+ pick_2_outputs(&data);
+
+ create_fb(&data, &data.conns[0]);
+ create_fb(&data, &data.conns[1]);
+
+ igt_display_commit_atomic(data.display, DRM_MODE_ATOMIC_NONBLOCK |
+ DRM_MODE_PAGE_FLIP_EVENT, &data);
+
+ /* TODO: handle two events sent at once */
+ for (i = 0; i < 2; i++) {
+ ret = poll(&pfd, 1, 1000);
+ igt_assert(ret == 1);
+ drmHandleEvent(data.drm_fd, &drm_event);
+ }
+ }
+
+ igt_fixture {
+ close(data.drm_fd);
+ kmstest_restore_vt_mode();
+ igt_display_fini(data.display);
+ }
+}
diff --git a/tests/meson.build b/tests/meson.build
index a7b2b3221304..df00ab4a2f81 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -14,6 +14,7 @@ test_progs = [
'kms_atomic',
'kms_atomic_interruptible',
'kms_atomic_transition',
+ 'kms_atomic_multi',
'kms_available_modes_crc',
'kms_big_fb',
'kms_busy',
--
2.23.0
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test
2019-09-05 14:35 [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test Simon Ser
@ 2019-09-05 14:51 ` Ville Syrjälä
2019-09-06 14:15 ` Ser, Simon
2019-09-05 15:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: Ville Syrjälä @ 2019-09-05 14:51 UTC (permalink / raw)
To: Simon Ser; +Cc: igt-dev
On Thu, Sep 05, 2019 at 05:35:30PM +0300, Simon Ser wrote:
> This test performs a single atomic commit on multiple CRTCs at once. The goal
> is to check that a page-flip event for each CRTC is received.
>
> I chose not to integrate this to an existing test, because kms_atomic is
> basically a single function with lots of options. Integrating this test to
> kms_atomic would mix up these two and make it difficult to understand the test.
>
> Signed-off-by: Simon Ser <simon.ser@intel.com>
> ---
>
> This is basically the test I wrote while reviewing the kms_dp_tiled_display
> series [1]. I'm sending it as an RFC to know if there's any interest in having
> it merged.
>
> [1]: https://lists.freedesktop.org/archives/igt-dev/2019-August/015724.html
>
> tests/Makefile.sources | 1 +
> tests/kms_atomic_multi.c | 149 +++++++++++++++++++++++++++++++++++++++
> tests/meson.build | 1 +
> 3 files changed, 151 insertions(+)
> create mode 100644 tests/kms_atomic_multi.c
>
> diff --git a/tests/Makefile.sources b/tests/Makefile.sources
> index c02e4d9489f2..e08968d2b0fc 100644
> --- a/tests/Makefile.sources
> +++ b/tests/Makefile.sources
> @@ -29,6 +29,7 @@ TESTS_progs = \
> kms_atomic \
> kms_atomic_interruptible \
> kms_atomic_transition \
> + kms_atomic_multi \
> kms_available_modes_crc \
> kms_big_fb \
> kms_busy \
> diff --git a/tests/kms_atomic_multi.c b/tests/kms_atomic_multi.c
> new file mode 100644
> index 000000000000..96212ab9a1e6
> --- /dev/null
> +++ b/tests/kms_atomic_multi.c
> @@ -0,0 +1,149 @@
> +/*
> + * Copyright © 2018 Intel Corporation
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice (including the next
> + * paragraph) shall be included in all copies or substantial portions of the
> + * Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> + * IN THE SOFTWARE.
> + */
> +
> +#include <poll.h>
> +#include <drm_mode.h>
> +#include <drm_fourcc.h>
> +#include "igt.h"
> +
> +struct test_connector {
> + igt_output_t *output;
> + struct igt_fb fb;
> + drmModeConnectorPtr connector;
> + enum pipe pipe;
> + bool page_flip;
> +};
> +
> +struct test_data {
> + int drm_fd;
> + igt_display_t *display;
> + struct test_connector conns[2];
> +};
> +
> +static void create_fb(struct test_data *data, struct test_connector *conn)
> +{
> + igt_plane_t *primary;
> + drmModeModeInfo *mode;
> +
> + mode = igt_output_get_mode(conn->output);
> + igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
> + DRM_FORMAT_XBGR8888, LOCAL_DRM_FORMAT_MOD_NONE,
> + &conn->fb);
> +
> + primary = igt_output_get_plane_type(conn->output, DRM_PLANE_TYPE_PRIMARY);
> + igt_assert(primary);
> +
> + igt_plane_set_fb(primary, &conn->fb);
> +}
> +
> +static void pick_2_outputs(struct test_data *data)
> +{
> + igt_output_t *output;
> + struct test_connector *conn;
> + size_t i;
> +
> + i = 0;
> + for_each_connected_output(data->display, output) {
> + if (i >= 2)
> + break;
> +
> + conn = &data->conns[i];
> + conn->output = output;
> + conn->pipe = i;
That assumes every output can be driven by any pipe.
Using for_each_valid_output_on_pipe() should avoid that
assumption.
> + igt_output_set_pipe(output, conn->pipe);
> + i++;
> + }
> +
> + igt_skip_on(i < 2);
> + /* TODO: test_only commit, skip on failure */
> + igt_display_commit_atomic(data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> +}
> +
> +static void page_flip_handler(int fd, unsigned seq, unsigned tv_sec,
> + unsigned tv_usec, unsigned crtc_id, void *_data)
> +{
> + struct test_data *data = _data;
> + struct test_connector *conn;
> + size_t i;
> +
> + for (i = 0; i < sizeof(data->conns) / sizeof(data->conns[0]); i++) {
ARRAY_SIZE()
> + conn = &data->conns[i];
> + if (data->display->pipes[conn->pipe].crtc_id == crtc_id) {
> + igt_assert_f(!conn->page_flip,
> + "Got two page-flips for CRTC %u\n",
> + crtc_id);
> + conn->page_flip = true;
> + return;
> + }
> + }
> +
> + igt_assert_f(0, "Got page-flip event for unexpected CRTC %u\n", crtc_id);
> +}
> +
> +igt_main
> +{
> + int ret;
> + struct test_data data = {0};
> + igt_display_t display;
> + struct pollfd pfd = {0};
> + drmEventContext drm_event = {0};
> + int i;
> +
> + igt_fixture {
> + data.drm_fd = drm_open_driver_master(DRIVER_ANY);
> + kmstest_set_vt_graphics_mode();
> + igt_display_require(&display, data.drm_fd);
> + igt_display_reset(&display);
> + igt_require(display.is_atomic);
> + data.display = &display;
> +
> + pfd.fd = data.drm_fd;
> + pfd.events = POLLIN;
> +
> + drm_event.version = 3;
> + drm_event.page_flip_handler2 = page_flip_handler;
> + }
> +
> + igt_subtest("2x-flip") {
Are we planning more subtests? I guess 1x,2x,3x,... might be nice?
> + pick_2_outputs(&data);
> +
> + create_fb(&data, &data.conns[0]);
> + create_fb(&data, &data.conns[1]);
> +
> + igt_display_commit_atomic(data.display, DRM_MODE_ATOMIC_NONBLOCK |
> + DRM_MODE_PAGE_FLIP_EVENT, &data);
> +
> + /* TODO: handle two events sent at once */
> + for (i = 0; i < 2; i++) {
> + ret = poll(&pfd, 1, 1000);
> + igt_assert(ret == 1);
> + drmHandleEvent(data.drm_fd, &drm_event);
Not verifying that we didn't get too many events?
I guess it might also be nice to have different subtests
for page flips and full modesets.
I guess there is no generic way to force the kernel to modeset
a crtc we didn't explicitly include in the request, so can't
really test that scenario :(
> + }
> + }
> +
> + igt_fixture {
> + close(data.drm_fd);
> + kmstest_restore_vt_mode();
> + igt_display_fini(data.display);
> + }
> +}
> diff --git a/tests/meson.build b/tests/meson.build
> index a7b2b3221304..df00ab4a2f81 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -14,6 +14,7 @@ test_progs = [
> 'kms_atomic',
> 'kms_atomic_interruptible',
> 'kms_atomic_transition',
> + 'kms_atomic_multi',
> 'kms_available_modes_crc',
> 'kms_big_fb',
> 'kms_busy',
> --
> 2.23.0
>
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
--
Ville Syrjälä
Intel
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 7+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_atomic_multi: new test
2019-09-05 14:35 [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test Simon Ser
2019-09-05 14:51 ` Ville Syrjälä
@ 2019-09-05 15:08 ` Patchwork
2019-09-05 18:47 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2019-09-06 6:15 ` [igt-dev] [PATCH RFC i-g-t] " Arkadiusz Hiler
3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2019-09-05 15:08 UTC (permalink / raw)
To: Simon Ser; +Cc: igt-dev
== Series Details ==
Series: tests/kms_atomic_multi: new test
URL : https://patchwork.freedesktop.org/series/66288/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_6838 -> IGTPW_3422
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/66288/revisions/1/mbox/
Known issues
------------
Here are the changes found in IGTPW_3422 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_ctx_switch@legacy-render:
- fi-bxt-dsi: [PASS][1] -> [INCOMPLETE][2] ([fdo#103927] / [fdo#111381])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-bxt-dsi/igt@gem_ctx_switch@legacy-render.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/fi-bxt-dsi/igt@gem_ctx_switch@legacy-render.html
#### Possible fixes ####
* igt@gem_mmap_gtt@basic:
- fi-glk-dsi: [INCOMPLETE][3] ([fdo#103359] / [k.org#198133]) -> [PASS][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-glk-dsi/igt@gem_mmap_gtt@basic.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/fi-glk-dsi/igt@gem_mmap_gtt@basic.html
* igt@kms_busy@basic-flip-c:
- fi-skl-6770hq: [SKIP][5] ([fdo#109271] / [fdo#109278]) -> [PASS][6] +2 similar issues
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-skl-6770hq/igt@kms_busy@basic-flip-c.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/fi-skl-6770hq/igt@kms_busy@basic-flip-c.html
* igt@kms_chamelium@dp-edid-read:
- fi-kbl-7500u: [WARN][7] ([fdo#109483]) -> [PASS][8]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-kbl-7500u/igt@kms_chamelium@dp-edid-read.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/fi-kbl-7500u/igt@kms_chamelium@dp-edid-read.html
* igt@kms_flip@basic-flip-vs-dpms:
- fi-skl-6770hq: [SKIP][9] ([fdo#109271]) -> [PASS][10] +23 similar issues
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-skl-6770hq/igt@kms_flip@basic-flip-vs-dpms.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/fi-skl-6770hq/igt@kms_flip@basic-flip-vs-dpms.html
* igt@kms_frontbuffer_tracking@basic:
- fi-hsw-peppy: [DMESG-WARN][11] ([fdo#102614]) -> [PASS][12]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html
- fi-icl-u2: [FAIL][13] ([fdo#103167]) -> [PASS][14]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-icl-u2/igt@kms_frontbuffer_tracking@basic.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/fi-icl-u2/igt@kms_frontbuffer_tracking@basic.html
* igt@vgem_basic@debugfs:
- fi-icl-u3: [DMESG-WARN][15] ([fdo#107724]) -> [PASS][16]
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-icl-u3/igt@vgem_basic@debugfs.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/fi-icl-u3/igt@vgem_basic@debugfs.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#106107]: https://bugs.freedesktop.org/show_bug.cgi?id=106107
[fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
[fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
[fdo#109483]: https://bugs.freedesktop.org/show_bug.cgi?id=109483
[fdo#111381]: https://bugs.freedesktop.org/show_bug.cgi?id=111381
[k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133
Participating hosts (53 -> 46)
------------------------------
Additional (1): fi-pnv-d510
Missing (8): fi-ilk-m540 fi-tgl-u fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-icl-y fi-byt-clapper fi-bdw-samus
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_5171 -> IGTPW_3422
CI-20190529: 20190529
CI_DRM_6838: 8e907b7591b620dba402c7ada493a31ca0320c99 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3422: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/
IGT_5171: 1911564805fe454919e8a5846534a0c1ef376a33 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Testlist changes ==
+igt@kms_atomic_multi@2x-flip
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 7+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_atomic_multi: new test
2019-09-05 14:35 [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test Simon Ser
2019-09-05 14:51 ` Ville Syrjälä
2019-09-05 15:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
@ 2019-09-05 18:47 ` Patchwork
2019-09-06 6:15 ` [igt-dev] [PATCH RFC i-g-t] " Arkadiusz Hiler
3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2019-09-05 18:47 UTC (permalink / raw)
To: Simon Ser; +Cc: igt-dev
== Series Details ==
Series: tests/kms_atomic_multi: new test
URL : https://patchwork.freedesktop.org/series/66288/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_6838_full -> IGTPW_3422_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/66288/revisions/1/mbox/
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_3422_full:
### IGT changes ###
#### Possible regressions ####
* {igt@kms_atomic_multi@2x-flip} (NEW):
- shard-iclb: NOTRUN -> [SKIP][1]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb4/igt@kms_atomic_multi@2x-flip.html
New tests
---------
New tests have been introduced between CI_DRM_6838_full and IGTPW_3422_full:
### New IGT tests (1) ###
* igt@kms_atomic_multi@2x-flip:
- Statuses : 2 pass(s) 4 skip(s)
- Exec time: [0.0, 0.26] s
Known issues
------------
Here are the changes found in IGTPW_3422_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_ctx_shared@q-in-order-bsd2:
- shard-iclb: [PASS][2] -> [SKIP][3] ([fdo#109276]) +13 similar issues
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb1/igt@gem_ctx_shared@q-in-order-bsd2.html
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb5/igt@gem_ctx_shared@q-in-order-bsd2.html
* igt@gem_eio@suspend:
- shard-hsw: [PASS][4] -> [FAIL][5] ([fdo#111550])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw8/igt@gem_eio@suspend.html
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw7/igt@gem_eio@suspend.html
* igt@gem_exec_schedule@preempt-other-bsd:
- shard-iclb: [PASS][6] -> [SKIP][7] ([fdo#111325]) +6 similar issues
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb8/igt@gem_exec_schedule@preempt-other-bsd.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb1/igt@gem_exec_schedule@preempt-other-bsd.html
* igt@gem_exec_suspend@basic-s3:
- shard-hsw: [PASS][8] -> [FAIL][9] ([fdo#103375]) +4 similar issues
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw7/igt@gem_exec_suspend@basic-s3.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw7/igt@gem_exec_suspend@basic-s3.html
* igt@gem_workarounds@suspend-resume:
- shard-apl: [PASS][10] -> [DMESG-WARN][11] ([fdo#108566]) +6 similar issues
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-apl8/igt@gem_workarounds@suspend-resume.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-apl4/igt@gem_workarounds@suspend-resume.html
* igt@i915_pm_rpm@gem-pread:
- shard-hsw: [PASS][12] -> [FAIL][13] ([fdo#111548]) +7 similar issues
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw7/igt@i915_pm_rpm@gem-pread.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw7/igt@i915_pm_rpm@gem-pread.html
* igt@kms_cursor_legacy@cursor-vs-flip-atomic:
- shard-hsw: [PASS][14] -> [FAIL][15] ([fdo#103355])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw8/igt@kms_cursor_legacy@cursor-vs-flip-atomic.html
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw1/igt@kms_cursor_legacy@cursor-vs-flip-atomic.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-glk: [PASS][16] -> [FAIL][17] ([fdo#105363])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-glk5/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-glk3/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
* igt@kms_flip@flip-vs-suspend:
- shard-iclb: [PASS][18] -> [INCOMPLETE][19] ([fdo#107713] / [fdo#109507])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb3/igt@kms_flip@flip-vs-suspend.html
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb3/igt@kms_flip@flip-vs-suspend.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt:
- shard-iclb: [PASS][20] -> [FAIL][21] ([fdo#103167]) +1 similar issue
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb2/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt.html
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt.html
* igt@kms_psr@psr2_cursor_mmap_cpu:
- shard-iclb: [PASS][22] -> [SKIP][23] ([fdo#109441])
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb2/igt@kms_psr@psr2_cursor_mmap_cpu.html
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb8/igt@kms_psr@psr2_cursor_mmap_cpu.html
* igt@kms_setmode@basic:
- shard-hsw: [PASS][24] -> [FAIL][25] ([fdo#99912])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw7/igt@kms_setmode@basic.html
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw4/igt@kms_setmode@basic.html
* igt@perf_pmu@render-node-busy-rcs0:
- shard-apl: [PASS][26] -> [FAIL][27] ([fdo#111545])
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-apl3/igt@perf_pmu@render-node-busy-rcs0.html
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-apl1/igt@perf_pmu@render-node-busy-rcs0.html
#### Possible fixes ####
* igt@gem_ctx_shared@exec-single-timeline-bsd:
- shard-iclb: [SKIP][28] ([fdo#110841]) -> [PASS][29]
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb1/igt@gem_ctx_shared@exec-single-timeline-bsd.html
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb8/igt@gem_ctx_shared@exec-single-timeline-bsd.html
* igt@gem_exec_async@concurrent-writes-bsd:
- shard-iclb: [SKIP][30] ([fdo#111325]) -> [PASS][31] +2 similar issues
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb4/igt@gem_exec_async@concurrent-writes-bsd.html
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb6/igt@gem_exec_async@concurrent-writes-bsd.html
* igt@gem_exec_schedule@reorder-wide-bsd1:
- shard-iclb: [SKIP][32] ([fdo#109276]) -> [PASS][33] +12 similar issues
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb6/igt@gem_exec_schedule@reorder-wide-bsd1.html
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb2/igt@gem_exec_schedule@reorder-wide-bsd1.html
* igt@i915_pm_rpm@modeset-stress-extra-wait:
- shard-hsw: [FAIL][34] ([fdo#111548]) -> [PASS][35] +4 similar issues
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw2/igt@i915_pm_rpm@modeset-stress-extra-wait.html
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw2/igt@i915_pm_rpm@modeset-stress-extra-wait.html
* igt@kms_big_fb@x-tiled-16bpp-rotate-180:
- shard-apl: [INCOMPLETE][36] ([fdo#103927]) -> [PASS][37] +3 similar issues
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-apl7/igt@kms_big_fb@x-tiled-16bpp-rotate-180.html
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-apl7/igt@kms_big_fb@x-tiled-16bpp-rotate-180.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move:
- shard-iclb: [FAIL][38] ([fdo#103167]) -> [PASS][39] +3 similar issues
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move.html
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move.html
* igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
- shard-snb: [FAIL][40] ([fdo#103375]) -> [PASS][41] +2 similar issues
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-snb7/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a.html
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-snb2/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a.html
* igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
- shard-hsw: [FAIL][42] ([fdo#103375]) -> [PASS][43] +4 similar issues
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw2/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c.html
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw6/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c.html
* igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes:
- shard-kbl: [INCOMPLETE][44] ([fdo#103665]) -> [PASS][45]
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-kbl3/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-kbl1/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html
- shard-apl: [DMESG-WARN][46] ([fdo#108566]) -> [PASS][47] +2 similar issues
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-apl4/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-apl4/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html
* igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
- shard-iclb: [INCOMPLETE][48] ([fdo#107713]) -> [PASS][49] +1 similar issue
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb7/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb6/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html
* igt@kms_psr2_su@frontbuffer:
- shard-iclb: [SKIP][50] ([fdo#109642] / [fdo#111068]) -> [PASS][51]
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb5/igt@kms_psr2_su@frontbuffer.html
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb2/igt@kms_psr2_su@frontbuffer.html
* igt@kms_psr@psr2_cursor_render:
- shard-iclb: [SKIP][52] ([fdo#109441]) -> [PASS][53]
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb8/igt@kms_psr@psr2_cursor_render.html
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb2/igt@kms_psr@psr2_cursor_render.html
* igt@kms_setmode@basic:
- shard-kbl: [FAIL][54] ([fdo#99912]) -> [PASS][55]
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-kbl2/igt@kms_setmode@basic.html
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-kbl7/igt@kms_setmode@basic.html
* igt@perf_pmu@busy-idle-vcs0:
- shard-apl: [FAIL][56] ([fdo#111545]) -> [PASS][57] +1 similar issue
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-apl3/igt@perf_pmu@busy-idle-vcs0.html
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-apl5/igt@perf_pmu@busy-idle-vcs0.html
#### Warnings ####
* igt@gem_mocs_settings@mocs-settings-bsd2:
- shard-iclb: [SKIP][58] ([fdo#109276]) -> [FAIL][59] ([fdo#111330]) +1 similar issue
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb6/igt@gem_mocs_settings@mocs-settings-bsd2.html
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb2/igt@gem_mocs_settings@mocs-settings-bsd2.html
* igt@i915_pm_rpm@modeset-lpsp:
- shard-hsw: [FAIL][60] ([fdo#111548]) -> [SKIP][61] ([fdo#109271])
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw2/igt@i915_pm_rpm@modeset-lpsp.html
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw1/igt@i915_pm_rpm@modeset-lpsp.html
* igt@i915_pm_rpm@modeset-pc8-residency-stress:
- shard-hsw: [SKIP][62] ([fdo#109271]) -> [FAIL][63] ([fdo#111548]) +1 similar issue
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw5/igt@i915_pm_rpm@modeset-pc8-residency-stress.html
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw7/igt@i915_pm_rpm@modeset-pc8-residency-stress.html
* igt@perf_pmu@cpu-hotplug:
- shard-hsw: [TIMEOUT][64] ([fdo#111546]) -> [INCOMPLETE][65] ([fdo#103540])
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw2/igt@perf_pmu@cpu-hotplug.html
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw1/igt@perf_pmu@cpu-hotplug.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103355]: https://bugs.freedesktop.org/show_bug.cgi?id=103355
[fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
[fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
[fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#105363]: https://bugs.freedesktop.org/show_bug.cgi?id=105363
[fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
[fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#109507]: https://bugs.freedesktop.org/show_bug.cgi?id=109507
[fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
[fdo#110841]: https://bugs.freedesktop.org/show_bug.cgi?id=110841
[fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
[fdo#111325]: https://bugs.freedesktop.org/show_bug.cgi?id=111325
[fdo#111330]: https://bugs.freedesktop.org/show_bug.cgi?id=111330
[fdo#111545]: https://bugs.freedesktop.org/show_bug.cgi?id=111545
[fdo#111546]: https://bugs.freedesktop.org/show_bug.cgi?id=111546
[fdo#111548]: https://bugs.freedesktop.org/show_bug.cgi?id=111548
[fdo#111550]: https://bugs.freedesktop.org/show_bug.cgi?id=111550
[fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912
Participating hosts (10 -> 6)
------------------------------
Missing (4): pig-skl-6260u shard-skl pig-hsw-4770r pig-glk-j5005
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_5171 -> IGTPW_3422
* Piglit: piglit_4509 -> None
CI-20190529: 20190529
CI_DRM_6838: 8e907b7591b620dba402c7ada493a31ca0320c99 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3422: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/
IGT_5171: 1911564805fe454919e8a5846534a0c1ef376a33 @ 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_3422/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test
2019-09-05 14:35 [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test Simon Ser
` (2 preceding siblings ...)
2019-09-05 18:47 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2019-09-06 6:15 ` Arkadiusz Hiler
3 siblings, 0 replies; 7+ messages in thread
From: Arkadiusz Hiler @ 2019-09-06 6:15 UTC (permalink / raw)
To: Simon Ser; +Cc: igt-dev
On Thu, Sep 05, 2019 at 05:35:30PM +0300, Simon Ser wrote:
> This test performs a single atomic commit on multiple CRTCs at once. The goal
> is to check that a page-flip event for each CRTC is received.
>
> I chose not to integrate this to an existing test, because kms_atomic is
> basically a single function with lots of options. Integrating this test to
> kms_atomic would mix up these two and make it difficult to understand the test.
>
> Signed-off-by: Simon Ser <simon.ser@intel.com>
Hey,
This series introduces new undocumented tests:
kms_atomic_multi
kms_atomic_multi@2x-flip
Can you document them as per the requirement in the [CONTRIBUTING.md]?
[Documentation] has more details on how to do this.
Here are few examples:
https://gitlab.freedesktop.org/drm/igt-gpu-tools/commit/0316695d03aa46108296b27f3982ec93200c7a6e
https://gitlab.freedesktop.org/drm/igt-gpu-tools/commit/443cc658e1e6b492ee17bf4f4d891029eb7a205d
Thanks in advance!
[CONTRIBUTING.md]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/blob/master/CONTRIBUTING.md#L19
[Documentation]: https://drm.pages.freedesktop.org/igt-gpu-tools/igt-gpu-tools-Core.html#igt-describe
--
Cheers,
Arek
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test
2019-09-05 14:51 ` Ville Syrjälä
@ 2019-09-06 14:15 ` Ser, Simon
2019-09-06 14:44 ` Ville Syrjälä
0 siblings, 1 reply; 7+ messages in thread
From: Ser, Simon @ 2019-09-06 14:15 UTC (permalink / raw)
To: ville.syrjala; +Cc: igt-dev
Thanks for the review!
On Thu, 2019-09-05 at 17:51 +0300, Ville Syrjälä wrote:
> On Thu, Sep 05, 2019 at 05:35:30PM +0300, Simon Ser wrote:
> > This test performs a single atomic commit on multiple CRTCs at once. The goal
> > is to check that a page-flip event for each CRTC is received.
> >
> > I chose not to integrate this to an existing test, because kms_atomic is
> > basically a single function with lots of options. Integrating this test to
> > kms_atomic would mix up these two and make it difficult to understand the test.
> >
> > Signed-off-by: Simon Ser <simon.ser@intel.com>
> > ---
> >
> > This is basically the test I wrote while reviewing the kms_dp_tiled_display
> > series [1]. I'm sending it as an RFC to know if there's any interest in having
> > it merged.
> >
> > [1]: https://lists.freedesktop.org/archives/igt-dev/2019-August/015724.html
> >
> > tests/Makefile.sources | 1 +
> > tests/kms_atomic_multi.c | 149 +++++++++++++++++++++++++++++++++++++++
> > tests/meson.build | 1 +
> > 3 files changed, 151 insertions(+)
> > create mode 100644 tests/kms_atomic_multi.c
> >
> > diff --git a/tests/Makefile.sources b/tests/Makefile.sources
> > index c02e4d9489f2..e08968d2b0fc 100644
> > --- a/tests/Makefile.sources
> > +++ b/tests/Makefile.sources
> > @@ -29,6 +29,7 @@ TESTS_progs = \
> > kms_atomic \
> > kms_atomic_interruptible \
> > kms_atomic_transition \
> > + kms_atomic_multi \
> > kms_available_modes_crc \
> > kms_big_fb \
> > kms_busy \
> > diff --git a/tests/kms_atomic_multi.c b/tests/kms_atomic_multi.c
> > new file mode 100644
> > index 000000000000..96212ab9a1e6
> > --- /dev/null
> > +++ b/tests/kms_atomic_multi.c
> > @@ -0,0 +1,149 @@
> > +/*
> > + * Copyright © 2018 Intel Corporation
> > + *
> > + * Permission is hereby granted, free of charge, to any person obtaining a
> > + * copy of this software and associated documentation files (the "Software"),
> > + * to deal in the Software without restriction, including without limitation
> > + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> > + * and/or sell copies of the Software, and to permit persons to whom the
> > + * Software is furnished to do so, subject to the following conditions:
> > + *
> > + * The above copyright notice and this permission notice (including the next
> > + * paragraph) shall be included in all copies or substantial portions of the
> > + * Software.
> > + *
> > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> > + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> > + * IN THE SOFTWARE.
> > + */
> > +
> > +#include <poll.h>
> > +#include <drm_mode.h>
> > +#include <drm_fourcc.h>
> > +#include "igt.h"
> > +
> > +struct test_connector {
> > + igt_output_t *output;
> > + struct igt_fb fb;
> > + drmModeConnectorPtr connector;
> > + enum pipe pipe;
> > + bool page_flip;
> > +};
> > +
> > +struct test_data {
> > + int drm_fd;
> > + igt_display_t *display;
> > + struct test_connector conns[2];
> > +};
> > +
> > +static void create_fb(struct test_data *data, struct test_connector *conn)
> > +{
> > + igt_plane_t *primary;
> > + drmModeModeInfo *mode;
> > +
> > + mode = igt_output_get_mode(conn->output);
> > + igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
> > + DRM_FORMAT_XBGR8888, LOCAL_DRM_FORMAT_MOD_NONE,
> > + &conn->fb);
> > +
> > + primary = igt_output_get_plane_type(conn->output, DRM_PLANE_TYPE_PRIMARY);
> > + igt_assert(primary);
> > +
> > + igt_plane_set_fb(primary, &conn->fb);
> > +}
> > +
> > +static void pick_2_outputs(struct test_data *data)
> > +{
> > + igt_output_t *output;
> > + struct test_connector *conn;
> > + size_t i;
> > +
> > + i = 0;
> > + for_each_connected_output(data->display, output) {
> > + if (i >= 2)
> > + break;
> > +
> > + conn = &data->conns[i];
> > + conn->output = output;
> > + conn->pipe = i;
>
> That assumes every output can be driven by any pipe.
> Using for_each_valid_output_on_pipe() should avoid that
> assumption.
>
> > + igt_output_set_pipe(output, conn->pipe);
> > + i++;
> > + }
> > +
> > + igt_skip_on(i < 2);
> > + /* TODO: test_only commit, skip on failure */
> > + igt_display_commit_atomic(data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> > +}
> > +
> > +static void page_flip_handler(int fd, unsigned seq, unsigned tv_sec,
> > + unsigned tv_usec, unsigned crtc_id, void *_data)
> > +{
> > + struct test_data *data = _data;
> > + struct test_connector *conn;
> > + size_t i;
> > +
> > + for (i = 0; i < sizeof(data->conns) / sizeof(data->conns[0]); i++) {
>
> ARRAY_SIZE()
>
> > + conn = &data->conns[i];
> > + if (data->display->pipes[conn->pipe].crtc_id == crtc_id) {
> > + igt_assert_f(!conn->page_flip,
> > + "Got two page-flips for CRTC %u\n",
> > + crtc_id);
> > + conn->page_flip = true;
> > + return;
> > + }
> > + }
> > +
> > + igt_assert_f(0, "Got page-flip event for unexpected CRTC %u\n", crtc_id);
> > +}
> > +
> > +igt_main
> > +{
> > + int ret;
> > + struct test_data data = {0};
> > + igt_display_t display;
> > + struct pollfd pfd = {0};
> > + drmEventContext drm_event = {0};
> > + int i;
> > +
> > + igt_fixture {
> > + data.drm_fd = drm_open_driver_master(DRIVER_ANY);
> > + kmstest_set_vt_graphics_mode();
> > + igt_display_require(&display, data.drm_fd);
> > + igt_display_reset(&display);
> > + igt_require(display.is_atomic);
> > + data.display = &display;
> > +
> > + pfd.fd = data.drm_fd;
> > + pfd.events = POLLIN;
> > +
> > + drm_event.version = 3;
> > + drm_event.page_flip_handler2 = page_flip_handler;
> > + }
> > +
> > + igt_subtest("2x-flip") {
>
> Are we planning more subtests? I guess 1x,2x,3x,... might be nice?
Indeed
> > + pick_2_outputs(&data);
> > +
> > + create_fb(&data, &data.conns[0]);
> > + create_fb(&data, &data.conns[1]);
> > +
> > + igt_display_commit_atomic(data.display, DRM_MODE_ATOMIC_NONBLOCK |
> > + DRM_MODE_PAGE_FLIP_EVENT, &data);
> > +
> > + /* TODO: handle two events sent at once */
> > + for (i = 0; i < 2; i++) {
> > + ret = poll(&pfd, 1, 1000);
> > + igt_assert(ret == 1);
> > + drmHandleEvent(data.drm_fd, &drm_event);
>
> Not verifying that we didn't get too many events?
This is done in page_flip_handler
> I guess it might also be nice to have different subtests
> for page flips and full modesets.
Yeah, I plan on expanding this test with more subtests
> I guess there is no generic way to force the kernel to modeset
> a crtc we didn't explicitly include in the request, so can't
> really test that scenario :(
Hmm, not sure I get this scenario. How could we modeset a CRTC not
included in the atomic request? Can you elaborate?
> > + }
> > + }
> > +
> > + igt_fixture {
> > + close(data.drm_fd);
> > + kmstest_restore_vt_mode();
> > + igt_display_fini(data.display);
> > + }
> > +}
> > diff --git a/tests/meson.build b/tests/meson.build
> > index a7b2b3221304..df00ab4a2f81 100644
> > --- a/tests/meson.build
> > +++ b/tests/meson.build
> > @@ -14,6 +14,7 @@ test_progs = [
> > 'kms_atomic',
> > 'kms_atomic_interruptible',
> > 'kms_atomic_transition',
> > + 'kms_atomic_multi',
> > 'kms_available_modes_crc',
> > 'kms_big_fb',
> > 'kms_busy',
> > --
> > 2.23.0
> >
> > _______________________________________________
> > igt-dev mailing list
> > igt-dev@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/igt-dev
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test
2019-09-06 14:15 ` Ser, Simon
@ 2019-09-06 14:44 ` Ville Syrjälä
0 siblings, 0 replies; 7+ messages in thread
From: Ville Syrjälä @ 2019-09-06 14:44 UTC (permalink / raw)
To: Ser, Simon; +Cc: igt-dev
On Fri, Sep 06, 2019 at 02:15:10PM +0000, Ser, Simon wrote:
> Thanks for the review!
>
> On Thu, 2019-09-05 at 17:51 +0300, Ville Syrjälä wrote:
> > On Thu, Sep 05, 2019 at 05:35:30PM +0300, Simon Ser wrote:
> > > This test performs a single atomic commit on multiple CRTCs at once. The goal
> > > is to check that a page-flip event for each CRTC is received.
> > >
> > > I chose not to integrate this to an existing test, because kms_atomic is
> > > basically a single function with lots of options. Integrating this test to
> > > kms_atomic would mix up these two and make it difficult to understand the test.
> > >
> > > Signed-off-by: Simon Ser <simon.ser@intel.com>
> > > ---
> > >
> > > This is basically the test I wrote while reviewing the kms_dp_tiled_display
> > > series [1]. I'm sending it as an RFC to know if there's any interest in having
> > > it merged.
> > >
> > > [1]: https://lists.freedesktop.org/archives/igt-dev/2019-August/015724.html
> > >
> > > tests/Makefile.sources | 1 +
> > > tests/kms_atomic_multi.c | 149 +++++++++++++++++++++++++++++++++++++++
> > > tests/meson.build | 1 +
> > > 3 files changed, 151 insertions(+)
> > > create mode 100644 tests/kms_atomic_multi.c
> > >
> > > diff --git a/tests/Makefile.sources b/tests/Makefile.sources
> > > index c02e4d9489f2..e08968d2b0fc 100644
> > > --- a/tests/Makefile.sources
> > > +++ b/tests/Makefile.sources
> > > @@ -29,6 +29,7 @@ TESTS_progs = \
> > > kms_atomic \
> > > kms_atomic_interruptible \
> > > kms_atomic_transition \
> > > + kms_atomic_multi \
> > > kms_available_modes_crc \
> > > kms_big_fb \
> > > kms_busy \
> > > diff --git a/tests/kms_atomic_multi.c b/tests/kms_atomic_multi.c
> > > new file mode 100644
> > > index 000000000000..96212ab9a1e6
> > > --- /dev/null
> > > +++ b/tests/kms_atomic_multi.c
> > > @@ -0,0 +1,149 @@
> > > +/*
> > > + * Copyright © 2018 Intel Corporation
> > > + *
> > > + * Permission is hereby granted, free of charge, to any person obtaining a
> > > + * copy of this software and associated documentation files (the "Software"),
> > > + * to deal in the Software without restriction, including without limitation
> > > + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> > > + * and/or sell copies of the Software, and to permit persons to whom the
> > > + * Software is furnished to do so, subject to the following conditions:
> > > + *
> > > + * The above copyright notice and this permission notice (including the next
> > > + * paragraph) shall be included in all copies or substantial portions of the
> > > + * Software.
> > > + *
> > > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> > > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> > > + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> > > + * IN THE SOFTWARE.
> > > + */
> > > +
> > > +#include <poll.h>
> > > +#include <drm_mode.h>
> > > +#include <drm_fourcc.h>
> > > +#include "igt.h"
> > > +
> > > +struct test_connector {
> > > + igt_output_t *output;
> > > + struct igt_fb fb;
> > > + drmModeConnectorPtr connector;
> > > + enum pipe pipe;
> > > + bool page_flip;
> > > +};
> > > +
> > > +struct test_data {
> > > + int drm_fd;
> > > + igt_display_t *display;
> > > + struct test_connector conns[2];
> > > +};
> > > +
> > > +static void create_fb(struct test_data *data, struct test_connector *conn)
> > > +{
> > > + igt_plane_t *primary;
> > > + drmModeModeInfo *mode;
> > > +
> > > + mode = igt_output_get_mode(conn->output);
> > > + igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
> > > + DRM_FORMAT_XBGR8888, LOCAL_DRM_FORMAT_MOD_NONE,
> > > + &conn->fb);
> > > +
> > > + primary = igt_output_get_plane_type(conn->output, DRM_PLANE_TYPE_PRIMARY);
> > > + igt_assert(primary);
> > > +
> > > + igt_plane_set_fb(primary, &conn->fb);
> > > +}
> > > +
> > > +static void pick_2_outputs(struct test_data *data)
> > > +{
> > > + igt_output_t *output;
> > > + struct test_connector *conn;
> > > + size_t i;
> > > +
> > > + i = 0;
> > > + for_each_connected_output(data->display, output) {
> > > + if (i >= 2)
> > > + break;
> > > +
> > > + conn = &data->conns[i];
> > > + conn->output = output;
> > > + conn->pipe = i;
> >
> > That assumes every output can be driven by any pipe.
> > Using for_each_valid_output_on_pipe() should avoid that
> > assumption.
> >
> > > + igt_output_set_pipe(output, conn->pipe);
> > > + i++;
> > > + }
> > > +
> > > + igt_skip_on(i < 2);
> > > + /* TODO: test_only commit, skip on failure */
> > > + igt_display_commit_atomic(data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> > > +}
> > > +
> > > +static void page_flip_handler(int fd, unsigned seq, unsigned tv_sec,
> > > + unsigned tv_usec, unsigned crtc_id, void *_data)
> > > +{
> > > + struct test_data *data = _data;
> > > + struct test_connector *conn;
> > > + size_t i;
> > > +
> > > + for (i = 0; i < sizeof(data->conns) / sizeof(data->conns[0]); i++) {
> >
> > ARRAY_SIZE()
> >
> > > + conn = &data->conns[i];
> > > + if (data->display->pipes[conn->pipe].crtc_id == crtc_id) {
> > > + igt_assert_f(!conn->page_flip,
> > > + "Got two page-flips for CRTC %u\n",
> > > + crtc_id);
> > > + conn->page_flip = true;
> > > + return;
> > > + }
> > > + }
> > > +
> > > + igt_assert_f(0, "Got page-flip event for unexpected CRTC %u\n", crtc_id);
> > > +}
> > > +
> > > +igt_main
> > > +{
> > > + int ret;
> > > + struct test_data data = {0};
> > > + igt_display_t display;
> > > + struct pollfd pfd = {0};
> > > + drmEventContext drm_event = {0};
> > > + int i;
> > > +
> > > + igt_fixture {
> > > + data.drm_fd = drm_open_driver_master(DRIVER_ANY);
> > > + kmstest_set_vt_graphics_mode();
> > > + igt_display_require(&display, data.drm_fd);
> > > + igt_display_reset(&display);
> > > + igt_require(display.is_atomic);
> > > + data.display = &display;
> > > +
> > > + pfd.fd = data.drm_fd;
> > > + pfd.events = POLLIN;
> > > +
> > > + drm_event.version = 3;
> > > + drm_event.page_flip_handler2 = page_flip_handler;
> > > + }
> > > +
> > > + igt_subtest("2x-flip") {
> >
> > Are we planning more subtests? I guess 1x,2x,3x,... might be nice?
>
> Indeed
>
> > > + pick_2_outputs(&data);
> > > +
> > > + create_fb(&data, &data.conns[0]);
> > > + create_fb(&data, &data.conns[1]);
> > > +
> > > + igt_display_commit_atomic(data.display, DRM_MODE_ATOMIC_NONBLOCK |
> > > + DRM_MODE_PAGE_FLIP_EVENT, &data);
> > > +
> > > + /* TODO: handle two events sent at once */
> > > + for (i = 0; i < 2; i++) {
> > > + ret = poll(&pfd, 1, 1000);
> > > + igt_assert(ret == 1);
> > > + drmHandleEvent(data.drm_fd, &drm_event);
> >
> > Not verifying that we didn't get too many events?
>
> This is done in page_flip_handler
>
> > I guess it might also be nice to have different subtests
> > for page flips and full modesets.
>
> Yeah, I plan on expanding this test with more subtests
>
> > I guess there is no generic way to force the kernel to modeset
> > a crtc we didn't explicitly include in the request, so can't
> > really test that scenario :(
>
> Hmm, not sure I get this scenario. How could we modeset a CRTC not
> included in the atomic request? Can you elaborate?
Current scenarios are:
- cdclk frequency needs to be changed
- ran out of FDI bandwidth on IVB and need to reduce the
other pipe's contribution
Future scenarios I want to get fixed:
- ran out of MST link bandwidth and need to reduce other pipes'
contributions
>
> > > + }
> > > + }
> > > +
> > > + igt_fixture {
> > > + close(data.drm_fd);
> > > + kmstest_restore_vt_mode();
> > > + igt_display_fini(data.display);
> > > + }
> > > +}
> > > diff --git a/tests/meson.build b/tests/meson.build
> > > index a7b2b3221304..df00ab4a2f81 100644
> > > --- a/tests/meson.build
> > > +++ b/tests/meson.build
> > > @@ -14,6 +14,7 @@ test_progs = [
> > > 'kms_atomic',
> > > 'kms_atomic_interruptible',
> > > 'kms_atomic_transition',
> > > + 'kms_atomic_multi',
> > > 'kms_available_modes_crc',
> > > 'kms_big_fb',
> > > 'kms_busy',
> > > --
> > > 2.23.0
> > >
> > > _______________________________________________
> > > igt-dev mailing list
> > > igt-dev@lists.freedesktop.org
> > > https://lists.freedesktop.org/mailman/listinfo/igt-dev
--
Ville Syrjälä
Intel
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2019-09-06 14:44 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-05 14:35 [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test Simon Ser
2019-09-05 14:51 ` Ville Syrjälä
2019-09-06 14:15 ` Ser, Simon
2019-09-06 14:44 ` Ville Syrjälä
2019-09-05 15:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2019-09-05 18:47 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2019-09-06 6:15 ` [igt-dev] [PATCH RFC i-g-t] " Arkadiusz Hiler
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.