[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-physics / third-party / bullet3 / src / Bullet3OpenCL / ParallelPrimitives / b3PrefixScanCL.h
1
2 #ifndef B3_PREFIX_SCAN_CL_H
3 #define B3_PREFIX_SCAN_CL_H
4
5 #include "b3OpenCLArray.h"
6 #include "b3BufferInfoCL.h"
7 #include "Bullet3Common/b3AlignedObjectArray.h"
8
9 class b3PrefixScanCL
10 {
11         enum
12         {
13                 BLOCK_SIZE = 128
14         };
15
16         //      Option m_option;
17
18         cl_command_queue m_commandQueue;
19
20         cl_kernel m_localScanKernel;
21         cl_kernel m_blockSumKernel;
22         cl_kernel m_propagationKernel;
23
24         b3OpenCLArray<unsigned int>* m_workBuffer;
25
26 public:
27         b3PrefixScanCL(cl_context ctx, cl_device_id device, cl_command_queue queue, int size = 0);
28
29         virtual ~b3PrefixScanCL();
30
31         void execute(b3OpenCLArray<unsigned int>& src, b3OpenCLArray<unsigned int>& dst, int n, unsigned int* sum = 0);
32         void executeHost(b3AlignedObjectArray<unsigned int>& src, b3AlignedObjectArray<unsigned int>& dst, int n, unsigned int* sum = 0);
33 };
34
35 #endif  //B3_PREFIX_SCAN_CL_H