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