[Bf-blender-cvs] [0135d47a06f] functions: compute remaining durations in every thread again

Jacques Lucke noreply at git.blender.org
Wed Jul 10 17:18:01 CEST 2019


Commit: 0135d47a06f9c3bb3fa4ec7315cbfb4099e2c64a
Author: Jacques Lucke
Date:   Wed Jul 10 15:43:10 2019 +0200
Branches: functions
https://developer.blender.org/rB0135d47a06f9c3bb3fa4ec7315cbfb4099e2c64a

compute remaining durations in every thread again

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

M	source/blender/simulations/bparticles/simulate.cpp

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

diff --git a/source/blender/simulations/bparticles/simulate.cpp b/source/blender/simulations/bparticles/simulate.cpp
index 6bc247985ff..fbe3f5c4817 100644
--- a/source/blender/simulations/bparticles/simulate.cpp
+++ b/source/blender/simulations/bparticles/simulate.cpp
@@ -486,24 +486,23 @@ BLI_NOINLINE static void simulate_blocks_for_time_span(ParticleAllocators &block
     return;
   }
 
-  uint block_size = blocks[0]->container().block_size();
-  SmallVector<float> all_durations(block_size);
-  all_durations.fill(time_span.duration());
-
   BLI::Task::parallel_array_elements(
       blocks,
       /* Process individual element. */
-      [&step_description, &all_durations, time_span](ParticlesBlock *block,
-                                                     ThreadLocalData *local_data) {
+      [&step_description, time_span](ParticlesBlock *block, ThreadLocalData *local_data) {
         ParticlesState &state = local_data->particle_allocator.particles_state();
         StringRef particle_type_name = state.particle_container_id(block->container());
         ParticleType &particle_type = step_description.particle_type(particle_type_name);
 
+        ArrayAllocator &array_allocator = local_data->array_allocator;
+        ArrayAllocator::Array<float> remaining_durations(array_allocator, block->active_amount());
+        ArrayRef<float>(remaining_durations).fill(time_span.duration());
+
         simulate_block(local_data->array_allocator,
                        local_data->particle_allocator,
                        *block,
                        particle_type,
-                       ArrayRef<float>(all_durations).take_back(block->active_amount()),
+                       remaining_durations,
                        time_span.end());
       },
       /* Create thread-local data. */



More information about the Bf-blender-cvs mailing list