mapi: Respect MESA_DEBUG=silent for no-op debug output.
authorEric Anholt <eric@anholt.net>
Wed, 14 Apr 2021 18:28:54 +0000 (11:28 -0700)
committerMarge Bot <eric+marge@anholt.net>
Mon, 19 Apr 2021 20:53:27 +0000 (20:53 +0000)
We set this in deqp-runner runs to disable Mesa debug/debugoptimized
builds printing to stderr for expected GL test behavior, and with the
addition of dEQP-EGL mapi got very verbose.  Move it to a call_once() too
to avoid data races.

Acked-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10240>

src/mapi/table.c

index 7487501..b0dd51f 100644 (file)
  *    Chia-I Wu <olv@lunarg.com>
  */
 
+#include <stdbool.h>
 #include <stdlib.h>
 #include <stdio.h>
+#include <string.h>
 
+#include "c11/threads.h"
 #include "table.h"
 
 static nop_handler_proc nop_handler = NULL;
@@ -38,6 +41,17 @@ table_set_noop_handler(nop_handler_proc func)
    nop_handler = func;
 }
 
+static bool log_noop;
+
+static void check_debug_env(void)
+{
+   const char *debug = getenv("MESA_DEBUG");
+   if (!debug)
+      debug = getenv("LIBGL_DEBUG");
+   if (debug && strcmp(debug, "silent") != 0)
+      log_noop = true;
+}
+
 static void
 noop_warn(const char *name)
 {
@@ -45,12 +59,10 @@ noop_warn(const char *name)
       nop_handler(name);
    }
    else {
-      static int debug = -1;
-   
-      if (debug < 0)
-         debug = (getenv("MESA_DEBUG") || getenv("LIBGL_DEBUG"));
+      static once_flag flag = ONCE_FLAG_INIT;
+      call_once(&flag, check_debug_env);
 
-      if (debug)
+      if (log_noop)
          fprintf(stderr, "%s is no-op\n", name);
    }
 }