diff options
author | Keith Whitwell <[email protected]> | 2010-07-08 15:13:35 +0100 |
---|---|---|
committer | José Fonseca <[email protected]> | 2010-07-13 17:23:48 +0100 |
commit | 3bd9aedbac79eec16bfe6f5fc6f6a021eebe769a (patch) | |
tree | ed8c7d28d1d6c7b8cd33b1c68e3ac996c5b64ea8 /src/gallium/drivers/llvmpipe/lp_fence.c | |
parent | 6d17f00600ffca7cb39e6f66277cec018ff2c151 (diff) |
llvmpipe: move fences from per-bin to per-thread
Rather than inserting an lp_rast_fence command at the end of each
bin, have each rasterizer thread call this function directly once
it has run out of work to do on a particular scene.
This results in fewer calls to the mutex & related functions, but more
importantly makes it easier to recognize empty bins.
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_fence.c')
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_fence.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_fence.c b/src/gallium/drivers/llvmpipe/lp_fence.c index 75d8d2b8251..f9805e5d688 100644 --- a/src/gallium/drivers/llvmpipe/lp_fence.c +++ b/src/gallium/drivers/llvmpipe/lp_fence.c @@ -28,7 +28,6 @@ #include "pipe/p_screen.h" #include "util/u_memory.h" -#include "util/u_inlines.h" #include "lp_debug.h" #include "lp_fence.h" @@ -59,7 +58,7 @@ lp_fence_create(unsigned rank) /** Destroy a fence. Called when refcount hits zero. */ -static void +void lp_fence_destroy(struct lp_fence *fence) { pipe_mutex_destroy(fence->mutex); @@ -77,12 +76,10 @@ llvmpipe_fence_reference(struct pipe_screen *screen, struct pipe_fence_handle **ptr, struct pipe_fence_handle *fence) { - struct lp_fence *old = (struct lp_fence *) *ptr; + struct lp_fence **old = (struct lp_fence **) ptr; struct lp_fence *f = (struct lp_fence *) fence; - if (pipe_reference(&old->reference, &f->reference)) { - lp_fence_destroy(old); - } + lp_fence_reference(old, f); } |