[Bf-blender-cvs] [164b5ce0949] temp-lineart-contained: LineArt: Fix tile lock assigning, now not locking the entire hierachy.
YimingWu
noreply at git.blender.org
Fri Apr 22 10:42:53 CEST 2022
Commit: 164b5ce09497fba895f472945dddc120bf738174
Author: YimingWu
Date: Fri Apr 22 15:59:44 2022 +0800
Branches: temp-lineart-contained
https://developer.blender.org/rB164b5ce09497fba895f472945dddc120bf738174
LineArt: Fix tile lock assigning, now not locking the entire hierachy.
===================================================================
M source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
===================================================================
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
index 5d1c8111b88..d0f5086a822 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
@@ -4304,7 +4304,7 @@ static void lineart_bounding_area_split(LineartRenderBuffer *rb,
&rb->render_data_pool, sizeof(LineartTriangle *) * LRT_TILE_SPLITTING_TRIANGLE_LIMIT);
ba[i].linked_lines = lineart_mem_acquire_thread(
&rb->render_data_pool, sizeof(LineartEdge *) * LRT_TILE_EDGE_COUNT_INITIAL);
- ba[i].lock = root->lock;
+ BLI_spin_init(&ba[i].lock);
}
for (int i = 0; i < root->triangle_count; i++) {
@@ -4449,8 +4449,14 @@ static void lineart_bounding_area_link_triangle(LineartRenderBuffer *rb,
if (recursive && do_intersection && rb->use_intersections) {
lineart_triangle_intersect_in_bounding_area(rb, tri, root_ba, th);
}
+ if (do_lock) {
+ BLI_spin_unlock(&root_ba->lock);
+ }
}
else {
+ if (do_lock) {
+ BLI_spin_unlock(&root_ba->lock);
+ }
LineartBoundingArea *ba = root_ba->child;
double *B1 = LRUB;
double b[4];
@@ -4463,25 +4469,21 @@ static void lineart_bounding_area_link_triangle(LineartRenderBuffer *rb,
}
if (LRT_BOUND_AREA_CROSSES(B1, &ba[0].l)) {
lineart_bounding_area_link_triangle(
- rb, &ba[0], tri, B1, recursive, recursive_level + 1, do_intersection, false, th);
+ rb, &ba[0], tri, B1, recursive, recursive_level + 1, do_intersection, true, th);
}
if (LRT_BOUND_AREA_CROSSES(B1, &ba[1].l)) {
lineart_bounding_area_link_triangle(
- rb, &ba[1], tri, B1, recursive, recursive_level + 1, do_intersection, false, th);
+ rb, &ba[1], tri, B1, recursive, recursive_level + 1, do_intersection, true, th);
}
if (LRT_BOUND_AREA_CROSSES(B1, &ba[2].l)) {
lineart_bounding_area_link_triangle(
- rb, &ba[2], tri, B1, recursive, recursive_level + 1, do_intersection, false, th);
+ rb, &ba[2], tri, B1, recursive, recursive_level + 1, do_intersection, true, th);
}
if (LRT_BOUND_AREA_CROSSES(B1, &ba[3].l)) {
lineart_bounding_area_link_triangle(
- rb, &ba[3], tri, B1, recursive, recursive_level + 1, do_intersection, false, th);
+ rb, &ba[3], tri, B1, recursive, recursive_level + 1, do_intersection, true, th);
}
}
-
- if (do_lock) {
- BLI_spin_unlock(&root_ba->lock);
- }
}
static void lineart_bounding_area_link_edge(LineartRenderBuffer *rb,
More information about the Bf-blender-cvs
mailing list