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. */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to