mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2024-11-25 00:09:54 +00:00
gallium/ddebug: add 'verbose' option
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.) Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
f4c8fa4e49
commit
41875ac4ed
@ -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;
|
||||
|
||||
|
@ -45,6 +45,7 @@ struct dd_screen
|
||||
unsigned timeout_ms;
|
||||
enum dd_mode mode;
|
||||
bool no_flush;
|
||||
bool verbose;
|
||||
unsigned skip_count;
|
||||
};
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user