panfrost: Add method to get size of AFBC subblocks

Each AFBC superblock is subdivised into subblocks that are
compressed individually. For all formats that we currently support,
the subblocks are 4x4 pixels.

Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25012>
This commit is contained in:
Louis-Francis Ratté-Boulianne
2023-08-31 11:31:42 -04:00
committed by Marge Bot
parent 39efd7c245
commit 9f3a79a6a3
2 changed files with 13 additions and 0 deletions

View File

@@ -104,6 +104,17 @@ panfrost_afbc_is_wide(uint64_t modifier)
return panfrost_afbc_superblock_width(modifier) > 16;
}
/*
* Given an AFBC modifier, return the subblock size (subdivision of a
* superblock). This is always 4x4 for now as we only support one AFBC
* superblock layout.
*/
struct pan_block_size
panfrost_afbc_subblock_size(uint64_t modifier)
{
return (struct pan_block_size){4, 4};
}
/*
* Given a format, determine the tile size used for u-interleaving. For formats
* that are already block compressed, this is 4x4. For all other formats, this

View File

@@ -249,6 +249,8 @@ unsigned panfrost_afbc_superblock_height(uint64_t modifier);
bool panfrost_afbc_is_wide(uint64_t modifier);
struct pan_block_size panfrost_afbc_subblock_size(uint64_t modifier);
uint32_t pan_afbc_row_stride(uint64_t modifier, uint32_t width);
uint32_t pan_afbc_stride_blocks(uint64_t modifier, uint32_t row_stride_bytes);