mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 03:08:05 +02:00
panfrost: properly update data size of AFBC-packed resources
Only the slices' size was correctly set. Also, disable packing for array resources as it's not currently implemented. Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31771>
This commit is contained in:
parent
774b70974a
commit
df20edd24d
1 changed files with 6 additions and 2 deletions
|
|
@ -392,8 +392,8 @@ panfrost_should_pack_afbc(struct panfrost_device *dev,
|
|||
drm_is_afbc(prsrc->image.layout.modifier) &&
|
||||
(prsrc->image.layout.modifier & AFBC_FORMAT_MOD_SPARSE) &&
|
||||
(prsrc->base.bind & ~valid_binding) == 0 &&
|
||||
!prsrc->modifier_constant && prsrc->base.width0 >= 32 &&
|
||||
prsrc->base.height0 >= 32;
|
||||
!prsrc->modifier_constant && prsrc->base.array_size == 1 &&
|
||||
prsrc->base.width0 >= 32 && prsrc->base.height0 >= 32 ;
|
||||
}
|
||||
|
||||
static bool
|
||||
|
|
@ -1597,6 +1597,8 @@ panfrost_pack_afbc(struct panfrost_context *ctx,
|
|||
struct panfrost_bo *metadata_bo;
|
||||
unsigned metadata_offsets[PIPE_MAX_TEXTURE_LEVELS];
|
||||
|
||||
assert(prsrc->base.array_size == 1);
|
||||
|
||||
uint64_t src_modifier = prsrc->image.layout.modifier;
|
||||
uint64_t dst_modifier =
|
||||
src_modifier & ~(AFBC_FORMAT_MOD_TILED | AFBC_FORMAT_MOD_SPARSE);
|
||||
|
|
@ -1683,6 +1685,8 @@ panfrost_pack_afbc(struct panfrost_context *ctx,
|
|||
metadata_offsets[level], level);
|
||||
prsrc->image.layout.slices[level] = *slice;
|
||||
}
|
||||
prsrc->image.layout.array_stride = new_size;
|
||||
prsrc->image.layout.data_size = new_size;
|
||||
|
||||
panfrost_flush_batches_accessing_rsrc(ctx, prsrc, "AFBC compaction flush");
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue