radeonsi: initialize the per-context compiler on demand
authorMarek Olšák <marek.olsak@amd.com>
Wed, 20 Nov 2019 23:40:46 +0000 (18:40 -0500)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 25 Nov 2019 21:48:27 +0000 (16:48 -0500)
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@amd.com>
src/gallium/drivers/radeonsi/si_compute_prim_discard.c
src/gallium/drivers/radeonsi/si_pipe.c
src/gallium/drivers/radeonsi/si_state_shaders.c

index 0bbaf4f306da1d2105d1d7a181f932d226d9f237..31c18e098e6df2365e63e436af315e0d84265bc1 100644 (file)
@@ -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;
index 1338d657599b0fcc9b72a1e3b779db07208ced55..aa627279ed3ca33cc21da9bb141c8f3a5b743fda 100644 (file)
@@ -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);
index 3cf2814f081f3ade3fe9e6fc83d02e27c1e4b883..dcad27fec05a2135108747a3f27e11a01e568e5b 100644 (file)
@@ -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;