8#ifndef OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H
9#define OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H
11#include "../version.h"
15namespace OPENSUBDIV_VERSION {
31 template <
typename DEVICE_CONTEXT>
33 DEVICE_CONTEXT context) {
34 return Create(numElements, numVertices, context->GetContext());
42 void UpdateData(
const float *src,
int startVertex,
int numVertices, cl_command_queue clQueue,
43 cl_event* startEvents = NULL,
unsigned int numStartEvents = 0, cl_event* endEvent = NULL);
45 template<
typename DEVICE_CONTEXT>
46 void UpdateData(
const float *src,
int startVertex,
int numVertices,
47 DEVICE_CONTEXT context,
48 cl_event* startEvents = NULL,
unsigned int numStartEvents = 0, cl_event* endEvent = NULL) {
49 UpdateData(src, startVertex, numVertices, context->GetCommandQueue(), startEvents, numStartEvents, endEvent);
78using namespace OPENSUBDIV_VERSION;
Concrete vertex buffer class for OpenCL subdivision.
void UpdateData(const float *src, int startVertex, int numVertices, DEVICE_CONTEXT context, cl_event *startEvents=NULL, unsigned int numStartEvents=0, cl_event *endEvent=NULL)
~CLVertexBuffer()
Destructor.
CLVertexBuffer(int numElements, int numVertices, cl_context clContext)
Constructor.
void UpdateData(const float *src, int startVertex, int numVertices, cl_command_queue clQueue, cl_event *startEvents=NULL, unsigned int numStartEvents=0, cl_event *endEvent=NULL)
int GetNumElements() const
Returns how many elements defined in this vertex buffer.
bool allocate(cl_context clContext)
int GetNumVertices() const
Returns how many vertices allocated in this vertex buffer.
static CLVertexBuffer * Create(int numElements, int numVertices, cl_context clContext)
Creator. Returns NULL if error.
static CLVertexBuffer * Create(int numElements, int numVertices, DEVICE_CONTEXT context)
cl_mem BindCLBuffer(cl_command_queue queue)
Returns the CL memory object.