[Mesa-dev] [PATCH 2/2] gallium/ddebug: add 'verbose' option

Marek Olšák maraeo at gmail.com
Tue Jan 26 04:05:44 PST 2016


For the series:

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Mon, Jan 25, 2016 at 6:00 PM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
> From: Nicolai Hähnle <nicolai.haehnle at amd.com>
>
> This currently just writes out the name of dump files, which can be useful
> to easily correlate those files with other log outputs (driver debug output,
> apitrace calls, etc.)
> ---
>  src/gallium/drivers/ddebug/dd_draw.c    | 3 ++-
>  src/gallium/drivers/ddebug/dd_pipe.h    | 1 +
>  src/gallium/drivers/ddebug/dd_screen.c  | 6 ++++--
>  src/gallium/drivers/ddebug/dd_util.h    | 5 ++++-
>  src/gallium/drivers/radeonsi/si_debug.c | 2 +-
>  5 files changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/src/gallium/drivers/ddebug/dd_draw.c b/src/gallium/drivers/ddebug/dd_draw.c
> index de484ab..45e4e10 100644
> --- a/src/gallium/drivers/ddebug/dd_draw.c
> +++ b/src/gallium/drivers/ddebug/dd_draw.c
> @@ -88,8 +88,9 @@ struct dd_call
>  static FILE *
>  dd_get_file_stream(struct dd_context *dctx)
>  {
> +   struct dd_screen *dscreen = dd_screen(dctx->base.screen);
>     struct pipe_screen *screen = dctx->pipe->screen;
> -   FILE *f = dd_get_debug_file();
> +   FILE *f = dd_get_debug_file(dscreen->verbose);
>     if (!f)
>        return NULL;
>
> diff --git a/src/gallium/drivers/ddebug/dd_pipe.h b/src/gallium/drivers/ddebug/dd_pipe.h
> index a045518..80098dc 100644
> --- a/src/gallium/drivers/ddebug/dd_pipe.h
> +++ b/src/gallium/drivers/ddebug/dd_pipe.h
> @@ -45,6 +45,7 @@ struct dd_screen
>     unsigned timeout_ms;
>     enum dd_mode mode;
>     bool no_flush;
> +   bool verbose;
>     unsigned skip_count;
>  };
>
> diff --git a/src/gallium/drivers/ddebug/dd_screen.c b/src/gallium/drivers/ddebug/dd_screen.c
> index ab87d25..3706b2d 100644
> --- a/src/gallium/drivers/ddebug/dd_screen.c
> +++ b/src/gallium/drivers/ddebug/dd_screen.c
> @@ -280,17 +280,18 @@ ddebug_screen_create(struct pipe_screen *screen)
>        puts("");
>        puts("Usage:");
>        puts("");
> -      puts("  GALLIUM_DDEBUG=\"always [noflush]\"");
> +      puts("  GALLIUM_DDEBUG=\"always [noflush] [verbose]\"");
>        puts("    Flush and dump context and driver information after every draw call into");
>        puts("    $HOME/"DD_DIR"/.");
>        puts("");
> -      puts("  GALLIUM_DDEBUG=\"[timeout in ms] [noflush]\"");
> +      puts("  GALLIUM_DDEBUG=\"[timeout in ms] [noflush] [verbose]\"");
>        puts("    Flush and detect a device hang after every draw call based on the given");
>        puts("    fence timeout and dump context and driver information into");
>        puts("    $HOME/"DD_DIR"/ when a hang is detected.");
>        puts("");
>        puts("  If 'noflush' is specified, do not flush on every draw call. In hang");
>        puts("  detection mode, this only detect hangs in pipe->flush.");
> +      puts("  If 'verbose' is specified, additional information is written to stderr.");
>        puts("");
>        puts("  GALLIUM_DDEBUG_SKIP=[count]");
>        puts("    Skip flush and hang detection for the given initial number of draw calls.");
> @@ -341,6 +342,7 @@ ddebug_screen_create(struct pipe_screen *screen)
>     dscreen->timeout_ms = timeout;
>     dscreen->mode = dump_always ? DD_DUMP_ALL_CALLS : DD_DETECT_HANGS;
>     dscreen->no_flush = no_flush;
> +   dscreen->verbose = strstr(option, "verbose") != NULL;
>
>     switch (dscreen->mode) {
>     case DD_DUMP_ALL_CALLS:
> diff --git a/src/gallium/drivers/ddebug/dd_util.h b/src/gallium/drivers/ddebug/dd_util.h
> index c217c8e..093bdff 100644
> --- a/src/gallium/drivers/ddebug/dd_util.h
> +++ b/src/gallium/drivers/ddebug/dd_util.h
> @@ -40,7 +40,7 @@
>  #define DD_DIR "ddebug_dumps"
>
>  static inline FILE *
> -dd_get_debug_file()
> +dd_get_debug_file(bool verbose)
>  {
>     static unsigned index;
>     char proc_name[128], dir[256], name[512];
> @@ -65,6 +65,9 @@ dd_get_debug_file()
>        return NULL;
>     }
>
> +   if (verbose)
> +      fprintf(stderr, "dd: dumping to file %s\n", name);
> +
>     return f;
>  }
>
> diff --git a/src/gallium/drivers/radeonsi/si_debug.c b/src/gallium/drivers/radeonsi/si_debug.c
> index a07b1c5..e16ebbd 100644
> --- a/src/gallium/drivers/radeonsi/si_debug.c
> +++ b/src/gallium/drivers/radeonsi/si_debug.c
> @@ -771,7 +771,7 @@ void si_check_vm_faults(struct si_context *sctx)
>         if (!si_vm_fault_occured(sctx, &addr))
>                 return;
>
> -       f = dd_get_debug_file();
> +       f = dd_get_debug_file(false);
>         if (!f)
>                 return;
>
> --
> 2.5.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list