radeonsi: split shader dumping
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Mon, 8 May 2017 11:00:12 +0000 (13:00 +0200)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Wed, 10 May 2017 06:58:41 +0000 (08:58 +0200)
Prepare for dumping compute shaders.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/radeonsi/si_debug.c

index 9634901e709814abe5dabfd17858d2061dd5ca8f..b9e912dcd4867101b351786a7725ff3dc597c3af 100644 (file)
 DEBUG_GET_ONCE_OPTION(replace_shaders, "RADEON_REPLACE_SHADERS", NULL)
 
 static void si_dump_shader(struct si_screen *sscreen,
-                          struct si_shader_ctx_state *state, FILE *f)
+                          enum pipe_shader_type processor,
+                          const struct si_shader *shader, FILE *f)
 {
-       struct si_shader *current = state->current;
+       if (shader->shader_log)
+               fwrite(shader->shader_log, shader->shader_log_size, 1, f);
+       else
+               si_shader_dump(sscreen, shader, NULL, processor, f, false);
+}
+
+static void si_dump_gfx_shader(struct si_screen *sscreen,
+                              const struct si_shader_ctx_state *state, FILE *f)
+{
+       const struct si_shader *current = state->current;
 
        if (!state->cso || !current)
                return;
 
-       if (current->shader_log)
-               fwrite(current->shader_log, current->shader_log_size, 1, f);
-       else
-               si_shader_dump(sscreen, state->current, NULL,
-                              state->cso->info.processor, f, false);
+       si_dump_shader(sscreen, state->cso->info.processor, current, f);
 }
 
 /**
@@ -753,11 +759,11 @@ static void si_dump_debug_state(struct pipe_context *ctx, FILE *f,
                si_dump_framebuffer(sctx, f);
 
        if (flags & PIPE_DUMP_CURRENT_SHADERS) {
-               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_gfx_shader(sctx->screen, &sctx->vs_shader, f);
+               si_dump_gfx_shader(sctx->screen, &sctx->tcs_shader, f);
+               si_dump_gfx_shader(sctx->screen, &sctx->tes_shader, f);
+               si_dump_gfx_shader(sctx->screen, &sctx->gs_shader, f);
+               si_dump_gfx_shader(sctx->screen, &sctx->ps_shader, f);
 
                if (flags & PIPE_DUMP_DEVICE_STATUS_REGISTERS) {
                        si_dump_annotated_shaders(sctx, f);