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
34namespace OpenSubdiv {
35namespace OPENSUBDIV_VERSION {
36
37namespace Osd {
38
40public:
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>
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>
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>
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>
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>
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>
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
1240using namespace OPENSUBDIV_VERSION;
1241
1242} // end namespace OpenSubdiv
1243
1244
1245#endif // OPENSUBDIV3_OSD_TBB_EVALUATOR_H
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....
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
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
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
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.
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
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
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.
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.
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...
static void Synchronize(void *deviceContext=NULL)
synchronize all asynchronous computation invoked on this device.
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
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 ...
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
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 ...
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...
static void SetNumThreads(int numThreads)
Deprecated. Client code should initialize TBB.
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...
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
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 ...
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
Coordinates set on a patch table.
Definition: types.h:42