ddebug: dump driver state into a separate file
Due to asynchronous execution, it's not clear which of the draws the state may refer to. This also works around an issue encountered with radeonsi where dumping the driver state itself caused a hang. Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
b7fab7b02d
commit
ac0b60fa47
|
@ -988,11 +988,6 @@ dd_report_hang(struct dd_context *dctx)
|
|||
dd_write_header(f, dscreen->screen, record->draw_state.base.apitrace_call_number);
|
||||
dd_write_record(f, record);
|
||||
|
||||
if (!encountered_hang) {
|
||||
dd_dump_driver_state(dctx, f, PIPE_DUMP_DEVICE_STATUS_REGISTERS);
|
||||
dd_dump_dmesg(f);
|
||||
}
|
||||
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
|
@ -1004,6 +999,18 @@ dd_report_hang(struct dd_context *dctx)
|
|||
if (num_later)
|
||||
fprintf(stderr, "... and %u additional draws.\n", num_later);
|
||||
|
||||
char name[512];
|
||||
dd_get_debug_filename_and_mkdir(name, sizeof(name), false);
|
||||
FILE *f = fopen(name, "w");
|
||||
if (!f) {
|
||||
fprintf(stderr, "fopen failed\n");
|
||||
} else {
|
||||
dd_write_header(f, dscreen->screen, 0);
|
||||
dd_dump_driver_state(dctx, f, PIPE_DUMP_DEVICE_STATUS_REGISTERS);
|
||||
dd_dump_dmesg(f);
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
fprintf(stderr, "\nDone.\n");
|
||||
dd_kill_process();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue