OpenSubdiv
Loading...
Searching...
No Matches
cpuEvaluator.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_CPU_EVALUATOR_H
9#define OPENSUBDIV3_OSD_CPU_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 CpuEvaluator *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 CpuEvaluator *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 CpuEvaluator *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 CpuEvaluator 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 CpuEvaluator 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 CpuEvaluator 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 CpuEvaluator 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 CpuEvaluator 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 CpuEvaluator 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 CpuEvaluator 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 CpuEvaluator 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 CpuEvaluator 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
1210 static void Synchronize(void * /*deviceContext = NULL*/) {
1211 // nothing.
1212 }
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_CPU_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, CpuEvaluator 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, CpuEvaluator 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 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, CpuEvaluator 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, 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, CpuEvaluator 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, 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 bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator 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, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)
Generic limit eval function with derivatives. This function has a same signature as other device kern...
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 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 CpuEvaluator *instance=NULL, void *deviceContext=NULL)
Generic static eval stencils function with derivatives. This function has a same signature as other d...
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 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, CpuEvaluator 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, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)
Generic limit eval function. This function has a same signature as other device kernels have so that ...
static void Synchronize(void *)
synchronize all asynchronous computation invoked on this device.
static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const *stencilTable, const CpuEvaluator *instance=NULL, void *deviceContext=NULL)
Generic static eval stencils function. This function has a same signature as other device kernels hav...
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, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)
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, DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable, const CpuEvaluator *instance=NULL, void *deviceContext=NULL)
Generic static eval stencils function with derivatives. This function has a same signature as other d...
Coordinates set on a patch table.
Definition types.h:25