[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