[igt-dev] [PATCH v3 3/3] tests/amdgpu/amd_psr: define reusable wrapper for PSR support check

Leo Li sunpeng.li at amd.com
Thu Apr 14 17:16:48 UTC 2022




On 2022-04-12 15:21, David Zhang wrote:
> [why & how]
> For amdgpu PSR-SU test cases, we'd first check if the sink device
> and amdgpu driver support the PSR-SU feature at the beginning. We
> define a local helper to wrap the check for PSR-SU support from
> sink and driver as well and called by both MPO and FFU test case,
> to avoid the code repetition.
> 
> Cc: Rodrigo Siqueira <rodrigo.siqueira at amd.com>
> Cc: Harry Wentland <harry.wentland at amd.com>
> Cc: Leo Li <sunpeng.li at amd.com>
> Cc: Jay Pillai <aurabindo.pillai at amd.com>
> Cc: Wayne Lin <wayne.lin at amd.com>
> 
> Signed-off-by: David Zhang <dingchen.zhang at amd.com>
> ---
>   tests/amdgpu/amd_psr.c | 40 ++++++++++++++++++++++++----------------
>   1 file changed, 24 insertions(+), 16 deletions(-)
> 
> diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
> index 92628fee..e7614d71 100644
> --- a/tests/amdgpu/amd_psr.c
> +++ b/tests/amdgpu/amd_psr.c
> @@ -138,6 +138,28 @@ static int check_conn_type(data_t *data, uint32_t type) {
>   	return -1;
>   }
>   
> +static bool psr_su_supported(data_t *data)
> +{
> +	/* run PSR-SU test i.i.f. eDP panel and kernel driver both support PSR-SU */
> +	if (!igt_amd_output_has_psr_cap(data->fd, data->output->name))
> +		return false;
> +
> +	if (!igt_amd_output_has_psr_state(data->fd, data->output->name))
> +		return false;
> +

Would be good to igt_warn on the above checks too, so the reason for
skipping is clear.

> +	if (!igt_amd_psr_support_sink(data->fd, data->output->name, PSR_MODE_2)) {
> +		igt_info(" output %s not support PSR-SU\n", data->output->name);

Consider using igt_warn()

With those addressed,

Reviewed-by: Leo Li <sunpeng.li at amd.com>

Thanks,
Leo

> +		return false;
> +	}
> +
> +	if (!igt_amd_psr_support_drv(data->fd, data->output->name, PSR_MODE_2)) {
> +		igt_info(" kernel driver not support PSR-SU\n");
> +		return false;
> +	}
> +
> +	return true;
> +}
> +
>   static void run_check_psr(data_t *data, bool test_null_crtc) {
>   	int fd, edp_idx, dp_idx, ret, i, psr_state;
>   	igt_fb_t ref_fb, ref_fb2;
> @@ -217,8 +239,6 @@ static void run_check_psr(data_t *data, bool test_null_crtc) {
>   static void run_check_psr_su_mpo(data_t *data)
>   {
>   	int edp_idx = check_conn_type(data, DRM_MODE_CONNECTOR_eDP);
> -	bool sink_support_psrsu = false;
> -	bool drv_suport_psrsu = false;
>   	igt_fb_t ov_fb;		// fb for overlay
>   	igt_fb_t rect_fb[N_MPO_TEST_RECT_FB]; 	// rectangle fbs for primary, emulate as video playback region
>   	igt_fb_t ref_fb;	// reference fb
> @@ -235,12 +255,7 @@ static void run_check_psr_su_mpo(data_t *data)
>   	frame_rate = data->mode->vrefresh;
>   
>   	/* run the test i.i.f. eDP panel supports and kernel driver both support PSR-SU  */
> -	igt_skip_on(!igt_amd_output_has_psr_cap(data->fd, data->output->name));
> -	igt_skip_on(!igt_amd_output_has_psr_state(data->fd, data->output->name));
> -	sink_support_psrsu = igt_amd_psr_support_sink(data->fd, data->output->name, PSR_MODE_2);
> -	igt_skip_on_f(!sink_support_psrsu, "output %s not support PSR-SU\n", data->output->name);
> -	drv_suport_psrsu = igt_amd_psr_support_drv(data->fd, data->output->name, PSR_MODE_2);
> -	igt_skip_on_f(!drv_suport_psrsu, "kernel driver not support PSR-SU\n");
> +	igt_skip_on(!psr_su_supported(data));
>   
>   	/* reference background pattern in grey */
>   	igt_create_color_fb(data->fd, data->w, data->h, DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR,
> @@ -338,8 +353,6 @@ static void panning_rect_fb(data_t *data, igt_fb_t *rect_fb, int rect_w, int rec
>   static void run_check_psr_su_ffu(data_t *data)
>   {
>   	int edp_idx = check_conn_type(data, DRM_MODE_CONNECTOR_eDP);
> -	bool sink_support_psrsu = false;
> -	bool drv_suport_psrsu = false;
>   	igt_fb_t rect_fb; 	// rectangle fbs for primary
>   	igt_fb_t ref_fb;	// reference fb
>   	int pb_w, pb_h, ob_w, ob_h;
> @@ -355,12 +368,7 @@ static void run_check_psr_su_ffu(data_t *data)
>   	pb_h = data->h / 2;
>   
>   	/* run the test i.i.f. eDP panel supports and kernel driver both support PSR-SU  */
> -	igt_skip_on(!igt_amd_output_has_psr_cap(data->fd, data->output->name));
> -	igt_skip_on(!igt_amd_output_has_psr_state(data->fd, data->output->name));
> -	sink_support_psrsu = igt_amd_psr_support_sink(data->fd, data->output->name, PSR_MODE_2);
> -	igt_skip_on_f(!sink_support_psrsu, "output %s not support PSR-SU\n", data->output->name);
> -	drv_suport_psrsu = igt_amd_psr_support_drv(data->fd, data->output->name, PSR_MODE_2);
> -	igt_skip_on_f(!drv_suport_psrsu, "kernel driver not support PSR-SU\n");
> +	igt_skip_on(!psr_su_supported(data));
>   
>   	/* reference background pattern in grey */
>   	igt_create_color_fb(data->fd, data->w, data->h, DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR,


More information about the igt-dev mailing list