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