#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)
{
}
+/** Destroy a fence. Called when refcount hits zero. */
static void
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,
}
+/**
+ * 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,
}
+/**
+ * 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,
}
+/**
+ * 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)
{