diff options
author | Alyssa Rosenzweig <[email protected]> | 2019-07-05 08:40:22 -0700 |
---|---|---|
committer | Alyssa Rosenzweig <[email protected]> | 2019-07-09 21:17:47 +0000 |
commit | 6074eae753e8735e7c4477e0b0dc470a0681d874 (patch) | |
tree | e7311472188297f639e0b799378ba37c200286aa | |
parent | 15000c79da7c083a9306d53dae04afd6584e06e0 (diff) |
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 <[email protected]>
Reviewed-by: Dave Airlie <[email protected]>
-rw-r--r-- | src/gallium/auxiliary/util/u_format.h | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/util/u_format.h b/src/gallium/auxiliary/util/u_format.h index cf69460e050..abf1141993f 100644 --- a/src/gallium/auxiliary/util/u_format.h +++ b/src/gallium/auxiliary/util/u_format.h @@ -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. */ |