From 9f06061d50f90bf425a5337cea1b0adb94a46d25 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Wed, 28 Nov 2012 19:20:18 +0000 Subject: [PATCH] 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 --- .../auxiliary/gallivm/lp_bld_format_aos.c | 3 +- src/gallium/auxiliary/gallivm/lp_bld_type.h | 3 +- src/gallium/auxiliary/util/u_format.c | 41 ------------------- 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 @@ -590,16 +590,6 @@ util_format_is_pure_sint(enum pipe_format format); 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 -- 2.30.2