diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-01-18 10:26:06 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-01-18 10:26:06 +0400 |
commit | ee0eb394c9c4cbe9466ac76a35431288e4f80aa9 (patch) | |
tree | f9f962f573db9d28323acdfd237aea960f5f1407 /source/blender/modifiers/intern/MOD_build.c | |
parent | 1a131171cb208d1f45d62c287fbe4fc5c3bbe42b (diff) |
use openmp sections for felling origindex arrays
Diffstat (limited to 'source/blender/modifiers/intern/MOD_build.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_build.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/source/blender/modifiers/intern/MOD_build.c b/source/blender/modifiers/intern/MOD_build.c index 2105a6efd21..c5a756733f5 100644 --- a/source/blender/modifiers/intern/MOD_build.c +++ b/source/blender/modifiers/intern/MOD_build.c @@ -37,6 +37,7 @@ #include "BLI_utildefines.h" #include "BLI_rand.h" +#include "BLI_math_vector.h" #include "BLI_ghash.h" #include "DNA_scene_types.h" @@ -104,12 +105,19 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *UNUSED(ob), MVert *mvert_src = dm->getVertArray(dm); - vertMap = MEM_callocN(sizeof(*vertMap) * numVert_src, "build modifier vertMap"); - for (i = 0; i < numVert_src; i++) vertMap[i] = i; - edgeMap = MEM_callocN(sizeof(*edgeMap) * numEdge_src, "build modifier edgeMap"); - for (i = 0; i < numEdge_src; i++) edgeMap[i] = i; - faceMap = MEM_callocN(sizeof(*faceMap) * numPoly_src, "build modifier faceMap"); - for (i = 0; i < numPoly_src; i++) faceMap[i] = i; + vertMap = MEM_mallocN(sizeof(*vertMap) * numVert_src, "build modifier vertMap"); + edgeMap = MEM_mallocN(sizeof(*edgeMap) * numEdge_src, "build modifier edgeMap"); + faceMap = MEM_mallocN(sizeof(*faceMap) * numPoly_src, "build modifier faceMap"); + +#pragma omp parallel sections if (numVert_src + numEdge_src + numPoly_src >= DM_OMP_LIMIT) + { +#pragma omp section + { range_vn_i(vertMap, numVert_src, 0); } +#pragma omp section + { range_vn_i(edgeMap, numEdge_src, 0); } +#pragma omp section + { range_vn_i(faceMap, numPoly_src, 0); } + } frac = (BKE_scene_frame_get(md->scene) - bmd->start) / bmd->length; CLAMP(frac, 0.0f, 1.0f); |