25 #ifndef OPENSUBDIV3_OSD_MTL_COMPUTE_EVALUATOR_H 26 #define OPENSUBDIV3_OSD_MTL_COMPUTE_EVALUATOR_H 28 #include "../version.h" 29 #include "../osd/types.h" 30 #include "../osd/bufferDescriptor.h" 31 #include "../osd/mtlCommon.h" 36 @protocol MTLComputePipelineState;
40 namespace OPENSUBDIV_VERSION
46 class LimitStencilTable;
54 template<
typename STENCIL_TABLE,
typename DEVICE_CONTEXT>
56 DEVICE_CONTEXT context)
80 id<MTLBuffer> _sizesBuffer;
81 id<MTLBuffer> _offsetsBuffer;
82 id<MTLBuffer> _indicesBuffer;
83 id<MTLBuffer> _weightsBuffer;
84 id<MTLBuffer> _duWeightsBuffer;
85 id<MTLBuffer> _dvWeightsBuffer;
86 id<MTLBuffer> _duuWeightsBuffer;
87 id<MTLBuffer> _duvWeightsBuffer;
88 id<MTLBuffer> _dvvWeightsBuffer;
150 template <
typename SRC_BUFFER,
typename DST_BUFFER,
typename STENCIL_TABLE>
154 STENCIL_TABLE
const *stencilTable,
168 instance = Create(srcDesc, dstDesc,
225 template <
typename SRC_BUFFER,
typename DST_BUFFER,
typename STENCIL_TABLE>
231 STENCIL_TABLE
const *stencilTable,
244 instance = Create(srcDesc, dstDesc, duDesc, dvDesc, context);
317 template <
typename SRC_BUFFER,
typename DST_BUFFER,
typename STENCIL_TABLE>
326 STENCIL_TABLE
const *stencilTable,
342 instance = Create(srcDesc, dstDesc, duDesc, dvDesc,
343 duuDesc, duvDesc, dvvDesc, context);
381 template <
typename SRC_BUFFER,
typename DST_BUFFER,
typename STENCIL_TABLE>
385 STENCIL_TABLE
const *stencilTable,
388 return EvalStencils(srcBuffer->BindMTLBuffer(context), srcDesc,
389 dstBuffer->BindMTLBuffer(context), dstDesc,
392 stencilTable->GetSizesBuffer(),
393 stencilTable->GetOffsetsBuffer(),
394 stencilTable->GetIndicesBuffer(),
395 stencilTable->GetWeightsBuffer(),
399 stencilTable->GetNumStencils(),
435 template <
typename SRC_BUFFER,
typename DST_BUFFER,
typename STENCIL_TABLE>
441 STENCIL_TABLE
const *stencilTable,
444 return EvalStencils(srcBuffer->BindMTLBuffer(context), srcDesc,
445 dstBuffer->BindMTLBuffer(context), dstDesc,
446 duBuffer->BindMTLBuffer(context), duDesc,
447 dvBuffer->BindMTLBuffer(context), dvDesc,
448 stencilTable->GetSizesBuffer(),
449 stencilTable->GetOffsetsBuffer(),
450 stencilTable->GetIndicesBuffer(),
451 stencilTable->GetWeightsBuffer(),
452 stencilTable->GetDuWeightsBuffer(),
453 stencilTable->GetDvWeightsBuffer(),
455 stencilTable->GetNumStencils(),
509 template <
typename SRC_BUFFER,
typename DST_BUFFER,
typename STENCIL_TABLE>
518 STENCIL_TABLE
const *stencilTable,
521 return EvalStencils(srcBuffer->BindMTLBuffer(context), srcDesc,
522 dstBuffer->BindMTLBuffer(context), dstDesc,
523 duBuffer->BindMTLBuffer(context), duDesc,
524 dvBuffer->BindMTLBuffer(context), dvDesc,
525 duuBuffer->BindMTLBuffer(context), duuDesc,
526 duvBuffer->BindMTLBuffer(context), duvDesc,
527 dvvBuffer->BindMTLBuffer(context), dvvDesc,
528 stencilTable->GetSizesBuffer(),
529 stencilTable->GetOffsetsBuffer(),
530 stencilTable->GetIndicesBuffer(),
531 stencilTable->GetWeightsBuffer(),
532 stencilTable->GetDuWeightsBuffer(),
533 stencilTable->GetDvWeightsBuffer(),
534 stencilTable->GetDuuWeightsBuffer(),
535 stencilTable->GetDuvWeightsBuffer(),
536 stencilTable->GetDvvWeightsBuffer(),
538 stencilTable->GetNumStencils(),
584 id<MTLBuffer> sizesBuffer,
585 id<MTLBuffer> offsetsBuffer,
586 id<MTLBuffer> indicesBuffer,
587 id<MTLBuffer> weightsBuffer,
588 id<MTLBuffer> duWeightsBuffer,
589 id<MTLBuffer> dvWeightsBuffer,
657 id<MTLBuffer> sizesBuffer,
658 id<MTLBuffer> offsetsBuffer,
659 id<MTLBuffer> indicesBuffer,
660 id<MTLBuffer> weightsBuffer,
661 id<MTLBuffer> duWeightsBuffer,
662 id<MTLBuffer> dvWeightsBuffer,
663 id<MTLBuffer> duuWeightsBuffer,
664 id<MTLBuffer> duvWeightsBuffer,
665 id<MTLBuffer> dvvWeightsBuffer,
709 template <
typename SRC_BUFFER,
typename DST_BUFFER,
710 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
715 PATCHCOORD_BUFFER *patchCoords,
716 PATCH_TABLE *patchTable,
723 numPatchCoords, patchCoords,
728 instance = Create(srcDesc, dstDesc,
735 numPatchCoords, patchCoords,
790 template <
typename SRC_BUFFER,
typename DST_BUFFER,
791 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
798 PATCHCOORD_BUFFER *patchCoords,
799 PATCH_TABLE *patchTable,
808 numPatchCoords, patchCoords,
813 instance = Create(srcDesc, dstDesc,
814 duDesc, dvDesc, context);
820 numPatchCoords, patchCoords,
893 template <
typename SRC_BUFFER,
typename DST_BUFFER,
894 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
904 PATCHCOORD_BUFFER *patchCoords,
905 PATCH_TABLE *patchTable,
917 numPatchCoords, patchCoords,
922 instance = Create(srcDesc, dstDesc,
924 duuDesc, duvDesc, dvvDesc, context);
933 numPatchCoords, patchCoords,
970 template <
typename SRC_BUFFER,
typename DST_BUFFER,
971 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
976 PATCHCOORD_BUFFER *patchCoords,
977 PATCH_TABLE *patchTable,
980 return EvalPatches(srcBuffer->BindMTLBuffer(context), srcDesc,
981 dstBuffer->BindMTLBuffer(context), dstDesc,
985 patchCoords->BindMTLBuffer(context),
986 patchTable->GetPatchArrays(),
987 patchTable->GetPatchIndexBuffer(),
988 patchTable->GetPatchParamBuffer(),
1029 template <
typename SRC_BUFFER,
typename DST_BUFFER,
1030 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
1037 PATCHCOORD_BUFFER *patchCoords,
1038 PATCH_TABLE *patchTable,
1041 return EvalPatches(srcBuffer->BindMTLBuffer(context), srcDesc,
1042 dstBuffer->BindMTLBuffer(context), dstDesc,
1043 duBuffer->BindMTLBuffer(context), duDesc,
1044 dvBuffer->BindMTLBuffer(context), dvDesc,
1046 patchCoords->BindMTLBuffer(context),
1047 patchTable->GetPatchArrays(),
1048 patchTable->GetPatchIndexBuffer(),
1049 patchTable->GetPatchParamBuffer(),
1108 template <
typename SRC_BUFFER,
typename DST_BUFFER,
1109 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
1119 PATCHCOORD_BUFFER *patchCoords,
1120 PATCH_TABLE *patchTable,
1123 return EvalPatches(srcBuffer->BindMTLBuffer(context), srcDesc,
1124 dstBuffer->BindMTLBuffer(context), dstDesc,
1125 duBuffer->BindMTLBuffer(context), duDesc,
1126 dvBuffer->BindMTLBuffer(context), dvDesc,
1127 duuBuffer->BindMTLBuffer(context), duuDesc,
1128 duvBuffer->BindMTLBuffer(context), duvDesc,
1129 dvvBuffer->BindMTLBuffer(context), dvvDesc,
1131 patchCoords->BindMTLBuffer(context),
1132 patchTable->GetPatchArrays(),
1133 patchTable->GetPatchIndexBuffer(),
1134 patchTable->GetPatchParamBuffer(),
1143 id<MTLBuffer> patchCoordsBuffer,
1145 id<MTLBuffer> patchIndexBuffer,
1146 id<MTLBuffer> patchParamsBuffer,
1157 id<MTLBuffer> patchCoordsBuffer,
1159 id<MTLBuffer> patchIndexBuffer,
1160 id<MTLBuffer> patchParamsBuffer,
1196 template <
typename SRC_BUFFER,
typename DST_BUFFER,
1197 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
1202 PATCHCOORD_BUFFER *patchCoords,
1203 PATCH_TABLE *patchTable,
1211 numPatchCoords, patchCoords,
1216 instance = Create(srcDesc, dstDesc,
1224 numPatchCoords, patchCoords,
1261 template <
typename SRC_BUFFER,
typename DST_BUFFER,
1262 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
1267 PATCHCOORD_BUFFER *patchCoords,
1268 PATCH_TABLE *patchTable,
1271 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,
1272 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,
1276 patchCoords->BindMTLBuffer(deviceContext),
1277 patchTable->GetVaryingPatchArrays(),
1278 patchTable->GetVaryingPatchIndexBuffer(),
1279 patchTable->GetPatchParamBuffer(),
1329 template <
typename SRC_BUFFER,
typename DST_BUFFER,
1330 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
1337 PATCHCOORD_BUFFER *patchCoords,
1338 PATCH_TABLE *patchTable,
1348 numPatchCoords, patchCoords,
1353 instance = Create(srcDesc, dstDesc,
1362 numPatchCoords, patchCoords,
1411 template <
typename SRC_BUFFER,
typename DST_BUFFER,
1412 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
1419 PATCHCOORD_BUFFER *patchCoords,
1420 PATCH_TABLE *patchTable,
1423 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,
1424 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,
1425 duBuffer->BindMTLBuffer(deviceContext), duDesc,
1426 dvBuffer->BindMTLBuffer(deviceContext), dvDesc,
1428 patchCoords->BindMTLBuffer(deviceContext),
1429 patchTable->GetVaryingPatchArrays(),
1430 patchTable->GetVaryingPatchIndexBuffer(),
1431 patchTable->GetPatchParamBuffer(),
1500 template <
typename SRC_BUFFER,
typename DST_BUFFER,
1501 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
1511 PATCHCOORD_BUFFER *patchCoords,
1512 PATCH_TABLE *patchTable,
1525 numPatchCoords, patchCoords,
1530 instance = Create(srcDesc, dstDesc,
1532 duuDesc, duvDesc, dvvDesc,
1543 numPatchCoords, patchCoords,
1610 template <
typename SRC_BUFFER,
typename DST_BUFFER,
1611 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
1621 PATCHCOORD_BUFFER *patchCoords,
1622 PATCH_TABLE *patchTable,
1625 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,
1626 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,
1627 duBuffer->BindMTLBuffer(deviceContext), duDesc,
1628 dvBuffer->BindMTLBuffer(deviceContext), dvDesc,
1629 duuBuffer->BindMTLBuffer(deviceContext), duuDesc,
1630 duvBuffer->BindMTLBuffer(deviceContext), duvDesc,
1631 dvvBuffer->BindMTLBuffer(deviceContext), dvvDesc,
1633 patchCoords->BindMTLBuffer(deviceContext),
1634 patchTable->GetVaryingPatchArrays(),
1635 patchTable->GetVaryingPatchIndexBuffer(),
1636 patchTable->GetPatchParamBuffer(),
1676 template <
typename SRC_BUFFER,
typename DST_BUFFER,
1677 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
1682 PATCHCOORD_BUFFER *patchCoords,
1683 PATCH_TABLE *patchTable,
1692 numPatchCoords, patchCoords,
1698 instance = Create(srcDesc, dstDesc,
1706 numPatchCoords, patchCoords,
1746 template <
typename SRC_BUFFER,
typename DST_BUFFER,
1747 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
1752 PATCHCOORD_BUFFER *patchCoords,
1753 PATCH_TABLE *patchTable,
1757 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,
1758 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,
1762 patchCoords->BindMTLBuffer(deviceContext),
1763 patchTable->GetFVarPatchArrays(fvarChannel),
1764 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
1765 patchTable->GetFVarPatchParamBuffer(fvarChannel),
1817 template <
typename SRC_BUFFER,
typename DST_BUFFER,
1818 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
1825 PATCHCOORD_BUFFER *patchCoords,
1826 PATCH_TABLE *patchTable,
1837 numPatchCoords, patchCoords,
1843 instance = Create(srcDesc, dstDesc,
1852 numPatchCoords, patchCoords,
1904 template <
typename SRC_BUFFER,
typename DST_BUFFER,
1905 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
1912 PATCHCOORD_BUFFER *patchCoords,
1913 PATCH_TABLE *patchTable,
1917 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,
1918 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,
1919 duBuffer->BindMTLBuffer(deviceContext), duDesc,
1920 dvBuffer->BindMTLBuffer(deviceContext), dvDesc,
1922 patchCoords->BindMTLBuffer(deviceContext),
1923 patchTable->GetFVarPatchArrays(fvarChannel),
1924 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
1925 patchTable->GetFVarPatchParamBuffer(fvarChannel),
1995 template <
typename SRC_BUFFER,
typename DST_BUFFER,
1996 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
2006 PATCHCOORD_BUFFER *patchCoords,
2007 PATCH_TABLE *patchTable,
2021 numPatchCoords, patchCoords,
2027 instance = Create(srcDesc, dstDesc,
2029 duuDesc, duvDesc, dvvDesc,
2040 numPatchCoords, patchCoords,
2110 template <
typename SRC_BUFFER,
typename DST_BUFFER,
2111 typename PATCHCOORD_BUFFER,
typename PATCH_TABLE>
2121 PATCHCOORD_BUFFER *patchCoords,
2122 PATCH_TABLE *patchTable,
2126 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,
2127 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,
2128 duBuffer->BindMTLBuffer(deviceContext), duDesc,
2129 dvBuffer->BindMTLBuffer(deviceContext), dvDesc,
2130 duuBuffer->BindMTLBuffer(deviceContext), duuDesc,
2131 duvBuffer->BindMTLBuffer(deviceContext), duvDesc,
2132 dvvBuffer->BindMTLBuffer(deviceContext), dvvDesc,
2134 patchCoords->BindMTLBuffer(deviceContext),
2135 patchTable->GetFVarPatchArrays(fvarChannel),
2136 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
2137 patchTable->GetFVarPatchParamBuffer(fvarChannel),
2154 static void Synchronize(
MTLContext* context);
2158 id<MTLLibrary> _computeLibrary;
2159 id<MTLComputePipelineState> _evalStencils;
2160 id<MTLComputePipelineState> _evalPatches;
2161 id<MTLBuffer> _parameterBuffer;
2167 using namespace OPENSUBDIV_VERSION;
2169 #endif // OPENSUBDIV3_OSD_MTL_COMPUTE_EVALUATOR_H 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, MTLContext *deviceContext) const
Generic limit eval function. This function has a same signature as other device kernels have so that ...
bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLContext *deviceContext) const
Generic limit eval function. This function has a same signature as other device kernels have so that ...
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, MTLComputeEvaluator const *instance, MTLContext *deviceContext)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
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, MTLContext *deviceContext) const
Generic limit eval function. This function has a same signature as other device kernels have so that ...
id< MTLBuffer > GetDvWeightsBuffer() const
bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const *stencilTable, MTLContext *context) const
Generic stencil function.
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, MTLContext *context) const
Generic limit eval function with derivatives. This function has a same signature as other device kern...
static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const *stencilTable, MTLComputeEvaluator const *instance, MTLContext *context)
Generic static stencil function. This function has a same signature as other device kernels have so t...
id< MTLBuffer > GetDuvWeightsBuffer() const
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, MTLContext *deviceContext) const
Generic limit eval function. This function has a same signature as other device kernels have so that ...
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, MTLContext *deviceContext) const
Generic limit eval function. This function has a same signature as other device kernels have so that ...
static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator const *instance, MTLContext *context)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
id< MTLBuffer > GetDuuWeightsBuffer() const
std::vector< PatchArray > PatchArrayVector
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, MTLContext *context) const
Generic limit eval function with derivatives. This function has a same signature as other device kern...
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, MTLComputeEvaluator const *instance, MTLContext *deviceContext)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
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, MTLComputeEvaluator const *instance, MTLContext *context)
Generic static stencil function. This function has a same signature as other device kernels have so t...
static MTLStencilTable * Create(STENCIL_TABLE *stencilTable, DEVICE_CONTEXT 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, MTLComputeEvaluator const *instance, MTLContext *context)
Generic static stencil function. This function has a same signature as other device kernels have so t...
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, MTLContext *context) const
Generic stencil function.
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, MTLComputeEvaluator const *instance, MTLContext *deviceContext)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
id< MTLBuffer > GetDuWeightsBuffer() const
id< MTLBuffer > GetIndicesBuffer() const
static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator const *instance, MTLContext *deviceContext)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers. Almost all Osd Evaluator APIs take BufferDescriptors along with device-specific buffer objects.
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, MTLComputeEvaluator *instance, MTLContext *context)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
Table of subdivision stencils.
id< MTLBuffer > GetWeightsBuffer() const
id< MTLBuffer > GetDvvWeightsBuffer() const
Table of limit subdivision stencils.
bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext *context) const
Generic limit eval function. This function has a same signature as other device kernels have so that ...
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, MTLComputeEvaluator const *instance, MTLContext *deviceContext)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
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, MTLComputeEvaluator const *instance, MTLContext *deviceContext)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
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, MTLComputeEvaluator *instance, MTLContext *context)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
id< MTLBuffer > GetSizesBuffer() const
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, MTLContext *context) const
Generic stencil function.
bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext *deviceContext) const
Generic limit eval function. This function has a same signature as other device kernels have so that ...
id< MTLBuffer > GetOffsetsBuffer() const
int GetNumStencils() const