u_queue: add util_queue_fence_reset

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Nicolai Hähnle
2017-10-22 17:38:30 +02:00
parent 1b9d5ece55
commit 574c59d4f9
2 changed files with 14 additions and 3 deletions

View File

@@ -328,8 +328,6 @@ util_queue_add_job(struct util_queue *queue,
{
struct util_queue_job *ptr;
assert(fence->signalled);
mtx_lock(&queue->lock);
if (queue->kill_threads) {
mtx_unlock(&queue->lock);
@@ -339,7 +337,7 @@ util_queue_add_job(struct util_queue *queue,
return;
}
fence->signalled = false;
util_queue_fence_reset(fence);
assert(queue->num_queued >= 0 && queue->num_queued <= queue->max_jobs);

View File

@@ -59,6 +59,19 @@ void util_queue_fence_destroy(struct util_queue_fence *fence);
void util_queue_fence_wait(struct util_queue_fence *fence);
void util_queue_fence_signal(struct util_queue_fence *fence);
/**
* Move \p fence back into unsignalled state.
*
* \warning The caller must ensure that no other thread may currently be
* waiting (or about to wait) on the fence.
*/
static inline void
util_queue_fence_reset(struct util_queue_fence *fence)
{
assert(fence->signalled);
fence->signalled = 0;
}
static inline bool
util_queue_fence_is_signalled(struct util_queue_fence *fence)
{