[i-g-t V7 4/8] tests/kms_vrr: Fix pipe/output combo validity constraint
Golani, Mitulkumar Ajitkumar
mitulkumar.ajitkumar.golani at intel.com
Wed Dec 13 03:16:44 UTC 2023
> -----Original Message-----
> From: Modem, Bhanuprakash <bhanuprakash.modem at intel.com>
> Sent: Monday, December 11, 2023 5:07 PM
> To: igt-dev at lists.freedesktop.org; Golani, Mitulkumar Ajitkumar
> <mitulkumar.ajitkumar.golani at intel.com>
> Cc: Modem, Bhanuprakash <bhanuprakash.modem at intel.com>
> Subject: [i-g-t V7 4/8] tests/kms_vrr: Fix pipe/output combo validity
> constraint
>
> Before starting the subtest, we are checking the selected pipe/output combo
> validity with default mode, but inside the subtest we are using the mode with
> highest resolution.
>
> Few panels exposes 4K as a default mode even though it supports 8K, in this
> scenario test may misbehave.
>
> So, check the pipe/output combo validity with the mode that we are actually
> going to use in the subtest.
>
> V2: Reword the commit message
>
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem at intel.com>
> ---
> tests/kms_vrr.c | 62 +++++++++++++++++++++++++++++++------------------
> 1 file changed, 39 insertions(+), 23 deletions(-)
>
> diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c index df241aa6c..4540d8b4b
> 100644
> --- a/tests/kms_vrr.c
> +++ b/tests/kms_vrr.c
> @@ -163,9 +163,6 @@ output_mode_with_maxrate(igt_output_t *output,
> unsigned int vrr_max)
> connector->modes[i].vrefresh <= vrr_max)
> mode = connector->modes[i];
>
> - igt_info("Override Mode: ");
> - kmstest_dump_mode(&mode);
> -
> return mode;
> }
>
> @@ -233,21 +230,7 @@ static void prepare_test(data_t *data, igt_output_t
> *output, enum pipe pipe)
> drmModeModeInfo mode;
> cairo_t *cr;
>
> - /* Reset output */
> - igt_display_reset(&data->display);
> - igt_output_set_pipe(output, pipe);
> -
> - /* Capture VRR range */
> - data->range = get_vrr_range(data, output);
> -
> - /* Override mode with max vrefresh.
> - * - vrr_min range should be less than the override mode vrefresh.
> - * - Limit the vrr_max range with the override mode vrefresh.
> - */
> - mode = output_mode_with_maxrate(output, data->range.max);
> - igt_require(mode.vrefresh > data->range.min);
> - data->range.max = mode.vrefresh;
> - igt_output_override_mode(output, &mode);
> + mode = *igt_output_get_mode(output);
>
> /* Prepare resources */
> igt_create_color_fb(data->drm_fd, mode.hdisplay, mode.vdisplay,
> @@ -483,7 +466,36 @@ static void test_cleanup(data_t *data, enum pipe
> pipe, igt_output_t *output)
> igt_remove_fb(data->drm_fd, &data->fb0); }
>
> -static bool config_constraint(igt_output_t *output, uint32_t flags)
> +static bool output_constraint(data_t *data, igt_output_t *output) {
> + drmModeModeInfo mode;
> +
> + /* Reset output */
> + igt_display_reset(&data->display);
> +
> + /* Capture VRR range */
> + data->range = get_vrr_range(data, output);
> +
> + /*
> + * Override mode with max vrefresh.
> + * - vrr_min range should be less than the override mode vrefresh.
> + * - Limit the vrr_max range with the override mode vrefresh.
> + */
> + mode = output_mode_with_maxrate(output, data->range.max);
> + if (mode.vrefresh < data->range.min)
> + return false;
> +
> + data->range.max = mode.vrefresh;
> +
> + igt_info("Override Mode: ");
> + kmstest_dump_mode(&mode);
> +
> + igt_output_override_mode(output, &mode);
> +
> + return true;
> +}
> +
> +static bool config_constraint(data_t *data, igt_output_t *output,
> +uint32_t flags)
> {
> if (!has_vrr(output))
> return false;
> @@ -495,6 +507,9 @@ static bool config_constraint(igt_output_t *output,
> uint32_t flags)
> if ((flags & ~TEST_NEGATIVE) && !vrr_capable(output))
> return false;
>
> + if (!output_constraint(data, output))
> + return false;
> +
> return true;
> }
>
> @@ -507,16 +522,17 @@ run_vrr_test(data_t *data, test_t test, uint32_t
> flags)
> for_each_connected_output(&data->display, output) {
> enum pipe pipe;
>
> - if (!config_constraint(output, flags))
> + if (!config_constraint(data, output, flags))
> continue;
>
> for_each_pipe(&data->display, pipe) {
> if (igt_pipe_connector_valid(pipe, output)) {
> - igt_display_reset(&data->display);
> -
> igt_output_set_pipe(output, pipe);
> - if (!intel_pipe_output_combo_valid(&data-
> >display))
> +
> + if (!intel_pipe_output_combo_valid(&data-
> >display)) {
> + igt_output_set_pipe(output,
> PIPE_NONE);
> continue;
> + }
Change LGTM
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani at intel.com>
>
> igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipe),
> output->name)
> --
> 2.40.0
More information about the igt-dev
mailing list