Tizen 2.1 base
[platform/upstream/libbullet.git] / Extras / RigidBodyGpuPipeline / opencl / global_atomics / global_atomics.cl
1
2
3
4
5 //OpenCL 1.1 has atomic_inc build-in (no extension needed)
6 //see http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/atomic_inc.html
7 __kernel void  globalAtomicKernelOpenCL1_1( volatile __global int* counter)
8 {
9         atomic_inc(counter);
10 }
11
12 //OpenCL 1.1 atomic device counters extension, usually faster on current AMD hardware
13 //http://www.khronos.org/registry/cl/extensions/ext/cl_ext_atomic_counters_32.txt
14 #pragma OPENCL EXTENSION cl_ext_atomic_counters_32 : enable
15 __kernel void  counterAtomicKernelExt( counter32_t counter)
16 {
17         atomic_inc(counter);
18 }
19
20
21 //OpenCL 1.0 optional extension, using atom_inc
22 //see http://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/cl_khr_global_int32_base_atomics.html
23 #pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable //atomic_inc
24 __kernel void  globalAtomicKernelExt( __global int* counter)
25 {
26         atom_inc(counter);
27 }
28
29
30 __kernel void  globalAtomicKernelCounters32Broken( __global int* counter)
31 {
32         (*counter)++;
33 }
34