[Bf-blender-cvs] [76574b33008] temp-lineart-contained: LineArt: Set default tile count to 10x10

YimingWu noreply at git.blender.org
Tue Mar 29 08:05:16 CEST 2022


Commit: 76574b33008b20596770ae7ef3dbe5ede0e1b0d3
Author: YimingWu
Date:   Tue Mar 29 14:00:27 2022 +0800
Branches: temp-lineart-contained
https://developer.blender.org/rB76574b33008b20596770ae7ef3dbe5ede0e1b0d3

LineArt: Set default tile count to 10x10

This increases performance by reducing conflicts.

===================================================================

M	source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
M	source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
M	source/blender/gpencil_modifiers/intern/lineart/lineart_intern.h

===================================================================

diff --git a/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h b/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
index 0a4062ba0b9..2be7473637f 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
+++ b/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
@@ -217,7 +217,7 @@ typedef struct LineartRenderBuffer {
   float overscan;
 
   struct LineartBoundingArea *initial_bounding_areas;
-  unsigned int bounding_area_count;
+  unsigned int bounding_area_initial_count;
 
   /* Array of thread_count length for spatial locks. */
   SpinLock *lock_bounding_areas;
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
index 4987622f87c..d7be1ba3f43 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
@@ -3145,7 +3145,7 @@ static void lineart_destroy_render_data(LineartRenderBuffer *rb)
   BLI_spin_end(&rb->lock_cuts);
   BLI_spin_end(&rb->render_data_pool.lock_mem);
 
-  for (int i = 0; i < rb->thread_count; i++) {
+  for (int i = 0; i < rb->bounding_area_initial_count; i++) {
     BLI_spin_end(&rb->lock_bounding_areas[i]);
   }
 
@@ -3313,11 +3313,6 @@ static LineartRenderBuffer *lineart_create_render_buffer(Scene *scene,
 
   rb->thread_count = BKE_render_num_threads(&scene->r);
 
-  rb->lock_bounding_areas = lineart_mem_acquire(&rb->render_data_pool,
-                                                sizeof(SpinLock) * rb->thread_count);
-  for (int i = 0; i < rb->thread_count; i++) {
-    BLI_spin_init(&rb->lock_bounding_areas[i]);
-  }
   return rb;
 }
 
@@ -3347,9 +3342,14 @@ static void lineart_main_bounding_area_make_initial(LineartRenderBuffer *rb)
   rb->width_per_tile = span_w;
   rb->height_per_tile = span_h;
 
-  rb->bounding_area_count = sp_w * sp_h;
+  rb->bounding_area_initial_count = sp_w * sp_h;
   rb->initial_bounding_areas = lineart_mem_acquire(
-      &rb->render_data_pool, sizeof(LineartBoundingArea) * rb->bounding_area_count);
+      &rb->render_data_pool, sizeof(LineartBoundingArea) * rb->bounding_area_initial_count);
+  rb->lock_bounding_areas = lineart_mem_acquire(
+      &rb->render_data_pool, sizeof(SpinLock) * rb->bounding_area_initial_count);
+  for (int i = 0; i < rb->bounding_area_initial_count; i++) {
+    BLI_spin_init(&rb->lock_bounding_areas[i]);
+  }
 
   int i_ba = 0;
 
@@ -3376,7 +3376,7 @@ static void lineart_main_bounding_area_make_initial(LineartRenderBuffer *rb)
                                              sizeof(LineartEdge *) * ba->max_line_count);
 
       /* Spatial lock assignment. */
-      ba->lock = &rb->lock_bounding_areas[i_ba / lock_group_inc];
+      ba->lock = &rb->lock_bounding_areas[i_ba % rb->bounding_area_initial_count];
       i_ba++;
 
       /* Link adjacent ones. */
@@ -3648,8 +3648,6 @@ static void lineart_bounding_area_split(LineartRenderBuffer *rb,
           rb, &cba[3], tri, b, 0, recursive_level + 1, false, false, NULL);
     }
   }
-
-  rb->bounding_area_count += 3;
 }
 
 static bool lineart_bounding_area_edge_intersect(LineartRenderBuffer *UNUSED(fb),
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_intern.h b/source/blender/gpencil_modifiers/intern/lineart/lineart_intern.h
index 3f81d9defc1..5f6cc5086e5 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_intern.h
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_intern.h
@@ -128,4 +128,4 @@ void lineart_count_and_print_render_buffer_memory(struct LineartRenderBuffer *rb
 
 /* Initial bounding area row/column count, setting 4 is the simplest way algorithm could function
  * efficiently. */
-#define LRT_BA_ROWS 4
+#define LRT_BA_ROWS 10



More information about the Bf-blender-cvs mailing list