OpenSubdiv
Loading...
Searching...
No Matches
ompEvaluator.h
Go to the documentation of this file.
1//
2// Copyright 2015 Pixar
3//
4// Licensed under the terms set forth in the LICENSE.txt file available at
5// https://opensubdiv.org/license.
6//
7
8#ifndef OPENSUBDIV3_OSD_OMP_EVALUATOR_H
9#define OPENSUBDIV3_OSD_OMP_EVALUATOR_H
10
11#include "../version.h"
13#include "../osd/types.h"
14
15#include <cstddef>
16
17namespace OpenSubdiv {
18namespace OPENSUBDIV_VERSION {
19
20namespace Osd {
21
23public:
29
54 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
55 static bool EvalStencils(
56 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
57 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
58 STENCIL_TABLE const *stencilTable,
59 const OmpEvaluator *instance = NULL,
60 void * deviceContext = NULL) {
61
62 (void)instance; // unused
63 (void)deviceContext; // unused
64
65 if (stencilTable->GetNumStencils() == 0)
66 return false;
67
68 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
69 dstBuffer->BindCpuBuffer(), dstDesc,
70 &stencilTable->GetSizes()[0],
71 &stencilTable->GetOffsets()[0],
72 &stencilTable->GetControlIndices()[0],
73 &stencilTable->GetWeights()[0],
74 /*start = */ 0,
75 /*end = */ stencilTable->GetNumStencils());
76 }
77
104 static bool EvalStencils(
105 const float *src, BufferDescriptor const &srcDesc,
106 float *dst, BufferDescriptor const &dstDesc,
107 const int * sizes,
108 const int * offsets,
109 const int * indices,
110 const float * weights,
111 int start, int end);
112
150 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
151 static bool EvalStencils(
152 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
153 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
154 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
155 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
156 STENCIL_TABLE const *stencilTable,
157 const OmpEvaluator *instance = NULL,
158 void * deviceContext = NULL) {
159
160 (void)instance; // unused
161 (void)deviceContext; // unused
162
163 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
164 dstBuffer->BindCpuBuffer(), dstDesc,
165 duBuffer->BindCpuBuffer(), duDesc,
166 dvBuffer->BindCpuBuffer(), dvDesc,
167 &stencilTable->GetSizes()[0],
168 &stencilTable->GetOffsets()[0],
169 &stencilTable->GetControlIndices()[0],
170 &stencilTable->GetWeights()[0],
171 &stencilTable->GetDuWeights()[0],
172 &stencilTable->GetDvWeights()[0],
173 /*start = */ 0,
174 /*end = */ stencilTable->GetNumStencils());
175 }
176
217 static bool EvalStencils(
218 const float *src, BufferDescriptor const &srcDesc,
219 float *dst, BufferDescriptor const &dstDesc,
220 float *du, BufferDescriptor const &duDesc,
221 float *dv, BufferDescriptor const &dvDesc,
222 const int * sizes,
223 const int * offsets,
224 const int * indices,
225 const float * weights,
226 const float * duWeights,
227 const float * dvWeights,
228 int start, int end);
229
285 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>
286 static bool EvalStencils(
287 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
288 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
289 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
290 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
291 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
292 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
293 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
294 STENCIL_TABLE const *stencilTable,
295 const OmpEvaluator *instance = NULL,
296 void * deviceContext = NULL) {
297
298 (void)instance; // unused
299 (void)deviceContext; // unused
300
301 return EvalStencils(srcBuffer->BindCpuBuffer(), srcDesc,
302 dstBuffer->BindCpuBuffer(), dstDesc,
303 duBuffer->BindCpuBuffer(), duDesc,
304 dvBuffer->BindCpuBuffer(), dvDesc,
305 duuBuffer->BindCpuBuffer(), duuDesc,
306 duvBuffer->BindCpuBuffer(), duvDesc,
307 dvvBuffer->BindCpuBuffer(), dvvDesc,
308 &stencilTable->GetSizes()[0],
309 &stencilTable->GetOffsets()[0],
310 &stencilTable->GetControlIndices()[0],
311 &stencilTable->GetWeights()[0],
312 &stencilTable->GetDuWeights()[0],
313 &stencilTable->GetDvWeights()[0],
314 &stencilTable->GetDuuWeights()[0],
315 &stencilTable->GetDuvWeights()[0],
316 &stencilTable->GetDvvWeights()[0],
317 /*start = */ 0,
318 /*end = */ stencilTable->GetNumStencils());
319 }
320
382 static bool EvalStencils(
383 const float *src, BufferDescriptor const &srcDesc,
384 float *dst, BufferDescriptor const &dstDesc,
385 float *du, BufferDescriptor const &duDesc,
386 float *dv, BufferDescriptor const &dvDesc,
387 float *duu, BufferDescriptor const &duuDesc,
388 float *duv, BufferDescriptor const &duvDesc,
389 float *dvv, BufferDescriptor const &dvvDesc,
390 const int * sizes,
391 const int * offsets,
392 const int * indices,
393 const float * weights,
394 const float * duWeights,
395 const float * dvWeights,
396 const float * duuWeights,
397 const float * duvWeights,
398 const float * dvvWeights,
399 int start, int end);
400
406
435 template <typename SRC_BUFFER, typename DST_BUFFER,
436 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
437 static bool EvalPatches(
438 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
439 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
440 int numPatchCoords,
441 PATCHCOORD_BUFFER *patchCoords,
442 PATCH_TABLE *patchTable,
443 OmpEvaluator const *instance = NULL,
444 void * deviceContext = NULL) {
445
446 (void)instance; // unused
447 (void)deviceContext; // unused
448
449 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
450 dstBuffer->BindCpuBuffer(), dstDesc,
451 numPatchCoords,
452 (const PatchCoord*)patchCoords->BindCpuBuffer(),
453 patchTable->GetPatchArrayBuffer(),
454 patchTable->GetPatchIndexBuffer(),
455 patchTable->GetPatchParamBuffer());
456 }
457
498 template <typename SRC_BUFFER, typename DST_BUFFER,
499 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
500 static bool EvalPatches(
501 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
502 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
503 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
504 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
505 int numPatchCoords,
506 PATCHCOORD_BUFFER *patchCoords,
507 PATCH_TABLE *patchTable,
508 OmpEvaluator const *instance = NULL,
509 void * deviceContext = NULL) {
510
511 (void)instance; // unused
512 (void)deviceContext; // unused
513
514 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.
515 // ideally all buffer classes should have templated by datatype
516 // so that downcast isn't needed there.
517 // (e.g. Osd::CpuBuffer<PatchCoord> )
518 //
519 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
520 dstBuffer->BindCpuBuffer(), dstDesc,
521 duBuffer->BindCpuBuffer(), duDesc,
522 dvBuffer->BindCpuBuffer(), dvDesc,
523 numPatchCoords,
524 (const PatchCoord*)patchCoords->BindCpuBuffer(),
525 patchTable->GetPatchArrayBuffer(),
526 patchTable->GetPatchIndexBuffer(),
527 patchTable->GetPatchParamBuffer());
528 }
529
588 template <typename SRC_BUFFER, typename DST_BUFFER,
589 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
590 static bool EvalPatches(
591 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
592 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
593 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
594 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
595 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
596 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
597 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
598 int numPatchCoords,
599 PATCHCOORD_BUFFER *patchCoords,
600 PATCH_TABLE *patchTable,
601 OmpEvaluator const *instance = NULL,
602 void * deviceContext = NULL) {
603
604 (void)instance; // unused
605 (void)deviceContext; // unused
606
607 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.
608 // ideally all buffer classes should have templated by datatype
609 // so that downcast isn't needed there.
610 // (e.g. Osd::CpuBuffer<PatchCoord> )
611 //
612 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
613 dstBuffer->BindCpuBuffer(), dstDesc,
614 duBuffer->BindCpuBuffer(), duDesc,
615 dvBuffer->BindCpuBuffer(), dvDesc,
616 duuBuffer->BindCpuBuffer(), duuDesc,
617 duvBuffer->BindCpuBuffer(), duvDesc,
618 dvvBuffer->BindCpuBuffer(), dvvDesc,
619 numPatchCoords,
620 (const PatchCoord*)patchCoords->BindCpuBuffer(),
621 patchTable->GetPatchArrayBuffer(),
622 patchTable->GetPatchIndexBuffer(),
623 patchTable->GetPatchParamBuffer());
624 }
625
653 static bool EvalPatches(
654 const float *src, BufferDescriptor const &srcDesc,
655 float *dst, BufferDescriptor const &dstDesc,
656 int numPatchCoords,
657 const PatchCoord *patchCoords,
658 const PatchArray *patchArrays,
659 const int *patchIndexBuffer,
660 const PatchParam *patchParamBuffer);
661
699 static bool EvalPatches(
700 const float *src, BufferDescriptor const &srcDesc,
701 float *dst, BufferDescriptor const &dstDesc,
702 float *du, BufferDescriptor const &duDesc,
703 float *dv, BufferDescriptor const &dvDesc,
704 int numPatchCoords,
705 PatchCoord const *patchCoords,
706 PatchArray const *patchArrays,
707 const int *patchIndexBuffer,
708 PatchParam const *patchParamBuffer);
709
762 static bool EvalPatches(
763 const float *src, BufferDescriptor const &srcDesc,
764 float *dst, BufferDescriptor const &dstDesc,
765 float *du, BufferDescriptor const &duDesc,
766 float *dv, BufferDescriptor const &dvDesc,
767 float *duu, BufferDescriptor const &duuDesc,
768 float *duv, BufferDescriptor const &duvDesc,
769 float *dvv, BufferDescriptor const &dvvDesc,
770 int numPatchCoords,
771 PatchCoord const *patchCoords,
772 PatchArray const *patchArrays,
773 const int *patchIndexBuffer,
774 PatchParam const *patchParamBuffer);
775
804 template <typename SRC_BUFFER, typename DST_BUFFER,
805 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
807 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
808 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
809 int numPatchCoords,
810 PATCHCOORD_BUFFER *patchCoords,
811 PATCH_TABLE *patchTable,
812 OmpEvaluator const *instance = NULL,
813 void * deviceContext = NULL) {
814
815 (void)instance; // unused
816 (void)deviceContext; // unused
817
818 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
819 dstBuffer->BindCpuBuffer(), dstDesc,
820 numPatchCoords,
821 (const PatchCoord*)patchCoords->BindCpuBuffer(),
822 patchTable->GetVaryingPatchArrayBuffer(),
823 patchTable->GetVaryingPatchIndexBuffer(),
824 patchTable->GetPatchParamBuffer());
825 }
826
867 template <typename SRC_BUFFER, typename DST_BUFFER,
868 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
870 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
871 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
872 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
873 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
874 int numPatchCoords,
875 PATCHCOORD_BUFFER *patchCoords,
876 PATCH_TABLE *patchTable,
877 OmpEvaluator const *instance = NULL,
878 void * deviceContext = NULL) {
879
880 (void)instance; // unused
881 (void)deviceContext; // unused
882
883 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
884 dstBuffer->BindCpuBuffer(), dstDesc,
885 duBuffer->BindCpuBuffer(), duDesc,
886 dvBuffer->BindCpuBuffer(), dvDesc,
887 numPatchCoords,
888 (const PatchCoord*)patchCoords->BindCpuBuffer(),
889 patchTable->GetVaryingPatchArrayBuffer(),
890 patchTable->GetVaryingPatchIndexBuffer(),
891 patchTable->GetPatchParamBuffer());
892 }
893
952 template <typename SRC_BUFFER, typename DST_BUFFER,
953 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
955 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
956 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
957 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
958 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
959 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
960 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
961 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
962 int numPatchCoords,
963 PATCHCOORD_BUFFER *patchCoords,
964 PATCH_TABLE *patchTable,
965 OmpEvaluator const *instance = NULL,
966 void * deviceContext = NULL) {
967
968 (void)instance; // unused
969 (void)deviceContext; // unused
970
971 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
972 dstBuffer->BindCpuBuffer(), dstDesc,
973 duBuffer->BindCpuBuffer(), duDesc,
974 dvBuffer->BindCpuBuffer(), dvDesc,
975 duuBuffer->BindCpuBuffer(), duuDesc,
976 duvBuffer->BindCpuBuffer(), duvDesc,
977 dvvBuffer->BindCpuBuffer(), dvvDesc,
978 numPatchCoords,
979 (const PatchCoord*)patchCoords->BindCpuBuffer(),
980 patchTable->GetVaryingPatchArrayBuffer(),
981 patchTable->GetVaryingPatchIndexBuffer(),
982 patchTable->GetPatchParamBuffer());
983 }
984
1015 template <typename SRC_BUFFER, typename DST_BUFFER,
1016 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
1018 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
1019 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
1020 int numPatchCoords,
1021 PATCHCOORD_BUFFER *patchCoords,
1022 PATCH_TABLE *patchTable,
1023 int fvarChannel,
1024 OmpEvaluator const *instance = NULL,
1025 void * deviceContext = NULL) {
1026
1027 (void)instance; // unused
1028 (void)deviceContext; // unused
1029
1030 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
1031 dstBuffer->BindCpuBuffer(), dstDesc,
1032 numPatchCoords,
1033 (const PatchCoord*)patchCoords->BindCpuBuffer(),
1034 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
1035 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
1036 patchTable->GetFVarPatchParamBuffer(fvarChannel));
1037 }
1038
1081 template <typename SRC_BUFFER, typename DST_BUFFER,
1082 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
1084 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
1085 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
1086 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
1087 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
1088 int numPatchCoords,
1089 PATCHCOORD_BUFFER *patchCoords,
1090 PATCH_TABLE *patchTable,
1091 int fvarChannel,
1092 OmpEvaluator const *instance = NULL,
1093 void * deviceContext = NULL) {
1094
1095 (void)instance; // unused
1096 (void)deviceContext; // unused
1097
1098 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
1099 dstBuffer->BindCpuBuffer(), dstDesc,
1100 duBuffer->BindCpuBuffer(), duDesc,
1101 dvBuffer->BindCpuBuffer(), dvDesc,
1102 numPatchCoords,
1103 (const PatchCoord*)patchCoords->BindCpuBuffer(),
1104 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
1105 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
1106 patchTable->GetFVarPatchParamBuffer(fvarChannel));
1107 }
1108
1169 template <typename SRC_BUFFER, typename DST_BUFFER,
1170 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>
1172 SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,
1173 DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,
1174 DST_BUFFER *duBuffer, BufferDescriptor const &duDesc,
1175 DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc,
1176 DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc,
1177 DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc,
1178 DST_BUFFER *dvvBuffer, BufferDescriptor const &dvvDesc,
1179 int numPatchCoords,
1180 PATCHCOORD_BUFFER *patchCoords,
1181 PATCH_TABLE *patchTable,
1182 int fvarChannel,
1183 OmpEvaluator const *instance = NULL,
1184 void * deviceContext = NULL) {
1185
1186 (void)instance; // unused
1187 (void)deviceContext; // unused
1188
1189 return EvalPatches(srcBuffer->BindCpuBuffer(), srcDesc,
1190 dstBuffer->BindCpuBuffer(), dstDesc,
1191 duBuffer->BindCpuBuffer(), duDesc,
1192 dvBuffer->BindCpuBuffer(), dvDesc,
1193 duuBuffer->BindCpuBuffer(), duuDesc,
1194 duvBuffer->BindCpuBuffer(), duvDesc,
1195 dvvBuffer->BindCpuBuffer(), dvvDesc,
1196 numPatchCoords,
1197 (const PatchCoord*)patchCoords->BindCpuBuffer(),
1198 patchTable->GetFVarPatchArrayBuffer(fvarChannel),
1199 patchTable->GetFVarPatchIndexBuffer(fvarChannel),
1200 patchTable->GetFVarPatchParamBuffer(fvarChannel));
1201 }
1202
1208
1209 static void Synchronize(void *deviceContext = NULL);
1210
1212 static void SetNumThreads(int numThreads);
1213};
1214
1215
1216} // end namespace Osd
1217
1218} // end namespace OPENSUBDIV_VERSION
1219using namespace OPENSUBDIV_VERSION;
1220
1221} // end namespace OpenSubdiv
1222
1223
1224#endif // OPENSUBDIV3_OSD_OMP_EVALUATOR_H
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....
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, OmpEvaluator 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 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, 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, OmpEvaluator 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 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 OmpEvaluator *instance=NULL, void *deviceContext=NULL)
Generic static eval stencils function with derivatives. This function has a same signature as other d...
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 EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator 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 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, OmpEvaluator 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 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 EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const *stencilTable, const OmpEvaluator *instance=NULL, void *deviceContext=NULL)
Generic static eval stencils function. This function has a same signature as other device kernels hav...
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 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, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)
Generic limit eval function with derivatives. This function has a same signature as other device kern...
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, OmpEvaluator 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, 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, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)
Generic limit eval function with derivatives. This function has a same signature as other device kern...
static void Synchronize(void *deviceContext=NULL)
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 OmpEvaluator *instance=NULL, void *deviceContext=NULL)
Generic static eval stencils function with derivatives. This function has a same signature as other d...
static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator 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 OpenMP.
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 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, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
Coordinates set on a patch table.
Definition types.h:25