From: Alyssa Rosenzweig Date: Fri, 5 Jul 2019 15:40:22 +0000 (-0700) Subject: gallium: Add util_format_is_unorm8 check X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6074eae753e8735e7c4477e0b0dc470a0681d874;p=mesa.git 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 Reviewed-by: Dave Airlie --- 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. */