diff options
Diffstat (limited to 'thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.h')
| -rw-r--r-- | thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.h | 37 | 
1 files changed, 37 insertions, 0 deletions
diff --git a/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.h new file mode 100644 index 0000000000..a9a2e61b9e --- /dev/null +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.h @@ -0,0 +1,37 @@ + +#ifndef B3_PREFIX_SCAN_CL_H +#define B3_PREFIX_SCAN_CL_H + +#include "b3OpenCLArray.h" +#include "b3BufferInfoCL.h" +#include "Bullet3Common/b3AlignedObjectArray.h" + +class b3PrefixScanCL +{ +	enum +	{ +		BLOCK_SIZE = 128 +	}; + +//	Option m_option; + +	cl_command_queue	m_commandQueue; + +	cl_kernel m_localScanKernel; +	cl_kernel m_blockSumKernel; +	cl_kernel m_propagationKernel; + +	b3OpenCLArray<unsigned int>* m_workBuffer; + + +	public: +		 +	b3PrefixScanCL(cl_context ctx, cl_device_id device, cl_command_queue queue,int size=0); + +	virtual ~b3PrefixScanCL(); + +	void execute(b3OpenCLArray<unsigned int>& src, b3OpenCLArray<unsigned int>& dst, int n, unsigned int* sum = 0); +	void executeHost(b3AlignedObjectArray<unsigned int>& src, b3AlignedObjectArray<unsigned int>& dst, int n, unsigned int* sum=0); +}; + +#endif //B3_PREFIX_SCAN_CL_H  |