From: Marek Olšák <marek.ol...@amd.com>

there is no point, we have to wait anyway.
---
 src/gallium/drivers/radeonsi/si_state_shaders.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c 
b/src/gallium/drivers/radeonsi/si_state_shaders.c
index 9570259..3630911 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -1229,45 +1229,49 @@ again:
        /* Build a new shader. */
        shader = CALLOC_STRUCT(si_shader);
        if (!shader) {
                pipe_mutex_unlock(sel->mutex);
                return -ENOMEM;
        }
        shader->selector = sel;
        shader->key = *key;
        shader->compiler_ctx_state = *compiler_state;
 
+       bool is_pure_monolithic =
+               memcmp(&key->mono, &zeroed.mono, sizeof(key->mono)) != 0;
+
        /* Monolithic-only shaders don't make a distinction between optimized
         * and unoptimized. */
        shader->is_monolithic =
                !sel->main_shader_part ||
                sel->main_shader_part->key.as_ls != key->as_ls ||
                sel->main_shader_part->key.as_es != key->as_es ||
-               memcmp(&key->opt, &zeroed.opt, sizeof(key->opt)) != 0 ||
-               memcmp(&key->mono, &zeroed.mono, sizeof(key->mono)) != 0;
+               is_pure_monolithic ||
+               memcmp(&key->opt, &zeroed.opt, sizeof(key->opt)) != 0;
 
        shader->is_optimized =
                !sscreen->use_monolithic_shaders &&
                memcmp(&key->opt, &zeroed.opt, sizeof(key->opt)) != 0;
        if (shader->is_optimized)
                util_queue_fence_init(&shader->optimized_ready);
 
        if (!sel->last_variant) {
                sel->first_variant = shader;
                sel->last_variant = shader;
        } else {
                sel->last_variant->next_variant = shader;
                sel->last_variant = shader;
        }
 
        /* If it's an optimized shader, compile it asynchronously. */
        if (shader->is_optimized &&
+           !is_pure_monolithic &&
            thread_index < 0) {
                /* Compile it asynchronously. */
                util_queue_add_job(&sscreen->shader_compiler_queue,
                                   shader, &shader->optimized_ready,
                                   si_build_shader_variant, NULL);
 
                /* Use the default (unoptimized) shader for now. */
                memset(&key->opt, 0, sizeof(key->opt));
                pipe_mutex_unlock(sel->mutex);
                goto again;
-- 
2.7.4

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to