summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2016-09-20 16:05:48 -0600
committerBrian Paul <[email protected]>2016-09-21 12:26:17 -0600
commitb35684543ed43c3ac2aa2710e3974fbfaf9c2f7c (patch)
tree975dd906548cab541edbbaf2e79853fd5a1a10e7 /src/gallium/auxiliary
parent99d9f764b22e80865f8ff9b402a11a4334e5bbd0 (diff)
gallium/util: add comment on util_is_format_compatible()
From reading the code, it's not obvious what is src/dest compatible. The list of a->b copy-compatible formats comes from Jose's original check-in message, with some format name updates. Reviewed-by: Nicolai Hähnle <[email protected]> Reviewed-by: Roland Scheidegger <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary')
-rw-r--r--src/gallium/auxiliary/util/u_format.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/util/u_format.c b/src/gallium/auxiliary/util/u_format.c
index cbdb5ce9ddc..72dd60f6e14 100644
--- a/src/gallium/auxiliary/util/u_format.c
+++ b/src/gallium/auxiliary/util/u_format.c
@@ -457,6 +457,30 @@ util_format_write_4i(enum pipe_format format,
format_desc->pack_rgba_sint(dst_row, dst_stride, src_row, src_stride, w, h);
}
+/**
+ * Check if we can safely memcopy from the source format to the dest format.
+ * This basically covers the cases of a "used" channel copied to a typeless
+ * channel, plus some 1-channel cases.
+ * Examples of compatible copy formats include:
+ * b8g8r8a8_unorm -> b8g8r8x8_unorm
+ * a8r8g8b8_unorm -> x8r8g8b8_unorm
+ * b5g5r5a1_unorm -> b5g5r5x1_unorm
+ * b4g4r4a4_unorm -> b4g4r4x4_unorm
+ * l8_unorm -> r8_unorm
+ * i8_unorm -> l8_unorm
+ * i8_unorm -> a8_unorm
+ * i8_unorm -> r8_unorm
+ * l16_unorm -> r16_unorm
+ * z24_unorm_s8_uint -> z24x8_unorm
+ * s8_uint_z24_unorm -> x8z24_unorm
+ * r8g8b8a8_unorm -> r8g8b8x8_unorm
+ * a8b8g8r8_srgb -> x8b8g8r8_srgb
+ * b8g8r8a8_srgb -> b8g8r8x8_srgb
+ * a8r8g8b8_srgb -> x8r8g8b8_srgb
+ * a8b8g8r8_unorm -> x8b8g8r8_unorm
+ * r10g10b10a2_uscaled -> r10g10b10x2_uscaled
+ * r10sg10sb10sa2u_norm -> r10g10b10x2_snorm
+ */
boolean
util_is_format_compatible(const struct util_format_description *src_desc,
const struct util_format_description *dst_desc)