Blender
V3.3
|
Go to the source code of this file.
Macros | |
#define | BLENDER_MAX_THREADS 1024 |
#define | BLI_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER |
#define | THREAD_LOCK_READ 1 |
#define | THREAD_LOCK_WRITE 2 |
#define | BLI_RWLOCK_INITIALIZER PTHREAD_RWLOCK_INITIALIZER |
#define | ThreadLocal(type) __thread type |
#define | BLI_thread_local_create(name) |
#define | BLI_thread_local_delete(name) |
#define | BLI_thread_local_get(name) name |
#define | BLI_thread_local_set(name, value) name = value |
Typedefs | |
typedef pthread_mutex_t | ThreadMutex |
typedef pthread_spinlock_t | SpinLock |
typedef pthread_rwlock_t | ThreadRWMutex |
typedef struct TicketMutex | TicketMutex |
typedef pthread_cond_t | ThreadCondition |
typedef struct ThreadQueue | ThreadQueue |
Enumerations | |
enum | { LOCK_IMAGE = 0 , LOCK_DRAW_IMAGE , LOCK_VIEWER , LOCK_CUSTOM1 , LOCK_NODES , LOCK_MOVIECLIP , LOCK_COLORMANAGE , LOCK_FFTW , LOCK_VIEW3D } |
#define BLENDER_MAX_THREADS 1024 |
For tables, button in UI, etc.
Definition at line 19 of file BLI_threads.h.
#define BLI_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER |
Definition at line 83 of file BLI_threads.h.
#define BLI_RWLOCK_INITIALIZER PTHREAD_RWLOCK_INITIALIZER |
Definition at line 123 of file BLI_threads.h.
#define BLI_thread_local_create | ( | name | ) |
Definition at line 191 of file BLI_threads.h.
#define BLI_thread_local_delete | ( | name | ) |
Definition at line 192 of file BLI_threads.h.
#define BLI_thread_local_get | ( | name | ) | name |
Definition at line 193 of file BLI_threads.h.
#define BLI_thread_local_set | ( | name, | |
value | |||
) | name = value |
Definition at line 194 of file BLI_threads.h.
#define THREAD_LOCK_READ 1 |
Definition at line 120 of file BLI_threads.h.
#define THREAD_LOCK_WRITE 2 |
Definition at line 121 of file BLI_threads.h.
Definition at line 189 of file BLI_threads.h.
typedef pthread_spinlock_t SpinLock |
Definition at line 110 of file BLI_threads.h.
typedef pthread_cond_t ThreadCondition |
Definition at line 150 of file BLI_threads.h.
typedef pthread_mutex_t ThreadMutex |
Definition at line 82 of file BLI_threads.h.
typedef struct ThreadQueue ThreadQueue |
Definition at line 157 of file BLI_threads.h.
typedef pthread_rwlock_t ThreadRWMutex |
Definition at line 125 of file BLI_threads.h.
typedef struct TicketMutex TicketMutex |
Definition at line 134 of file BLI_threads.h.
anonymous enum |
Global Mutex Locks
One custom lock available now. can be extended.
Enumerator | |
---|---|
LOCK_IMAGE | |
LOCK_DRAW_IMAGE | |
LOCK_VIEWER | |
LOCK_CUSTOM1 | |
LOCK_NODES | |
LOCK_MOVIECLIP | |
LOCK_COLORMANAGE | |
LOCK_FFTW | |
LOCK_VIEW3D |
Definition at line 65 of file BLI_threads.h.
int BLI_available_threads | ( | struct ListBase * | threadbase | ) |
Amount of available threads.
Definition at line 167 of file threads.cc.
References counter, and LISTBASE_FOREACH.
Referenced by background_task_pool_run(), and ww_write_zstd().
void BLI_condition_end | ( | ThreadCondition * | cond | ) |
Definition at line 599 of file threads.cc.
Referenced by IMB_thumb_locks_release(), screen_opengl_render_end(), seq_prefetch_free(), ww_close_zstd(), and blender::compositor::ExecutionSystem::~ExecutionSystem().
void BLI_condition_init | ( | ThreadCondition * | cond | ) |
Definition at line 574 of file threads.cc.
Referenced by blender::compositor::ExecutionSystem::ExecutionSystem(), IMB_thumb_locks_acquire(), screen_opengl_render_init(), seq_prefetch_start_ex(), and ww_open_zstd().
void BLI_condition_notify_all | ( | ThreadCondition * | cond | ) |
Definition at line 594 of file threads.cc.
Referenced by IMB_thumb_path_unlock(), write_result(), and zstd_write_task().
void BLI_condition_notify_one | ( | ThreadCondition * | cond | ) |
Definition at line 589 of file threads.cc.
Referenced by blender::compositor::ExecutionSystem::execute_work(), seq_prefetch_resume(), and SEQ_prefetch_stop().
void BLI_condition_wait | ( | ThreadCondition * | cond, |
ThreadMutex * | mutex | ||
) |
Definition at line 579 of file threads.cc.
References mutex.
Referenced by blender::compositor::ExecutionSystem::execute_work(), schedule_write_result(), screen_opengl_render_end(), seq_prefetch_do_suspend(), and zstd_write_task().
void BLI_condition_wait_global_mutex | ( | ThreadCondition * | cond, |
int | type | ||
) |
Definition at line 584 of file threads.cc.
References global_mutex_from_type(), and type.
Referenced by IMB_thumb_path_lock().
ThreadMutex* BLI_mutex_alloc | ( | void | ) |
Definition at line 393 of file threads.cc.
References BLI_mutex_init(), MEM_callocN, and mutex.
Referenced by EEVEE_lightbake_job_create(), EEVEE_lightbake_job_data_alloc(), and sequencer_preview_add_sound().
void BLI_mutex_end | ( | ThreadMutex * | mutex | ) |
Definition at line 388 of file threads.cc.
References mutex.
Referenced by BKE_image_pool_free(), BLI_mutex_free(), BLI_spin_end(), BLI_task_pool_free(), bvhcache_free(), ccgDM_release(), COM_deinitialize(), blender::compositor::NodeOperation::deinit_mutex(), DRW_curves_batch_cache_free(), filelist_readjob_free(), gpu_batch_presets_exit(), image_runtime_free_data(), imb_tile_cache_exit(), mesh_runtime_free_mutexes(), RE_engine_free(), RE_FreeRender(), screen_opengl_render_end(), seq_cache_destruct(), seq_disk_cache_free(), seq_prefetch_free(), ww_close_zstd(), and blender::compositor::ExecutionSystem::~ExecutionSystem().
void BLI_mutex_free | ( | ThreadMutex * | mutex | ) |
Definition at line 400 of file threads.cc.
References BLI_mutex_end(), MEM_freeN, and mutex.
Referenced by EEVEE_lightbake_job_data_free(), and free_preview_job().
void BLI_mutex_init | ( | ThreadMutex * | mutex | ) |
Definition at line 368 of file threads.cc.
References mutex.
Referenced by BKE_image_pool_new(), BLI_mutex_alloc(), BLI_spin_init(), bvhcache_init(), COM_execute(), curves_batch_cache_init(), blender::compositor::ExecutionSystem::ExecutionSystem(), filelist_readjob_start(), getCCGDerivedMesh(), gpu_batch_presets_init(), image_runtime_reset(), image_runtime_reset_on_copy(), imb_tile_cache_init(), IMB_tile_cache_params(), blender::compositor::NodeOperation::init_mutex(), mesh_runtime_init_mutexes(), RE_engine_create(), RE_NewRender(), screen_opengl_render_init(), seq_cache_create(), seq_disk_cache_create(), seq_prefetch_start_ex(), task_pool_create_ex(), and ww_open_zstd().
void BLI_mutex_lock | ( | ThreadMutex * | mutex | ) |
Definition at line 373 of file threads.cc.
References mutex.
Referenced by BKE_collection_object_cache_get(), BKE_collection_object_cache_instanced_get(), BKE_image_acquire_ibuf(), BKE_image_ensure_viewer_views(), BKE_image_file_format_set(), BKE_image_free_anim_ibufs(), BKE_image_free_buffers_ex(), BKE_image_get_first_ibuf(), BKE_image_get_ibuf_with_name(), BKE_image_has_ibuf(), BKE_image_has_loaded_ibuf(), BKE_image_is_dirty_writable(), BKE_image_merge(), BKE_image_pool_acquire_ibuf(), BKE_image_pool_free(), BKE_image_release_ibuf(), BKE_image_signal(), 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(), BKE_object_select_update(), BLI_spin_lock(), bvhcache_find(), ccgDM_copyFinalLoopArray(), colorspace_from_scene_linear_cpu_processor(), colorspace_to_scene_linear_cpu_processor(), COM_deinitialize(), COM_execute(), display_from_scene_linear_processor(), display_to_scene_linear_processor(), draw_image_cache(), drw_attributes_merge(), DRW_cache_free_old_subdiv(), DRW_subdiv_cache_free(), eevee_lightbake_delete_resources(), EEVEE_lightbake_job_create(), engine_render_view_layer(), engine_tile_highlight_set(), evaluate_driver_python(), blender::compositor::ExecutionSystem::execute_work(), filelist_readjob_append_entries(), filelist_readjob_startjob(), filelist_readjob_update(), give_parvert(), gpu_batch_presets_register(), gpu_batch_presets_unregister(), gpu_free_unused_buffers(), image_free_gpu(), image_mem_size(), IMB_colormanagement_color_picking_to_scene_linear_v3(), IMB_colormanagement_scene_linear_to_color_picking_v3(), imb_global_cache_get_tile(), imb_tile_cache_tile_free(), IMB_tiles_to_rect(), blender::compositor::NodeOperation::lock_mutex(), mesh_calc_modifiers(), preview_startjob(), RE_engine_draw_acquire(), RE_engine_get_current_tiles(), RE_engine_tile_highlight_clear_all(), RE_engine_update_render_passes(), RE_point_density_cache(), RE_point_density_sample(), blender::eevee::Instance::render_frame(), render_pipeline_free(), RNA_property_pointer_get(), schedule_write_result(), screen_opengl_render_end(), seq_cache_create(), seq_cache_lock(), seq_disk_cache_enforce_limits(), seq_disk_cache_invalidate(), seq_disk_cache_read_file(), seq_disk_cache_write_file(), seq_prefetch_do_suspend(), SEQ_render_give_ibuf(), seq_sequence_lookup_effects_by_seq(), SEQ_sequence_lookup_free(), seq_sequence_lookup_meta_by_seq(), SEQ_sequence_lookup_seq_by_name(), SEQ_sequence_lookup_tag(), sequencer_preview_add_sound(), stats_background(), view_layer_bases_hash_create(), write_result(), ww_write_zstd(), and zstd_write_task().
bool BLI_mutex_trylock | ( | ThreadMutex * | mutex | ) |
Definition at line 383 of file threads.cc.
References mutex.
void BLI_mutex_unlock | ( | ThreadMutex * | mutex | ) |
Definition at line 378 of file threads.cc.
References mutex.
Referenced by BKE_collection_object_cache_get(), BKE_collection_object_cache_instanced_get(), BKE_image_acquire_ibuf(), BKE_image_ensure_viewer_views(), BKE_image_file_format_set(), BKE_image_free_anim_ibufs(), BKE_image_free_buffers_ex(), BKE_image_get_first_ibuf(), BKE_image_get_ibuf_with_name(), BKE_image_has_ibuf(), BKE_image_has_loaded_ibuf(), BKE_image_is_dirty_writable(), BKE_image_merge(), BKE_image_pool_acquire_ibuf(), BKE_image_pool_free(), BKE_image_release_ibuf(), BKE_image_signal(), 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(), BKE_object_select_update(), BLI_spin_unlock(), bvhcache_find(), bvhcache_unlock(), ccgDM_copyFinalLoopArray(), colorspace_from_scene_linear_cpu_processor(), colorspace_to_scene_linear_cpu_processor(), COM_deinitialize(), COM_execute(), display_from_scene_linear_processor(), display_to_scene_linear_processor(), draw_image_cache(), drw_attributes_merge(), DRW_cache_free_old_subdiv(), DRW_subdiv_cache_free(), eevee_lightbake_delete_resources(), EEVEE_lightbake_job_create(), engine_render_view_layer(), engine_tile_highlight_set(), evaluate_driver_python(), blender::compositor::ExecutionSystem::execute_work(), filelist_readjob_append_entries(), filelist_readjob_startjob(), filelist_readjob_update(), give_parvert(), gpu_batch_presets_register(), gpu_batch_presets_unregister(), gpu_free_unused_buffers(), image_free_gpu(), image_mem_size(), IMB_colormanagement_color_picking_to_scene_linear_v3(), IMB_colormanagement_scene_linear_to_color_picking_v3(), imb_global_cache_get_tile(), imb_tile_cache_tile_free(), IMB_tiles_to_rect(), mesh_calc_modifiers(), preview_startjob(), RE_engine_draw_acquire(), RE_engine_draw_release(), RE_engine_get_current_tiles(), RE_engine_tile_highlight_clear_all(), RE_engine_update_render_passes(), RE_point_density_cache(), RE_point_density_sample(), blender::eevee::Instance::render_frame(), render_pipeline_free(), RNA_property_pointer_get(), schedule_write_result(), screen_opengl_render_end(), seq_cache_create(), seq_cache_unlock(), seq_disk_cache_create(), seq_disk_cache_enforce_limits(), seq_disk_cache_invalidate(), seq_disk_cache_read_file(), seq_disk_cache_write_file(), seq_prefetch_do_suspend(), SEQ_render_give_ibuf(), seq_sequence_lookup_effects_by_seq(), SEQ_sequence_lookup_free(), seq_sequence_lookup_meta_by_seq(), SEQ_sequence_lookup_seq_by_name(), SEQ_sequence_lookup_tag(), sequencer_preview_add_sound(), stats_background(), blender::compositor::NodeOperation::unlock_mutex(), view_layer_bases_hash_create(), write_result(), ww_write_zstd(), and zstd_write_task().
ThreadRWMutex* BLI_rw_mutex_alloc | ( | void | ) |
Definition at line 508 of file threads.cc.
References BLI_rw_mutex_init(), MEM_callocN, and mutex.
Referenced by BKE_fluid_modifier_create_type_data(), and BKE_modifier_blend_read_data().
void BLI_rw_mutex_end | ( | ThreadRWMutex * | mutex | ) |
Definition at line 503 of file threads.cc.
References mutex.
Referenced by BLI_rw_mutex_free(), ccgDM_release(), and RE_FreeRender().
void BLI_rw_mutex_free | ( | ThreadRWMutex * | mutex | ) |
Definition at line 516 of file threads.cc.
References BLI_rw_mutex_end(), MEM_freeN, and mutex.
Referenced by BKE_fluid_modifier_freeDomain().
void BLI_rw_mutex_init | ( | ThreadRWMutex * | mutex | ) |
Definition at line 483 of file threads.cc.
References mutex.
Referenced by BLI_rw_mutex_alloc(), getCCGDerivedMesh(), and RE_NewRender().
void BLI_rw_mutex_lock | ( | ThreadRWMutex * | mutex, |
int | mode | ||
) |
Definition at line 488 of file threads.cc.
References mutex, and THREAD_LOCK_READ.
Referenced by BKE_fluid_modifier_reset_ex(), ccgDM_get_vert_data_layer(), dm_getLoopTriArray(), do_render_compositor(), do_render_sequencer(), psys_update_particle_bvhtree(), RE_AcquireResultImage(), RE_AcquireResultImageViews(), RE_AcquireResultRead(), RE_AcquireResultWrite(), RE_engine_render(), re_ensure_passes_allocated_thread_safe(), RE_InitState(), RE_ReadRenderResult(), render_init_from_main(), render_result_uncrop(), sph_evaluate_func(), vfont_get_data(), and vfont_to_curve().
void BLI_rw_mutex_unlock | ( | ThreadRWMutex * | mutex | ) |
Definition at line 498 of file threads.cc.
References mutex.
Referenced by BKE_fluid_modifier_reset_ex(), ccgDM_get_vert_data_layer(), dm_getLoopTriArray(), do_render_compositor(), do_render_sequencer(), psys_update_particle_bvhtree(), RE_engine_render(), re_ensure_passes_allocated_thread_safe(), RE_InitState(), RE_ReadRenderResult(), RE_ReleaseResult(), RE_ReleaseResultImage(), RE_ReleaseResultImageViews(), render_init_from_main(), render_result_uncrop(), sph_evaluate_func(), vfont_get_data(), and vfont_to_curve().
Definition at line 467 of file threads.cc.
References BLI_mutex_end(), and spin.
Referenced by BKE_autotrack_context_free(), BKE_cachefiles_exit(), BKE_main_free(), blf_font_exit(), do_multires_bake(), do_sequence_proxy(), dynamics_step(), ED_image_paint_tile_lock_end(), GPU_pass_cache_free(), imb_mmap_lock_exit(), imb_refcounter_lock_exit(), lineart_destroy_render_data(), lineart_end_bounding_area_recursive(), lineart_free_bounding_area_memory(), project_paint_end(), screen_opengl_render_end(), sound_free_data(), start_prefetch_threads(), task_parallel_iterator_do(), tracking_image_accessor_destroy(), tracks_map_free(), and blender::deg::Depsgraph::~Depsgraph().
Definition at line 419 of file threads.cc.
References BLI_mutex_init(), and spin.
Referenced by BKE_autotrack_context_new(), BKE_cachefiles_init(), BKE_main_new(), BKE_sound_new_file(), blf_font_init(), blender::deg::Depsgraph::Depsgraph(), do_multires_bake(), do_sequence_proxy(), drw_deferred_shader_add(), dynamics_step(), ED_image_paint_tile_lock_init(), GPU_pass_cache_init(), imb_mmap_lock_init(), imb_refcounter_lock_init(), lineart_bounding_area_split(), lineart_create_render_buffer(), lineart_main_bounding_area_make_initial(), lineart_main_try_generate_shadow(), proj_paint_state_thread_init(), screen_opengl_render_init(), sound_blend_read_data(), sound_copy_data(), start_prefetch_threads(), task_parallel_iterator_do(), tracking_image_accessor_new(), and tracks_map_new().
Definition at line 433 of file threads.cc.
References BLI_mutex_lock(), and spin.
Referenced by BKE_autotrack_context_step(), BKE_autotrack_context_sync(), BKE_cachefile_reader_free(), BKE_cachefile_reader_open(), BKE_main_lock(), blf_glyph_cache_acquire(), blf_glyph_cache_clear(), blf_glyph_ensure(), cachefile_handle_free(), do_multires_bake_thread(), drw_deferred_shader_add(), drw_deferred_shader_compilation_exec(), drw_deferred_shader_compilation_free(), DRW_deferred_shader_remove(), ED_image_paint_tile_push(), GPU_generate_pass(), GPU_pass_cache_free(), GPU_pass_cache_garbage_collect(), gpu_pass_cache_insert_after(), gpu_pass_cache_lookup(), gpu_pass_cache_resolve_collision(), GPU_pass_release(), IMB_freeImBuf(), IMB_makeSingleUser(), imb_mmap_lock(), IMB_refImBuf(), lineart_bounding_area_link_triangle(), lineart_discard_segment(), lineart_geometry_object_load(), lineart_give_segment(), lineart_give_shadow_segment(), lineart_mem_acquire_thread(), lineart_occlusion_make_task_info(), lineart_schedule_new_triangle_task(), multires_bake_queue_next_tri(), parallel_iterator_func_do(), prefetch_thread_next_frame(), preview_startjob(), project_paint_undo_subtiles(), proxy_thread_next_frame(), screen_opengl_render_anim_step(), tracks_map_merge(), update_courant_num(), waveform_job_start_if_needed(), and write_result().
Definition at line 452 of file threads.cc.
References BLI_mutex_unlock(), and spin.
Referenced by BKE_autotrack_context_step(), BKE_autotrack_context_sync(), BKE_cachefile_reader_free(), BKE_cachefile_reader_open(), BKE_main_unlock(), blf_glyph_cache_clear(), blf_glyph_cache_release(), blf_glyph_ensure(), cachefile_handle_free(), do_multires_bake_thread(), drw_deferred_shader_add(), drw_deferred_shader_compilation_exec(), drw_deferred_shader_compilation_free(), DRW_deferred_shader_remove(), ED_image_paint_tile_push(), GPU_generate_pass(), GPU_pass_cache_free(), GPU_pass_cache_garbage_collect(), gpu_pass_cache_insert_after(), gpu_pass_cache_lookup(), gpu_pass_cache_resolve_collision(), GPU_pass_release(), IMB_freeImBuf(), IMB_makeSingleUser(), imb_mmap_unlock(), IMB_refImBuf(), lineart_bounding_area_link_triangle(), lineart_discard_segment(), lineart_geometry_object_load(), lineart_give_segment(), lineart_give_shadow_segment(), lineart_mem_acquire_thread(), lineart_occlusion_make_task_info(), lineart_schedule_new_triangle_task(), multires_bake_queue_next_tri(), parallel_iterator_func_do(), prefetch_thread_next_frame(), preview_startjob(), project_paint_undo_subtiles(), proxy_thread_next_frame(), screen_opengl_render_anim_step(), tracks_map_merge(), update_courant_num(), waveform_job_start_if_needed(), and write_result().
int BLI_system_num_threads_override_get | ( | void | ) |
Definition at line 322 of file threads.cc.
References threads_override_num.
Referenced by BKE_render_num_threads(), and BLI_task_scheduler_init().
void BLI_system_num_threads_override_set | ( | int | num | ) |
Definition at line 317 of file threads.cc.
References threads_override_num.
Referenced by arg_handle_threads_set().
int BLI_system_thread_count | ( | void | ) |
Definition at line 281 of file threads.cc.
References CLAMP, len, LIKELY, RE_MAX_THREAD, t, and threads_override_num.
Referenced by BKE_render_num_threads(), BLI_task_scheduler_init(), blender::fn::compute_grain_size(), do_movie_proxy(), do_multires_bake(), blender::compositor::ExecutionGroup::execute(), blender::bke::calc_edges::get_parallel_maps_count(), imb_initopenexr(), psys_tasks_create(), tracking_cameraIntrinscisOptionsFromTracking(), and ww_open_zstd().
int BLI_thread_is_main | ( | void | ) |
Definition at line 207 of file threads.cc.
References mainid.
Referenced by BKE_icon_geom_ensure(), BKE_icon_geom_from_file(), BKE_icon_geom_from_memory(), BKE_icon_get(), BKE_icon_gplayer_color_ensure(), BKE_icon_id_delete(), BKE_icon_id_ensure(), BKE_icons_free(), BKE_icons_init(), BKE_image_free_gputextures(), BKE_image_free_unused_gpu_textures(), BKE_previewimg_cached_ensure(), BKE_previewimg_cached_get(), BKE_previewimg_cached_release(), BKE_previewimg_cached_thumbnail_read(), BLT_translate(), BPY_context_update(), ctx_data_get(), ctx_wm_python_context_get(), DRW_gpu_render_context_enable(), DRW_opengl_context_activate(), DRW_opengl_context_destroy(), DRW_opengl_context_disable_ex(), DRW_opengl_context_release(), DRW_opengl_render_context_enable(), ED_preview_ensure_dbase(), ED_render_id_flush_update(), ED_render_scene_update(), eevee_lightbake_context_disable(), eevee_lightbake_context_enable(), EEVEE_lightbake_job(), EEVEE_lightbake_job_data_alloc(), GPU_batch_preset_sphere(), GPU_batch_preset_sphere_wire(), icon_gplayer_color_ensure_create_icon(), icon_id_ensure_create_icon(), image_init_after_load(), SEQ_effect_text_font_load(), seq_render_scene_strip(), wm_file_write(), wm_job_end(), WM_opengl_context_create(), wm_surface_reset_drawable(), wm_window_process_events(), and wm_window_reset_drawable().
void BLI_thread_lock | ( | int | type | ) |
Definition at line 356 of file threads.cc.
References global_mutex_from_type(), and type.
Referenced by accessor_get_ibuf(), BKE_image_ensure_viewer_views(), BKE_movieclip_get_cache_segments(), BKE_movieclip_has_cached_frame(), BKE_movieclip_put_frame_if_possible(), colorfn(), blender::compositor::CompositorOperation::deinit_execution(), blender::ed::space_node::draw_nodespace_back_pix(), image_acquire_ibuf(), image_get_render_result(), image_main_region_draw(), image_mipmap_test(), blender::nodes::node_geo_image_texture_cc::ImageFieldsFunction::ImageFieldsFunction(), IMB_display_buffer_acquire(), IMB_display_buffer_release(), imb_partial_display_buffer_update_ex(), IMB_thumb_locks_acquire(), IMB_thumb_locks_release(), IMB_thumb_path_lock(), IMB_thumb_path_unlock(), movieclip_build_proxy_ibuf(), movieclip_get_postprocessed_ibuf(), ntreeTexExecTree(), project_paint_face_init(), SCULPT_undo_push_node(), and view3d_stereo3d_setup().
void BLI_thread_queue_free | ( | ThreadQueue * | queue | ) |
Definition at line 629 of file threads.cc.
References BLI_gsqueue_free(), MEM_freeN, and queue.
Referenced by background_task_pool_free(), filelist_cache_previews_free(), blender::compositor::opencl_stop(), blender::compositor::threading_model_queue_stop(), and PreviewLoadJob::~PreviewLoadJob().
ThreadQueue* BLI_thread_queue_init | ( | void | ) |
Definition at line 615 of file threads.cc.
References BLI_gsqueue_new(), MEM_callocN, and queue.
Referenced by background_task_pool_create(), filelist_cache_preview_ensure_running(), blender::compositor::opencl_start(), and blender::compositor::threading_model_queue_start().
bool BLI_thread_queue_is_empty | ( | ThreadQueue * | queue | ) |
Definition at line 756 of file threads.cc.
References BLI_gsqueue_is_empty(), and queue.
Referenced by filelist_cache_previews_update().
int BLI_thread_queue_len | ( | ThreadQueue * | queue | ) |
Definition at line 745 of file threads.cc.
References BLI_gsqueue_len(), queue, and size().
void BLI_thread_queue_nowait | ( | ThreadQueue * | queue | ) |
Definition at line 767 of file threads.cc.
References queue.
Referenced by background_task_pool_cancel(), background_task_pool_work_and_wait(), filelist_cache_previews_free(), blender::compositor::opencl_stop(), and blender::compositor::threading_model_queue_stop().
void* BLI_thread_queue_pop | ( | ThreadQueue * | queue | ) |
Definition at line 652 of file threads.cc.
References BLI_gsqueue_is_empty(), BLI_gsqueue_pop(), and queue.
Referenced by background_task_pool_cancel(), background_task_run(), filelist_cache_previews_update(), blender::compositor::thread_execute_gpu(), and blender::compositor::threading_model_queue_execute().
void* BLI_thread_queue_pop_timeout | ( | ThreadQueue * | queue, |
int | ms | ||
) |
Definition at line 711 of file threads.cc.
References BLI_gsqueue_is_empty(), BLI_gsqueue_pop(), PIL_check_seconds_timer(), queue, t, and wait_timeout().
Referenced by filelist_cache_previews_clear().
void BLI_thread_queue_push | ( | ThreadQueue * | queue, |
void * | work | ||
) |
Definition at line 641 of file threads.cc.
References BLI_gsqueue_push(), and queue.
Referenced by background_task_pool_run(), filelist_cache_preview_runf(), filelist_cache_previews_push(), blender::compositor::opencl_schedule(), PreviewLoadJob::push_load_request(), and blender::compositor::threading_model_queue_schedule().
void BLI_thread_queue_wait_finish | ( | ThreadQueue * | queue | ) |
Definition at line 778 of file threads.cc.
References BLI_gsqueue_is_empty(), and queue.
Referenced by background_task_pool_work_and_wait(), blender::compositor::opencl_finish(), and blender::compositor::threading_model_queue_finish().
void BLI_thread_unlock | ( | int | type | ) |
Definition at line 361 of file threads.cc.
References global_mutex_from_type(), and type.
Referenced by accessor_get_ibuf(), BKE_image_ensure_viewer_views(), BKE_image_release_ibuf(), BKE_movieclip_get_cache_segments(), BKE_movieclip_has_cached_frame(), BKE_movieclip_put_frame_if_possible(), colorfn(), blender::compositor::CompositorOperation::deinit_execution(), blender::ed::space_node::draw_nodespace_back_pix(), image_get_render_result(), image_main_region_draw(), image_mipmap_test(), blender::nodes::node_geo_image_texture_cc::ImageFieldsFunction::ImageFieldsFunction(), IMB_display_buffer_acquire(), IMB_display_buffer_release(), imb_partial_display_buffer_update_ex(), IMB_thumb_locks_acquire(), IMB_thumb_locks_release(), IMB_thumb_path_lock(), IMB_thumb_path_unlock(), movieclip_build_proxy_ibuf(), movieclip_get_postprocessed_ibuf(), ntreeTexExecTree(), project_paint_face_init(), SCULPT_undo_push_node(), and view3d_stereo3d_setup().
Definition at line 130 of file threads.cc.
Referenced by task_listbase_test(), BlendfileLoadingBaseTest::TearDownTestCase(), TEST(), and WM_exit_ex().
This is run once at startup.
Definition at line 125 of file threads.cc.
References mainid.
Referenced by main(), BlendfileLoadingBaseTest::SetUpTestCase(), task_listbase_test(), and TEST().
int BLI_threadpool_available_thread_index | ( | struct ListBase * | threadbase | ) |
Returns thread number, for sample patterns or threadsafe tables.
Definition at line 180 of file threads.cc.
References counter, and LISTBASE_FOREACH.
Definition at line 251 of file threads.cc.
References LISTBASE_FOREACH.
Referenced by background_task_pool_work_and_wait().
Definition at line 262 of file threads.cc.
References BLI_freelistN(), BLI_listbase_is_empty(), and LISTBASE_FOREACH.
Referenced by background_task_pool_free(), do_multires_bake(), blender::compositor::opencl_stop(), sb_cf_threads_run(), sb_sfesf_threads_run(), seq_prefetch_free(), blender::compositor::threading_model_queue_stop(), wm_jobs_kill_job(), wm_jobs_timer(), and ww_close_zstd().
tot | When 0 only initializes malloc mutex in a safe way (see sequence.c) problem otherwise: scene render will kill of the mutex! |
Definition at line 134 of file threads.cc.
References Freestyle::a, atomic_fetch_and_add_u(), ThreadSlot::avail, BLI_addtail(), BLI_listbase_clear(), ThreadSlot::do_thread, MEM_callocN, RE_MAX_THREAD, and thread_levels.
Referenced by background_task_pool_create(), do_multires_bake(), blender::compositor::opencl_start(), sb_cf_threads_run(), sb_sfesf_threads_run(), seq_prefetch_start_ex(), blender::compositor::threading_model_queue_start(), WM_jobs_start(), and ww_open_zstd().
Definition at line 212 of file threads.cc.
References ThreadSlot::callerdata, LISTBASE_FOREACH, and tslot_thread_start().
Referenced by background_task_pool_run(), do_multires_bake(), blender::compositor::opencl_start(), sb_cf_threads_run(), sb_sfesf_threads_run(), seq_prefetch_start_ex(), blender::compositor::threading_model_queue_start(), WM_jobs_start(), and ww_write_zstd().
Definition at line 225 of file threads.cc.
References ThreadSlot::callerdata, and LISTBASE_FOREACH.
Referenced by background_task_pool_cancel(), seq_prefetch_free(), seq_prefetch_start_ex(), and ww_write_zstd().
Definition at line 236 of file threads.cc.
References counter, and LISTBASE_FOREACH.
TicketMutex* BLI_ticket_mutex_alloc | ( | void | ) |
Definition at line 530 of file threads.cc.
References TicketMutex::cond, MEM_callocN, and TicketMutex::mutex.
Referenced by DRW_opengl_context_create(), and WM_jobs_get().
void BLI_ticket_mutex_free | ( | TicketMutex * | ticket | ) |
Definition at line 541 of file threads.cc.
References TicketMutex::cond, MEM_freeN, and TicketMutex::mutex.
Referenced by DRW_opengl_context_destroy(), and wm_job_free().
void BLI_ticket_mutex_lock | ( | TicketMutex * | ticket | ) |
Definition at line 548 of file threads.cc.
References TicketMutex::cond, TicketMutex::mutex, TicketMutex::queue_head, and TicketMutex::queue_tail.
Referenced by DRW_notify_view_update(), DRW_opengl_context_enable_ex(), DRW_opengl_render_context_enable(), WM_job_main_thread_lock_acquire(), and wm_job_main_thread_yield().
void BLI_ticket_mutex_unlock | ( | TicketMutex * | ticket | ) |
Definition at line 562 of file threads.cc.
References TicketMutex::cond, TicketMutex::mutex, and TicketMutex::queue_head.
Referenced by DRW_notify_view_update(), DRW_opengl_context_disable_ex(), DRW_opengl_render_context_disable(), WM_job_main_thread_lock_release(), and wm_job_main_thread_yield().