From: Liviu Dudau <liviu.dudau@arm.com> To: Brian Starkey <brian.starkey@arm.com> Cc: Boris Brezillon <boris.brezillon@free-electrons.com>, Intel GFX ML <intel-gfx@lists.freedesktop.org>, IGT GPU Tools <igt-dev@lists.freedesktop.org> Subject: [PATCH i-g-t v5 6/6] kms_writeback: Add tests using a cloned output Date: Tue, 15 Jan 2019 17:47:47 +0000 [thread overview] Message-ID: <20190115174747.3138-7-liviu.dudau@arm.com> (raw) In-Reply-To: <20190115174747.3138-1-liviu.dudau@arm.com> From: Brian Starkey <brian.starkey@arm.com> Update the connector search to also optionally attempt to find a non-writeback connector to clone to. Add a subtest which is the same as writeback-check-output, but also clones to the second connector. Signed-off-by: Brian Starkey <brian.starkey@arm.com> [rebased and addressed comments by Maarten] Signed-off-by: Liviu Dudau <liviu.dudau@arm.com> --- tests/kms_writeback.c | 64 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 5 deletions(-) diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c index 0f20dadd2..ae536bbfa 100644 --- a/tests/kms_writeback.c +++ b/tests/kms_writeback.c @@ -51,7 +51,8 @@ static drmModePropertyBlobRes *get_writeback_formats_blob(igt_output_t *output) return blob; } -static bool check_writeback_config(igt_display_t *display, igt_output_t *output) +static bool check_writeback_config(igt_display_t *display, igt_output_t *output, + int pipe, igt_output_t **clone) { igt_fb_t input_fb, output_fb; igt_plane_t *plane; @@ -91,6 +92,30 @@ static bool check_writeback_config(igt_display_t *display, igt_output_t *output) ret = igt_display_try_commit_atomic(display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); + if (!ret && clone) { + /* Try and find a clone */ + int i, newret; + *clone = NULL; + + for (i = 0; i < display->n_outputs; i++) { + igt_output_t *second_output = &display->outputs[i]; + if (output != second_output && + igt_pipe_connector_valid(pipe, second_output)) { + + igt_output_clone_pipe(second_output, pipe); + igt_output_override_mode(output, &override_mode); + newret = igt_display_try_commit_atomic(display, DRM_MODE_ATOMIC_TEST_ONLY | + DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); + igt_output_set_pipe(second_output, PIPE_NONE); + igt_debug("try_commit_atomic clone returned %d\n", newret); + if (!newret) { + *clone = second_output; + igt_debug("Selected clone %s\n", (*clone)->name); + break; + } + } + } + } igt_plane_set_fb(plane, NULL); igt_remove_fb(display->drm_fd, &input_fb); igt_remove_fb(display->drm_fd, &output_fb); @@ -98,7 +123,8 @@ static bool check_writeback_config(igt_display_t *display, igt_output_t *output) return !ret; } -static igt_output_t *kms_writeback_get_output(igt_display_t *display) +static igt_output_t *kms_writeback_get_output(igt_display_t *display, enum pipe *pipe, + igt_output_t **clone) { int i; @@ -114,10 +140,16 @@ static igt_output_t *kms_writeback_get_output(igt_display_t *display) for (j = 0; j < igt_display_get_n_pipes(display); j++) { igt_output_set_pipe(output, j); - if (check_writeback_config(display, output)) { + if (check_writeback_config(display, output, j, clone)) { igt_debug("Using connector %u:%s on pipe %d\n", output->config.connector->connector_id, output->name, j); + if (clone && *clone) + igt_debug("Cloning to connector %u:%s\n", + (*clone)->config.connector->connector_id, + (*clone)->name); + if (pipe) + *pipe = j; return output; } } @@ -335,10 +367,11 @@ static void writeback_check_output(igt_output_t *output, igt_plane_t *plane, igt_main { igt_display_t display; - igt_output_t *output; + igt_output_t *output, *clone; igt_plane_t *plane; igt_fb_t input_fb; drmModeModeInfo mode; + enum pipe pipe; int ret; memset(&display, 0, sizeof(display)); @@ -353,7 +386,7 @@ igt_main igt_require(display.is_atomic); - output = kms_writeback_get_output(&display); + output = kms_writeback_get_output(&display, &pipe, &clone); igt_require(output); if (output->use_override_mode) @@ -431,6 +464,27 @@ igt_main igt_remove_fb(display.drm_fd, &output_fb); } + igt_subtest("writeback-check-output-clone") { + igt_fb_t output_fb; + + igt_require(clone); + + ret = igt_create_fb(display.drm_fd, mode.hdisplay, mode.vdisplay, + DRM_FORMAT_XRGB8888, + igt_fb_mod_to_tiling(0), + &output_fb); + igt_require(ret > 0); + + igt_output_clone_pipe(clone, pipe); + igt_output_override_mode(clone, &mode); + + writeback_check_output(output, plane, &input_fb, &output_fb); + + igt_output_set_pipe(clone, PIPE_NONE); + + igt_remove_fb(display.drm_fd, &output_fb); + } + igt_fixture { igt_remove_fb(display.drm_fd, &input_fb); igt_display_fini(&display); -- 2.20.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
WARNING: multiple messages have this Message-ID (diff)
From: Liviu Dudau <liviu.dudau@arm.com> To: Brian Starkey <brian.starkey@arm.com> Cc: Boris Brezillon <boris.brezillon@free-electrons.com>, Petri Latvala <petri.latvala@intel.com>, Intel GFX ML <intel-gfx@lists.freedesktop.org>, IGT GPU Tools <igt-dev@lists.freedesktop.org>, Daniel Vetter <daniel@ffwll.ch> Subject: [igt-dev] [PATCH i-g-t v5 6/6] kms_writeback: Add tests using a cloned output Date: Tue, 15 Jan 2019 17:47:47 +0000 [thread overview] Message-ID: <20190115174747.3138-7-liviu.dudau@arm.com> (raw) In-Reply-To: <20190115174747.3138-1-liviu.dudau@arm.com> From: Brian Starkey <brian.starkey@arm.com> Update the connector search to also optionally attempt to find a non-writeback connector to clone to. Add a subtest which is the same as writeback-check-output, but also clones to the second connector. Signed-off-by: Brian Starkey <brian.starkey@arm.com> [rebased and addressed comments by Maarten] Signed-off-by: Liviu Dudau <liviu.dudau@arm.com> --- tests/kms_writeback.c | 64 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 5 deletions(-) diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c index 0f20dadd2..ae536bbfa 100644 --- a/tests/kms_writeback.c +++ b/tests/kms_writeback.c @@ -51,7 +51,8 @@ static drmModePropertyBlobRes *get_writeback_formats_blob(igt_output_t *output) return blob; } -static bool check_writeback_config(igt_display_t *display, igt_output_t *output) +static bool check_writeback_config(igt_display_t *display, igt_output_t *output, + int pipe, igt_output_t **clone) { igt_fb_t input_fb, output_fb; igt_plane_t *plane; @@ -91,6 +92,30 @@ static bool check_writeback_config(igt_display_t *display, igt_output_t *output) ret = igt_display_try_commit_atomic(display, DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); + if (!ret && clone) { + /* Try and find a clone */ + int i, newret; + *clone = NULL; + + for (i = 0; i < display->n_outputs; i++) { + igt_output_t *second_output = &display->outputs[i]; + if (output != second_output && + igt_pipe_connector_valid(pipe, second_output)) { + + igt_output_clone_pipe(second_output, pipe); + igt_output_override_mode(output, &override_mode); + newret = igt_display_try_commit_atomic(display, DRM_MODE_ATOMIC_TEST_ONLY | + DRM_MODE_ATOMIC_ALLOW_MODESET, NULL); + igt_output_set_pipe(second_output, PIPE_NONE); + igt_debug("try_commit_atomic clone returned %d\n", newret); + if (!newret) { + *clone = second_output; + igt_debug("Selected clone %s\n", (*clone)->name); + break; + } + } + } + } igt_plane_set_fb(plane, NULL); igt_remove_fb(display->drm_fd, &input_fb); igt_remove_fb(display->drm_fd, &output_fb); @@ -98,7 +123,8 @@ static bool check_writeback_config(igt_display_t *display, igt_output_t *output) return !ret; } -static igt_output_t *kms_writeback_get_output(igt_display_t *display) +static igt_output_t *kms_writeback_get_output(igt_display_t *display, enum pipe *pipe, + igt_output_t **clone) { int i; @@ -114,10 +140,16 @@ static igt_output_t *kms_writeback_get_output(igt_display_t *display) for (j = 0; j < igt_display_get_n_pipes(display); j++) { igt_output_set_pipe(output, j); - if (check_writeback_config(display, output)) { + if (check_writeback_config(display, output, j, clone)) { igt_debug("Using connector %u:%s on pipe %d\n", output->config.connector->connector_id, output->name, j); + if (clone && *clone) + igt_debug("Cloning to connector %u:%s\n", + (*clone)->config.connector->connector_id, + (*clone)->name); + if (pipe) + *pipe = j; return output; } } @@ -335,10 +367,11 @@ static void writeback_check_output(igt_output_t *output, igt_plane_t *plane, igt_main { igt_display_t display; - igt_output_t *output; + igt_output_t *output, *clone; igt_plane_t *plane; igt_fb_t input_fb; drmModeModeInfo mode; + enum pipe pipe; int ret; memset(&display, 0, sizeof(display)); @@ -353,7 +386,7 @@ igt_main igt_require(display.is_atomic); - output = kms_writeback_get_output(&display); + output = kms_writeback_get_output(&display, &pipe, &clone); igt_require(output); if (output->use_override_mode) @@ -431,6 +464,27 @@ igt_main igt_remove_fb(display.drm_fd, &output_fb); } + igt_subtest("writeback-check-output-clone") { + igt_fb_t output_fb; + + igt_require(clone); + + ret = igt_create_fb(display.drm_fd, mode.hdisplay, mode.vdisplay, + DRM_FORMAT_XRGB8888, + igt_fb_mod_to_tiling(0), + &output_fb); + igt_require(ret > 0); + + igt_output_clone_pipe(clone, pipe); + igt_output_override_mode(clone, &mode); + + writeback_check_output(output, plane, &input_fb, &output_fb); + + igt_output_set_pipe(clone, PIPE_NONE); + + igt_remove_fb(display.drm_fd, &output_fb); + } + igt_fixture { igt_remove_fb(display.drm_fd, &input_fb); igt_display_fini(&display); -- 2.20.1 _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev
next prev parent reply other threads:[~2019-01-15 17:47 UTC|newest] Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-01-15 17:47 [PATCH i-g-t v5 0/6] igt: Add support for testing writeback connectors Liviu Dudau 2019-01-15 17:47 ` [igt-dev] " Liviu Dudau 2019-01-15 17:47 ` [PATCH i-g-t v5 1/6] lib/igt_kms: Add writeback support Liviu Dudau 2019-01-15 17:47 ` [igt-dev] " Liviu Dudau 2019-02-04 13:31 ` Brian Starkey 2019-02-04 13:31 ` [Intel-gfx] " Brian Starkey 2019-03-06 21:30 ` [igt-dev] " Rodrigo Siqueira 2019-03-06 21:30 ` [Intel-gfx] " Rodrigo Siqueira 2019-03-18 10:41 ` Liviu Dudau 2019-03-18 10:41 ` Liviu Dudau 2019-03-18 22:05 ` Rodrigo Siqueira 2019-03-18 22:05 ` Rodrigo Siqueira 2019-03-20 14:46 ` Liviu Dudau 2019-03-20 14:46 ` Liviu Dudau 2019-01-15 17:47 ` [PATCH i-g-t v5 2/6] kms_writeback: Add initial writeback tests Liviu Dudau 2019-01-15 17:47 ` [igt-dev] " Liviu Dudau 2019-01-15 17:47 ` [PATCH i-g-t v5 3/6] lib: Add function to hash a framebuffer Liviu Dudau 2019-01-15 17:47 ` [Intel-gfx] " Liviu Dudau 2019-01-15 18:47 ` Chris Wilson 2019-01-15 18:47 ` [igt-dev] [Intel-gfx] " Chris Wilson 2019-01-16 11:20 ` Liviu Dudau 2019-01-16 11:20 ` [igt-dev] [Intel-gfx] " Liviu Dudau 2019-01-16 11:50 ` Chris Wilson 2019-01-16 11:50 ` [igt-dev] [Intel-gfx] " Chris Wilson 2019-01-16 12:21 ` [PATCH i-g-t v6] " Liviu Dudau 2019-01-16 12:21 ` [igt-dev] " Liviu Dudau 2019-01-15 17:47 ` [PATCH i-g-t v5 4/6] kms_writeback: Add writeback-check-output Liviu Dudau 2019-01-15 17:47 ` [igt-dev] " Liviu Dudau 2019-01-15 17:47 ` [PATCH i-g-t v5 5/6] lib/igt_kms: Add igt_output_clone_pipe for cloning Liviu Dudau 2019-01-15 17:47 ` [igt-dev] " Liviu Dudau 2019-02-04 13:27 ` Brian Starkey 2019-02-04 13:27 ` [igt-dev] " Brian Starkey 2019-01-15 17:47 ` Liviu Dudau [this message] 2019-01-15 17:47 ` [igt-dev] [PATCH i-g-t v5 6/6] kms_writeback: Add tests using a cloned output Liviu Dudau 2019-01-15 19:08 ` [igt-dev] ✓ Fi.CI.BAT: success for igt: Add support for testing writeback connectors (rev3) Patchwork 2019-01-16 0:13 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork 2019-01-16 12:41 ` [igt-dev] ✗ Fi.CI.BAT: failure for igt: Add support for testing writeback connectors (rev4) Patchwork 2019-02-04 13:36 ` [PATCH i-g-t v5 0/6] igt: Add support for testing writeback connectors Brian Starkey 2019-02-04 13:36 ` [igt-dev] " Brian Starkey 2019-03-06 21:42 ` [igt-dev] ✗ Fi.CI.BAT: failure for igt: Add support for testing writeback connectors (rev5) Patchwork
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190115174747.3138-7-liviu.dudau@arm.com \ --to=liviu.dudau@arm.com \ --cc=boris.brezillon@free-electrons.com \ --cc=brian.starkey@arm.com \ --cc=igt-dev@lists.freedesktop.org \ --cc=intel-gfx@lists.freedesktop.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.