From c931a0057ffea26175a2dc111718e5f3590b00f8 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sun, 29 Sep 2019 01:38:44 +0200 Subject: Sculpt: use dynamic scheduling and chunk size 1 for multithreading This is under the assumptions that each node has enough work to avoid the threading overhead, while also having a possible variable amount of work. For example most of the vertices being masked or outside of the brush radius. Improves performance by about 10% for tools like mesh filter on an entire 3 million poly mesh, tested on a quad core. Ref T68873 --- source/blender/blenkernel/intern/pbvh.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source/blender/blenkernel') diff --git a/source/blender/blenkernel/intern/pbvh.c b/source/blender/blenkernel/intern/pbvh.c index 79586c71673..bfc513454b4 100644 --- a/source/blender/blenkernel/intern/pbvh.c +++ b/source/blender/blenkernel/intern/pbvh.c @@ -2550,7 +2550,9 @@ void BKE_pbvh_parallel_range_settings(TaskParallelSettings *settings, bool use_threading, int totnode) { - const int threaded_limit = 4; + const int threaded_limit = 1; BLI_parallel_range_settings_defaults(settings); settings->use_threading = use_threading && (totnode > threaded_limit); + settings->min_iter_per_thread = 1; + settings->scheduling_mode = TASK_SCHEDULING_DYNAMIC; } -- cgit v1.2.3