gKitGL
|
00001 00002 #ifndef _CL_BUFFER_H 00003 #define _CL_BUFFER_H 00004 00005 #include <CL/CLPlatform.h> 00006 #include "CLResource.h" 00007 00008 00009 namespace gk { 00010 00011 class CLBuffer : public CLResource 00012 { 00013 cl_mem m_buffer; 00014 size_t m_size; 00015 00016 public: 00017 CLBuffer( const cl_mem_flags flags, const unsigned int glname ); 00018 CLBuffer( const cl_mem_flags flags, const size_t size, void *data= NULL ); 00019 ~CLBuffer( ) {} 00020 00021 int createCLResource( ); 00022 int releaseCLResource( ); 00023 00024 int update( size_t offset, size_t length, const void *data, cl_bool block= CL_FALSE, cl_event *wait= NULL ); 00025 int get( size_t offset, size_t length, void *data, cl_bool block= CL_FALSE, cl_event *wait= NULL ); 00026 00027 const cl_mem *object( ) const 00028 { 00029 return &m_buffer; 00030 } 00031 00032 cl_mem *object( ) 00033 { 00034 return &m_buffer; 00035 } 00036 00037 cl_mem buffer( ) const 00038 { 00039 return m_buffer; 00040 } 00041 }; 00042 00043 CLBuffer *createBuffer( const cl_mem_flags flags, const size_t size, void *data= NULL ); 00044 CLBuffer *createReadBuffer( const size_t size, void *data= NULL ); 00045 CLBuffer *createWriteBuffer( const size_t size ); 00046 00047 CLBuffer *createGLObjectBuffer( const cl_mem_flags flags, const unsigned int glname ); 00048 00049 } 00050 00051 00052 #endif