From: Nicolai Hähnle <nicolai.haeh...@amd.com> Reviewed-by: Marek Olšák <marek.ol...@amd.com> --- src/util/u_queue.h | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/src/util/u_queue.h b/src/util/u_queue.h index ff713ae54d6..7a028ef0847 100644 --- a/src/util/u_queue.h +++ b/src/util/u_queue.h @@ -47,20 +47,30 @@ extern "C" { /* Job completion fence. * Put this into your job structure. */ struct util_queue_fence { mtx_t mutex; cnd_t cond; int signalled; }; +void util_queue_fence_init(struct util_queue_fence *fence); +void util_queue_fence_destroy(struct util_queue_fence *fence); +void util_queue_fence_wait(struct util_queue_fence *fence); + +static inline bool +util_queue_fence_is_signalled(struct util_queue_fence *fence) +{ + return fence->signalled != 0; +} + typedef void (*util_queue_execute_func)(void *job, int thread_index); struct util_queue_job { void *job; struct util_queue_fence *fence; util_queue_execute_func execute; util_queue_execute_func cleanup; }; /* Put this into your context. */ @@ -81,49 +91,40 @@ struct util_queue { /* for cleanup at exit(), protected by exit_mutex */ struct list_head head; }; bool util_queue_init(struct util_queue *queue, const char *name, unsigned max_jobs, unsigned num_threads, unsigned flags); void util_queue_destroy(struct util_queue *queue); -void util_queue_fence_init(struct util_queue_fence *fence); -void util_queue_fence_destroy(struct util_queue_fence *fence); /* optional cleanup callback is called after fence is signaled: */ void util_queue_add_job(struct util_queue *queue, void *job, struct util_queue_fence *fence, util_queue_execute_func execute, util_queue_execute_func cleanup); void util_queue_drop_job(struct util_queue *queue, struct util_queue_fence *fence); -void util_queue_fence_wait(struct util_queue_fence *fence); int64_t util_queue_get_thread_time_nano(struct util_queue *queue, unsigned thread_index); /* util_queue needs to be cleared to zeroes for this to work */ static inline bool util_queue_is_initialized(struct util_queue *queue) { return queue->threads != NULL; } -static inline bool -util_queue_fence_is_signalled(struct util_queue_fence *fence) -{ - return fence->signalled != 0; -} - /* Convenient structure for monitoring the queue externally and passing * the structure between Mesa components. The queue doesn't use it directly. */ struct util_queue_monitoring { /* For querying the thread busyness. */ struct util_queue *queue; /* Counters updated by the user of the queue. */ unsigned num_offloaded_items; -- 2.11.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev