[igt-dev] [PATCH i-g-t v2] tests/kms_pipe_crc_basic: Handle absent pipes for disable-crc-after-crtc
Petri Latvala
petri.latvala at intel.com
Thu Nov 19 11:04:36 UTC 2020
On Thu, Nov 19, 2020 at 10:54:40AM +0000, Chris Wilson wrote:
> Check that the output exists prior to use, and in doing so prevent the
> test from exploding (without leaving an intelligible trace) when the
> connector is randomly lost.
>
> v2: Convert test_compare_crc to follow the same output requirements
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
> tests/kms_pipe_crc_basic.c | 23 +++++++++++++++--------
> 1 file changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
> index e584dca9b..db047c4cd 100644
> --- a/tests/kms_pipe_crc_basic.c
> +++ b/tests/kms_pipe_crc_basic.c
> @@ -71,6 +71,7 @@ static void test_read_crc(data_t *data, enum pipe pipe, unsigned flags)
> igt_crc_t *crcs = NULL;
> int c, j;
>
> + igt_require_pipe(display, pipe);
> igt_display_require_output_on_pipe(display, pipe);
> output = igt_get_single_output_for_pipe(display, pipe);
>
> @@ -171,10 +172,11 @@ static void test_compare_crc(data_t *data, enum pipe pipe)
> igt_crc_t ref_crc, crc;
> igt_pipe_crc_t *pipe_crc = NULL;
> struct igt_fb fb0, fb1;
> - igt_output_t *output = igt_get_single_output_for_pipe(display, pipe);
> + igt_output_t *output;
>
> - igt_require_f(output, "No connector found for pipe %s\n",
> - kmstest_pipe_name(pipe));
> + igt_require_pipe(display, pipe);
> + igt_display_require_output_on_pipe(display, pipe);
> + output = igt_get_single_output_for_pipe(display, pipe);
Turns out igt_display_require_output_on_pipe also calls
igt_require_pipe. As does igt_get_single_output_for_pipe.
Either way, checking for non-null output is needed so with or without
the redundant extra igt_require_pipe
Reviewed-by: Petri Latvala <petri.latvala at intel.com>
>
> igt_display_reset(display);
> igt_output_set_pipe(output, pipe);
> @@ -224,14 +226,21 @@ static void test_compare_crc(data_t *data, enum pipe pipe)
> static void test_disable_crc_after_crtc(data_t *data, enum pipe pipe)
> {
> igt_display_t *display = &data->display;
> - igt_output_t *output = igt_get_single_output_for_pipe(&data->display, pipe);
> - igt_pipe_crc_t *pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe, "auto");
> - drmModeModeInfo *mode = igt_output_get_mode(output);
> + igt_pipe_crc_t *pipe_crc;
> + drmModeModeInfo *mode;
> + igt_output_t *output;
> igt_crc_t crc[2];
>
> + igt_require_pipe(display, pipe);
> + igt_display_require_output_on_pipe(display, pipe);
> + output = igt_get_single_output_for_pipe(display, pipe);
> +
> + pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe, "auto");
> +
> igt_display_reset(display);
> igt_output_set_pipe(output, pipe);
>
> + mode = igt_output_get_mode(output);
> igt_create_color_fb(data->drm_fd,
> mode->hdisplay, mode->vdisplay,
> DRM_FORMAT_XRGB8888,
> @@ -290,8 +299,6 @@ igt_main
> test_read_crc(&data, pipe, TEST_SEQUENCE | TEST_NONBLOCK);
>
> igt_subtest_f("suspend-read-crc-pipe-%s", kmstest_pipe_name(pipe)) {
> - igt_require_pipe(&data.display, pipe);
> -
> test_read_crc(&data, pipe, 0);
>
> igt_system_suspend_autoresume(SUSPEND_STATE_MEM,
> --
> 2.29.2
>
> _______________________________________________
> igt-dev mailing list
> igt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
More information about the igt-dev
mailing list