svga: add SVGA_NO_LOGGING env var (v2)
authorBrian Paul <brianp@vmware.com>
Wed, 1 May 2019 21:49:44 +0000 (15:49 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 2 May 2019 12:09:35 +0000 (06:09 -0600)
valgrind crashes when we try to initialize host logging.  This
env var can be used to disable logging.

v2: rebase onto "svga: move host logging to winsys".

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Neha Bhende <bhenden@vmware.com>
docs/envvars.html
src/gallium/drivers/svga/svga_screen.c

index c9733e6523458c08283062a41d88900a64edba7c..43d3a6cf169f3a989aa0133d5f2ab9b7e8f47cda 100644 (file)
@@ -338,6 +338,9 @@ See src/mesa/state_tracker/st_debug.c for other options.
 for details.
 <li>SVGA_EXTRA_LOGGING - if set, enables extra logging to the vmware.log file,
 such as the OpenGL program's name and command line arguments.
+<li>SVGA_NO_LOGGING - if set, disables logging to the vmware.log file.
+This is useful when using Valgrind because it otherwise crashes when
+initializing the host log feature.
 <li>See the driver code for other, lesser-used variables.
 </ul>
 
index 664b9bf615d67e77b8c9f4bcc71511e1b2a618e2..f747ff78bcfeebdd01eb927e32643967b7bfbf59 100644 (file)
@@ -917,6 +917,16 @@ init_logging(struct pipe_screen *screen)
 }
 
 
+/**
+ * no-op logging function to use when SVGA_NO_LOGGING is set.
+ */
+static void
+nop_host_log(struct svga_winsys_screen *sws, const char *message)
+{
+   /* nothing */
+}
+
+
 static void
 svga_destroy_screen( struct pipe_screen *screen )
 {
@@ -1134,7 +1144,11 @@ svga_screen_create(struct svga_winsys_screen *sws)
 
    svga_screen_cache_init(svgascreen);
 
-   init_logging(screen);
+   if (debug_get_bool_option("SVGA_NO_LOGGING", FALSE) == TRUE) {
+      svgascreen->sws->host_log = nop_host_log;
+   } else {
+      init_logging(screen);
+   }
 
    return screen;
 error2: