diff options
| -rw-r--r-- | src/gallium/drivers/llvmpipe/lp_fence.c | 26 | 
1 files changed, 26 insertions, 0 deletions
| diff --git a/src/gallium/drivers/llvmpipe/lp_fence.c b/src/gallium/drivers/llvmpipe/lp_fence.c index 00dc3eab6b..75d8d2b825 100644 --- a/src/gallium/drivers/llvmpipe/lp_fence.c +++ b/src/gallium/drivers/llvmpipe/lp_fence.c @@ -33,6 +33,15 @@  #include "lp_fence.h" +/** + * Create a new fence object. + * + * The rank will be the number of bins in the scene.  Whenever a rendering + * thread hits a fence command, it'll increment the fence counter.  When + * the counter == the rank, the fence is finished. + * + * \param rank  the expected finished value of the fence counter. + */  struct lp_fence *  lp_fence_create(unsigned rank)  { @@ -49,6 +58,7 @@ lp_fence_create(unsigned rank)  } +/** Destroy a fence.  Called when refcount hits zero. */  static void  lp_fence_destroy(struct lp_fence *fence)  { @@ -58,6 +68,10 @@ lp_fence_destroy(struct lp_fence *fence)  } +/** + * For reference counting. + * This is a Gallium API function. + */  static void  llvmpipe_fence_reference(struct pipe_screen *screen,                           struct pipe_fence_handle **ptr, @@ -72,6 +86,10 @@ llvmpipe_fence_reference(struct pipe_screen *screen,  } +/** + * Has the fence been executed/finished? + * This is a Gallium API function. + */  static int  llvmpipe_fence_signalled(struct pipe_screen *screen,                           struct pipe_fence_handle *fence, @@ -83,6 +101,10 @@ llvmpipe_fence_signalled(struct pipe_screen *screen,  } +/** + * Wait for the fence to finish. + * This is a Gallium API function. + */  static int  llvmpipe_fence_finish(struct pipe_screen *screen,                        struct pipe_fence_handle *fence_handle, @@ -100,6 +122,10 @@ llvmpipe_fence_finish(struct pipe_screen *screen,  } +/** + * Called by the rendering threads to increment the fence counter. + * When the counter == the rank, the fence is finished. + */  void  lp_fence_signal(struct lp_fence *fence)  { | 
