summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/radeonsi/si_state_shaders.c
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2017-02-14 22:06:51 +0100
committerMarek Olšák <[email protected]>2017-02-18 01:22:08 +0100
commita02117ba6ee5ede209d372025343f1410ff5346c (patch)
tree630c31ea778c5d8508aad417e9d5e8ef9f717f56 /src/gallium/drivers/radeonsi/si_state_shaders.c
parent9b91e0b54cc26919b63d781200a2062c6d572afc (diff)
radeonsi: don't compile pure monolithic shaders asynchronously
there is no point, we have to wait anyway. Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_state_shaders.c')
-rw-r--r--src/gallium/drivers/radeonsi/si_state_shaders.c8
1 files 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 9570259d8a8..3630911be76 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -1236,14 +1236,17 @@ again:
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 &&
@@ -1261,6 +1264,7 @@ again:
/* 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,