From 6995b50e41e628d225b08c370db07d51cf8e3371 Mon Sep 17 00:00:00 2001 From: Mai Lavelle Date: Mon, 29 May 2017 21:33:27 -0400 Subject: Cycles: Add function to dequeue a ray --- intern/cycles/kernel/kernel_queues.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'intern/cycles/kernel/kernel_queues.h') diff --git a/intern/cycles/kernel/kernel_queues.h b/intern/cycles/kernel/kernel_queues.h index 96bc636d5ac..e32d4bbbc1b 100644 --- a/intern/cycles/kernel/kernel_queues.h +++ b/intern/cycles/kernel/kernel_queues.h @@ -128,6 +128,21 @@ ccl_device unsigned int get_global_queue_index( return my_gqidx; } +ccl_device int dequeue_ray_index( + int queue_number, + ccl_global int *queues, + int queue_size, + ccl_global int *queue_index) +{ + int index = atomic_fetch_and_dec_uint32((ccl_global uint*)&queue_index[queue_number])-1; + + if(index < 0) { + return QUEUE_EMPTY_SLOT; + } + + return queues[index + queue_number * queue_size]; +} + CCL_NAMESPACE_END #endif // __KERNEL_QUEUE_H__ -- cgit v1.2.3