summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2019-10-16 13:33:36 +1000
committerDave Airlie <airlied@linux.ie>2019-10-21 22:51:23 +0000
commitbde08ce4d7bf2e59054ea1c522e82037c9dd147b (patch)
tree33186ec3dc1c257c082bcdd4997fb3d445fabaee
parent0141a4cdc0cc8f3e8e2707f21622006ae2fa4d2d (diff)
llvmpipe: handle compute shader launch with 0 threads
If you set LP_NUM_THREADS=0 compute shaders would hang, just execute the workloads in sequence if we have no threads in the pool. Fixes: 1b24e3ba75 ("llvmpipe: add compute threadpool + mutex") Reviewed-by: Roland Scheidegger <sroland@vmware.com>
-rw-r--r--src/gallium/drivers/llvmpipe/lp_cs_tpool.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_cs_tpool.c b/src/gallium/drivers/llvmpipe/lp_cs_tpool.c
index 6f1b4e2ee55..26e82ab1285 100644
--- a/src/gallium/drivers/llvmpipe/lp_cs_tpool.c
+++ b/src/gallium/drivers/llvmpipe/lp_cs_tpool.c
@@ -114,6 +114,15 @@ lp_cs_tpool_queue_task(struct lp_cs_tpool *pool,
{
struct lp_cs_tpool_task *task;
+ if (pool->num_threads == 0) {
+ struct lp_cs_local_mem lmem;
+
+ memset(&lmem, 0, sizeof(lmem));
+ for (unsigned t = 0; t < num_iters; t++) {
+ work(data, t, &lmem);
+ }
+ return NULL;
+ }
task = CALLOC_STRUCT(lp_cs_tpool_task);
if (!task) {
return NULL;