Blender
V3.3
|
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) |
void blender::threading::isolate_task | ( | const Function & | function | ) |
See BLI_task_isolate for a description of what isolating a task means.
Definition at line 125 of file BLI_task.hh.
Referenced by BKE_mesh_poly_normals_ensure(), BKE_mesh_runtime_looptri_ensure(), BKE_mesh_vertex_normals_ensure(), BKE_mesh_wrapper_ensure_mdata(), BKE_mesh_wrapper_ensure_subdivision(), blender::bke::CurvesGeometry::ensure_evaluated_lengths(), blender::bke::CurvesGeometry::ensure_evaluated_offsets(), BezierSpline::evaluated_mappings(), blender::bke::CurvesGeometry::evaluated_normals(), blender::bke::CurvesGeometry::evaluated_positions(), BezierSpline::evaluated_positions(), blender::bke::CurvesGeometry::evaluated_tangents(), mesh_calc_modifiers(), blender::modifiers::geometry_nodes::GeometryNodesEvaluator::with_locked_node(), and write_result_func().
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().
void blender::threading::parallel_for_each | ( | Range & | range, |
const Function & | function | ||
) |
Definition at line 39 of file BLI_task.hh.
Referenced by PathTrace::adaptive_sample(), blender::bke::calc_edges::add_existing_edges_to_hash_maps(), blender::bke::calc_edges::add_polygon_edges_to_hash_maps(), blender::bke::calc_edges::clear_hash_tables(), PathTrace::copy_from_render_buffers(), PathTrace::copy_render_tile_from_device(), PathTrace::copy_to_render_buffers(), PathTrace::cryptomatte_postprocess(), blender::ed::sculpt_paint::CurvesEffectOperationExecutor::execute(), PathTrace::get_render_tile_pixels(), PathTrace::init_render_buffers(), GeometrySet::modify_geometry_sets(), blender::bke::calc_edges::reserve_hash_maps(), blender::ed::sculpt_paint::CombOperationExecutor::restore_segment_lengths(), blender::bke::calc_edges::serialize_and_initialize_deduplicated_edges(), PathTrace::set_render_tile_pixels(), and PathTrace::tile_buffer_read().
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().
void blender::threading::parallel_invoke | ( | Functions &&... | functions | ) |
Execute all of the provided functions. The functions might be executed in parallel or in serial or some combination of both.
Definition at line 99 of file BLI_task.hh.
References functions, and parallel_invoke().
Referenced by blender::bke::copy_with_removed_curves(), blender::bke::copy_with_removed_points(), blender::nodes::create_line_mesh(), blender::nodes::node_geo_mesh_primitive_uv_sphere_cc::create_uv_sphere_mesh(), blender::nodes::node_geo_deform_curves_on_surface_cc::deform_curves(), blender::ed::sculpt_paint::DensityAddOperationExecutor::execute(), parallel_invoke(), blender::ed::sculpt_paint::DensityAddOperationExecutor::prepare_curve_roots_kdtrees(), blender::ed::sculpt_paint::select_grow::select_grow_invoke_per_curve(), and TEST().
Value blender::threading::parallel_reduce | ( | IndexRange | range, |
int64_t | grain_size, | ||
const Value & | identity, | ||
const Function & | function, | ||
const Reduction & | reduction | ||
) |
Definition at line 73 of file BLI_task.hh.
References blender::IndexRange::first(), blender::IndexRange::one_after_last(), blender::IndexRange::size(), UNUSED_VARS, and Value.
Referenced by BKE_mesh_minmax(), BLI_task_parallel_range(), blender::bke::calculate_type_counts(), blender::ed::sculpt_paint::find_curves_brush_position(), blender::bounds::min_max(), and blender::bounds::min_max_with_radii().