diff options
-rw-r--r-- | src/gallium/auxiliary/util/u_debug.c | 201 |
1 files changed, 106 insertions, 95 deletions
diff --git a/src/gallium/auxiliary/util/u_debug.c b/src/gallium/auxiliary/util/u_debug.c index 2b605594a2e..7a3d51f12c1 100644 --- a/src/gallium/auxiliary/util/u_debug.c +++ b/src/gallium/auxiliary/util/u_debug.c @@ -1,9 +1,9 @@ /************************************************************************** - * + * * Copyright 2008 VMware, Inc. * Copyright (c) 2008 VMware, Inc. * All Rights Reserved. - * + * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including @@ -11,11 +11,11 @@ * distribute, sub license, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: - * + * * The above copyright notice and this permission notice (including the * next paragraph) shall be included in all copies or substantial portions * of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. @@ -23,22 +23,22 @@ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * + * **************************************************************************/ -#include "pipe/p_config.h" +#include "pipe/p_config.h" #include "pipe/p_compiler.h" -#include "util/u_debug.h" -#include "pipe/p_format.h" -#include "pipe/p_state.h" -#include "util/u_inlines.h" +#include "util/u_debug.h" +#include "pipe/p_format.h" +#include "pipe/p_state.h" +#include "util/u_inlines.h" #include "util/u_format.h" -#include "util/u_memory.h" -#include "util/u_string.h" -#include "util/u_math.h" -#include "util/u_tile.h" +#include "util/u_memory.h" +#include "util/u_string.h" +#include "util/u_math.h" +#include "util/u_tile.h" #include "util/u_prim.h" #include "util/u_surface.h" #include <inttypes.h> @@ -53,14 +53,15 @@ #endif -void _debug_vprintf(const char *format, va_list ap) +void +_debug_vprintf(const char *format, va_list ap) { static char buf[4096] = {'\0'}; #if defined(PIPE_OS_WINDOWS) || defined(PIPE_SUBSYSTEM_EMBEDDED) /* We buffer until we find a newline. */ size_t len = strlen(buf); int ret = util_vsnprintf(buf + len, sizeof(buf) - len, format, ap); - if(ret > (int)(sizeof(buf) - len - 1) || util_strchr(buf + len, '\n')) { + if (ret > (int)(sizeof(buf) - len - 1) || util_strchr(buf + len, '\n')) { os_log_message(buf); buf[0] = '\0'; } @@ -70,12 +71,12 @@ void _debug_vprintf(const char *format, va_list ap) #endif } + void -_pipe_debug_message( - struct pipe_debug_callback *cb, - unsigned *id, - enum pipe_debug_type type, - const char *fmt, ...) +_pipe_debug_message(struct pipe_debug_callback *cb, + unsigned *id, + enum pipe_debug_type type, + const char *fmt, ...) { va_list args; va_start(args, fmt); @@ -112,9 +113,8 @@ debug_disable_error_message_boxes(void) #ifdef DEBUG -void debug_print_blob( const char *name, - const void *blob, - unsigned size ) +void +debug_print_blob(const char *name, const void *blob, unsigned size) { const unsigned *ublob = (const unsigned *)blob; unsigned i; @@ -147,6 +147,7 @@ debug_get_option_should_print(void) return value; } + const char * debug_get_option(const char *name, const char *dfault) { @@ -157,39 +158,42 @@ debug_get_option(const char *name, const char *dfault) result = dfault; if (debug_get_option_should_print()) - debug_printf("%s: %s = %s\n", __FUNCTION__, name, result ? result : "(null)"); - + debug_printf("%s: %s = %s\n", __FUNCTION__, name, + result ? result : "(null)"); + return result; } + boolean debug_get_bool_option(const char *name, boolean dfault) { const char *str = os_get_option(name); boolean result; - - if(str == NULL) + + if (str == NULL) result = dfault; - else if(!util_strcmp(str, "n")) + else if (!util_strcmp(str, "n")) result = FALSE; - else if(!util_strcmp(str, "no")) + else if (!util_strcmp(str, "no")) result = FALSE; - else if(!util_strcmp(str, "0")) + else if (!util_strcmp(str, "0")) result = FALSE; - else if(!util_strcmp(str, "f")) + else if (!util_strcmp(str, "f")) result = FALSE; - else if(!util_strcmp(str, "F")) + else if (!util_strcmp(str, "F")) result = FALSE; - else if(!util_strcmp(str, "false")) + else if (!util_strcmp(str, "false")) result = FALSE; - else if(!util_strcmp(str, "FALSE")) + else if (!util_strcmp(str, "FALSE")) result = FALSE; else result = TRUE; if (debug_get_option_should_print()) - debug_printf("%s: %s = %s\n", __FUNCTION__, name, result ? "TRUE" : "FALSE"); - + debug_printf("%s: %s = %s\n", __FUNCTION__, name, + result ? "TRUE" : "FALSE"); + return result; } @@ -199,23 +203,23 @@ debug_get_num_option(const char *name, long dfault) { long result; const char *str; - + str = os_get_option(name); - if(!str) + if (!str) result = dfault; else { long sign; char c; c = *str++; - if(c == '-') { + if (c == '-') { sign = -1; c = *str++; - } + } else { sign = 1; } result = 0; - while('0' <= c && c <= '9') { + while ('0' <= c && c <= '9') { result = result*10 + (c - '0'); c = *str++; } @@ -228,7 +232,9 @@ debug_get_num_option(const char *name, long dfault) return result; } -static boolean str_has_option(const char *str, const char *name) + +static boolean +str_has_option(const char *str, const char *name) { /* Empty string. */ if (!*str) { @@ -271,8 +277,9 @@ static boolean str_has_option(const char *str, const char *name) return FALSE; } + uint64_t -debug_get_flags_option(const char *name, +debug_get_flags_option(const char *name, const struct debug_named_value *flags, uint64_t dfault) { @@ -280,9 +287,9 @@ debug_get_flags_option(const char *name, const char *str; const struct debug_named_value *orig = flags; unsigned namealign = 0; - + str = os_get_option(name); - if(!str) + if (!str) result = dfault; else if (!util_strcmp(str, "help")) { result = dfault; @@ -296,7 +303,7 @@ debug_get_flags_option(const char *name, } else { result = 0; - while( flags->name ) { + while (flags->name) { if (str_has_option(str, flags->name)) result |= flags->value; ++flags; @@ -305,7 +312,8 @@ debug_get_flags_option(const char *name, if (debug_get_option_should_print()) { if (str) { - debug_printf("%s: %s = 0x%"PRIx64" (%s)\n", __FUNCTION__, name, result, str); + debug_printf("%s: %s = 0x%"PRIx64" (%s)\n", + __FUNCTION__, name, result, str); } else { debug_printf("%s: %s = 0x%"PRIx64"\n", __FUNCTION__, name, result); } @@ -315,24 +323,24 @@ debug_get_flags_option(const char *name, } -void _debug_assert_fail(const char *expr, - const char *file, - unsigned line, - const char *function) +void +_debug_assert_fail(const char *expr, const char *file, unsigned line, + const char *function) { - _debug_printf("%s:%u:%s: Assertion `%s' failed.\n", file, line, function, expr); + _debug_printf("%s:%u:%s: Assertion `%s' failed.\n", + file, line, function, expr); os_abort(); } const char * -debug_dump_enum(const struct debug_named_value *names, +debug_dump_enum(const struct debug_named_value *names, unsigned long value) { static char rest[64]; - - while(names->name) { - if(names->value == value) + + while (names->name) { + if (names->value == value) return names->name; ++names; } @@ -343,14 +351,14 @@ debug_dump_enum(const struct debug_named_value *names, const char * -debug_dump_enum_noprefix(const struct debug_named_value *names, +debug_dump_enum_noprefix(const struct debug_named_value *names, const char *prefix, unsigned long value) { static char rest[64]; - - while(names->name) { - if(names->value == value) { + + while (names->name) { + if (names->value == value) { const char *name = names->name; while (*name == *prefix) { name++; @@ -361,16 +369,13 @@ debug_dump_enum_noprefix(const struct debug_named_value *names, ++names; } - - util_snprintf(rest, sizeof(rest), "0x%08lx", value); return rest; } const char * -debug_dump_flags(const struct debug_named_value *names, - unsigned long value) +debug_dump_flags(const struct debug_named_value *names, unsigned long value) { static char output[4096]; static char rest[256]; @@ -378,8 +383,8 @@ debug_dump_flags(const struct debug_named_value *names, output[0] = '\0'; - while(names->name) { - if((names->value & value) == names->value) { + while (names->name) { + if ((names->value & value) == names->value) { if (!first) util_strncat(output, "|", sizeof(output) - strlen(output) - 1); else @@ -390,27 +395,28 @@ debug_dump_flags(const struct debug_named_value *names, } ++names; } - + if (value) { if (!first) util_strncat(output, "|", sizeof(output) - strlen(output) - 1); else first = 0; - + util_snprintf(rest, sizeof(rest), "0x%08lx", value); util_strncat(output, rest, sizeof(output) - strlen(output) - 1); output[sizeof(output) - 1] = '\0'; } - - if(first) + + if (first) return "0"; - + return output; } #ifdef DEBUG -void debug_print_format(const char *msg, unsigned fmt ) +void +debug_print_format(const char *msg, unsigned fmt ) { debug_printf("%s: %s\n", msg, util_format_name(fmt)); } @@ -447,7 +453,8 @@ u_prim_name(unsigned prim) int fl_indent = 0; const char* fl_function[1024]; -int debug_funclog_enter(const char* f, const int line, const char* file) +int +debug_funclog_enter(const char* f, const int line, const char* file) { int i; @@ -461,14 +468,16 @@ int debug_funclog_enter(const char* f, const int line, const char* file) return 0; } -void debug_funclog_exit(const char* f, const int line, const char* file) +void +debug_funclog_exit(const char* f, const int line, const char* file) { --fl_indent; assert(fl_indent >= 0); assert(fl_function[fl_indent] == f); } -void debug_funclog_enter_exit(const char* f, const int line, const char* file) +void +debug_funclog_enter_exit(const char* f, const int line, const char* file) { int i; for (i = 0; i < fl_indent; i++) @@ -488,11 +497,12 @@ void debug_funclog_enter_exit(const char* f, const int line, const char* file) * \param height height in pixels * \param stride row stride in bytes */ -void debug_dump_image(const char *prefix, - enum pipe_format format, unsigned cpp, - unsigned width, unsigned height, - unsigned stride, - const void *data) +void +debug_dump_image(const char *prefix, + enum pipe_format format, unsigned cpp, + unsigned width, unsigned height, + unsigned stride, + const void *data) { /* write a ppm file */ char filename[256]; @@ -533,10 +543,12 @@ void debug_dump_image(const char *prefix, FREE(rgb8); } + /* FIXME: dump resources, not surfaces... */ -void debug_dump_surface(struct pipe_context *pipe, - const char *prefix, - struct pipe_surface *surface) +void +debug_dump_surface(struct pipe_context *pipe, + const char *prefix, + struct pipe_surface *surface) { struct pipe_resource *texture; struct pipe_transfer *transfer; @@ -572,9 +584,10 @@ void debug_dump_surface(struct pipe_context *pipe, } -void debug_dump_texture(struct pipe_context *pipe, - const char *prefix, - struct pipe_resource *texture) +void +debug_dump_texture(struct pipe_context *pipe, + const char *prefix, + struct pipe_resource *texture) { struct pipe_surface *surface, surf_tmpl; @@ -709,10 +722,9 @@ debug_dump_float_rgba_bmp(const char *filename, fwrite(&bmih, 40, 1, stream); y = height; - while(y--) { + while (y--) { float *ptr = rgba + (stride * y * 4); - for(x = 0; x < width; ++x) - { + for (x = 0; x < width; ++x) { struct bmp_rgb_quad pixel; pixel.rgbRed = float_to_ubyte(ptr[x*4 + 0]); pixel.rgbGreen = float_to_ubyte(ptr[x*4 + 1]); @@ -738,7 +750,7 @@ debug_dump_ubyte_rgba_bmp(const char *filename, unsigned x, y; assert(rgba); - if(!rgba) + if (!rgba) goto error1; bmfh.bfType = 0x4d42; @@ -761,17 +773,16 @@ debug_dump_ubyte_rgba_bmp(const char *filename, stream = fopen(filename, "wb"); assert(stream); - if(!stream) + if (!stream) goto error1; fwrite(&bmfh, 14, 1, stream); fwrite(&bmih, 40, 1, stream); y = height; - while(y--) { + while (y--) { const ubyte *ptr = rgba + (stride * y * 4); - for(x = 0; x < width; ++x) - { + for (x = 0; x < width; ++x) { struct bmp_rgb_quad pixel; pixel.rgbRed = ptr[x*4 + 0]; pixel.rgbGreen = ptr[x*4 + 1]; |