svga: fix constant indices for texcoord scale factors and texture buffer size
[mesa.git] / src / gallium / state_trackers / nine / nine_debug.c
index 4779192ecc310b8e05297cac1d81b3ac95c583d8..1dcbca45854a7e5c737188e9fe6b2cddb69cf7e2 100644 (file)
@@ -23,6 +23,7 @@
 #include "nine_debug.h"
 
 #include <ctype.h>
+#include "c11/threads.h"
 
 static const struct debug_named_value nine_debug_flags[] = {
     { "unknown", DBG_UNKNOWN,              "IUnknown implementation." },
@@ -52,6 +53,7 @@ static const struct debug_named_value nine_debug_flags[] = {
     { "user",    DBG_USER,                 "User errors, both fixable and unfixable." },
     { "error",   DBG_ERROR,                "Driver errors, always visible." },
     { "warn",    DBG_WARN,                 "Driver warnings, always visible in debug builds." },
+    { "tid",     DBG_TID,                  "Display thread-ids." },
     DEBUG_NAMED_VALUE_END
 };
 
@@ -63,17 +65,26 @@ _nine_debug_printf( unsigned long flag,
 {
     static boolean first = TRUE;
     static unsigned long dbg_flags = DBG_ERROR | DBG_WARN;
+    unsigned long tid = 0;
 
     if (first) {
         first = FALSE;
         dbg_flags |= debug_get_flags_option("NINE_DEBUG", nine_debug_flags, 0);
     }
+
+#if defined(HAVE_PTHREAD)
+#  if defined(__GNU_LIBRARY__) && defined(__GLIBC__) && defined(__GLIBC_MINOR__) && \
+      (__GLIBC__ >= 3 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 12))
+    if (dbg_flags & DBG_TID)
+        tid = pthread_self();
+#  endif
+#endif
+
     if (dbg_flags & flag) {
         const char *f = func ? strrchr(func, '_') : NULL;
         va_list ap;
-
-        /* inside a class this will print nine:classinlowercase:func: while
-         * outside a class (rarely used) it will just print nine:func:
+        /* inside a class this will print nine:tid:classinlowercase:func: while
+         * outside a class (rarely used) it will just print nine:tid:func
          * the reason for lower case is simply to match the filenames, as it
          * will also strip off the "Nine" */
         if (f && strncmp(func, "Nine", 4) == 0) {
@@ -81,10 +92,15 @@ _nine_debug_printf( unsigned long flag,
             char *ptr = klass;
             for (func += 4; func != f; ++func) { *ptr++ = tolower(*func); }
             *ptr = '\0';
-
-            debug_printf("nine:%s:%s: ", klass, ++f);
+            if (tid)
+                debug_printf("nine:0x%08lx:%s:%s: ", tid, klass, ++f);
+            else
+                debug_printf("nine:%s:%s: ", klass, ++f);
         } else if (func) {
-            debug_printf("nine:%s: ", func);
+            if (tid)
+                debug_printf("nine:0x%08lx:%s ", tid, func);
+            else
+                debug_printf("nine:%s ", func);
         }
 
         va_start(ap, fmt);