summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2019-07-05 08:40:22 -0700
committerAlyssa Rosenzweig <[email protected]>2019-07-09 21:17:47 +0000
commit6074eae753e8735e7c4477e0b0dc470a0681d874 (patch)
treee7311472188297f639e0b799378ba37c200286aa
parent15000c79da7c083a9306d53dae04afd6584e06e0 (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.h17
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.
*/