[Bf-blender-cvs] [8314e201398] master: BLI_bvhtree_overlap: Don't use BLI_task API when not needed
mano-wii
noreply at git.blender.org
Sat Jan 4 12:37:15 CET 2020
Commit: 8314e201398a22522e25eb3254d5b47f4f3f65f4
Author: mano-wii
Date: Sat Jan 4 08:34:10 2020 -0300
Branches: master
https://developer.blender.org/rB8314e201398a22522e25eb3254d5b47f4f3f65f4
BLI_bvhtree_overlap: Don't use BLI_task API when not needed
No functional change.
===================================================================
M source/blender/blenlib/intern/BLI_kdopbvh.c
===================================================================
diff --git a/source/blender/blenlib/intern/BLI_kdopbvh.c b/source/blender/blenlib/intern/BLI_kdopbvh.c
index 7ac4a362cf4..d5bedaadb8b 100644
--- a/source/blender/blenlib/intern/BLI_kdopbvh.c
+++ b/source/blender/blenlib/intern/BLI_kdopbvh.c
@@ -113,7 +113,6 @@ BLI_STATIC_ASSERT((sizeof(void *) == 8 && sizeof(BVHTree) <= 48) ||
typedef struct BVHOverlapData_Shared {
const BVHTree *tree1, *tree2;
axis_t start_axis, stop_axis;
- bool use_threading;
/* use for callbacks */
BVHTree_OverlapCallback callback;
@@ -1252,11 +1251,8 @@ static void bvhtree_overlap_task_cb(void *__restrict userdata,
const int j,
const TaskParallelTLS *__restrict UNUSED(tls))
{
- BVHOverlapData_Thread *data = (BVHOverlapData_Thread *)userdata;
+ BVHOverlapData_Thread *data = &((BVHOverlapData_Thread *)userdata)[j];
BVHOverlapData_Shared *data_shared = data->shared;
- if (data_shared->use_threading) {
- data += j;
- }
if (data_shared->callback) {
tree_overlap_traverse_cb(data,
@@ -1274,11 +1270,8 @@ static void bvhtree_overlap_num_task_cb(void *__restrict userdata,
const int j,
const TaskParallelTLS *__restrict UNUSED(tls))
{
- BVHOverlapData_Thread *data = (BVHOverlapData_Thread *)userdata;
+ BVHOverlapData_Thread *data = &((BVHOverlapData_Thread *)userdata)[j];
BVHOverlapData_Shared *data_shared = data->shared;
- if (data_shared->use_threading) {
- data += j;
- }
tree_overlap_num_recursive(data,
data_shared->tree1->nodes[data_shared->tree1->totleaf]->children[j],
@@ -1333,7 +1326,6 @@ BVHTreeOverlap *BLI_bvhtree_overlap_ex(
data_shared.tree2 = tree2;
data_shared.start_axis = start_axis;
data_shared.stop_axis = stop_axis;
- data_shared.use_threading = use_threading;
/* can be NULL */
data_shared.callback = callback;
@@ -1349,14 +1341,27 @@ BVHTreeOverlap *BLI_bvhtree_overlap_ex(
data[j].thread = j;
}
- TaskParallelSettings settings;
- BLI_parallel_range_settings_defaults(&settings);
- settings.use_threading = use_threading;
- BLI_task_parallel_range(0,
- root_node_len,
- data,
- max_interactions ? bvhtree_overlap_num_task_cb : bvhtree_overlap_task_cb,
- &settings);
+ if (use_threading) {
+ TaskParallelSettings settings;
+ BLI_parallel_range_settings_defaults(&settings);
+ BLI_task_parallel_range(0,
+ root_node_len,
+ data,
+ max_interactions ? bvhtree_overlap_num_task_cb :
+ bvhtree_overlap_task_cb,
+ &settings);
+ }
+ else {
+ if (max_interactions) {
+ tree_overlap_num_recursive(data, root1, root2);
+ }
+ else if (callback) {
+ tree_overlap_traverse_cb(data, root1, root2);
+ }
+ else {
+ tree_overlap_traverse(data, root1, root2);
+ }
+ }
if (overlap_pairs) {
for (j = 0; j < thread_num; j++) {
More information about the Bf-blender-cvs
mailing list