summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/radeonsi/si_debug.c
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2015-10-07 01:48:18 +0200
committerMarek Olšák <marek.olsak@amd.com>2015-10-20 12:51:51 +0200
commit9b54ce3362f117b4d46497b578211bb26554dd78 (patch)
tree147c05c7e33aff01d0a983e73f9c6b78ebe5ae15 /src/gallium/drivers/radeonsi/si_debug.c
parente57dd7a08bfeacab47d64c3adeb392f8c15ca793 (diff)
downloadexternal_mesa3d-9b54ce3362f117b4d46497b578211bb26554dd78.zip
external_mesa3d-9b54ce3362f117b4d46497b578211bb26554dd78.tar.gz
external_mesa3d-9b54ce3362f117b4d46497b578211bb26554dd78.tar.bz2
radeonsi: support thread-safe shaders shared by multiple contexts
The "current" shader pointer is moved from the CSO to the context, so that the CSO is mostly immutable. The only drawback is that the "current" pointer isn't saved when unbinding a shader and it must be looked up when the shader is bound again. This is also a prerequisite for multithreaded shader compilation. Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_debug.c')
-rw-r--r--src/gallium/drivers/radeonsi/si_debug.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/gallium/drivers/radeonsi/si_debug.c b/src/gallium/drivers/radeonsi/si_debug.c
index 7d41e8d..5306218 100644
--- a/src/gallium/drivers/radeonsi/si_debug.c
+++ b/src/gallium/drivers/radeonsi/si_debug.c
@@ -31,15 +31,15 @@
#include "ddebug/dd_util.h"
-static void si_dump_shader(struct si_shader_selector *sel, const char *name,
+static void si_dump_shader(struct si_shader_ctx_state *state, const char *name,
FILE *f)
{
- if (!sel || !sel->current)
+ if (!state->cso || !state->current)
return;
fprintf(f, "%s shader disassembly:\n", name);
- si_dump_shader_key(sel->type, &sel->current->key, f);
- fprintf(f, "%s\n\n", sel->current->binary.disasm_string);
+ si_dump_shader_key(state->cso->type, &state->current->key, f);
+ fprintf(f, "%s\n\n", state->current->binary.disasm_string);
}
/* Parsed IBs are difficult to read without colors. Use "less -R file" to
@@ -536,11 +536,11 @@ static void si_dump_debug_state(struct pipe_context *ctx, FILE *f,
if (flags & PIPE_DEBUG_DEVICE_IS_HUNG)
si_dump_debug_registers(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->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_last_bo_list(sctx, f);
si_dump_last_ib(sctx, f);