mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
panfrost/midgard: Add a condense_writemask() helper
This way we can convert an 8-bit writemask (Midgard specific representation) into the more common 1-bit/component representation. 8-bit mode is not supported yet, as we're not sure how the writemask is encoded for this mode. Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3536>
This commit is contained in:
parent
2dc63d39d3
commit
aa973fc14e
1 changed files with 22 additions and 0 deletions
|
|
@ -254,6 +254,28 @@ expand_writemask(unsigned mask, unsigned channels)
|
|||
return o;
|
||||
}
|
||||
|
||||
/* Tansform an expanded writemask (duplicated 8-bit format) into its condensed
|
||||
* form (one bit per component) */
|
||||
|
||||
static inline unsigned
|
||||
condense_writemask(unsigned expanded_mask,
|
||||
unsigned bits_per_component)
|
||||
{
|
||||
if (bits_per_component == 8)
|
||||
unreachable("XXX TODO: sort out how 8-bit constant encoding works");
|
||||
|
||||
unsigned slots_per_component = bits_per_component / 16;
|
||||
unsigned max_comp = (16 * 8) / bits_per_component;
|
||||
unsigned condensed_mask = 0;
|
||||
|
||||
for (unsigned i = 0; i < max_comp; i++) {
|
||||
if (expanded_mask & (1 << (i * slots_per_component)))
|
||||
condensed_mask |= (1 << i);
|
||||
}
|
||||
|
||||
return condensed_mask;
|
||||
}
|
||||
|
||||
/* Coerce structs to integer */
|
||||
|
||||
static inline unsigned
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue