gKitGL
CLBuffer.h
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
 All Classes Namespaces Functions Variables Typedefs Enumerator Friends