From 3de8c5a3c59fa79b139d9630c82fc4537aa3e004 Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Mon, 28 Nov 2016 23:41:38 +0100 Subject: radeonsi: write wave information into GPU hang reports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UMR is our new debugging tool. It must have +s set for Mesa to use it without root privileges: sudo chmod +s .../umr Reviewed-by: Nicolai Hähnle --- src/gallium/drivers/radeonsi/si_debug.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/gallium/drivers/radeonsi/si_debug.c') diff --git a/src/gallium/drivers/radeonsi/si_debug.c b/src/gallium/drivers/radeonsi/si_debug.c index cc3617f1659..e4a350f6985 100644 --- a/src/gallium/drivers/radeonsi/si_debug.c +++ b/src/gallium/drivers/radeonsi/si_debug.c @@ -468,6 +468,21 @@ static void si_dump_descriptors(struct si_context *sctx, num_elements[i], f); } +static void si_dump_command(const char *title, const char *command, FILE *f) +{ + char line[2000]; + + FILE *p = popen(command, "r"); + if (!p) + return; + + fprintf(f, COLOR_YELLOW "%s: " COLOR_RESET "\n", title); + while (fgets(line, sizeof(line), p)) + fputs(line, f); + fprintf(f, "\n\n"); + pclose(p); +} + static void si_dump_debug_state(struct pipe_context *ctx, FILE *f, unsigned flags) { @@ -486,6 +501,11 @@ static void si_dump_debug_state(struct pipe_context *ctx, FILE *f, si_dump_shader(sctx->screen, &sctx->gs_shader, f); si_dump_shader(sctx->screen, &sctx->ps_shader, f); + if (flags & PIPE_DUMP_DEVICE_STATUS_REGISTERS) { + si_dump_command("Active waves", "umr -wa | column -t", f); + si_dump_command("Wave information", "umr -O bits -wa", f); + } + si_dump_descriptor_list(&sctx->descriptors[SI_DESCS_RW_BUFFERS], "", "RW buffers", SI_NUM_RW_BUFFERS, f); si_dump_descriptors(sctx, &sctx->vs_shader, f); -- cgit v1.2.3