summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Fonseca <jfonseca@vmware.com>2012-11-28 19:20:18 +0000
committerJosé Fonseca <jfonseca@vmware.com>2012-11-29 14:08:42 +0000
commit9f06061d50f90bf425a5337cea1b0adb94a46d25 (patch)
tree92e84ca3480fb619ee813c8cfccb7e7fc45ee270
parenta47674ee89f9f41c3be96ee47c476144bf6b779b (diff)
util/u_format: Kill util_format_is_array().
It is buggy (it was giving wrong results for some of the formats with padding), and util_format_description::is_array already does precisely what's intended. Reviewed-by: Roland Scheidegger <sroland@vmware.com>
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_format_aos.c3
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_type.h3
-rw-r--r--src/gallium/auxiliary/util/u_format.c41
-rw-r--r--src/gallium/auxiliary/util/u_format.h10
4 files changed, 4 insertions, 53 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c
index 750d54524c6..0b54ba4c5f5 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c
@@ -481,7 +481,8 @@ lp_build_fetch_rgba_aos(struct gallivm_state *gallivm,
}
/* If all channels are of same type and we are not using half-floats */
- if (util_format_is_array(format_desc)) {
+ if (format_desc->is_array) {
+ assert(!format_desc->is_mixed);
return lp_build_fetch_rgba_aos_array(gallivm, format_desc, type, base_ptr, offset);
}
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_type.h b/src/gallium/auxiliary/gallivm/lp_bld_type.h
index 6ce5501baf4..d0b490b51e8 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_type.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_type.h
@@ -176,7 +176,8 @@ struct lp_build_context
static INLINE void
lp_type_from_format_desc(struct lp_type* type, const struct util_format_description *format_desc)
{
- assert(util_format_is_array(format_desc));
+ assert(format_desc->is_array);
+ assert(!format_desc->is_mixed);
memset(type, 0, sizeof(struct lp_type));
type->floating = format_desc->channel[0].type == UTIL_FORMAT_TYPE_FLOAT;
diff --git a/src/gallium/auxiliary/util/u_format.c b/src/gallium/auxiliary/util/u_format.c
index ddce95601a6..8228de1f23d 100644
--- a/src/gallium/auxiliary/util/u_format.c
+++ b/src/gallium/auxiliary/util/u_format.c
@@ -134,47 +134,6 @@ util_format_is_pure_uint(enum pipe_format format)
return (desc->channel[i].type == UTIL_FORMAT_TYPE_UNSIGNED && desc->channel[i].pure_integer) ? TRUE : FALSE;
}
-boolean
-util_format_is_array(const struct util_format_description *desc)
-{
- unsigned chan;
-
- if (desc->layout != UTIL_FORMAT_LAYOUT_PLAIN ||
- desc->colorspace != UTIL_FORMAT_COLORSPACE_RGB ||
- desc->block.width != 1 ||
- desc->block.height != 1) {
- return FALSE;
- }
-
- for (chan = 0; chan < desc->nr_channels; ++chan) {
- if (desc->channel[chan].size != desc->channel[0].size)
- return FALSE;
-
- if (desc->channel[chan].type == UTIL_FORMAT_TYPE_VOID && (chan + 1) == desc->nr_channels)
- continue;
-
- if (desc->channel[chan].type != desc->channel[0].type)
- return FALSE;
-
- if (desc->channel[chan].normalized != desc->channel[0].normalized)
- return FALSE;
-
- if (desc->channel[chan].pure_integer != desc->channel[0].pure_integer)
- return FALSE;
- }
-
- if (desc->nr_channels == 4) {
- if (desc->swizzle[3] < 3)
- return FALSE;
- } else {
- for (chan = 0; chan < desc->nr_channels; ++chan) {
- if (desc->swizzle[chan] != chan)
- return FALSE;
- }
- }
-
- return TRUE;
-}
boolean
util_format_is_luminance_alpha(enum pipe_format format)
diff --git a/src/gallium/auxiliary/util/u_format.h b/src/gallium/auxiliary/util/u_format.h
index ec368fd75de..024dabb07ba 100644
--- a/src/gallium/auxiliary/util/u_format.h
+++ b/src/gallium/auxiliary/util/u_format.h
@@ -591,16 +591,6 @@ boolean
util_format_is_pure_uint(enum pipe_format format);
/**
- * Whether the format is a simple array format where all channels
- * are of the same type and can be loaded from memory as a vector.
- *
- * If format is 4 channel it can be swizzled (eg BGRA) as long
- * as the alpha is the 3rd channel.
- */
-boolean
-util_format_is_array(const struct util_format_description *desc);
-
-/**
* Check if the src format can be blitted to the destination format with
* a simple memcpy. For example, blitting from RGBA to RGBx is OK, but not
* the reverse.