radeonsi/nir: move si_lower_nir() call into compiler thread
authorTimothy Arceri <tarceri@itsqueeze.com>
Wed, 27 Feb 2019 03:30:29 +0000 (14:30 +1100)
committerTimothy Arceri <tarceri@itsqueeze.com>
Thu, 28 Feb 2019 00:54:06 +0000 (11:54 +1100)
This helps improve compile times. For example the shader-db dolphin
shader shaders/dolphin/ubershaders/120.shader_test goes from
~1.69 -> ~1.57 seconds on my machine with this change.

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

index 9e052e1efcefdc139c1aff03f1da741772808c6b..5bdfd4f6ac11561c4b5d044378e5d49048c7483b 100644 (file)
@@ -2043,6 +2043,9 @@ static void si_init_shader_selector_async(void *job, int thread_index)
        assert(thread_index < ARRAY_SIZE(sscreen->compiler));
        compiler = &sscreen->compiler[thread_index];
 
+       if (sel->nir)
+               si_lower_nir(sel);
+
        /* Compile the main shader part for use with a prolog and/or epilog.
         * If this fails, the driver will try to compile a monolithic shader
         * on demand.
@@ -2239,8 +2242,6 @@ static void *si_create_shader_selector(struct pipe_context *ctx,
 
                si_nir_scan_shader(sel->nir, &sel->info);
                si_nir_scan_tess_ctrl(sel->nir, &sel->tcs_info);
-
-               si_lower_nir(sel);
        }
 
        sel->type = sel->info.processor;