summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gallium/drivers/radeonsi/si_pipe.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c
index bbb5ea660d6..0c2f6b37dba 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.c
+++ b/src/gallium/drivers/radeonsi/si_pipe.c
@@ -882,8 +882,11 @@ struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws)
return NULL;
}
- /* Only enable as many threads as we have target machines and CPUs. */
+ /* Only enable as many threads as we have target machines, but at most
+ * the number of CPUs - 1 if there is more than one.
+ */
num_cpus = sysconf(_SC_NPROCESSORS_ONLN);
+ num_cpus = MAX2(1, num_cpus - 1);
num_compiler_threads = MIN2(num_cpus, ARRAY_SIZE(sscreen->tm));
if (!util_queue_init(&sscreen->shader_compiler_queue, "si_shader",