[Mesa-dev] [PATCH 06/21] mesa: refactor debug output should_log

Chia-I Wu olvaffe at gmail.com
Tue Apr 22 01:58:21 PDT 2014


Move the message filtering logic to debug_is_message_filtered.

Signed-off-by: Chia-I Wu <olv at lunarg.com>
---
 src/mesa/main/errors.c | 111 +++++++++++++++++++++++++++----------------------
 1 file changed, 61 insertions(+), 50 deletions(-)

diff --git a/src/mesa/main/errors.c b/src/mesa/main/errors.c
index 66d3146..66896c4 100644
--- a/src/mesa/main/errors.c
+++ b/src/mesa/main/errors.c
@@ -217,6 +217,63 @@ debug_create(void)
    return debug;
 }
 
+/**
+ * Returns if the given message source/type/ID tuple is filtered.
+ */
+static bool
+debug_is_message_filtered(struct gl_debug_state *debug,
+                          enum mesa_debug_source source,
+                          enum mesa_debug_type type,
+                          GLuint id,
+                          enum mesa_debug_severity severity)
+{
+   const GLint gstack = debug->GroupStackDepth;
+   struct gl_debug_namespace *nspace =
+      &debug->Namespaces[gstack][source][type];
+   uintptr_t state = 0;
+
+   if (!debug->DebugOutput)
+      return true;
+
+   /* In addition to not being able to store zero as a value, HashTable also
+    * can't use zero as a key.
+    */
+   if (id)
+      state = (uintptr_t)_mesa_HashLookup(nspace->IDs, id);
+   else
+      state = nspace->ZeroID;
+
+   /* Only do this once for each ID. This makes sure the ID exists in,
+    * at most, one list, and does not pointlessly appear multiple times.
+    */
+   if (!(state & KNOWN_SEVERITY)) {
+      struct gl_debug_severity *entry;
+
+      if (state == NOT_FOUND) {
+         if (debug->Defaults[gstack][severity][source][type])
+            state = ENABLED;
+         else
+            state = DISABLED;
+      }
+
+      entry = malloc(sizeof *entry);
+      if (!entry)
+         goto out;
+
+      state |= KNOWN_SEVERITY;
+
+      if (id)
+         _mesa_HashInsert(nspace->IDs, id, (void*)state);
+      else
+         nspace->ZeroID = state;
+
+      entry->ID = id;
+      insert_at_tail(&nspace->Severity[severity], &entry->link);
+   }
+out:
+   return !(state & ENABLED_BIT);
+}
+
 
 /**
  * Return debug state for the context.  The debug state will be allocated
@@ -237,9 +294,6 @@ _mesa_get_debug_state(struct gl_context *ctx)
 
 
 
-/**
- * Returns the state of the given message source/type/ID tuple.
- */
 static GLboolean
 should_log(struct gl_context *ctx,
            enum mesa_debug_source source,
@@ -248,7 +302,6 @@ should_log(struct gl_context *ctx,
            enum mesa_debug_severity severity)
 {
    struct gl_debug_state *debug;
-   uintptr_t state = 0;
 
    if (!ctx->Debug) {
       /* no debug state set so far */
@@ -256,52 +309,10 @@ should_log(struct gl_context *ctx,
    }
 
    debug = _mesa_get_debug_state(ctx);
-   if (debug) {
-      const GLint gstack = debug->GroupStackDepth;
-      struct gl_debug_namespace *nspace =
-         &debug->Namespaces[gstack][source][type];
-
-      if (!debug->DebugOutput)
-         return GL_FALSE;
-
-      /* In addition to not being able to store zero as a value, HashTable also
-       * can't use zero as a key.
-       */
-      if (id)
-         state = (uintptr_t)_mesa_HashLookup(nspace->IDs, id);
-      else
-         state = nspace->ZeroID;
-
-      /* Only do this once for each ID. This makes sure the ID exists in,
-       * at most, one list, and does not pointlessly appear multiple times.
-       */
-      if (!(state & KNOWN_SEVERITY)) {
-         struct gl_debug_severity *entry;
-
-         if (state == NOT_FOUND) {
-            if (debug->Defaults[gstack][severity][source][type])
-               state = ENABLED;
-            else
-               state = DISABLED;
-         }
-
-         entry = malloc(sizeof *entry);
-         if (!entry)
-            goto out;
-
-         state |= KNOWN_SEVERITY;
-
-         if (id)
-            _mesa_HashInsert(nspace->IDs, id, (void*)state);
-         else
-            nspace->ZeroID = state;
-
-         entry->ID = id;
-         insert_at_tail(&nspace->Severity[severity], &entry->link);
-      }
-   }
-out:
-   return !!(state & ENABLED_BIT);
+   if (debug)
+      return !debug_is_message_filtered(debug, source, type, id, severity);
+   else
+      return GL_FALSE;
 }
 
 
-- 
1.8.5.3



More information about the mesa-dev mailing list