diff --git a/src/gallium/drivers/llvmpipe/lp_flush.c b/src/gallium/drivers/llvmpipe/lp_flush.c index c49836432a9..ee509010f37 100644 --- a/src/gallium/drivers/llvmpipe/lp_flush.c +++ b/src/gallium/drivers/llvmpipe/lp_flush.c @@ -57,7 +57,9 @@ llvmpipe_flush( struct pipe_context *pipe, /* ask the setup module to flush */ lp_setup_flush(llvmpipe->setup, reason); + mtx_lock(&screen->rast_mutex); lp_rast_fence(screen->rast, (struct lp_fence **)fence); + mtx_unlock(&screen->rast_mutex); if (fence && (!*fence)) *fence = (struct pipe_fence_handle *)lp_fence_create(0); diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c index cf2317186ee..89519c96611 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_setup.c @@ -1714,7 +1714,9 @@ lp_setup_end_query(struct lp_setup_context *setup, struct llvmpipe_query *pq) } else { struct llvmpipe_screen *screen = llvmpipe_screen(setup->pipe->screen); + mtx_lock(&screen->rast_mutex); lp_rast_fence(screen->rast, &pq->fence); + mtx_unlock(&screen->rast_mutex); } fail: