Commit: 12ad52c887b889c6a1abfd3c28c6f16486eed681
Author: MATILLAT Quentin
Date:   Fri Jul 19 11:32:02 2019 +0200
Branches: soc-2019-embree-gpu
https://developer.blender.org/rB12ad52c887b889c6a1abfd3c28c6f16486eed681

Pre-reserve memory to reduce reallocation

===================================================================

M       intern/cycles/bvh/bvh_embree_converter.cpp

===================================================================

diff --git a/intern/cycles/bvh/bvh_embree_converter.cpp 
b/intern/cycles/bvh/bvh_embree_converter.cpp
index 6b92e2bc008..162485a621a 100644
--- a/intern/cycles/bvh/bvh_embree_converter.cpp
+++ b/intern/cycles/bvh/bvh_embree_converter.cpp
@@ -671,11 +671,25 @@ void pack_inner(const BVHStackEntry &e, const 
BVHStackEntry &c0, const BVHStackE
 }
 
 void BVHEmbreeConverter::fillPack(PackedBVH &pack, vector<Object *> objects) {
+    int num_prim = 0;
+
+    for (size_t i = 0; i < this->s->size(); i++) {
+       const auto tree = this->s->get(i);
+        if(tree != nullptr)
+            num_prim += 4 * tree->size();
+    }
+
     pack.prim_visibility.clear();
+    pack.prim_visibility.reserve(num_prim);
     pack.prim_object.clear();
+    pack.prim_object.reserve(num_prim);
     pack.prim_type.clear();
+    pack.prim_type.reserve(num_prim);
     pack.prim_index.clear();
+    pack.prim_index.reserve(num_prim);
     pack.prim_tri_index.clear();
+    pack.prim_tri_index.reserve(num_prim);
+
     pack.prim_tri_verts.clear();
 
     this->pack = &pack;

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to