Mesa (master): radeonsi: initialize the per-context compiler on demand

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Nov 25 21:50:19 UTC 2019


Module: Mesa
Branch: master
Commit: 4675cb2019cdab3f4980e3f98ce243f668092425
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4675cb2019cdab3f4980e3f98ce243f668092425

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Wed Nov 20 18:40:46 2019 -0500

radeonsi: initialize the per-context compiler on demand

This takes a noticable amount of time in piglit and some tests don't
need it.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>

---

 src/gallium/drivers/radeonsi/si_compute_prim_discard.c | 3 +++
 src/gallium/drivers/radeonsi/si_pipe.c                 | 2 --
 src/gallium/drivers/radeonsi/si_state_shaders.c        | 3 +++
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_compute_prim_discard.c b/src/gallium/drivers/radeonsi/si_compute_prim_discard.c
index 0bbaf4f306d..31c18e098e6 100644
--- a/src/gallium/drivers/radeonsi/si_compute_prim_discard.c
+++ b/src/gallium/drivers/radeonsi/si_compute_prim_discard.c
@@ -939,6 +939,9 @@ static bool si_shader_select_prim_discard_cs(struct si_context *sctx,
 	sctx->cs_prim_discard_state.cso = sctx->vs_shader.cso;
 	sctx->cs_prim_discard_state.current = NULL;
 
+	if (!sctx->compiler.passes)
+		si_init_compiler(sctx->screen, &sctx->compiler);
+
 	struct si_compiler_ctx_state compiler_state;
 	compiler_state.compiler = &sctx->compiler;
 	compiler_state.debug = sctx->debug;
diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c
index 1338d657599..aa627279ed3 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.c
+++ b/src/gallium/drivers/radeonsi/si_pipe.c
@@ -670,8 +670,6 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen,
 	sctx->scratch_waves = MAX2(32 * sscreen->info.num_good_compute_units,
 				   max_threads_per_block / 64);
 
-	si_init_compiler(sscreen, &sctx->compiler);
-
 	/* Bindless handles. */
 	sctx->tex_handles = _mesa_hash_table_create(NULL, _mesa_hash_pointer,
 						    _mesa_key_pointer_equal);
diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c
index 3cf2814f081..dcad27fec05 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -3916,6 +3916,9 @@ bool si_update_shaders(struct si_context *sctx)
 		old_ps ? old_ps->key.part.ps.epilog.spi_shader_col_format : 0;
 	int r;
 
+	if (!sctx->compiler.passes)
+		si_init_compiler(sctx->screen, &sctx->compiler);
+
 	compiler_state.compiler = &sctx->compiler;
 	compiler_state.debug = sctx->debug;
 	compiler_state.is_debug_context = sctx->is_debug;




More information about the mesa-commit mailing list