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,

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to