OpenSubdiv
ompEvaluator.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_OMP_EVALUATOR_H
26 #define OPENSUBDIV3_OSD_OMP_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 OmpEvaluator {
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 OmpEvaluator *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 OmpEvaluator *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 OmpEvaluator *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  OmpEvaluator 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  OmpEvaluator 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  OmpEvaluator 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  OmpEvaluator 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  OmpEvaluator 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  OmpEvaluator 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  OmpEvaluator 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  OmpEvaluator 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  OmpEvaluator 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 
1226  static void Synchronize(void *deviceContext = NULL);
1227 
1229  static void SetNumThreads(int numThreads);
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_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 ...
Definition: ompEvaluator.h:971
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...
Definition: ompEvaluator.h:168
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 ...
Definition: ompEvaluator.h:823
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...
Definition: ompEvaluator.h:72
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...
Definition: ompEvaluator.h:517
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 ...
Definition: ompEvaluator.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, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)
Generic limit eval function with derivatives. This function has a same signature as other device kern...
Definition: ompEvaluator.h:607
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...
Definition: ompEvaluator.h:303
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 ...
Definition: ompEvaluator.h:454
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:42