| OpenSubdiv OpenSubdiv

Loading...
Searching...
No Matches
tbbEvaluator.h
Go to the documentation of this file.
1//
2// Copyright 2015 Pixar
3//
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
5// with the following modification; you may not use this file except in
6// compliance with the Apache License and the following modification to it:
7// Section 6. Trademarks. is deleted and replaced with:
8//
9// 6. Trademarks. This License does not grant permission to use the trade
10// names, trademarks, service marks, or product names of the Licensor
11// and its affiliates, except as required to comply with Section 4(c) of
12// the License and to reproduce the content of the NOTICE file.
13//
14// You may obtain a copy of the Apache License at
15//
16// http://www.apache.org/licenses/LICENSE-2.0
17//
18// Unless required by applicable law or agreed to in writing, software
19// distributed under the Apache License with the above modification is
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21// KIND, either express or implied. See the Apache License for the specific
22// language governing permissions and limitations under the Apache License.
23//
24
25#ifndef OPENSUBDIV3_OSD_TBB_EVALUATOR_H
26#define OPENSUBDIV3_OSD_TBB_EVALUATOR_H
27
28#include "../version.h"
29#include "../osd/bufferDescriptor.h"
30#include "../osd/types.h"
31
32#include <cstddef>
33
34 namespace OpenSubdiv {
35 namespace OPENSUBDIV_VERSION {
36
37 namespace Osd {
38
39 class TbbEvaluator {
40 public:
46
71 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
72 static bool EvalStencils(
73 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
74 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
75 STENCIL_TABLE const *stencilTable,
76 TbbEvaluator const *instance = NULL,
77 void *deviceContext = NULL) {
78
79 (void)instance; // unused
80 (void)deviceContext; // unused
81
82 if (stencilTable->GetNumStencils() == 0)
83 return false;
84
85 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
86 dstBuffer->BindCpuBuffer(), dstDesc,
87 &stencilTable->GetSizes()[0],
88 &stencilTable->GetOffsets()[0],
89 &stencilTable->GetControlIndices()[0],
90 &stencilTable->GetWeights()[0],
91 /*start = */ 0,
92 /*end = */ stencilTable->GetNumStencils());
93 }
94
121 static bool EvalStencils(
122 const float *src, BufferDescriptor const &srcDesc,
123 float *dst, BufferDescriptor const &dstDesc,
124 const int * sizes,
125 const int * offsets,
126 const int * indices,
127 const float * weights,
128 int start, int end);
129
167 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
168 static bool EvalStencils(
169 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
170 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
171 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
172 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
173 STENCIL_TABLE const *stencilTable,
174 const TbbEvaluator *instance = NULL,
175 void * deviceContext = NULL) {
176
177 (void)instance; // unused
178 (void)deviceContext; // unused
179
180 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
181 dstBuffer->BindCpuBuffer(), dstDesc,
182 duBuffer->BindCpuBuffer(), duDesc,
183 dvBuffer->BindCpuBuffer(), dvDesc,
184 &stencilTable->GetSizes()[0],
185 &stencilTable->GetOffsets()[0],
186 &stencilTable->GetControlIndices()[0],
187 &stencilTable->GetWeights()[0],
188 &stencilTable->GetDuWeights()[0],
189 &stencilTable->GetDvWeights()[0],
190 /*start = */ 0,
191 /*end = */ stencilTable->GetNumStencils());
192 }
193
234 static bool EvalStencils(
235 const float *src, BufferDescriptor const &srcDesc,
236 float *dst, BufferDescriptor const &dstDesc,
237 float *du, BufferDescriptor const &duDesc,
238 float *dv, BufferDescriptor const &dvDesc,
239 const int * sizes,
240 const int * offsets,
241 const int * indices,
242 const float * weights,
243 const float * duWeights,
244 const float * dvWeights,
245 int start, int end);
246
302 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
303 static bool EvalStencils(
304 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
305 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
306 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
307 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
308 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
309 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
310 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
311 STENCIL_TABLE const *stencilTable,
312 const TbbEvaluator *instance = NULL,
313 void * deviceContext = NULL) {
314
315 (void)instance; // unused
316 (void)deviceContext; // unused
317
318 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
319 dstBuffer->BindCpuBuffer(), dstDesc,
320 duBuffer->BindCpuBuffer(), duDesc,
321 dvBuffer->BindCpuBuffer(), dvDesc,
322 duuBuffer->BindCpuBuffer(), duuDesc,
323 duvBuffer->BindCpuBuffer(), duvDesc,
324 dvvBuffer->BindCpuBuffer(), dvvDesc,
325 &stencilTable->GetSizes()[0],
326 &stencilTable->GetOffsets()[0],
327 &stencilTable->GetControlIndices()[0],
328 &stencilTable->GetWeights()[0],
329 &stencilTable->GetDuWeights()[0],
330 &stencilTable->GetDvWeights()[0],
331 &stencilTable->GetDuuWeights()[0],
332 &stencilTable->GetDuvWeights()[0],
333 &stencilTable->GetDvvWeights()[0],
334 /*start = */ 0,
335 /*end = */ stencilTable->GetNumStencils());
336 }
337
399 static bool EvalStencils(
400 const float *src, BufferDescriptor const &srcDesc,
401 float *dst, BufferDescriptor const &dstDesc,
402 float *du, BufferDescriptor const &duDesc,
403 float *dv, BufferDescriptor const &dvDesc,
404 float *duu, BufferDescriptor const &duuDesc,
405 float *duv, BufferDescriptor const &duvDesc,
406 float *dvv, BufferDescriptor const &dvvDesc,
407 const int * sizes,
408 const int * offsets,
409 const int * indices,
410 const float * weights,
411 const float * duWeights,
412 const float * dvWeights,
413 const float * duuWeights,
414 const float * duvWeights,
415 const float * dvvWeights,
416 int start, int end);
417
423
452 template <typename SRC_BUFFER, typename DST_BUFFER,
453 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
454 static bool EvalPatches(
455 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
456 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
457 int numPatchCoords,
458 PATCHCOORD_BUFFER *patchCoords,
459 PATCH_TABLE *patchTable,
460 TbbEvaluator const *instance = NULL,
461 void * deviceContext = NULL) {
462
463 (void)instance; // unused
464 (void)deviceContext; // unused
465
466 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
467 dstBuffer->BindCpuBuffer(), dstDesc,
468 numPatchCoords,
469 (const PatchCoord*)patchCoords->BindCpuBuffer(),
470 patchTable->GetPatchArrayBuffer(),
471 patchTable->GetPatchIndexBuffer(),
472 patchTable->GetPatchParamBuffer());
473 }
474
515 template <typename SRC_BUFFER, typename DST_BUFFER,
516 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
517 static bool EvalPatches(
518 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
519 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
520 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
521 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
522 int numPatchCoords,
523 PATCHCOORD_BUFFER *patchCoords,
524 PATCH_TABLE *patchTable,
525 TbbEvaluator const *instance = NULL,
526 void * deviceContext = NULL) {
527
528 (void)instance; // unused
529 (void)deviceContext; // unused
530
531 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.
532 // ideally all buffer classes should have templated by datatype
533 // so that downcast isn't needed there.
534 // (e.g. Osd::CpuBuffer<PatchCoord> )
535 //
536 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
537 dstBuffer->BindCpuBuffer(), dstDesc,
538 duBuffer->BindCpuBuffer(), duDesc,
539 dvBuffer->BindCpuBuffer(), dvDesc,
540 numPatchCoords,
541 (const PatchCoord*)patchCoords->BindCpuBuffer(),
542 patchTable->GetPatchArrayBuffer(),
543 patchTable->GetPatchIndexBuffer(),
544 patchTable->GetPatchParamBuffer());
545 }
546
605 template <typename SRC_BUFFER, typename DST_BUFFER,
606 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
607 static bool EvalPatches(
608 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
609 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
610 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
611 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
612 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
613 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
614 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
615 int numPatchCoords,
616 PATCHCOORD_BUFFER *patchCoords,
617 PATCH_TABLE *patchTable,
618 TbbEvaluator const *instance = NULL,
619 void * deviceContext = NULL) {
620
621 (void)instance; // unused
622 (void)deviceContext; // unused
623
624 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.
625 // ideally all buffer classes should have templated by datatype
626 // so that downcast isn't needed there.
627 // (e.g. Osd::CpuBuffer<PatchCoord> )
628 //
629 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
630 dstBuffer->BindCpuBuffer(), dstDesc,
631 duBuffer->BindCpuBuffer(), duDesc,
632 dvBuffer->BindCpuBuffer(), dvDesc,
633 duuBuffer->BindCpuBuffer(), duuDesc,
634 duvBuffer->BindCpuBuffer(), duvDesc,
635 dvvBuffer->BindCpuBuffer(), dvvDesc,
636 numPatchCoords,
637 (const PatchCoord*)patchCoords->BindCpuBuffer(),
638 patchTable->GetPatchArrayBuffer(),
639 patchTable->GetPatchIndexBuffer(),
640 patchTable->GetPatchParamBuffer());
641 }
642
670 static bool EvalPatches(
671 const float *src, BufferDescriptor const &srcDesc,
672 float *dst, BufferDescriptor const &dstDesc,
673 int numPatchCoords,
674 const PatchCoord *patchCoords,
675 const PatchArray *patchArrays,
676 const int *patchIndexBuffer,
677 const PatchParam *patchParamBuffer);
678
716 static bool EvalPatches(
717 const float *src, BufferDescriptor const &srcDesc,
718 float *dst, BufferDescriptor const &dstDesc,
719 float *du, BufferDescriptor const &duDesc,
720 float *dv, BufferDescriptor const &dvDesc,
721 int numPatchCoords,
722 PatchCoord const *patchCoords,
723 PatchArray const *patchArrays,
724 const int *patchIndexBuffer,
725 PatchParam const *patchParamBuffer);
726
779 static bool EvalPatches(
780 const float *src, BufferDescriptor const &srcDesc,
781 float *dst, BufferDescriptor const &dstDesc,
782 float *du, BufferDescriptor const &duDesc,
783 float *dv, BufferDescriptor const &dvDesc,
784 float *duu, BufferDescriptor const &duuDesc,
785 float *duv, BufferDescriptor const &duvDesc,
786 float *dvv, BufferDescriptor const &dvvDesc,
787 int numPatchCoords,
788 PatchCoord const *patchCoords,
789 PatchArray const *patchArrays,
790 const int *patchIndexBuffer,
791 PatchParam const *patchParamBuffer);
792
821 template <typename SRC_BUFFER, typename DST_BUFFER,
822 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
823 static bool EvalPatchesVarying(
824 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
825 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
826 int numPatchCoords,
827 PATCHCOORD_BUFFER *patchCoords,
828 PATCH_TABLE *patchTable,
829 TbbEvaluator const *instance = NULL,
830 void * deviceContext = NULL) {
831
832 (void)instance; // unused
833 (void)deviceContext; // unused
834
835 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
836 dstBuffer->BindCpuBuffer(), dstDesc,
837 numPatchCoords,
838 (const PatchCoord*)patchCoords->BindCpuBuffer(),
839 patchTable->GetVaryingPatchArrayBuffer(),
840 patchTable->GetVaryingPatchIndexBuffer(),
841 patchTable->GetPatchParamBuffer());
842 }
843
884 template <typename SRC_BUFFER, typename DST_BUFFER,
885 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
886 static bool EvalPatchesVarying(
887 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
888 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
889 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
890 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
891 int numPatchCoords,
892 PATCHCOORD_BUFFER *patchCoords,
893 PATCH_TABLE *patchTable,
894 TbbEvaluator const *instance = NULL,
895 void * deviceContext = NULL) {
896
897 (void)instance; // unused
898 (void)deviceContext; // unused
899
900 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
901 dstBuffer->BindCpuBuffer(), dstDesc,
902 duBuffer->BindCpuBuffer(), duDesc,
903 dvBuffer->BindCpuBuffer(), dvDesc,
904 numPatchCoords,
905 (const PatchCoord*)patchCoords->BindCpuBuffer(),
906 patchTable->GetVaryingPatchArrayBuffer(),
907 patchTable->GetVaryingPatchIndexBuffer(),
908 patchTable->GetPatchParamBuffer());
909 }
910
969 template <typename SRC_BUFFER, typename DST_BUFFER,
970 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
971 static bool EvalPatchesVarying(
972 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
973 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
974 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
975 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
976 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
977 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
978 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
979 int numPatchCoords,
980 PATCHCOORD_BUFFER *patchCoords,
981 PATCH_TABLE *patchTable,
982 TbbEvaluator const *instance = NULL,
983 void * deviceContext = NULL) {
984
985 (void)instance; // unused
986 (void)deviceContext; // unused
987
988 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
989 dstBuffer->BindCpuBuffer(), dstDesc,
990 duBuffer->BindCpuBuffer(), duDesc,
991 dvBuffer->BindCpuBuffer(), dvDesc,
992 duuBuffer->BindCpuBuffer(), duuDesc,
993 duvBuffer->BindCpuBuffer(), duvDesc,
994 dvvBuffer->BindCpuBuffer(), dvvDesc,
995 numPatchCoords,
996 (const PatchCoord*)patchCoords->BindCpuBuffer(),
997 patchTable->GetVaryingPatchArrayBuffer(),
998 patchTable->GetVaryingPatchIndexBuffer(),
999 patchTable->GetPatchParamBuffer());
1000 }
1001
1032 template <typename SRC_BUFFER, typename DST_BUFFER,
1033 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
1034 static bool EvalPatchesFaceVarying(
1035 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
1036 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
1037 int numPatchCoords,
1038 PATCHCOORD_BUFFER *patchCoords,
1039 PATCH_TABLE *patchTable,
1040 int fvarChannel,
1041 TbbEvaluator const *instance = NULL,
1042 void * deviceContext = NULL) {
1043
1044 (void)instance; // unused
1045 (void)deviceContext; // unused
1046
1047 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
1048 dstBuffer->BindCpuBuffer(), dstDesc,
1049 numPatchCoords,
1050 (const PatchCoord*)patchCoords->BindCpuBuffer(),
1051 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
1052 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
1053 patchTable->GetFVarPatchParamBuffer(fvarChannel));
1054 }
1055
1098 template <typename SRC_BUFFER, typename DST_BUFFER,
1099 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
1100 static bool EvalPatchesFaceVarying(
1101 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
1102 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
1103 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
1104 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
1105 int numPatchCoords,
1106 PATCHCOORD_BUFFER *patchCoords,
1107 PATCH_TABLE *patchTable,
1108 int fvarChannel,
1109 TbbEvaluator const *instance = NULL,
1110 void * deviceContext = NULL) {
1111
1112 (void)instance; // unused
1113 (void)deviceContext; // unused
1114
1115 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
1116 dstBuffer->BindCpuBuffer(), dstDesc,
1117 duBuffer->BindCpuBuffer(), duDesc,
1118 dvBuffer->BindCpuBuffer(), dvDesc,
1119 numPatchCoords,
1120 (const PatchCoord*)patchCoords->BindCpuBuffer(),
1121 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
1122 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
1123 patchTable->GetFVarPatchParamBuffer(fvarChannel));
1124 }
1125
1186 template <typename SRC_BUFFER, typename DST_BUFFER,
1187 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
1188 static bool EvalPatchesFaceVarying(
1189 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
1190 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
1191 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
1192 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
1193 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
1194 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
1195 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
1196 int numPatchCoords,
1197 PATCHCOORD_BUFFER *patchCoords,
1198 PATCH_TABLE *patchTable,
1199 int fvarChannel,
1200 TbbEvaluator const *instance = NULL,
1201 void * deviceContext = NULL) {
1202
1203 (void)instance; // unused
1204 (void)deviceContext; // unused
1205
1206 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
1207 dstBuffer->BindCpuBuffer(), dstDesc,
1208 duBuffer->BindCpuBuffer(), duDesc,
1209 dvBuffer->BindCpuBuffer(), dvDesc,
1210 duuBuffer->BindCpuBuffer(), duuDesc,
1211 duvBuffer->BindCpuBuffer(), duvDesc,
1212 dvvBuffer->BindCpuBuffer(), dvvDesc,
1213 numPatchCoords,
1214 (const PatchCoord*)patchCoords->BindCpuBuffer(),
1215 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
1216 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
1217 patchTable->GetFVarPatchParamBuffer(fvarChannel));
1218 }
1219
1225
1227 static void Synchronize(void *deviceContext = NULL);
1228
1233 static void SetNumThreads(int numThreads);
1234};
1235
1236
1237} // end namespace Osd
1238
1239} // end namespace OPENSUBDIV_VERSION
1240 using namespace OPENSUBDIV_VERSION;
1241
1242} // end namespace OpenSubdiv
1243
1244
1245#endif // OPENSUBDIV3_OSD_TBB_EVALUATOR_H
OpenSubdiv
Definition limits.h:32
OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....
Definition bufferDescriptor.h:61
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator
Definition tbbEvaluator.h:39
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils
static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const *stencilTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)
Generic static eval stencils function. This function has a same signature as other device kernels hav...
Definition tbbEvaluator.h:72
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches
static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
Definition tbbEvaluator.h:454
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils
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, const TbbEvaluator *instance=NULL, void *deviceContext=NULL)
Generic static eval stencils function with derivatives. This function has a same signature as other d...
Definition tbbEvaluator.h:303
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils
static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc, float *dst, BufferDescriptor const &dstDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, int start, int end)
Static eval stencils function which takes raw CPU pointers for input and output.
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesVarying
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, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
Definition tbbEvaluator.h:886
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches
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, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)
Generic limit eval function with derivatives. This function has a same signature as other device kern...
Definition tbbEvaluator.h:607
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils
static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &dvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, int start, int end)
Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils
static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu, BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc, float *dvv, BufferDescriptor const &dvvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, const float *duuWeights, const float *duvWeights, const float *dvvWeights, int start, int end)
Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches
static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu, BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc, float *dvv, BufferDescriptor const &dvvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer, PatchParam const *patchParamBuffer)
Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::Synchronize
static void Synchronize(void *deviceContext=NULL)
synchronize all asynchronous computation invoked on this device.
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesVarying
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, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
Definition tbbEvaluator.h:971
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesFaceVarying
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, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
Definition tbbEvaluator.h:1100
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches
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, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)
Generic limit eval function with derivatives. This function has a same signature as other device kern...
Definition tbbEvaluator.h:517
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesFaceVarying
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, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
Definition tbbEvaluator.h:1034
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches
static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc, float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const &duDesc, float *dv, BufferDescriptor const &dvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer, PatchParam const *patchParamBuffer)
Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::SetNumThreads
static void SetNumThreads(int numThreads)
Deprecated. Client code should initialize TBB.
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches
static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc, float *dst, BufferDescriptor const &dstDesc, int numPatchCoords, const PatchCoord *patchCoords, const PatchArray *patchArrays, const int *patchIndexBuffer, const PatchParam *patchParamBuffer)
Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils
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, const TbbEvaluator *instance=NULL, void *deviceContext=NULL)
Generic static eval stencils function with derivatives. This function has a same signature as other d...
Definition tbbEvaluator.h:168
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesFaceVarying
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, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
Definition tbbEvaluator.h:1188
OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesVarying
static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
Definition tbbEvaluator.h:823
OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord
Coordinates set on a patch table.
Definition types.h:42
OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray
Definition types.h:66
OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchParam
Definition types.h:127