diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-06-10 11:16:17 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-06-10 17:31:16 +0300 |
commit | bcefce33f24dd3646b84e1baa0db6db76222f1c2 (patch) | |
tree | 9fe354b16d815a8a2ea9fb6735333320d96768db /source/blender/blenlib/intern/task_iterator.c | |
parent | 9df1e0cad54599c53a1eb877651fceb461d88148 (diff) |
BLI_mempool: split thread-safe iteration into the private API
Splitting out thread safe iteration logic means regular iteration
isn't checking for the thread-safe pointer each step.
This gives a small but measurable overall performance gain of 2-3%
when redrawing a high-poly mesh.
Ref D11564
Reviewed By: mont29
Diffstat (limited to 'source/blender/blenlib/intern/task_iterator.c')
-rw-r--r-- | source/blender/blenlib/intern/task_iterator.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/source/blender/blenlib/intern/task_iterator.c b/source/blender/blenlib/intern/task_iterator.c index c45cc2b18b8..ee41c277b34 100644 --- a/source/blender/blenlib/intern/task_iterator.c +++ b/source/blender/blenlib/intern/task_iterator.c @@ -379,11 +379,11 @@ typedef struct ParallelMempoolState { static void parallel_mempool_func(TaskPool *__restrict pool, void *taskdata) { ParallelMempoolState *__restrict state = BLI_task_pool_user_data(pool); - BLI_mempool_iter *iter = &((ParallelMempoolTaskData *)taskdata)->iter; + BLI_mempool_threadsafe_iter *iter = &((ParallelMempoolTaskData *)taskdata)->ts_iter; TaskParallelTLS *tls = &((ParallelMempoolTaskData *)taskdata)->tls; MempoolIterData *item; - while ((item = BLI_mempool_iterstep(iter)) != NULL) { + while ((item = mempool_iter_threadsafe_step(iter)) != NULL) { state->func(state->userdata, item, tls); } } |