util: New file dedicated to dump state in human/machine readable format.
authorJosé Fonseca <jfonseca@vmware.com>
Tue, 4 Aug 2009 10:50:13 +0000 (11:50 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Sat, 29 Aug 2009 08:21:23 +0000 (09:21 +0100)
src/gallium/auxiliary/util/Makefile
src/gallium/auxiliary/util/SConscript
src/gallium/auxiliary/util/u_debug_dump.c [new file with mode: 0644]
src/gallium/auxiliary/util/u_debug_dump.h [new file with mode: 0644]

index bc3571e6421f904ec59937bbcdcb9353badde882..77f1133096eebda11f1c5c6d966f1ff43eb0cba9 100644 (file)
@@ -5,6 +5,7 @@ LIBNAME = util
 
 C_SOURCES = \
        u_debug.c \
+       u_debug_dump.c \
        u_debug_symbol.c \
        u_debug_stack.c \
        u_blit.c \
index bd1af4e4731b0d16a04e7ba271d6f810c5e2fcef..88a2ae7ae949980002d376284fa31fc99cdef866 100644 (file)
@@ -7,6 +7,7 @@ util = env.ConvenienceLibrary(
                'u_blit.c',
                'u_cache.c',
                'u_debug.c',
+               'u_debug_dump.c',
                'u_debug_memory.c',
                'u_debug_profile.c',
                'u_debug_stack.c',
diff --git a/src/gallium/auxiliary/util/u_debug_dump.c b/src/gallium/auxiliary/util/u_debug_dump.c
new file mode 100644 (file)
index 0000000..4258f57
--- /dev/null
@@ -0,0 +1,160 @@
+/**************************************************************************
+ * 
+ * Copyright 2009 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
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * 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.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * 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 "util/u_memory.h"
+#include "util/u_debug.h" 
+#include "util/u_debug_dump.h" 
+
+
+#define DEBUG_DUMP_INVALID_NAME "<invalid>"
+
+
+#if 0
+static const char *
+debug_dump_strip_prefix(const char *name,
+                        const char *prefix) 
+{
+   const char *stripped;
+   assert(name);
+   assert(prefix);
+   stripped = name;
+   while(*prefix) {
+      if(*stripped != *prefix)
+        return name;
+
+      ++stripped;
+      ++prefix;
+   }
+   return stripped;
+}
+#endif
+
+static const char *
+debug_dump_enum_continuous(unsigned value, 
+                           unsigned num_names,
+                           const char **names)
+{
+   if (value >= num_names)
+      return DEBUG_DUMP_INVALID_NAME;
+   return names[value];
+}
+
+
+#define DEFINE_DEBUG_DUMP_CONTINUOUS(_name) \
+   const char * \
+   debug_dump_##_name(unsigned value, boolean shortened) \
+   { \
+      if(shortened) \
+         return debug_dump_enum_continuous(value, Elements(debug_dump_##_name##_short_names), debug_dump_##_name##_short_names); \
+      else \
+         return debug_dump_enum_continuous(value, Elements(debug_dump_##_name##_names), debug_dump_##_name##_names); \
+   }
+
+
+static const char *
+debug_dump_blend_factor_names[] = {
+   DEBUG_DUMP_INVALID_NAME, /* 0x0 */
+   "PIPE_BLENDFACTOR_ONE",
+   "PIPE_BLENDFACTOR_SRC_COLOR",
+   "PIPE_BLENDFACTOR_SRC_ALPHA",
+   "PIPE_BLENDFACTOR_DST_ALPHA",
+   "PIPE_BLENDFACTOR_DST_COLOR",
+   "PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE",
+   "PIPE_BLENDFACTOR_CONST_COLOR",
+   "PIPE_BLENDFACTOR_CONST_ALPHA",
+   "PIPE_BLENDFACTOR_SRC1_COLOR",
+   "PIPE_BLENDFACTOR_SRC1_ALPHA",
+   DEBUG_DUMP_INVALID_NAME, /* 0x0b */
+   DEBUG_DUMP_INVALID_NAME, /* 0x0c */
+   DEBUG_DUMP_INVALID_NAME, /* 0x0d */
+   DEBUG_DUMP_INVALID_NAME, /* 0x0e */
+   DEBUG_DUMP_INVALID_NAME, /* 0x0f */
+   DEBUG_DUMP_INVALID_NAME, /* 0x10 */
+   "PIPE_BLENDFACTOR_ZERO",
+   "PIPE_BLENDFACTOR_INV_SRC_COLOR",
+   "PIPE_BLENDFACTOR_INV_SRC_ALPHA",
+   "PIPE_BLENDFACTOR_INV_DST_ALPHA",
+   "PIPE_BLENDFACTOR_INV_DST_COLOR",
+   "PIPE_BLENDFACTOR_INV_CONST_COLOR",
+   "PIPE_BLENDFACTOR_INV_CONST_ALPHA",
+   "PIPE_BLENDFACTOR_INV_SRC1_COLOR",
+   "PIPE_BLENDFACTOR_INV_SRC1_ALPHA"
+};
+
+static const char *
+debug_dump_blend_factor_short_names[] = {
+   DEBUG_DUMP_INVALID_NAME, /* 0x0 */
+   "one",
+   "src_color",
+   "src_alpha",
+   "dst_alpha",
+   "dst_color",
+   "src_alpha_saturate",
+   "const_color",
+   "const_alpha",
+   "src1_color",
+   "src1_alpha",
+   DEBUG_DUMP_INVALID_NAME, /* 0x0b */
+   DEBUG_DUMP_INVALID_NAME, /* 0x0c */
+   DEBUG_DUMP_INVALID_NAME, /* 0x0d */
+   DEBUG_DUMP_INVALID_NAME, /* 0x0e */
+   DEBUG_DUMP_INVALID_NAME, /* 0x0f */
+   DEBUG_DUMP_INVALID_NAME, /* 0x10 */
+   "zero",
+   "inv_src_color",
+   "inv_src_alpha",
+   "inv_dst_alpha",
+   "inv_dst_color",
+   "inv_const_color",
+   "inv_const_alpha",
+   "inv_src1_color",
+   "inv_src1_alpha"
+};
+
+DEFINE_DEBUG_DUMP_CONTINUOUS(blend_factor)
+
+
+static const char *
+debug_dump_blend_func_names[] = {
+   "PIPE_BLEND_ADD",
+   "PIPE_BLEND_SUBTRACT",
+   "PIPE_BLEND_REVERSE_SUBTRACT",
+   "PIPE_BLEND_MIN",
+   "PIPE_BLEND_MAX"
+};
+
+static const char *
+debug_dump_blend_func_short_names[] = {
+   "add",
+   "sub",
+   "rev_sub",
+   "min",
+   "max"
+};
+
+DEFINE_DEBUG_DUMP_CONTINUOUS(blend_func)
diff --git a/src/gallium/auxiliary/util/u_debug_dump.h b/src/gallium/auxiliary/util/u_debug_dump.h
new file mode 100644 (file)
index 0000000..e946d91
--- /dev/null
@@ -0,0 +1,63 @@
+/**************************************************************************
+ * 
+ * Copyright 2009 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
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * 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.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * 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.
+ * 
+ **************************************************************************/
+
+/**
+ * @file
+ * Dump data in human/machine readable format.
+ * 
+ * @author Jose Fonseca <jfonseca@vmware.com>
+ */
+
+#ifndef U_DEBUG_DUMP_H_
+#define U_DEBUG_DUMP_H_
+
+
+#include "pipe/p_compiler.h"
+#include "pipe/p_state.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+const char *
+debug_dump_blend_factor(unsigned value, boolean shortened);
+
+const char *
+debug_dump_blend_func(unsigned value, boolean shortened);
+
+
+
+/* FIXME: Move the other debug_dump_xxx functions out of u_debug.h into here. */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* U_DEBUG_H_ */