[igt-dev] [PATCH i-g-t] tests/kms_psr: Try all modes on the connector
Sharma, Swati2
swati2.sharma at intel.com
Fri Mar 31 14:11:46 UTC 2023
LGTM
Reviewed-by: Swati Sharma <swati2.sharma at intel.com>
On 27-Mar-23 6:06 PM, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Certain panels have a preferred mode with a vblank that is
> too short for the PSR setup time, but also expose an alternate
> lower refresh rate mode where PSR is actually possible.
> Go through all the modes until one is found where PSR works.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> tests/i915/kms_psr.c | 37 +++++++++++++++++++++++++++----------
> 1 file changed, 27 insertions(+), 10 deletions(-)
>
> diff --git a/tests/i915/kms_psr.c b/tests/i915/kms_psr.c
> index c92902343ea3..3efe1faec8e7 100644
> --- a/tests/i915/kms_psr.c
> +++ b/tests/i915/kms_psr.c
> @@ -109,7 +109,6 @@ static void setup_output(data_t *data)
>
> data->crtc_id = output->config.crtc->crtc_id;
> data->output = output;
> - data->mode = igt_output_get_mode(output);
>
> return;
> }
> @@ -369,6 +368,8 @@ static void test_cleanup(data_t *data)
> {
> igt_plane_t *primary;
>
> + igt_output_override_mode(data->output, NULL);
> +
> primary = igt_output_get_plane_type(data->output,
> DRM_PLANE_TYPE_PRIMARY);
> igt_plane_set_fb(primary, NULL);
> @@ -440,17 +441,33 @@ static void setup_test_plane(data_t *data, int
> test_plane)
>
> static void test_setup(data_t *data)
> {
> + drmModeConnectorPtr connector;
> + bool psr_entered = false;
> +
> igt_require_f(data->output,
> "No available output found\n");
> - igt_require_f(data->mode,
> - "No available mode found on %s\n",
> - data->output->name);
> - if (data->op_psr_mode == PSR_MODE_2)
> - igt_require(data->supports_psr2);
> -
> - psr_enable_if_enabled(data);
> - setup_test_plane(data, data->test_plane_id);
> - igt_assert(psr_wait_entry_if_enabled(data));
> +
> + connector = data->output->config.connector;
> +
> + for (int i = 0; i < connector->count_modes; i++) {
> + data->mode = &connector->modes[i];
> + igt_info("Testing mode:\n");
> + kmstest_dump_mode(data->mode);
> +
> + igt_output_override_mode(data->output, data->mode);
> +
> + if (data->op_psr_mode == PSR_MODE_2)
> + igt_require(data->supports_psr2);
> +
> + psr_enable_if_enabled(data);
> + setup_test_plane(data, data->test_plane_id);
> + if (psr_wait_entry_if_enabled(data)) {
> + psr_entered = true;
> + break;
> + }
> + }
> +
> + igt_assert(psr_entered);
> }
>
> static void dpms_off_on(data_t *data)
>
More information about the igt-dev
mailing list