diff options
author | Dave Airlie <[email protected]> | 2019-10-16 13:33:36 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2019-10-21 22:51:23 +0000 |
commit | bde08ce4d7bf2e59054ea1c522e82037c9dd147b (patch) | |
tree | 33186ec3dc1c257c082bcdd4997fb3d445fabaee /src/gallium/drivers/llvmpipe | |
parent | 0141a4cdc0cc8f3e8e2707f21622006ae2fa4d2d (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 <[email protected]>
Diffstat (limited to 'src/gallium/drivers/llvmpipe')
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_cs_tpool.c | 9 |
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; |