virgl: introduce $VIRGL_DEBUG=verbose
authorErik Faye-Lund <erik.faye-lund@collabora.com>
Mon, 20 Aug 2018 11:08:55 +0000 (13:08 +0200)
committerErik Faye-Lund <erik.faye-lund@collabora.com>
Tue, 28 Aug 2018 12:13:43 +0000 (14:13 +0200)
This adds an environment-varaible that can be used for driver-specific
flags, as well as a flag for it to enable verbose output.

While we're at it, quiet some overly chatty debug-output by default.

Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Reviewed-By: Gert Wollny <gert.wollny@collabora.com>
src/gallium/drivers/virgl/virgl_context.c
src/gallium/drivers/virgl/virgl_encode.c
src/gallium/drivers/virgl/virgl_screen.c
src/gallium/drivers/virgl/virgl_screen.h

index dc1dd2d3c2956e9d147663ff45f4dc4700e8720a..edc03f5dcf22e4d024a6468b258a947e5f1a470a 100644 (file)
@@ -1115,8 +1115,10 @@ static void virgl_get_sample_position(struct pipe_context *ctx,
    }
    out_value[0] = ((bits >> 4) & 0xf) / 16.0f;
    out_value[1] = (bits & 0xf) / 16.0f;
-   debug_printf("VIRGL: sample postion [%2d/%2d] = (%f, %f)\n",
-               index, sample_count, out_value[0], out_value[1]);
+
+   if (virgl_debug & VIRGL_DEBUG_VERBOSE)
+      debug_printf("VIRGL: sample postion [%2d/%2d] = (%f, %f)\n",
+                   index, sample_count, out_value[0], out_value[1]);
 }
 
 struct pipe_context *virgl_context_create(struct pipe_screen *pscreen,
index d56484e0dd0ba27fa9ca8a53d2c82f0801afd0b3..a13c3982ec3f6e5c818dc90bd1502a6d6eccd423 100644 (file)
@@ -261,7 +261,8 @@ int virgl_encode_shader_state(struct virgl_context *ctx,
 
       bret = tgsi_dump_str(tokens, TGSI_DUMP_FLOAT_AS_HEX, str, str_total_size);
       if (bret == false) {
-         debug_printf("Failed to translate shader in available space - trying again\n");
+         if (virgl_debug & VIRGL_DEBUG_VERBOSE)
+            debug_printf("Failed to translate shader in available space - trying again\n");
          old_size = str_total_size;
          str_total_size = 65536 * ++retry_size;
          str = REALLOC(str, old_size, str_total_size);
index c03ec4c9a97a5fb9f3e35dfbcd4d331923446f43..a57c5b9df1ffcbdea4ce3d0734be42a700f3f191 100644 (file)
 #include "virgl_public.h"
 #include "virgl_context.h"
 
+int virgl_debug = 0;
+static const struct debug_named_value debug_options[] = {
+   { "verbose", VIRGL_DEBUG_VERBOSE, NULL },
+   DEBUG_NAMED_VALUE_END
+};
+DEBUG_GET_ONCE_FLAGS_OPTION(virgl_debug, "VIRGL_DEBUG", debug_options, 0)
+
 static const char *
 virgl_get_vendor(struct pipe_screen *screen)
 {
@@ -730,6 +737,8 @@ virgl_create_screen(struct virgl_winsys *vws)
    if (!screen)
       return NULL;
 
+   virgl_debug = debug_get_option_virgl_debug();
+
    screen->vws = vws;
    screen->base.get_name = virgl_get_name;
    screen->base.get_vendor = virgl_get_vendor;
index dcf5816d60322925acb7110d4a0a1bba6e82575c..8334d162424775d81cec5da00a94ba1d8e32f79a 100644 (file)
@@ -27,6 +27,9 @@
 #include "util/slab.h"
 #include "virgl_winsys.h"
 
+#define VIRGL_DEBUG_VERBOSE 1
+extern int virgl_debug;
+
 struct virgl_screen {
    struct pipe_screen base;