diff --git a/src/gallium/drivers/panfrost/pan_mfbd.c b/src/gallium/drivers/panfrost/pan_mfbd.c index d5278417c6b..405b04b7007 100644 --- a/src/gallium/drivers/panfrost/pan_mfbd.c +++ b/src/gallium/drivers/panfrost/pan_mfbd.c @@ -184,6 +184,7 @@ panfrost_mfbd_rt_set_buf(struct pipe_surface *surf, rt->afbc.chunk_size = 9; rt->midgard_afbc.sparse = true; rt->afbc.body_size = slice->afbc.body_size; + assert(rt->afbc.body_size > 0); } panfrost_get_afbc_pointers(rsrc, level, first_layer, diff --git a/src/gallium/drivers/panfrost/pan_resource.c b/src/gallium/drivers/panfrost/pan_resource.c index 4aaa15ed7f7..31c9b6c403e 100644 --- a/src/gallium/drivers/panfrost/pan_resource.c +++ b/src/gallium/drivers/panfrost/pan_resource.c @@ -127,14 +127,16 @@ panfrost_resource_from_handle(struct pipe_screen *pscreen, unsigned tile_h = panfrost_block_dim(whandle->modifier, false, 0); - rsc->layout.slices[0].afbc.body_size = - rsc->layout.slices[0].row_stride * - DIV_ROUND_UP(templat->height0, tile_h); rsc->layout.slices[0].afbc.header_size = panfrost_afbc_header_size(templat->width0, templat->height0); + rsc->layout.slices[0].afbc.row_stride = DIV_ROUND_UP(templat->width0, tile_w) * AFBC_HEADER_BYTES_PER_TILE; + + rsc->layout.slices[0].afbc.body_size = + rsc->layout.slices[0].row_stride * + DIV_ROUND_UP(templat->height0, tile_h); } if (dev->ro) {