CLEvaluator Class Reference

`#include <clEvaluator.h>`

## Public Types

typedef bool | Instantiatable

## Public Member Functions

| CLEvaluator (cl_context context, cl_command_queue queue)
| Constructor. More...
| ~CLEvaluator ()
| Destructor. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename STENCIL_TABLE >
bool | EvalStencils (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const *stencilTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const
| Generic stencil function. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename STENCIL_TABLE >
bool | EvalStencils (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const
| Generic stencil function. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename STENCIL_TABLE >

bool

EvalStencils (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const

| Generic stencil function. More...
bool | EvalStencils (cl_mem src, BufferDescriptor const &srcDesc, cl_mem dst, BufferDescriptor const &dstDesc, cl_mem sizes, cl_mem offsets, cl_mem indices, cl_mem weights, int start, int end, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const

bool

EvalStencils (cl_mem src, BufferDescriptor const &srcDesc, cl_mem dst, BufferDescriptor const &dstDesc, cl_mem du, BufferDescriptor const &duDesc, cl_mem dv, BufferDescriptor const &dvDesc, cl_mem sizes, cl_mem offsets, cl_mem indices, cl_mem weights, cl_mem duWeights, cl_mem dvWeights, int start, int end, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const

| Dispatch the CL compute kernel asynchronously. returns false if the kernel hasn't been compiled yet. More...

bool

EvalStencils (cl_mem src, BufferDescriptor const &srcDesc, cl_mem dst, BufferDescriptor const &dstDesc, cl_mem du, BufferDescriptor const &duDesc, cl_mem dv, BufferDescriptor const &dvDesc, cl_mem duu, BufferDescriptor const &duuDesc, cl_mem duv, BufferDescriptor const &duvDesc, cl_mem dvv, BufferDescriptor const &dvvDesc, cl_mem sizes, cl_mem offsets, cl_mem indices, cl_mem weights, cl_mem duWeights, cl_mem dvWeights, cl_mem duuWeights, cl_mem duvWeights, cl_mem dvvWeights, int start, int end, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const

| Dispatch the CL compute kernel asynchronously. returns false if the kernel hasn't been compiled yet. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE >
bool | EvalPatches (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const
| Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE >

bool

EvalPatches (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const

| Generic limit eval function with derivatives. This function has a same signature as other device kernels have so that it can be called in the same way. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE >

bool

EvalPatches (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const

| Generic limit eval function with derivatives. This function has a same signature as other device kernels have so that it can be called in the same way. More...

bool

EvalPatches (cl_mem src, BufferDescriptor const &srcDesc, cl_mem dst, BufferDescriptor const &dstDesc, cl_mem du, BufferDescriptor const &duDesc, cl_mem dv, BufferDescriptor const &dvDesc, int numPatchCoords, cl_mem patchCoordsBuffer, cl_mem patchArrayBuffer, cl_mem patchIndexBuffer, cl_mem patchParamsBuffer, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const

bool

EvalPatches (cl_mem src, BufferDescriptor const &srcDesc, cl_mem dst, BufferDescriptor const &dstDesc, cl_mem du, BufferDescriptor const &duDesc, cl_mem dv, BufferDescriptor const &dvDesc, cl_mem duu, BufferDescriptor const &duuDesc, cl_mem duv, BufferDescriptor const &duvDesc, cl_mem dvv, BufferDescriptor const &dvvDesc, int numPatchCoords, cl_mem patchCoordsBuffer, cl_mem patchArrayBuffer, cl_mem patchIndexBuffer, cl_mem patchParamsBuffer, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const

template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE >
bool | EvalPatchesVarying (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const
| Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE >

bool

EvalPatchesVarying (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const

| Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE >

bool

EvalPatchesVarying (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const

| Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE >
bool | EvalPatchesFaceVarying (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const
| Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE >

bool

EvalPatchesFaceVarying (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const

| Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE >

bool

EvalPatchesFaceVarying (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const

| Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way. More...
bool | Compile (BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc=BufferDescriptor(), BufferDescriptor const &dvDesc=BufferDescriptor(), BufferDescriptor const &duuDesc=BufferDescriptor(), BufferDescriptor const &duvDesc=BufferDescriptor(), BufferDescriptor const &dvvDesc=BufferDescriptor())

## Static Public Member Functions

template<typename DEVICE_CONTEXT >
static CLEvaluator * | Create (BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, DEVICE_CONTEXT deviceContext)
| Generic creator template. More...
static CLEvaluator * | Create (BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, cl_context clContext, cl_command_queue clCommandQueue)
template<typename DEVICE_CONTEXT >
static CLEvaluator * | Create (BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &dvvDesc, DEVICE_CONTEXT deviceContext)
| Generic creator template. More...
static CLEvaluator * | Create (BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc, BufferDescriptor const &dvvDesc, cl_context clContext, cl_command_queue clCommandQueue)
template<typename SRC_BUFFER , typename DST_BUFFER , typename STENCIL_TABLE , typename DEVICE_CONTEXT >
static bool | EvalStencils (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const *stencilTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)
| Generic static stencil function. This function has a same signature as other device kernels have so that it can be called transparently from OsdMesh template interface. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename STENCIL_TABLE , typename DEVICE_CONTEXT >

static bool

EvalStencils (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)

| Generic static stencil function. This function has a same signature as other device kernels have so that it can be called transparently from OsdMesh template interface. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename STENCIL_TABLE , typename DEVICE_CONTEXT >

static bool

EvalStencils (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)

| Generic static stencil function. This function has a same signature as other device kernels have so that it can be called transparently from OsdMesh template interface. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE , typename DEVICE_CONTEXT >
static bool | EvalPatches (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)
| Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE , typename DEVICE_CONTEXT >

static bool

EvalPatches (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)

| Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE , typename DEVICE_CONTEXT >

static bool

EvalPatches (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)

| Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE , typename DEVICE_CONTEXT >
static bool | EvalPatchesVarying (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)
| Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE , typename DEVICE_CONTEXT >

static bool

EvalPatchesVarying (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)

| Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE , typename DEVICE_CONTEXT >

static bool

EvalPatchesVarying (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)

| Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE , typename DEVICE_CONTEXT >
static bool | EvalPatchesFaceVarying (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)
| Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE , typename DEVICE_CONTEXT >

static bool

EvalPatchesFaceVarying (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)

| Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way. More...
template<typename SRC_BUFFER , typename DST_BUFFER , typename PATCHCOORD_BUFFER , typename PATCH_TABLE , typename DEVICE_CONTEXT >

static bool

EvalPatchesFaceVarying (SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)

| Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way. More...
template<typename DEVICE_CONTEXT >
static void | Synchronize (DEVICE_CONTEXT deviceContext)
| Wait the OpenCL kernels finish. More...
static void | Synchronize (cl_command_queue queue)

## Detailed Description

Definition at line 100 of file clEvaluator.h.

## Member Typedef Documentation

## Instantiatable

typedef bool Instantiatable

Definition at line 102 of file clEvaluator.h.

## Constructor & Destructor Documentation

## CLEvaluator()

CLEvaluator | ( | cl_context | context,
|  | cl_command_queue | queue
| ) |  |

Constructor.

## ~CLEvaluator()

~CLEvaluator | ( |  | ) |

Destructor.

## Member Function Documentation

## Compile()

bool Compile | ( | BufferDescriptor const & | srcDesc,
|  | BufferDescriptor const & | dstDesc,
|  | BufferDescriptor const & | duDesc = `BufferDescriptor()`,
|  | BufferDescriptor const & | dvDesc = `BufferDescriptor()`,
|  | BufferDescriptor const & | duuDesc = `BufferDescriptor()`,
|  | BufferDescriptor const & | duvDesc = `BufferDescriptor()`,
|  | BufferDescriptor const & | dvvDesc = `BufferDescriptor()`
| ) |  |

Other methods

Configure OpenCL kernel. Returns false if it fails to compile the kernel.

## Create() [1/4]

static CLEvaluator * Create | ( | BufferDescriptor const & | srcDesc,
|  | BufferDescriptor const & | dstDesc,
|  | BufferDescriptor const & | duDesc,
|  | BufferDescriptor const & | dvDesc,
|  | BufferDescriptor const & | duuDesc,
|  | BufferDescriptor const & | duvDesc,
|  | BufferDescriptor const & | dvvDesc,
|  | cl_context | clContext,
|  | cl_command_queue | clCommandQueue
| ) |  |

inline static

Definition at line 145 of file clEvaluator.h.

## Create() [2/4]

static CLEvaluator * Create | ( | BufferDescriptor const & | srcDesc,
|  | BufferDescriptor const & | dstDesc,
|  | BufferDescriptor const & | duDesc,
|  | BufferDescriptor const & | dvDesc,
|  | BufferDescriptor const & | duuDesc,
|  | BufferDescriptor const & | duvDesc,
|  | BufferDescriptor const & | dvvDesc,
|  | DEVICE_CONTEXT | deviceContext
| ) |  |

inline static

Generic creator template.

Definition at line 131 of file clEvaluator.h.

## Create() [3/4]

static CLEvaluator * Create | ( | BufferDescriptor const & | srcDesc,
|  | BufferDescriptor const & | dstDesc,
|  | BufferDescriptor const & | duDesc,
|  | BufferDescriptor const & | dvDesc,
|  | cl_context | clContext,
|  | cl_command_queue | clCommandQueue
| ) |  |

inline static

Definition at line 116 of file clEvaluator.h.

## Create() [4/4]

static CLEvaluator * Create | ( | BufferDescriptor const & | srcDesc,
|  | BufferDescriptor const & | dstDesc,
|  | BufferDescriptor const & | duDesc,
|  | BufferDescriptor const & | dvDesc,
|  | DEVICE_CONTEXT | deviceContext
| ) |  |

inline static

Generic creator template.

Definition at line 106 of file clEvaluator.h.

## EvalPatches() [1/8]

bool EvalPatches | ( | cl_mem | src,
|  | BufferDescriptor const & | srcDesc,
|  | cl_mem | dst,
|  | BufferDescriptor const & | dstDesc,
|  | cl_mem | du,
|  | BufferDescriptor const & | duDesc,
|  | cl_mem | dv,
|  | BufferDescriptor const & | dvDesc,
|  | cl_mem | duu,
|  | BufferDescriptor const & | duuDesc,
|  | cl_mem | duv,
|  | BufferDescriptor const & | duvDesc,
|  | cl_mem | dvv,
|  | BufferDescriptor const & | dvvDesc,
|  | int | numPatchCoords,
|  | cl_mem | patchCoordsBuffer,
|  | cl_mem | patchArrayBuffer,
|  | cl_mem | patchIndexBuffer,
|  | cl_mem | patchParamsBuffer,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

## EvalPatches() [2/8]

bool EvalPatches | ( | cl_mem | src,
|  | BufferDescriptor const & | srcDesc,
|  | cl_mem | dst,
|  | BufferDescriptor const & | dstDesc,
|  | cl_mem | du,
|  | BufferDescriptor const & | duDesc,
|  | cl_mem | dv,
|  | BufferDescriptor const & | dvDesc,
|  | int | numPatchCoords,
|  | cl_mem | patchCoordsBuffer,
|  | cl_mem | patchArrayBuffer,
|  | cl_mem | patchIndexBuffer,
|  | cl_mem | patchParamsBuffer,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

## EvalPatches() [3/8]

static bool EvalPatches | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | DST_BUFFER * | duBuffer,
|  | BufferDescriptor const & | duDesc,
|  | DST_BUFFER * | dvBuffer,
|  | BufferDescriptor const & | dvDesc,
|  | DST_BUFFER * | duuBuffer,
|  | BufferDescriptor const & | duuDesc,
|  | DST_BUFFER * | duvBuffer,
|  | BufferDescriptor const & | duvDesc,
|  | DST_BUFFER * | dvvBuffer,
|  | BufferDescriptor const & | dvvDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | CLEvaluator const * | instance,
|  | DEVICE_CONTEXT | deviceContext,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  |

inline static

Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  duBuffer | Output buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duDesc | vertex buffer descriptor for the duBuffer
  dvBuffer | Output buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvDesc | vertex buffer descriptor for the dvBuffer
  duuBuffer | Output buffer 2nd derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duuDesc | vertex buffer descriptor for the duuBuffer
  duvBuffer | Output buffer 2nd derivative wrt u and v must have BindCLBuffer() method returning a CL buffer object of destination data
  duvDesc | vertex buffer descriptor for the duvBuffer
  dvvBuffer | Output buffer 2nd derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvvDesc | vertex buffer descriptor for the dvvBuffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct
  patchTable | CLPatchTable or equivalent
  instance | cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.
  deviceContext | client providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 1125 of file clEvaluator.h.

## EvalPatches() [4/8]

bool EvalPatches | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | DST_BUFFER * | duBuffer,
|  | BufferDescriptor const & | duDesc,
|  | DST_BUFFER * | dvBuffer,
|  | BufferDescriptor const & | dvDesc,
|  | DST_BUFFER * | duuBuffer,
|  | BufferDescriptor const & | duuDesc,
|  | DST_BUFFER * | duvBuffer,
|  | BufferDescriptor const & | duvDesc,
|  | DST_BUFFER * | dvvBuffer,
|  | BufferDescriptor const & | dvvDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

inline

Generic limit eval function with derivatives. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  duBuffer | Output buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duDesc | vertex buffer descriptor for the duBuffer
  dvBuffer | Output buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvDesc | vertex buffer descriptor for the dvBuffer
  duuBuffer | Output buffer 2nd derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duuDesc | vertex buffer descriptor for the duuBuffer
  duvBuffer | Output buffer 2nd derivative wrt u and v must have BindCLBuffer() method returning a CL buffer object of destination data
  duvDesc | vertex buffer descriptor for the duvBuffer
  dvvBuffer | Output buffer 2nd derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvvDesc | vertex buffer descriptor for the dvvBuffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated.
  patchTable | CLPatchTable or equivalent
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 1379 of file clEvaluator.h.

## EvalPatches() [5/8]

static bool EvalPatches | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | DST_BUFFER * | duBuffer,
|  | BufferDescriptor const & | duDesc,
|  | DST_BUFFER * | dvBuffer,
|  | BufferDescriptor const & | dvDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | CLEvaluator const * | instance,
|  | DEVICE_CONTEXT | deviceContext,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  |

inline static

Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  duBuffer | Output buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duDesc | vertex buffer descriptor for the duBuffer
  dvBuffer | Output buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvDesc | vertex buffer descriptor for the dvBuffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct
  patchTable | CLPatchTable or equivalent
  instance | cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.
  deviceContext | client providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 1003 of file clEvaluator.h.

## EvalPatches() [6/8]

bool EvalPatches | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | DST_BUFFER * | duBuffer,
|  | BufferDescriptor const & | duDesc,
|  | DST_BUFFER * | dvBuffer,
|  | BufferDescriptor const & | dvDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

inline

Generic limit eval function with derivatives. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  duBuffer | Output buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duDesc | vertex buffer descriptor for the duBuffer
  dvBuffer | Output buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvDesc | vertex buffer descriptor for the dvBuffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated.
  patchTable | CLPatchTable or equivalent
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 1288 of file clEvaluator.h.

## EvalPatches() [7/8]

static bool EvalPatches | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | CLEvaluator const * | instance,
|  | DEVICE_CONTEXT | deviceContext,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  |

inline static

Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.

Limit evaluations with PatchTable

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
  patchTable | CLPatchTable or equivalent
  instance | cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.
  deviceContext | client providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 902 of file clEvaluator.h.

## EvalPatches() [8/8]

bool EvalPatches | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

inline

Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
  patchTable | CLPatchTable or equivalent
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 1217 of file clEvaluator.h.

## EvalPatchesFaceVarying() [1/6]

static bool EvalPatchesFaceVarying | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | DST_BUFFER * | duBuffer,
|  | BufferDescriptor const & | duDesc,
|  | DST_BUFFER * | dvBuffer,
|  | BufferDescriptor const & | dvDesc,
|  | DST_BUFFER * | duuBuffer,
|  | BufferDescriptor const & | duuDesc,
|  | DST_BUFFER * | duvBuffer,
|  | BufferDescriptor const & | duvDesc,
|  | DST_BUFFER * | dvvBuffer,
|  | BufferDescriptor const & | dvvDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | int | fvarChannel,
|  | CLEvaluator const * | instance,
|  | DEVICE_CONTEXT | deviceContext,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  |

inline static

Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  duBuffer | Output buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duDesc | vertex buffer descriptor for the duBuffer
  dvBuffer | Output buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvDesc | vertex buffer descriptor for the dvBuffer
  duuBuffer | Output buffer 2nd derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duuDesc | vertex buffer descriptor for the duuBuffer
  duvBuffer | Output buffer 2nd derivative wrt u and v must have BindCLBuffer() method returning a CL buffer object of destination data
  duvDesc | vertex buffer descriptor for the duvBuffer
  dvvBuffer | Output buffer 2nd derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvvDesc | vertex buffer descriptor for the dvvBuffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
  patchTable | CLPatchTable or equivalent
  fvarChannel | face-varying channel
  instance | cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.
  deviceContext | client providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 2437 of file clEvaluator.h.

## EvalPatchesFaceVarying() [2/6]

bool EvalPatchesFaceVarying | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | DST_BUFFER * | duBuffer,
|  | BufferDescriptor const & | duDesc,
|  | DST_BUFFER * | dvBuffer,
|  | BufferDescriptor const & | dvDesc,
|  | DST_BUFFER * | duuBuffer,
|  | BufferDescriptor const & | duuDesc,
|  | DST_BUFFER * | duvBuffer,
|  | BufferDescriptor const & | duvDesc,
|  | DST_BUFFER * | dvvBuffer,
|  | BufferDescriptor const & | dvvDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | int | fvarChannel = `0`,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

inline

Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  duBuffer | Output buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duDesc | vertex buffer descriptor for the duBuffer
  dvBuffer | Output buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvDesc | vertex buffer descriptor for the dvBuffer
  duuBuffer | Output buffer 2nd derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duuDesc | vertex buffer descriptor for the duuBuffer
  duvBuffer | Output buffer 2nd derivative wrt u and v must have BindCLBuffer() method returning a CL buffer object of destination data
  duvDesc | vertex buffer descriptor for the duvBuffer
  dvvBuffer | Output buffer 2nd derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvvDesc | vertex buffer descriptor for the dvvBuffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
  patchTable | CLPatchTable or equivalent
  fvarChannel | face-varying channel
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 2564 of file clEvaluator.h.

## EvalPatchesFaceVarying() [3/6]

static bool EvalPatchesFaceVarying | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | DST_BUFFER * | duBuffer,
|  | BufferDescriptor const & | duDesc,
|  | DST_BUFFER * | dvBuffer,
|  | BufferDescriptor const & | dvDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | int | fvarChannel,
|  | CLEvaluator const * | instance,
|  | DEVICE_CONTEXT | deviceContext,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  |

inline static

Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  duBuffer | Output buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duDesc | vertex buffer descriptor for the duBuffer
  dvBuffer | Output buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvDesc | vertex buffer descriptor for the dvBuffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
  patchTable | CLPatchTable or equivalent
  fvarChannel | face-varying channel
  instance | cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.
  deviceContext | client providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 2231 of file clEvaluator.h.

## EvalPatchesFaceVarying() [4/6]

bool EvalPatchesFaceVarying | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | DST_BUFFER * | duBuffer,
|  | BufferDescriptor const & | duDesc,
|  | DST_BUFFER * | dvBuffer,
|  | BufferDescriptor const & | dvDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | int | fvarChannel = `0`,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

inline

Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  duBuffer | Output buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duDesc | vertex buffer descriptor for the duBuffer
  dvBuffer | Output buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvDesc | vertex buffer descriptor for the dvBuffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
  patchTable | CLPatchTable or equivalent
  fvarChannel | face-varying channel
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 2329 of file clEvaluator.h.

## EvalPatchesFaceVarying() [5/6]

static bool EvalPatchesFaceVarying | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | int | fvarChannel,
|  | CLEvaluator const * | instance,
|  | DEVICE_CONTEXT | deviceContext,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  |

inline static

Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
  patchTable | CLPatchTable or equivalent
  fvarChannel | face-varying channel
  instance | cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.
  deviceContext | client providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 2061 of file clEvaluator.h.

## EvalPatchesFaceVarying() [6/6]

bool EvalPatchesFaceVarying | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | int | fvarChannel = `0`,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

inline

Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
  patchTable | CLPatchTable or equivalent
  fvarChannel | face-varying channel
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 2143 of file clEvaluator.h.

## EvalPatchesVarying() [1/6]

static bool EvalPatchesVarying | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | DST_BUFFER * | duBuffer,
|  | BufferDescriptor const & | duDesc,
|  | DST_BUFFER * | dvBuffer,
|  | BufferDescriptor const & | dvDesc,
|  | DST_BUFFER * | duuBuffer,
|  | BufferDescriptor const & | duuDesc,
|  | DST_BUFFER * | duvBuffer,
|  | BufferDescriptor const & | duvDesc,
|  | DST_BUFFER * | dvvBuffer,
|  | BufferDescriptor const & | dvvDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | CLEvaluator const * | instance,
|  | DEVICE_CONTEXT | deviceContext,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  |

inline static

Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  duBuffer | Output buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duDesc | vertex buffer descriptor for the duBuffer
  dvBuffer | Output buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvDesc | vertex buffer descriptor for the dvBuffer
  duuBuffer | Output buffer 2nd derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duuDesc | vertex buffer descriptor for the duuBuffer
  duvBuffer | Output buffer 2nd derivative wrt u and v must have BindCLBuffer() method returning a CL buffer object of destination data
  duvDesc | vertex buffer descriptor for the duvBuffer
  dvvBuffer | Output buffer 2nd derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvvDesc | vertex buffer descriptor for the dvvBuffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
  patchTable | CLPatchTable or equivalent
  instance | cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.
  deviceContext | client providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 1854 of file clEvaluator.h.

## EvalPatchesVarying() [2/6]

bool EvalPatchesVarying | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | DST_BUFFER * | duBuffer,
|  | BufferDescriptor const & | duDesc,
|  | DST_BUFFER * | dvBuffer,
|  | BufferDescriptor const & | dvDesc,
|  | DST_BUFFER * | duuBuffer,
|  | BufferDescriptor const & | duuDesc,
|  | DST_BUFFER * | duvBuffer,
|  | BufferDescriptor const & | duvDesc,
|  | DST_BUFFER * | dvvBuffer,
|  | BufferDescriptor const & | dvvDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

inline

Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  duBuffer | Output buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duDesc | vertex buffer descriptor for the duBuffer
  dvBuffer | Output buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvDesc | vertex buffer descriptor for the dvBuffer
  duuBuffer | Output buffer 2nd derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duuDesc | vertex buffer descriptor for the duuBuffer
  duvBuffer | Output buffer 2nd derivative wrt u and v must have BindCLBuffer() method returning a CL buffer object of destination data
  duvDesc | vertex buffer descriptor for the duvBuffer
  dvvBuffer | Output buffer 2nd derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvvDesc | vertex buffer descriptor for the dvvBuffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
  patchTable | CLPatchTable or equivalent
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 1978 of file clEvaluator.h.

## EvalPatchesVarying() [3/6]

static bool EvalPatchesVarying | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | DST_BUFFER * | duBuffer,
|  | BufferDescriptor const & | duDesc,
|  | DST_BUFFER * | dvBuffer,
|  | BufferDescriptor const & | dvDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | CLEvaluator const * | instance,
|  | DEVICE_CONTEXT | deviceContext,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  |

inline static

Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  duBuffer | Output buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duDesc | vertex buffer descriptor for the duBuffer
  dvBuffer | Output buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvDesc | vertex buffer descriptor for the dvBuffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
  patchTable | CLPatchTable or equivalent
  instance | cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.
  deviceContext | client providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 1653 of file clEvaluator.h.

## EvalPatchesVarying() [4/6]

bool EvalPatchesVarying | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | DST_BUFFER * | duBuffer,
|  | BufferDescriptor const & | duDesc,
|  | DST_BUFFER * | dvBuffer,
|  | BufferDescriptor const & | dvDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

inline

Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  duBuffer | Output buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
  duDesc | vertex buffer descriptor for the duBuffer
  dvBuffer | Output buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
  dvDesc | vertex buffer descriptor for the dvBuffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
  patchTable | CLPatchTable or equivalent
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 1749 of file clEvaluator.h.

## EvalPatchesVarying() [5/6]

static bool EvalPatchesVarying | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | CLEvaluator const * | instance,
|  | DEVICE_CONTEXT | deviceContext,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  |

inline static

Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
  patchTable | CLPatchTable or equivalent
  instance | cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.
  deviceContext | client providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 1489 of file clEvaluator.h.

## EvalPatchesVarying() [6/6]

bool EvalPatchesVarying | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | int | numPatchCoords,
|  | PATCHCOORD_BUFFER * | patchCoords,
|  | PATCH_TABLE * | patchTable,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

inline

Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
  dstDesc | vertex buffer descriptor for the output buffer
  numPatchCoords | number of patchCoords.
  patchCoords | array of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
  patchTable | CLPatchTable or equivalent
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 1568 of file clEvaluator.h.

## EvalStencils() [1/9]

bool EvalStencils | ( | cl_mem | src,
|  | BufferDescriptor const & | srcDesc,
|  | cl_mem | dst,
|  | BufferDescriptor const & | dstDesc,
|  | cl_mem | du,
|  | BufferDescriptor const & | duDesc,
|  | cl_mem | dv,
|  | BufferDescriptor const & | dvDesc,
|  | cl_mem | duu,
|  | BufferDescriptor const & | duuDesc,
|  | cl_mem | duv,
|  | BufferDescriptor const & | duvDesc,
|  | cl_mem | dvv,
|  | BufferDescriptor const & | dvvDesc,
|  | cl_mem | sizes,
|  | cl_mem | offsets,
|  | cl_mem | indices,
|  | cl_mem | weights,
|  | cl_mem | duWeights,
|  | cl_mem | dvWeights,
|  | cl_mem | duuWeights,
|  | cl_mem | duvWeights,
|  | cl_mem | dvvWeights,
|  | int | start,
|  | int | end,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

Dispatch the CL compute kernel asynchronously. returns false if the kernel hasn't been compiled yet.

Parameters

  src | CL buffer of input primvar source data
  srcDesc | vertex buffer descriptor for the srcBuffer
  dst | CL buffer of output primvar destination data
  dstDesc | vertex buffer descriptor for the dstBuffer
  du | CL buffer of output derivative wrt u
  duDesc | vertex buffer descriptor for the duBuffer
  dv | CL buffer of output derivative wrt v
  dvDesc | vertex buffer descriptor for the dvBuffer
  duu | CL buffer of output 2nd derivative wrt u
  duuDesc | vertex buffer descriptor for the duuBuffer
  duv | CL buffer of output 2nd derivative wrt u and v
  duvDesc | vertex buffer descriptor for the duvBuffer
  dvv | CL buffer of output 2nd derivative wrt v
  dvvDesc | vertex buffer descriptor for the dvvBuffer
  sizes | CL buffer of the sizes in the stencil table
  offsets | CL buffer of the offsets in the stencil table
  indices | CL buffer of the indices in the stencil table
  weights | CL buffer of the weights in the stencil table
  duWeights | CL buffer of the du weights in the stencil table
  dvWeights | CL buffer of the dv weights in the stencil table
  duuWeights | CL buffer of the duu weights in the stencil table
  duvWeights | CL buffer of the duv weights in the stencil table
  dvvWeights | CL buffer of the dvv weights in the stencil table
  start | start index of stencil table
  end | end index of stencil table
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

## EvalStencils() [2/9]

bool EvalStencils | ( | cl_mem | src,
|  | BufferDescriptor const & | srcDesc,
|  | cl_mem | dst,
|  | BufferDescriptor const & | dstDesc,
|  | cl_mem | du,
|  | BufferDescriptor const & | duDesc,
|  | cl_mem | dv,
|  | BufferDescriptor const & | dvDesc,
|  | cl_mem | sizes,
|  | cl_mem | offsets,
|  | cl_mem | indices,
|  | cl_mem | weights,
|  | cl_mem | duWeights,
|  | cl_mem | dvWeights,
|  | int | start,
|  | int | end,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

Dispatch the CL compute kernel asynchronously. returns false if the kernel hasn't been compiled yet.

Parameters

  src | CL buffer of input primvar source data
  srcDesc | vertex buffer descriptor for the srcBuffer
  dst | CL buffer of output primvar destination data
  dstDesc | vertex buffer descriptor for the dstBuffer
  du | CL buffer of output derivative wrt u
  duDesc | vertex buffer descriptor for the duBuffer
  dv | CL buffer of output derivative wrt v
  dvDesc | vertex buffer descriptor for the dvBuffer
  sizes | CL buffer of the sizes in the stencil table
  offsets | CL buffer of the offsets in the stencil table
  indices | CL buffer of the indices in the stencil table
  weights | CL buffer of the weights in the stencil table
  duWeights | CL buffer of the du weights in the stencil table
  dvWeights | CL buffer of the dv weights in the stencil table
  start | start index of stencil table
  end | end index of stencil table
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

## EvalStencils() [3/9]

bool EvalStencils | ( | cl_mem | src,
|  | BufferDescriptor const & | srcDesc,
|  | cl_mem | dst,
|  | BufferDescriptor const & | dstDesc,
|  | cl_mem | sizes,
|  | cl_mem | offsets,
|  | cl_mem | indices,
|  | cl_mem | weights,
|  | int | start,
|  | int | end,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

Dispatch the CL compute kernel asynchronously. returns false if the kernel hasn't been compiled yet.

## EvalStencils() [4/9]

static bool EvalStencils | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | DST_BUFFER * | duBuffer,
|  | BufferDescriptor const & | duDesc,
|  | DST_BUFFER * | dvBuffer,
|  | BufferDescriptor const & | dvDesc,
|  | DST_BUFFER * | duuBuffer,
|  | BufferDescriptor const & | duuDesc,
|  | DST_BUFFER * | duvBuffer,
|  | BufferDescriptor const & | duvDesc,
|  | DST_BUFFER * | dvvBuffer,
|  | BufferDescriptor const & | dvvDesc,
|  | STENCIL_TABLE const * | stencilTable,
|  | CLEvaluator const * | instance,
|  | DEVICE_CONTEXT | deviceContext,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  |

inline static

Generic static stencil function. This function has a same signature as other device kernels have so that it can be called transparently from OsdMesh template interface.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning the cl_mem object for read
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning the cl_mem object for results to be written
  dstDesc | vertex buffer descriptor for the output buffer
  duBuffer | Output buffer derivative wrt u must have BindCLBuffer() method returning the cl_mem object for du results to be written
  duDesc | vertex buffer descriptor for the duBuffer
  dvBuffer | Output buffer derivative wrt v must have BindCLBuffer() method returning the cl_mem object for dv results to be written
  dvDesc | vertex buffer descriptor for the dvBuffer
  duuBuffer | Output buffer 2nd derivative wrt u must have BindCLBuffer() method returning the cl_mem object for du results to be written
  duuDesc | vertex buffer descriptor for the duuBuffer
  duvBuffer | Output buffer 2nd derivative wrt u and v must have BindCLBuffer() method returning the cl_mem object for du results to be written
  duvDesc | vertex buffer descriptor for the duvBuffer
  dvvBuffer | Output buffer 2nd derivative wrt v must have BindCLBuffer() method returning the cl_mem object for dv results to be written
  dvvDesc | vertex buffer descriptor for the dvvBuffer
  stencilTable | stencil table to be applied. The table must have SSBO interfaces.
  instance | cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.
  deviceContext | client providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 421 of file clEvaluator.h.

## EvalStencils() [5/9]

bool EvalStencils | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | DST_BUFFER * | duBuffer,
|  | BufferDescriptor const & | duDesc,
|  | DST_BUFFER * | dvBuffer,
|  | BufferDescriptor const & | dvDesc,
|  | DST_BUFFER * | duuBuffer,
|  | BufferDescriptor const & | duuDesc,
|  | DST_BUFFER * | duvBuffer,
|  | BufferDescriptor const & | duvDesc,
|  | DST_BUFFER * | dvvBuffer,
|  | BufferDescriptor const & | dvvDesc,
|  | STENCIL_TABLE const * | stencilTable,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

inline

Generic stencil function.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning the cl_mem object for read
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning the cl_mem object for results to be written
  dstDesc | vertex buffer descriptor for the output buffer
  duBuffer | Output buffer derivative wrt u must have BindCLBuffer() method returning the cl_mem object for du results to be written
  duDesc | vertex buffer descriptor for the duBuffer
  dvBuffer | Output buffer derivative wrt v must have BindCLBuffer() method returning the cl_mem object for dv results to be written
  dvDesc | vertex buffer descriptor for the dvBuffer
  duuBuffer | Output buffer 2nd derivative wrt u must have BindCLBuffer() method returning the cl_mem object for du results to be written
  duuDesc | vertex buffer descriptor for the duuBuffer
  duvBuffer | Output buffer 2nd derivative wrt u and v must have BindCLBuffer() method returning the cl_mem object for du results to be written
  duvDesc | vertex buffer descriptor for the duvBuffer
  dvvBuffer | Output buffer 2nd derivative wrt v must have BindCLBuffer() method returning the cl_mem object for dv results to be written
  dvvDesc | vertex buffer descriptor for the dvvBuffer
  stencilTable | stencil table to be applied. The table must have SSBO interfaces.
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 646 of file clEvaluator.h.

## EvalStencils() [6/9]

static bool EvalStencils | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | DST_BUFFER * | duBuffer,
|  | BufferDescriptor const & | duDesc,
|  | DST_BUFFER * | dvBuffer,
|  | BufferDescriptor const & | dvDesc,
|  | STENCIL_TABLE const * | stencilTable,
|  | CLEvaluator const * | instance,
|  | DEVICE_CONTEXT | deviceContext,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  |

inline static

Generic static stencil function. This function has a same signature as other device kernels have so that it can be called transparently from OsdMesh template interface.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning the cl_mem object for read
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning the cl_mem object for results to be written
  dstDesc | vertex buffer descriptor for the output buffer
  duBuffer | Output buffer derivative wrt u must have BindCLBuffer() method returning the cl_mem object for du results to be written
  duDesc | vertex buffer descriptor for the duBuffer
  dvBuffer | Output buffer derivative wrt v must have BindCLBuffer() method returning the cl_mem object for dv results to be written
  dvDesc | vertex buffer descriptor for the dvBuffer
  stencilTable | stencil table to be applied. The table must have SSBO interfaces.
  instance | cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.
  deviceContext | client providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 309 of file clEvaluator.h.

## EvalStencils() [7/9]

bool EvalStencils | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | DST_BUFFER * | duBuffer,
|  | BufferDescriptor const & | duDesc,
|  | DST_BUFFER * | dvBuffer,
|  | BufferDescriptor const & | dvDesc,
|  | STENCIL_TABLE const * | stencilTable,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

inline

Generic stencil function.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning the cl_mem object for read
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning the cl_mem object for results to be written
  dstDesc | vertex buffer descriptor for the output buffer
  duBuffer | Output buffer derivative wrt u must have BindCLBuffer() method returning the cl_mem object for du results to be written
  duDesc | vertex buffer descriptor for the duBuffer
  dvBuffer | Output buffer derivative wrt v must have BindCLBuffer() method returning the cl_mem object for dv results to be written
  dvDesc | vertex buffer descriptor for the dvBuffer
  stencilTable | stencil table to be applied. The table must have SSBO interfaces.
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 561 of file clEvaluator.h.

## EvalStencils() [8/9]

static bool EvalStencils | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | STENCIL_TABLE const * | stencilTable,
|  | CLEvaluator const * | instance,
|  | DEVICE_CONTEXT | deviceContext,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  |

inline static

Generic static stencil function. This function has a same signature as other device kernels have so that it can be called transparently from OsdMesh template interface.

Stencil evaluations with StencilTable

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning the cl_mem object for read
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning the cl_mem object for results to be written
  dstDesc | vertex buffer descriptor for the output buffer
  stencilTable | stencil table to be applied. The table must have SSBO interfaces.
  instance | cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.
  deviceContext | client providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 219 of file clEvaluator.h.

## EvalStencils() [9/9]

bool EvalStencils | ( | SRC_BUFFER * | srcBuffer,
|  | BufferDescriptor const & | srcDesc,
|  | DST_BUFFER * | dstBuffer,
|  | BufferDescriptor const & | dstDesc,
|  | STENCIL_TABLE const * | stencilTable,
|  | unsigned int | numStartEvents = `0`,
|  | const cl_event * | startEvents = `NULL`,
|  | cl_event * | endEvent = `NULL`
| ) |  | const

inline

Generic stencil function.

Parameters

  srcBuffer | Input primvar buffer. must have BindCLBuffer() method returning the cl_mem object for read
  srcDesc | vertex buffer descriptor for the input buffer
  dstBuffer | Output primvar buffer must have BindCLBuffer() method returning the cl_mem object for results to be written
  dstDesc | vertex buffer descriptor for the output buffer
  stencilTable | stencil table to be applied. The table must have SSBO interfaces.
  numStartEvents | the number of events in the array pointed to by startEvents.
  startEvents | points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.
  endEvent | pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required.

Definition at line 500 of file clEvaluator.h.

## Synchronize() [1/2]

static void Synchronize | ( | cl_command_queue | queue | ) |

static

## Synchronize() [2/2]

static void Synchronize | ( | DEVICE_CONTEXT | deviceContext | ) |

inline static

Wait the OpenCL kernels finish.

Definition at line 2613 of file clEvaluator.h.

The documentation for this class was generated from the following file:

- opensubdiv/osd/clEvaluator.h