OpenSubdiv
Loading...
Searching...
No Matches
CLEvaluator Class Reference

#include <clEvaluator.h>

Public Types

typedef bool Instantiatable
 

Public Member Functions

 CLEvaluator (cl_context context, cl_command_queue queue)
 Constructor.
 
 ~CLEvaluator ()
 Destructor.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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 CLEvaluatorCreate (BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, DEVICE_CONTEXT deviceContext)
 Generic creator template.
 
static CLEvaluatorCreate (BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc, cl_context clContext, cl_command_queue clCommandQueue)
 
template<typename DEVICE_CONTEXT >
static CLEvaluatorCreate (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.
 
static CLEvaluatorCreate (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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
template<typename DEVICE_CONTEXT >
static void Synchronize (DEVICE_CONTEXT deviceContext)
 Wait the OpenCL kernels finish.
 
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()

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 
)
inlinestatic

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 
)
inlinestatic

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 
)
inlinestatic

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 
)
inlinestatic

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 
)
inlinestatic

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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
duBufferOutput buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duDescvertex buffer descriptor for the duBuffer
dvBufferOutput buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvDescvertex buffer descriptor for the dvBuffer
duuBufferOutput buffer 2nd derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duuDescvertex buffer descriptor for the duuBuffer
duvBufferOutput buffer 2nd derivative wrt u and v must have BindCLBuffer() method returning a CL buffer object of destination data
duvDescvertex buffer descriptor for the duvBuffer
dvvBufferOutput buffer 2nd derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvvDescvertex buffer descriptor for the dvvBuffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct
patchTableCLPatchTable or equivalent
instancecached 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.
deviceContextclient providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
duBufferOutput buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duDescvertex buffer descriptor for the duBuffer
dvBufferOutput buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvDescvertex buffer descriptor for the dvBuffer
duuBufferOutput buffer 2nd derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duuDescvertex buffer descriptor for the duuBuffer
duvBufferOutput buffer 2nd derivative wrt u and v must have BindCLBuffer() method returning a CL buffer object of destination data
duvDescvertex buffer descriptor for the duvBuffer
dvvBufferOutput buffer 2nd derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvvDescvertex buffer descriptor for the dvvBuffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated.
patchTableCLPatchTable or equivalent
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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 
)
inlinestatic

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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
duBufferOutput buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duDescvertex buffer descriptor for the duBuffer
dvBufferOutput buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvDescvertex buffer descriptor for the dvBuffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct
patchTableCLPatchTable or equivalent
instancecached 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.
deviceContextclient providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
duBufferOutput buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duDescvertex buffer descriptor for the duBuffer
dvBufferOutput buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvDescvertex buffer descriptor for the dvBuffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated.
patchTableCLPatchTable or equivalent
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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 
)
inlinestatic

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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
patchTableCLPatchTable or equivalent
instancecached 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.
deviceContextclient providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
patchTableCLPatchTable or equivalent
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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 
)
inlinestatic

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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
duBufferOutput buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duDescvertex buffer descriptor for the duBuffer
dvBufferOutput buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvDescvertex buffer descriptor for the dvBuffer
duuBufferOutput buffer 2nd derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duuDescvertex buffer descriptor for the duuBuffer
duvBufferOutput buffer 2nd derivative wrt u and v must have BindCLBuffer() method returning a CL buffer object of destination data
duvDescvertex buffer descriptor for the duvBuffer
dvvBufferOutput buffer 2nd derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvvDescvertex buffer descriptor for the dvvBuffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
patchTableCLPatchTable or equivalent
fvarChannelface-varying channel
instancecached 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.
deviceContextclient providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
duBufferOutput buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duDescvertex buffer descriptor for the duBuffer
dvBufferOutput buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvDescvertex buffer descriptor for the dvBuffer
duuBufferOutput buffer 2nd derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duuDescvertex buffer descriptor for the duuBuffer
duvBufferOutput buffer 2nd derivative wrt u and v must have BindCLBuffer() method returning a CL buffer object of destination data
duvDescvertex buffer descriptor for the duvBuffer
dvvBufferOutput buffer 2nd derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvvDescvertex buffer descriptor for the dvvBuffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
patchTableCLPatchTable or equivalent
fvarChannelface-varying channel
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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 
)
inlinestatic

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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
duBufferOutput buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duDescvertex buffer descriptor for the duBuffer
dvBufferOutput buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvDescvertex buffer descriptor for the dvBuffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
patchTableCLPatchTable or equivalent
fvarChannelface-varying channel
instancecached 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.
deviceContextclient providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
duBufferOutput buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duDescvertex buffer descriptor for the duBuffer
dvBufferOutput buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvDescvertex buffer descriptor for the dvBuffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
patchTableCLPatchTable or equivalent
fvarChannelface-varying channel
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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 
)
inlinestatic

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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
patchTableCLPatchTable or equivalent
fvarChannelface-varying channel
instancecached 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.
deviceContextclient providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
patchTableCLPatchTable or equivalent
fvarChannelface-varying channel
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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 
)
inlinestatic

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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
duBufferOutput buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duDescvertex buffer descriptor for the duBuffer
dvBufferOutput buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvDescvertex buffer descriptor for the dvBuffer
duuBufferOutput buffer 2nd derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duuDescvertex buffer descriptor for the duuBuffer
duvBufferOutput buffer 2nd derivative wrt u and v must have BindCLBuffer() method returning a CL buffer object of destination data
duvDescvertex buffer descriptor for the duvBuffer
dvvBufferOutput buffer 2nd derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvvDescvertex buffer descriptor for the dvvBuffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
patchTableCLPatchTable or equivalent
instancecached 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.
deviceContextclient providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
duBufferOutput buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duDescvertex buffer descriptor for the duBuffer
dvBufferOutput buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvDescvertex buffer descriptor for the dvBuffer
duuBufferOutput buffer 2nd derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duuDescvertex buffer descriptor for the duuBuffer
duvBufferOutput buffer 2nd derivative wrt u and v must have BindCLBuffer() method returning a CL buffer object of destination data
duvDescvertex buffer descriptor for the duvBuffer
dvvBufferOutput buffer 2nd derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvvDescvertex buffer descriptor for the dvvBuffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
patchTableCLPatchTable or equivalent
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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 
)
inlinestatic

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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
duBufferOutput buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duDescvertex buffer descriptor for the duBuffer
dvBufferOutput buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvDescvertex buffer descriptor for the dvBuffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
patchTableCLPatchTable or equivalent
instancecached 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.
deviceContextclient providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
duBufferOutput buffer derivative wrt u must have BindCLBuffer() method returning a CL buffer object of destination data
duDescvertex buffer descriptor for the duBuffer
dvBufferOutput buffer derivative wrt v must have BindCLBuffer() method returning a CL buffer object of destination data
dvDescvertex buffer descriptor for the dvBuffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
patchTableCLPatchTable or equivalent
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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 
)
inlinestatic

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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
patchTableCLPatchTable or equivalent
instancecached 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.
deviceContextclient providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning a CL buffer object of source data
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning a CL buffer object of destination data
dstDescvertex buffer descriptor for the output buffer
numPatchCoordsnumber of patchCoords.
patchCoordsarray of locations to be evaluated. must have BindCLBuffer() method returning an array of PatchCoord struct.
patchTableCLPatchTable or equivalent
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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
srcCL buffer of input primvar source data
srcDescvertex buffer descriptor for the srcBuffer
dstCL buffer of output primvar destination data
dstDescvertex buffer descriptor for the dstBuffer
duCL buffer of output derivative wrt u
duDescvertex buffer descriptor for the duBuffer
dvCL buffer of output derivative wrt v
dvDescvertex buffer descriptor for the dvBuffer
duuCL buffer of output 2nd derivative wrt u
duuDescvertex buffer descriptor for the duuBuffer
duvCL buffer of output 2nd derivative wrt u and v
duvDescvertex buffer descriptor for the duvBuffer
dvvCL buffer of output 2nd derivative wrt v
dvvDescvertex buffer descriptor for the dvvBuffer
sizesCL buffer of the sizes in the stencil table
offsetsCL buffer of the offsets in the stencil table
indicesCL buffer of the indices in the stencil table
weightsCL buffer of the weights in the stencil table
duWeightsCL buffer of the du weights in the stencil table
dvWeightsCL buffer of the dv weights in the stencil table
duuWeightsCL buffer of the duu weights in the stencil table
duvWeightsCL buffer of the duv weights in the stencil table
dvvWeightsCL buffer of the dvv weights in the stencil table
startstart index of stencil table
endend index of stencil table
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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
srcCL buffer of input primvar source data
srcDescvertex buffer descriptor for the srcBuffer
dstCL buffer of output primvar destination data
dstDescvertex buffer descriptor for the dstBuffer
duCL buffer of output derivative wrt u
duDescvertex buffer descriptor for the duBuffer
dvCL buffer of output derivative wrt v
dvDescvertex buffer descriptor for the dvBuffer
sizesCL buffer of the sizes in the stencil table
offsetsCL buffer of the offsets in the stencil table
indicesCL buffer of the indices in the stencil table
weightsCL buffer of the weights in the stencil table
duWeightsCL buffer of the du weights in the stencil table
dvWeightsCL buffer of the dv weights in the stencil table
startstart index of stencil table
endend index of stencil table
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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 
)
inlinestatic

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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning the cl_mem object for read
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning the cl_mem object for results to be written
dstDescvertex buffer descriptor for the output buffer
duBufferOutput buffer derivative wrt u must have BindCLBuffer() method returning the cl_mem object for du results to be written
duDescvertex buffer descriptor for the duBuffer
dvBufferOutput buffer derivative wrt v must have BindCLBuffer() method returning the cl_mem object for dv results to be written
dvDescvertex buffer descriptor for the dvBuffer
duuBufferOutput buffer 2nd derivative wrt u must have BindCLBuffer() method returning the cl_mem object for du results to be written
duuDescvertex buffer descriptor for the duuBuffer
duvBufferOutput buffer 2nd derivative wrt u and v must have BindCLBuffer() method returning the cl_mem object for du results to be written
duvDescvertex buffer descriptor for the duvBuffer
dvvBufferOutput buffer 2nd derivative wrt v must have BindCLBuffer() method returning the cl_mem object for dv results to be written
dvvDescvertex buffer descriptor for the dvvBuffer
stencilTablestencil table to be applied. The table must have SSBO interfaces.
instancecached 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.
deviceContextclient providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning the cl_mem object for read
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning the cl_mem object for results to be written
dstDescvertex buffer descriptor for the output buffer
duBufferOutput buffer derivative wrt u must have BindCLBuffer() method returning the cl_mem object for du results to be written
duDescvertex buffer descriptor for the duBuffer
dvBufferOutput buffer derivative wrt v must have BindCLBuffer() method returning the cl_mem object for dv results to be written
dvDescvertex buffer descriptor for the dvBuffer
duuBufferOutput buffer 2nd derivative wrt u must have BindCLBuffer() method returning the cl_mem object for du results to be written
duuDescvertex buffer descriptor for the duuBuffer
duvBufferOutput buffer 2nd derivative wrt u and v must have BindCLBuffer() method returning the cl_mem object for du results to be written
duvDescvertex buffer descriptor for the duvBuffer
dvvBufferOutput buffer 2nd derivative wrt v must have BindCLBuffer() method returning the cl_mem object for dv results to be written
dvvDescvertex buffer descriptor for the dvvBuffer
stencilTablestencil table to be applied. The table must have SSBO interfaces.
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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 
)
inlinestatic

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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning the cl_mem object for read
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning the cl_mem object for results to be written
dstDescvertex buffer descriptor for the output buffer
duBufferOutput buffer derivative wrt u must have BindCLBuffer() method returning the cl_mem object for du results to be written
duDescvertex buffer descriptor for the duBuffer
dvBufferOutput buffer derivative wrt v must have BindCLBuffer() method returning the cl_mem object for dv results to be written
dvDescvertex buffer descriptor for the dvBuffer
stencilTablestencil table to be applied. The table must have SSBO interfaces.
instancecached 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.
deviceContextclient providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning the cl_mem object for read
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning the cl_mem object for results to be written
dstDescvertex buffer descriptor for the output buffer
duBufferOutput buffer derivative wrt u must have BindCLBuffer() method returning the cl_mem object for du results to be written
duDescvertex buffer descriptor for the duBuffer
dvBufferOutput buffer derivative wrt v must have BindCLBuffer() method returning the cl_mem object for dv results to be written
dvDescvertex buffer descriptor for the dvBuffer
stencilTablestencil table to be applied. The table must have SSBO interfaces.
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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 
)
inlinestatic

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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning the cl_mem object for read
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning the cl_mem object for results to be written
dstDescvertex buffer descriptor for the output buffer
stencilTablestencil table to be applied. The table must have SSBO interfaces.
instancecached 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.
deviceContextclient providing context class which supports cL_context GetContext() cl_command_queue GetCommandQueue() methods.
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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
srcBufferInput primvar buffer. must have BindCLBuffer() method returning the cl_mem object for read
srcDescvertex buffer descriptor for the input buffer
dstBufferOutput primvar buffer must have BindCLBuffer() method returning the cl_mem object for results to be written
dstDescvertex buffer descriptor for the output buffer
stencilTablestencil table to be applied. The table must have SSBO interfaces.
numStartEventsthe number of events in the array pointed to by startEvents.
startEventspoints 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.
endEventpointer 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)
inlinestatic

Wait the OpenCL kernels finish.

Definition at line 2613 of file clEvaluator.h.


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