2 #ifndef B3_PREFIX_SCAN_CL_H
3 #define B3_PREFIX_SCAN_CL_H
5 #include "b3OpenCLArray.h"
6 #include "b3BufferInfoCL.h"
7 #include "Bullet3Common/b3AlignedObjectArray.h"
8 #include "Bullet3Common/b3Vector3.h"
10 class b3PrefixScanFloat4CL
19 cl_command_queue m_commandQueue;
21 cl_kernel m_localScanKernel;
22 cl_kernel m_blockSumKernel;
23 cl_kernel m_propagationKernel;
25 b3OpenCLArray<b3Vector3>* m_workBuffer;
28 b3PrefixScanFloat4CL(cl_context ctx, cl_device_id device, cl_command_queue queue, int size = 0);
30 virtual ~b3PrefixScanFloat4CL();
32 void execute(b3OpenCLArray<b3Vector3>& src, b3OpenCLArray<b3Vector3>& dst, int n, b3Vector3* sum = 0);
33 void executeHost(b3AlignedObjectArray<b3Vector3>& src, b3AlignedObjectArray<b3Vector3>& dst, int n, b3Vector3* sum);
36 #endif //B3_PREFIX_SCAN_CL_H