[PATCH i-g-t v5 1/8] benchmarks/kms_fb_stress: Assert that we have an supported pipe

Louis Chauvet louis.chauvet at bootlin.com
Wed May 22 08:50:54 UTC 2024


Reviewed-by: Louis Chauvet <louis.chauvet at bootlin.com>
Tested-by: Louis Chauvet <louis.chauvet at bootlin.com>

Le 22/04/24 - 19:18, Arthur Grillo a écrit :
> Some driver may not support overlay planes. Add a check for that.
> 
> Reviewed-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> Signed-off-by: Arthur Grillo <arthurgrillo at riseup.net>
> ---
>  benchmarks/kms_fb_stress.c | 36 +++++++++++++++++++++++++++---------
>  1 file changed, 27 insertions(+), 9 deletions(-)
> 
> diff --git a/benchmarks/kms_fb_stress.c b/benchmarks/kms_fb_stress.c
> index 00eaa0a4931a..e9c051318ed6 100644
> --- a/benchmarks/kms_fb_stress.c
> +++ b/benchmarks/kms_fb_stress.c
> @@ -87,6 +87,27 @@ static igt_output_t *find_wb_output(struct data_t *data)
>  	return NULL;
>  }
>  
> +static void set_wb_pipe(struct data_t *data)
> +{
> +	enum pipe pipe = PIPE_NONE;
> +
> +	for_each_pipe(&data->display, pipe) {
> +		igt_pipe_t *pipe_obj = &data->display.pipes[pipe];
> +
> +		if (igt_pipe_count_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY) < 2)
> +			continue;
> +
> +		igt_debug("Selecting pipe %s to %s\n",
> +			  kmstest_pipe_name(pipe),
> +			  igt_output_name(data->wb_output));
> +		igt_output_set_pipe(data->wb_output, pipe);
> +
> +		return;
> +	}
> +
> +	igt_assert_f(0, "No pipe supports this benchmark\n");
> +}
> +
>  static void set_crtc_size(struct data_t *data)
>  {
>  	drmModeModeInfo *mode;
> @@ -142,7 +163,6 @@ static struct kms_t default_kms = {
>  igt_simple_main
>  {
>  	struct data_t data = {0};
> -	enum pipe pipe = PIPE_NONE;
>  	struct timespec then, now;
>  	double elapsed;
>  
> @@ -161,24 +181,22 @@ igt_simple_main
>  
>  	data.wb_output = find_wb_output(&data);
>  	igt_require(data.wb_output);
> -
> -	for_each_pipe(&data.display, pipe) {
> -		igt_debug("Selecting pipe %s to %s\n",
> -			  kmstest_pipe_name(pipe),
> -			  igt_output_name(data.wb_output));
> -		igt_output_set_pipe(data.wb_output, pipe);
> -		break;
> -	}
> +	set_wb_pipe(&data);
>  
>  	set_crtc_size(&data);
>  
>  	gen_fbs(&data);
>  
>  	data.kms.primary.base = igt_output_get_plane_type(data.wb_output, DRM_PLANE_TYPE_PRIMARY);
> +	igt_assert(data.kms.primary.base != NULL);
> +
>  	data.kms.overlay_a.base = igt_output_get_plane_type_index(data.wb_output,
>  								  DRM_PLANE_TYPE_OVERLAY, 0);
> +	igt_assert(data.kms.overlay_a.base != NULL);
> +
>  	data.kms.overlay_b.base = igt_output_get_plane_type_index(data.wb_output,
>  								  DRM_PLANE_TYPE_OVERLAY, 1);
> +	igt_assert(data.kms.overlay_b.base != NULL);
>  
>  	igt_assert_eq(igt_gettime(&then), 0);
>  
> 
> -- 
> 2.44.0
> 

-- 
Louis Chauvet, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


More information about the igt-dev mailing list