gallium: Add util_format_is_unorm8 check

Useful for formats that would work with the same driver code path as
RGBA8 UNORM but that don't meet the util_format_is_rgba8_variant
criteria due to a smaller channel count.

v2: Use simpler logic (suggested by Iago).

v3: Fix spelling erorr. boolean->bool (thank you airlied).

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Alyssa Rosenzweig 2019-07-05 08:40:22 -07:00
parent 15000c79da
commit 6074eae753
1 changed files with 16 additions and 1 deletions

View File

@ -788,7 +788,6 @@ util_format_is_rgba8_variant(const struct util_format_description *desc)
return TRUE;
}
/**
* Return total bits needed for the pixel format per block.
*/
@ -1265,6 +1264,22 @@ util_format_get_first_non_void_channel(enum pipe_format format)
return i;
}
/**
* Whether this format is any 8-bit UNORM variant. Looser than
* util_is_rgba8_variant (also includes alpha textures, for instance).
*/
static inline bool
util_format_is_unorm8(const struct util_format_description *desc)
{
int c = util_format_get_first_non_void_channel(desc->format);
if (c == -1)
return false;
return desc->is_unorm && desc->is_array && desc->channel[c].size == 8;
}
/*
* Format access functions.
*/