Blender Git Commit Log

Git Commits -> Revision d8a3f35

Revision d8a3f35 by Brecht Van Lommel (master)
April 30, 2020, 06:09 (GMT)
Task: Use TBB as Task Scheduler

This patch enables TBB as the default task scheduler. TBB stands for Threading Building Blocks and is developed by Intel. The library contains several threading patters. This patch maps blenders BLI_task_* function to their counterpart. After this patch we can add more patterns. A promising one is TBB:graph that can be used for depsgraph, draw manager and compositor.

Performance changes depends on the actual hardware. It was tested on different hardwares from laptops to workstations and we didn't detected any downgrade of the performance.
* Linux Xeon E5-2699 v4 got FPS boost from 12 to 17 using Spring's 04_010_A.anim.blend.
* AMD Ryzen Threadripper 2990WX 32-Core Animation playback goes from 9.5-10.5 FPS to 13.0-14.0 FPS on Agent 327 , 10_03_B.anim.blend.

Reviewed By: brecht, sergey

Differential Revision: https://developer.blender.org/D7475

Commit Details:

Full Hash: d8a3f3595af0fb3ca5937e41c2728fd750d986ef
Parent Commit: a18ad3c
Committed By: Jeroen Bakker
Lines Changed: +901, -1747

2 Added Paths:

/source/blender/blenlib/intern/task_range.cc (+167, -0) (View)
/source/blender/blenlib/intern/task_scheduler.cc (+73, -0) (View)

1 Deleted Path:

/source/blender/blenkernel/intern/pbvh_parallel.cc (+0, -148)

44 Modified Paths:

/build_files/cmake/Modules/GTestTesting.cmake (+3, -0) (Diff)
/source/blender/blenkernel/BKE_pbvh.h (+2, -21) (Diff)
/source/blender/blenkernel/CMakeLists.txt (+0, -1) (Diff)
/source/blender/blenkernel/intern/editmesh_tangent.c (+2, -5) (Diff)
/source/blender/blenkernel/intern/mesh_evaluate.c (+2, -6) (Diff)
/source/blender/blenkernel/intern/mesh_tangent.c (+2, -6) (Diff)
/source/blender/blenkernel/intern/ocean.c (+9, -26) (Diff)
/source/blender/blenkernel/intern/particle.c (+2, -7) (Diff)
/source/blender/blenkernel/intern/particle_distribute.c (+3, -9) (Diff)
/source/blender/blenkernel/intern/pbvh.c (+14, -14) (Diff)
/source/blender/blenlib/BLI_task.h (+14, -52) (Diff)
/source/blender/blenlib/BLI_threads.h (+0, -2) (Diff)
/source/blender/blenlib/CMakeLists.txt (+11, -1) (Diff)
/source/blender/blenlib/intern/task_iterator.c (+15, -326) (Diff)
/source/blender/blenlib/intern/task_pool.cc (+319, -824) (Diff)
/source/blender/blenlib/intern/threads.c (+0, -26) (Diff)
/source/blender/depsgraph/intern/eval/deg_eval.cc (+23, -32) (Diff)
/source/blender/draw/intern/draw_cache_extract_mesh.c (+5, -5) (Diff)
/source/blender/editors/mesh/editmesh_undo.c (+2, -6) (Diff)
/source/blender/editors/physics/particle_edit.c (+1, -6) (Diff)
/source/blender/editors/render/render_opengl.c (+3, -14) (Diff)
/source/blender/editors/sculpt_paint/paint_cursor.c (+4, -3) (Diff)
/source/blender/editors/sculpt_paint/paint_image_proj.c (+3, -7) (Diff)
/source/blender/editors/sculpt_paint/paint_mask.c (+6, -6) (Diff)
/source/blender/editors/sculpt_paint/paint_vertex.c (+14, -14) (Diff)
/source/blender/editors/sculpt_paint/sculpt.c (+111, -95) (Diff)
/source/blender/editors/sculpt_paint/sculpt_cloth.c (+8, -7) (Diff)
/source/blender/editors/sculpt_paint/sculpt_face_set.c (+9, -6) (Diff)
/source/blender/editors/sculpt_paint/sculpt_filter_mask.c (+7, -7) (Diff)
/source/blender/editors/sculpt_paint/sculpt_filter_mesh.c (+5, -5) (Diff)
/source/blender/editors/sculpt_paint/sculpt_mask_expand.c (+4, -4) (Diff)
/source/blender/editors/sculpt_paint/sculpt_multiplane_scrape.c (+8, -6) (Diff)
/source/blender/editors/sculpt_paint/sculpt_pose.c (+6, -6) (Diff)
/source/blender/editors/sculpt_paint/sculpt_smooth.c (+19, -12) (Diff)
/source/blender/editors/sculpt_paint/sculpt_transform.c (+2, -2) (Diff)
/source/blender/editors/sculpt_paint/sculpt_undo.c (+2, -2) (Diff)
/source/blender/editors/space_clip/clip_editor.c (+3, -4) (Diff)
/source/blender/editors/space_clip/clip_ops.c (+3, -4) (Diff)
/source/blender/editors/space_file/filelist.c (+2, -6) (Diff)
/source/blender/imbuf/intern/imageprocess.c (+4, -8) (Diff)
/source/blender/windowmanager/intern/wm_init_exit.c (+2, -0) (Diff)
/source/creator/creator.c (+4, -0) (Diff)
/tests/gtests/blenlib/BLI_linklist_lockfree_test.cc (+2, -5) (Diff)
/tests/gtests/blenlib/BLI_task_test.cc (+1, -1) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021