[igt-dev] [PATCH i-g-t v4 07/14] igt: fb: Account for all planes bpp

Paul Kocialkowski paul.kocialkowski at bootlin.com
Tue Jan 22 15:46:53 UTC 2019


Hi,

On Tue, 2019-01-22 at 15:28 +0100, Maxime Ripard wrote:
> When allocating a dumb buffer for a format with multiple plane, we need to
> account for all plane's bpp in order to allocate the proper size.
> 
> Let's add all the planes bpp and use the result to allocate our buffer.
> 
> Signed-off-by: Maxime Ripard <maxime.ripard at bootlin.com>

Reviewed-by: Paul Kocialkowski <paul.kocialkowski at bootlin.com>

Cheers,

Paul

> ---
>  lib/igt_fb.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/igt_fb.c b/lib/igt_fb.c
> index 0f4021b77e5f..0f043acce29d 100644
> --- a/lib/igt_fb.c
> +++ b/lib/igt_fb.c
> @@ -528,7 +528,9 @@ static void clear_yuv_buffer(struct igt_fb *fb)
>  /* helpers to create nice-looking framebuffers */
>  static int create_bo_for_fb(struct igt_fb *fb)
>  {
> +	const struct format_desc_struct *fmt = lookup_drm_format(fb->drm_format);
>  	uint64_t size = calc_fb_size(fb);
> +	unsigned int plane, bpp;
>  	int fd = fb->fd;
>  
>  	/* respect the size requested by the caller */
> @@ -557,10 +559,13 @@ static int create_bo_for_fb(struct igt_fb *fb)
>  		}
>  	}
>  
> +	for (plane = 0; plane < fb->num_planes; plane++)
> +		bpp += DIV_ROUND_UP(fb->plane_bpp[plane],
> +				    plane ? fmt->hsub * fmt->vsub : 1);
> +
>  	fb->is_dumb = true;
>  	fb->gem_handle = kmstest_dumb_create(fd, fb->width, fb->height,
> -					     fb->plane_bpp[0],
> -					     &fb->strides[0], &fb->size);
> +					     bpp, &fb->strides[0], &fb->size);
>  
>  	return fb->gem_handle;
>  }
-- 
Paul Kocialkowski, Bootlin
Embedded Linux and kernel engineering
https://bootlin.com



More information about the igt-dev mailing list