Blender  V3.3
Namespaces | Classes | Functions
blender::threading Namespace Reference

Namespaces

 enumerable_thread_specific_utils
 

Classes

class  EnumerableThreadSpecific
 

Functions

template<typename Range , typename Function >
void parallel_for_each (Range &range, const Function &function)
 
template<typename Function >
void parallel_for (IndexRange range, int64_t grain_size, const Function &function)
 
template<typename Value , typename Function , typename Reduction >
Value parallel_reduce (IndexRange range, int64_t grain_size, const Value &identity, const Function &function, const Reduction &reduction)
 
template<typename... Functions>
void parallel_invoke (Functions &&...functions)
 
template<typename... Functions>
void parallel_invoke (const bool use_threading, Functions &&...functions)
 
template<typename Function >
void isolate_task (const Function &function)
 

Function Documentation

◆ isolate_task()

template<typename Function >
void blender::threading::isolate_task ( const Function &  function)

◆ parallel_for()

template<typename Function >
void blender::threading::parallel_for ( IndexRange  range,
int64_t  grain_size,
const Function &  function 
)

Definition at line 51 of file BLI_task.hh.

References blender::IndexRange::first(), blender::IndexRange::one_after_last(), blender::IndexRange::size(), and UNUSED_VARS.

Referenced by blender::bke::adapt_mesh_domain_corner_to_edge_impl(), blender::bke::adapt_mesh_domain_face_to_corner_impl(), PathTraceWorkCPU::adaptive_sampling_converge_filter_count_active(), blender::nodes::node_geo_instance_on_points_cc::add_instances_from_component(), blender::nodes::node_geo_string_to_curves_cc::add_instances_from_handles(), blender::nodes::node_fn_align_euler_to_vector_cc::align_rotations_auto_pivot(), blender::nodes::node_fn_align_euler_to_vector_cc::align_rotations_fixed_pivot(), BKE_mesh_merge_customdata_for_apply_modifier(), BLI_task_parallel_range(), blender::bke::build_point_to_curve_map(), blender::nodes::node_geo_dual_mesh_cc::calc_dual_mesh(), blender::bke::curves::bezier::calculate_auto_handles(), calculate_average_color(), blender::bke::CurvesGeometry::calculate_bezier_auto_handles(), blender::geometry::calculate_bezier_handles_bezier_mode(), blender::geometry::calculate_bezier_handles_poly_mode(), blender::bke::curves::bezier::calculate_evaluated_positions(), blender::geometry::calculate_fillet_positions(), calculate_mappings_linear_resolution(), blender::nodes::node_geo_proximity_cc::calculate_mesh_proximity(), blender::nodes::node_geo_proximity_cc::calculate_pointcloud_proximity(), blender::geometry::calculate_result_offsets(), blender::nodes::calculate_uvs(), blender::nodes::node_geo_proximity_cc::ProximityFunction::call(), blender::fn::MultiFunction::call_auto(), blender::ed::sculpt_paint::CombOperationExecutor::comb_projected(), blender::ed::sculpt_paint::CombOperationExecutor::comb_spherical(), blender::nodes::node_geo_curve_spline_parameter_cc::construct_curve_parameter_varray(), blender::nodes::node_geo_curve_spline_parameter_cc::construct_index_on_spline_varray(), blender::geometry::convert_curves_to_bezier(), blender::geometry::convert_curves_to_nurbs(), blender::nodes::node_geo_duplicate_elements_cc::copy_curve_attributes_without_id(), copy_data_based_on_mask(), blender::nodes::node_geo_curve_to_points_cc::copy_evaluated_point_attributes(), blender::geometry::copy_generic_attributes_to_result(), blender::bke::copy_indices_to_offset_ranges(), blender::bke::curves::copy_point_data(), blender::nodes::node_geo_duplicate_elements_cc::copy_stable_id_curves(), blender::nodes::node_geo_duplicate_elements_cc::copy_stable_id_edges(), blender::geometry::copy_transformed_positions(), blender::nodes::node_geo_curve_to_points_cc::copy_uniform_sample_point_attributes(), blender::nodes::node_geo_transfer_attribute_cc::copy_with_indices_clamped(), blender::bke::copy_with_map(), blender::geometry::copy_with_map(), blender::nodes::node_geo_extrude_mesh_cc::copy_with_mask(), blender::nodes::node_geo_extrude_mesh_cc::copy_with_mixing(), blender::bke::copy_with_removed_curves(), blender::bke::copy_with_removed_points(), blender::nodes::create_grid_mesh(), blender::nodes::create_line_mesh(), blender::geometry::create_result_ids(), blender::modifiers::geometry_nodes::GeometryNodesEvaluator::create_states_for_reachable_nodes(), PathTraceWorkCPU::cryptomatte_postproces(), blender::nodes::node_geo_curve_to_points_cc::curve_create_default_rotation_attribute(), curve_eval_from_dna_curve(), blender::bke::curve_legacy_to_curves(), blender::nodes::node_geo_curve_spline_parameter_cc::curve_length_point_domain(), blender::bke::curve_normal_point_domain(), blender::nodes::node_geo_input_tangent_cc::curve_tangent_point_domain(), blender::nodes::node_geo_deform_curves_on_surface_cc::deform_curves(), blender::ed::sculpt_paint::DeleteOperationExecutor::delete_projected(), blender::ed::sculpt_paint::DeleteOperationExecutor::delete_spherical(), blender::modifiers::geometry_nodes::GeometryNodesEvaluator::destruct_node_states(), detect_holes(), LightManager::device_update_background(), ObjectManager::device_update_transforms(), Camera::device_update_volume(), do_vpaint_brush_blur_loops(), do_vpaint_brush_blur_verts(), do_vpaint_brush_smear(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_curves(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_edges(), blender::geometry::duplicate_fillet_point_data(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_points_curve(), blender::bke::CurvesGeometry::ensure_evaluated_lengths(), ShaderEval::eval_cpu(), blender::fn::evaluate_fields(), blender::bke::CurvesGeometry::evaluated_normals(), blender::bke::CurvesGeometry::evaluated_positions(), BezierSpline::evaluated_positions(), blender::bke::CurvesGeometry::evaluated_tangents(), blender::ed::sculpt_paint::ShrinkCurvesEffect::execute(), blender::ed::sculpt_paint::ScaleCurvesEffect::execute(), blender::geometry::execute_realize_curve_task(), blender::geometry::execute_realize_curve_tasks(), blender::geometry::execute_realize_mesh_task(), blender::geometry::execute_realize_mesh_tasks(), blender::geometry::execute_realize_pointcloud_tasks(), blender::nodes::node_geo_extrude_mesh_cc::extrude_individual_mesh_faces(), blender::bke::curves::fill_curve_counts(), blender::bke::curves::fill_points(), blender::geometry::fillet_curves(), blender::geometry::find_curve_neighbors(), blender::ed::sculpt_paint::PuffOperationExecutor::find_curve_weights_projected(), blender::ed::sculpt_paint::PuffOperationExecutor::find_curves_weights_spherical(), blender::index_mask_ops::find_indices_based_on_predicate(), blender::index_mask_ops::detail::find_indices_based_on_predicate__merge(), blender::index_mask_ops::find_indices_from_virtual_array(), blender::ed::sculpt_paint::SmoothOperationExecutor::find_projected_smooth_factors(), blender::ed::sculpt_paint::SmoothOperationExecutor::find_spherical_smooth_factors(), blender::bke::foreach_curve_combination(), blender::ed::sculpt_paint::CurvesEffectOperationExecutor::gather_influences_projected(), blender::ed::sculpt_paint::CurvesEffectOperationExecutor::gather_influences_spherical(), blender::nodes::node_geo_curve_trim_cc::geometry_set_curve_trim(), blender::nodes::node_geo_input_shortest_edge_paths_cc::ShortestEdgePathsNextVertFieldInput::get_varray_for_context(), blender::nodes::node_geo_input_shortest_edge_paths_cc::ShortestEdgePathsCostFieldInput::get_varray_for_context(), blender::nodes::node_geo_field_at_index_cc::FieldAtIndex::get_varray_for_context(), blender::nodes::node_geo_curve_endpoint_selection_cc::EndpointFieldInput::get_varray_for_context(), blender::nodes::node_geo_volume_cube_cc::Grid3DFieldContext::get_varray_for_input(), blender::ed::sculpt_paint::CombOperationExecutor::initialize_segment_lengths(), blender::ed::sculpt_paint::PinchOperationExecutor::initialize_segment_lengths(), blender::ed::sculpt_paint::PuffOperationExecutor::initialize_segment_lengths(), blender::geometry::interpolate_from_neighbors(), blender::geometry::interpolate_position_with_interpolation(), blender::geometry::interpolate_position_without_interpolation(), blender::bke::curves::catmull_rom::interpolate_to_evaluated(), blender::bke::curves::bezier::interpolate_to_evaluated(), blender::bke::CurvesGeometry::interpolate_to_evaluated(), blender::ed::curves::select_all::invert_selection(), SkyLoader::load_pixels(), blender::nodes::node_geo_mesh_to_points_cc::materialize_compressed_to_uninitialized_threaded(), blender::io::obj::obj_parallel_chunked_output(), blender::ed::sculpt_paint::SelectionPaintOperationExecutor::paint_curve_selection_projected(), blender::ed::sculpt_paint::SelectionPaintOperationExecutor::paint_curve_selection_spherical(), blender::ed::sculpt_paint::SelectionPaintOperationExecutor::paint_point_selection_projected(), blender::ed::sculpt_paint::SelectionPaintOperationExecutor::paint_point_selection_spherical(), PathTrace::path_trace(), blender::ed::sculpt_paint::PinchOperationExecutor::pinch_projected(), blender::ed::sculpt_paint::PinchOperationExecutor::pinch_spherical(), blender::geometry::point_merge_by_distance(), blender::ed::sculpt_paint::SnakeHookOperatorExecutor::projected_snake_hook(), blender::ed::sculpt_paint::PuffOperationExecutor::puff(), blender::ed::sculpt_paint::DensitySubtractOperationExecutor::reduce_density_projected(), blender::ed::sculpt_paint::DensitySubtractOperationExecutor::reduce_density_spherical(), InstancesComponent::remove_unused_references(), PathTraceWorkCPU::render_samples(), blender::geometry::resample_to_evaluated(), blender::geometry::resample_to_uniform(), blender::ed::sculpt_paint::PuffOperationExecutor::restore_segment_lengths(), blender::ed::sculpt_paint::PinchOperationExecutor::restore_segment_lengths(), blender::ed::sculpt_paint::CombOperationExecutor::restore_segment_lengths(), blender::geometry::retrieve_curve_sizes(), blender::bke::reverse_curve_point_data(), blender::bke::reverse_swap_curve_point_data(), blender::nodes::node_geo_rotate_instances_cc::rotate_instances(), PassAccessorCPU::run_get_pass_kernel_processor_float(), PassAccessorCPU::run_get_pass_kernel_processor_half_rgba(), blender::length_parameterize::sample_at_lengths(), blender::geometry::ReverseUVSampler::sample_many(), blender::length_parameterize::sample_uniform(), Spline::sample_with_index_factors(), blender::nodes::node_geo_scale_instances_cc::scale_instances(), blender::nodes::node_geo_scale_elements_cc::scale_vertex_islands_on_axis(), blender::nodes::node_geo_scale_elements_cc::scale_vertex_islands_uniformly(), blender::ed::sculpt_paint::select_end::select_end_exec(), blender::ed::sculpt_paint::select_grow::select_grow_invoke_per_curve(), blender::nodes::node_geo_material_selection_cc::select_mesh_by_material(), blender::nodes::node_geo_set_position_cc::set_computed_position_and_offset(), blender::nodes::node_geo_set_curve_handles_cc::set_position_in_component(), blender::ed::sculpt_paint::SlideOperationExecutor::slide(), blender::ed::sculpt_paint::SmoothOperationExecutor::smooth(), blender::ed::curves::snap_curves_to_surface::snap_curves_to_surface_exec_object(), blender::ed::sculpt_paint::SnakeHookOperatorExecutor::spherical_snake_hook(), spline_from_dna_bezier(), spline_from_dna_nurbs(), spline_from_dna_poly(), blender::geometry::subdivide_attribute_catmull_rom(), blender::geometry::subdivide_attribute_linear(), blender::geometry::subdivide_bezier_positions(), blender::geometry::subdivide_curves(), blender::geometry::threaded_copy(), blender::geometry::threaded_fill(), blender::nodes::node_geo_duplicate_elements_cc::threaded_id_offset_copy(), blender::nodes::node_geo_duplicate_elements_cc::threaded_mapped_copy(), blender::geometry::threaded_slice_fill(), blender::nodes::node_geo_duplicate_elements_cc::threaded_slice_fill(), blender::io::stl::STLMeshHelper::to_mesh(), blender::bke::transform_positions(), blender::nodes::node_geo_translate_instances_cc::translate_instances(), blender::bke::translate_positions(), blender::bke::calc_edges::update_edge_indices_in_poly_loops(), blender::ed::sculpt_paint::select_grow::update_points_selection(), blender::ed::sculpt_paint::use_add_density_mode(), vpaint_do_draw(), and blender::io::obj::write_mesh_objects().

◆ parallel_for_each()

template<typename Range , typename Function >
void blender::threading::parallel_for_each ( Range &  range,
const Function &  function 
)

◆ parallel_invoke() [1/2]

template<typename... Functions>
void blender::threading::parallel_invoke ( const bool  use_threading,
Functions &&...  functions 
)

Same parallel_invoke, but allows disabling threading dynamically. This is useful because when the individual functions do very little work, there is a lot of overhead from starting parallel tasks.

Definition at line 114 of file BLI_task.hh.

References functions, and parallel_invoke().

Referenced by parallel_invoke().

◆ parallel_invoke() [2/2]

template<typename... Functions>
void blender::threading::parallel_invoke ( Functions &&...  functions)

◆ parallel_reduce()

template<typename Value , typename Function , typename Reduction >
Value blender::threading::parallel_reduce ( IndexRange  range,
int64_t  grain_size,
const Value &  identity,
const Function &  function,
const Reduction &  reduction 
)