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
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs