u_queue: add util_queue_fence_reset
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
@@ -328,8 +328,6 @@ util_queue_add_job(struct util_queue *queue,
|
|||||||
{
|
{
|
||||||
struct util_queue_job *ptr;
|
struct util_queue_job *ptr;
|
||||||
|
|
||||||
assert(fence->signalled);
|
|
||||||
|
|
||||||
mtx_lock(&queue->lock);
|
mtx_lock(&queue->lock);
|
||||||
if (queue->kill_threads) {
|
if (queue->kill_threads) {
|
||||||
mtx_unlock(&queue->lock);
|
mtx_unlock(&queue->lock);
|
||||||
@@ -339,7 +337,7 @@ util_queue_add_job(struct util_queue *queue,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
fence->signalled = false;
|
util_queue_fence_reset(fence);
|
||||||
|
|
||||||
assert(queue->num_queued >= 0 && queue->num_queued <= queue->max_jobs);
|
assert(queue->num_queued >= 0 && queue->num_queued <= queue->max_jobs);
|
||||||
|
|
||||||
|
@@ -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_wait(struct util_queue_fence *fence);
|
||||||
void util_queue_fence_signal(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
|
static inline bool
|
||||||
util_queue_fence_is_signalled(struct util_queue_fence *fence)
|
util_queue_fence_is_signalled(struct util_queue_fence *fence)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user