[Bf-blender-cvs] [ad051d46aae] functions: don't inline simulation functions to make profiles more useful
Jacques Lucke
noreply at git.blender.org
Thu Jun 20 15:51:35 CEST 2019
Commit: ad051d46aae82b2d53938938e435ac8867cecdd0
Author: Jacques Lucke
Date: Thu Jun 20 15:20:55 2019 +0200
Branches: functions
https://developer.blender.org/rBad051d46aae82b2d53938938e435ac8867cecdd0
don't inline simulation functions to make profiles more useful
===================================================================
M source/blender/simulations/bparticles/simulate.cpp
===================================================================
diff --git a/source/blender/simulations/bparticles/simulate.cpp b/source/blender/simulations/bparticles/simulate.cpp
index 9221c3fa6bf..83ff83cf6c9 100644
--- a/source/blender/simulations/bparticles/simulate.cpp
+++ b/source/blender/simulations/bparticles/simulate.cpp
@@ -20,14 +20,14 @@ static ArrayRef<uint> static_number_range_ref()
/* Events
**************************************************/
-static void find_next_event_per_particle(AttributeArrays attributes,
- ArrayRef<uint> particle_indices,
- IdealOffsets &ideal_offsets,
- ArrayRef<float> durations,
- float end_time,
- ArrayRef<Event *> events,
- ArrayRef<int> r_next_event_indices,
- ArrayRef<float> r_time_factors_to_next_event)
+BLI_NOINLINE static void find_next_event_per_particle(AttributeArrays attributes,
+ ArrayRef<uint> particle_indices,
+ IdealOffsets &ideal_offsets,
+ ArrayRef<float> durations,
+ float end_time,
+ ArrayRef<Event *> events,
+ ArrayRef<int> r_next_event_indices,
+ ArrayRef<float> r_time_factors_to_next_event)
{
r_next_event_indices.fill(-1);
r_time_factors_to_next_event.fill(1.0f);
@@ -55,10 +55,11 @@ static void find_next_event_per_particle(AttributeArrays attributes,
}
}
-static void forward_particles_to_next_event(AttributeArrays attributes,
- ArrayRef<uint> particle_indices,
- IdealOffsets &ideal_offsets,
- ArrayRef<float> time_factors_to_next_event)
+BLI_NOINLINE static void forward_particles_to_next_event(
+ AttributeArrays attributes,
+ ArrayRef<uint> particle_indices,
+ IdealOffsets &ideal_offsets,
+ ArrayRef<float> time_factors_to_next_event)
{
auto positions = attributes.get_float3("Position");
auto velocities = attributes.get_float3("Velocity");
@@ -71,9 +72,10 @@ static void forward_particles_to_next_event(AttributeArrays attributes,
}
}
-static void find_particles_per_event(ArrayRef<uint> particle_indices,
- ArrayRef<int> next_event_indices,
- ArrayRef<SmallVector<uint>> r_particles_per_event)
+BLI_NOINLINE static void find_particles_per_event(
+ ArrayRef<uint> particle_indices,
+ ArrayRef<int> next_event_indices,
+ ArrayRef<SmallVector<uint>> r_particles_per_event)
{
for (uint i = 0; i < particle_indices.size(); i++) {
int event_index = next_event_indices[i];
@@ -84,13 +86,14 @@ static void find_particles_per_event(ArrayRef<uint> particle_indices,
}
}
-static void find_unfinished_particles(ArrayRef<uint> particle_indices,
- ArrayRef<int> next_event_indices,
- ArrayRef<float> time_factors_to_next_event,
- ArrayRef<float> durations,
- ArrayRef<uint8_t> kill_states,
- SmallVector<uint> &r_unfinished_particle_indices,
- SmallVector<float> &r_remaining_durations)
+BLI_NOINLINE static void find_unfinished_particles(
+ ArrayRef<uint> particle_indices,
+ ArrayRef<int> next_event_indices,
+ ArrayRef<float> time_factors_to_next_event,
+ ArrayRef<float> durations,
+ ArrayRef<uint8_t> kill_states,
+ SmallVector<uint> &r_unfinished_particle_indices,
+ SmallVector<float> &r_remaining_durations)
{
for (uint i = 0; i < particle_indices.size(); i++) {
@@ -105,10 +108,10 @@ static void find_unfinished_particles(ArrayRef<uint> particle_indices,
}
}
-static void run_actions(AttributeArrays attributes,
- ArrayRef<SmallVector<uint>> particles_per_event,
- ArrayRef<Event *> events,
- ArrayRef<Action *> action_per_event)
+BLI_NOINLINE static void run_actions(AttributeArrays attributes,
+ ArrayRef<SmallVector<uint>> particles_per_event,
+ ArrayRef<Event *> events,
+ ArrayRef<Action *> action_per_event)
{
for (uint event_index = 0; event_index < events.size(); event_index++) {
Action *action = action_per_event[event_index];
@@ -119,10 +122,10 @@ static void run_actions(AttributeArrays attributes,
/* Evaluate Forces
***********************************************/
-static void compute_combined_forces_on_particles(AttributeArrays attributes,
- ArrayRef<uint> particle_indices,
- ArrayRef<Force *> forces,
- ArrayRef<float3> r_force_vectors)
+BLI_NOINLINE static void compute_combined_forces_on_particles(AttributeArrays attributes,
+ ArrayRef<uint> particle_indices,
+ ArrayRef<Force *> forces,
+ ArrayRef<float3> r_force_vectors)
{
BLI_assert(particle_indices.size() == r_force_vectors.size());
r_force_vectors.fill({0, 0, 0});
@@ -134,11 +137,11 @@ static void compute_combined_forces_on_particles(AttributeArrays attributes,
/* Step individual particles.
**********************************************/
-static void compute_ideal_attribute_offsets(AttributeArrays attributes,
- ArrayRef<uint> particle_indices,
- ArrayRef<float> durations,
- ParticleInfluences &influences,
- IdealOffsets r_offsets)
+BLI_NOINLINE static void compute_ideal_attribute_offsets(AttributeArrays attributes,
+ ArrayRef<uint> particle_indices,
+ ArrayRef<float> durations,
+ ParticleInfluences &influences,
+ IdealOffsets r_offsets)
{
BLI_assert(particle_indices.size() == durations.size());
BLI_assert(particle_indices.size() == r_offsets.position_offsets.size());
@@ -162,13 +165,13 @@ static void compute_ideal_attribute_offsets(AttributeArrays attributes,
}
}
-static void simulate_to_next_event(AttributeArrays attributes,
- ArrayRef<uint> particle_indices,
- ArrayRef<float> durations,
- float end_time,
- ParticleInfluences &influences,
- SmallVector<uint> &r_unfinished_particle_indices,
- SmallVector<float> &r_remaining_durations)
+BLI_NOINLINE static void simulate_to_next_event(AttributeArrays attributes,
+ ArrayRef<uint> particle_indices,
+ ArrayRef<float> durations,
+ float end_time,
+ ParticleInfluences &influences,
+ SmallVector<uint> &r_unfinished_particle_indices,
+ SmallVector<float> &r_remaining_durations)
{
SmallVector<float3> position_offsets(particle_indices.size());
SmallVector<float3> velocity_offsets(particle_indices.size());
@@ -205,10 +208,10 @@ static void simulate_to_next_event(AttributeArrays attributes,
r_remaining_durations);
}
-static void simulate_ignoring_events(AttributeArrays attributes,
- ArrayRef<uint> particle_indices,
- ArrayRef<float> durations,
- ParticleInfluences &influences)
+BLI_NOINLINE static void simulate_ignoring_events(AttributeArrays attributes,
+ ArrayRef<uint> particle_indices,
+ ArrayRef<float> durations,
+ ParticleInfluences &influences)
{
SmallVector<float3> position_offsets{particle_indices.size()};
SmallVector<float3> velocity_offsets{particle_indices.size()};
@@ -227,11 +230,11 @@ static void simulate_ignoring_events(AttributeArrays attributes,
}
}
-static void step_individual_particles(AttributeArrays attributes,
- ArrayRef<uint> particle_indices,
- ArrayRef<float> durations,
- float end_time,
- ParticleInfluences &influences)
+BLI_NOINLINE static void step_individual_particles(AttributeArrays attributes,
+ ArrayRef<uint> particle_indices,
+ ArrayRef<float> durations,
+ float end_time,
+ ParticleInfluences &influences)
{
SmallVector<uint> unfinished_particle_indices;
SmallVector<float> remaining_durations;
@@ -265,7 +268,7 @@ static void step_individual_particles(AttributeArrays attributes,
/* Delete particles.
**********************************************/
-sta
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list