All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
cpuEvaluator.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_CPU_EVALUATOR_H
26 #define OPENSUBDIV3_OSD_CPU_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 CpuEvaluator {
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  const CpuEvaluator *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 CpuEvaluator *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 CpuEvaluator *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  CpuEvaluator 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  CpuEvaluator 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  CpuEvaluator 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  CpuEvaluator 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  CpuEvaluator 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  CpuEvaluator 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  CpuEvaluator 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  CpuEvaluator 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  CpuEvaluator 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  // nothing.
1229  }
1230 };
1231 
1232 
1233 } // end namespace Osd
1234 
1235 } // end namespace OPENSUBDIV_VERSION
1236 using namespace OPENSUBDIV_VERSION;
1237 
1238 } // end namespace OpenSubdiv
1239 
1240 
1241 #endif // OPENSUBDIV3_OSD_CPU_EVALUATOR_H
BufferDescriptor is a struct which describes buffer elements in interleaved data buffers. Almost all Osd Evaluator APIs take BufferDescriptors along with device-specific buffer objects.
static bool 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 ...
Definition: cpuEvaluator.h:823
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 ...
Definition: cpuEvaluator.h:886
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, 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...
Definition: cpuEvaluator.h:168
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, 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 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...
Definition: cpuEvaluator.h:517
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...
Definition: cpuEvaluator.h:72
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 ...
Definition: cpuEvaluator.h:971
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...
Definition: cpuEvaluator.h:607
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 ...
Definition: cpuEvaluator.h:454
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(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...
Definition: cpuEvaluator.h:303
Coordinates set on a patch table.
Definition: types.h:42