summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2011-01-11 09:26:03 -0700
committerBrian Paul <[email protected]>2011-01-11 09:27:06 -0700
commitd92e56460e0b6b6057097fc12c7f947528e58c13 (patch)
treed722d3554a86a907d7c106c86bd47cb33dbe662b
parent0073f50cd47c48c706b4524364b9c0594804febf (diff)
mesa: do a debug check of _mesa_format_to_type_and_comps()
Make sure that all formats are handled in this function. It's easy to miss this function when adding new pixel formats. See also http://bugs.freedesktop.org/show_bug.cgi?id=31544
-rw-r--r--src/mesa/main/context.c5
-rw-r--r--src/mesa/main/formats.c24
2 files changed, 28 insertions, 1 deletions
diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
index 2c57c8d4cbb..958ea10a422 100644
--- a/src/mesa/main/context.c
+++ b/src/mesa/main/context.c
@@ -96,6 +96,7 @@
#include "fbobject.h"
#include "feedback.h"
#include "fog.h"
+#include "formats.h"
#include "framebuffer.h"
#include "hint.h"
#include "hash.h"
@@ -417,6 +418,10 @@ one_time_init( struct gl_context *ctx )
MESA_VERSION_STRING, __DATE__, __TIME__);
}
#endif
+
+#ifdef DEBUG
+ _mesa_test_formats();
+#endif
}
/* per-API one-time init */
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index 514fe7aa7d0..1bc72726e13 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -1168,6 +1168,27 @@ _mesa_format_row_stride(gl_format format, GLsizei width)
}
+/**
+ * Debug/test: check that all formats are handled in the
+ * _mesa_format_to_type_and_comps() function. When new pixel formats
+ * are added to Mesa, that function needs to be updated.
+ * This is a no-op after the first call.
+ */
+static void
+check_format_to_type_and_comps(void)
+{
+ gl_format f;
+
+ for (f = MESA_FORMAT_NONE + 1; f < MESA_FORMAT_COUNT; f++) {
+ GLenum datatype = 0;
+ GLuint comps = 0;
+ /* This function will emit a problem/warning if the format is
+ * not handled.
+ */
+ _mesa_format_to_type_and_comps(f, &datatype, &comps);
+ }
+}
+
/**
* Do sanity checking of the format info table.
@@ -1251,8 +1272,9 @@ _mesa_test_formats(void)
assert(info->LuminanceBits == 0);
assert(info->IntensityBits > 0);
}
-
}
+
+ check_format_to_type_and_comps();
}