Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMai Lavelle <mai.lavelle@gmail.com>2017-05-30 04:33:27 +0300
committerMai Lavelle <mai.lavelle@gmail.com>2017-06-10 10:51:18 +0300
commit6995b50e41e628d225b08c370db07d51cf8e3371 (patch)
tree9219ed50f24b18732e84d9d4f6609e75f991a214 /intern/cycles/kernel/kernel_queues.h
parent4360e8ce13ed4fcb14bdb091b59e9126e65fe616 (diff)
Cycles: Add function to dequeue a ray
Diffstat (limited to 'intern/cycles/kernel/kernel_queues.h')
-rw-r--r--intern/cycles/kernel/kernel_queues.h15
1 files changed, 15 insertions, 0 deletions
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__