diff options
author | José Fonseca <[email protected]> | 2012-11-28 19:20:18 +0000 |
---|---|---|
committer | José Fonseca <[email protected]> | 2012-11-29 14:08:42 +0000 |
commit | 9f06061d50f90bf425a5337cea1b0adb94a46d25 (patch) | |
tree | 92e84ca3480fb619ee813c8cfccb7e7fc45ee270 | |
parent | a47674ee89f9f41c3be96ee47c476144bf6b779b (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 <[email protected]>
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_format_aos.c | 3 | ||||
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_type.h | 3 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_format.c | 41 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_format.h | 10 |
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. |