diff options
author | Brian Paul <[email protected]> | 2011-01-11 09:26:03 -0700 |
---|---|---|
committer | Brian Paul <[email protected]> | 2011-01-11 09:27:06 -0700 |
commit | d92e56460e0b6b6057097fc12c7f947528e58c13 (patch) | |
tree | d722d3554a86a907d7c106c86bd47cb33dbe662b | |
parent | 0073f50cd47c48c706b4524364b9c0594804febf (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.c | 5 | ||||
-rw-r--r-- | src/mesa/main/formats.c | 24 |
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(); } |