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

Paul Kocialkowski
2019-01-22T15:47:04Z

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@bootlin.com>

Reviewed-by: Paul Kocialkowski <paul.kocialkowski@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