Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2016-04-13 15:22:53 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2016-04-13 15:25:21 +0300
commitbbcb9c68c938980b780e92f8dcc68d5fc5359e10 (patch)
tree6da7650bfab42d7b86c8756f8ef5318f9865544e /intern/cycles/bvh/bvh_split.cpp
parent9604db76505fb832252776810edc430c9159542a (diff)
Cycles: Resolve ridiculous amount of memory used by spatial split builder
This was only visible on systems with lots of threads and root of the issue was that we've been pre-allocating too much memory for all the threads. Now we only pre-allocate data for the main thread and rest of the threads does allocation on-demand. This brings down memory usage from 36Gig to 6.9Gig when building spatial split for the Bunny.blend file on our Intel beast. Originally regression was happened by the threaded spacial split builder commit.
Diffstat (limited to 'intern/cycles/bvh/bvh_split.cpp')
-rw-r--r--intern/cycles/bvh/bvh_split.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/intern/cycles/bvh/bvh_split.cpp b/intern/cycles/bvh/bvh_split.cpp
index 7b2e342637f..9185bd99d10 100644
--- a/intern/cycles/bvh/bvh_split.cpp
+++ b/intern/cycles/bvh/bvh_split.cpp
@@ -54,6 +54,7 @@ BVHObjectSplit::BVHObjectSplit(BVHBuild *builder,
/* sweep right to left and determine bounds. */
BoundBox right_bounds = BoundBox::empty;
+ storage_->right_bounds.resize(range.size());
for(int i = range.size() - 1; i > 0; i--) {
right_bounds.grow(ref_ptr[i].bounds());
storage_->right_bounds[i - 1] = right_bounds;
@@ -160,6 +161,7 @@ BVHSpatialSplit::BVHSpatialSplit(const BVHBuild& builder,
/* sweep right to left and determine bounds. */
BoundBox right_bounds = BoundBox::empty;
+ storage_->right_bounds.resize(BVHParams::NUM_SPATIAL_BINS);
for(int i = BVHParams::NUM_SPATIAL_BINS - 1; i > 0; i--) {
right_bounds.grow(storage_->bins[dim][i].bounds);
storage_->right_bounds[i - 1] = right_bounds;