radeonsi: dump full shader disassemblies into ddebug logs
authorMarek Olšák <marek.olsak@amd.com>
Thu, 25 Feb 2016 16:12:15 +0000 (17:12 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 29 Feb 2016 23:18:54 +0000 (00:18 +0100)
including prolog and epilog disassemblies

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
src/gallium/drivers/radeonsi/si_debug.c

index e16ebbdef3e3b68bd950cc3839017b37bafe3032..7c2b745a7de4cef46926c3ae7578d227d1ee0f27 100644 (file)
 
 DEBUG_GET_ONCE_OPTION(replace_shaders, "RADEON_REPLACE_SHADERS", NULL)
 
-static void si_dump_shader(struct si_shader_ctx_state *state, const char *name,
-                          FILE *f)
+static void si_dump_shader(struct si_screen *sscreen,
+                          struct si_shader_ctx_state *state, FILE *f)
 {
        if (!state->cso || !state->current)
                return;
 
-       fprintf(f, "%s shader disassembly:\n", name);
        si_dump_shader_key(state->cso->type, &state->current->key, f);
-       fprintf(f, "%s\n\n", state->current->binary.disasm_string);
+       si_shader_dump(sscreen, state->current, NULL,
+                      state->cso->info.processor, f);
 }
 
 /**
@@ -670,11 +670,11 @@ static void si_dump_debug_state(struct pipe_context *ctx, FILE *f,
                si_dump_debug_registers(sctx, f);
 
        si_dump_framebuffer(sctx, f);
-       si_dump_shader(&sctx->vs_shader, "Vertex", f);
-       si_dump_shader(&sctx->tcs_shader, "Tessellation control", f);
-       si_dump_shader(&sctx->tes_shader, "Tessellation evaluation", f);
-       si_dump_shader(&sctx->gs_shader, "Geometry", f);
-       si_dump_shader(&sctx->ps_shader, "Fragment", f);
+       si_dump_shader(sctx->screen, &sctx->vs_shader, f);
+       si_dump_shader(sctx->screen, &sctx->tcs_shader, f);
+       si_dump_shader(sctx->screen, &sctx->tes_shader, f);
+       si_dump_shader(sctx->screen, &sctx->gs_shader, f);
+       si_dump_shader(sctx->screen, &sctx->ps_shader, f);
 
        si_dump_last_bo_list(sctx, f);
        si_dump_last_ib(sctx, f);