[Bf-blender-cvs] [6ab328ec3a0] lineart-shadow: LineArt: Set default tile count to 10x10
YimingWu
noreply at git.blender.org
Thu Mar 31 08:42:47 CEST 2022
Commit: 6ab328ec3a047e46a7925d5b19878955ef6efb3f
Author: YimingWu
Date: Tue Mar 29 14:00:27 2022 +0800
Branches: lineart-shadow
https://developer.blender.org/rB6ab328ec3a047e46a7925d5b19878955ef6efb3f
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 7539395ef28..4490bf8b5ab 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
+++ b/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
@@ -258,7 +258,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 306d1e3c87f..b2a109f9b48 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
@@ -3190,9 +3190,7 @@ static void lineart_destroy_render_data(LineartRenderBuffer *rb)
BLI_spin_end(&rb->lock_cuts);
BLI_spin_end(&rb->render_data_pool.lock_mem);
- MEM_freeN((void *)rb->lock_bounding_areas);
-
- 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]);
}
@@ -3387,10 +3385,6 @@ static LineartRenderBuffer *lineart_create_render_buffer(Scene *scene,
rb->thread_count = BKE_render_num_threads(&scene->r);
- rb->lock_bounding_areas = MEM_callocN(sizeof(SpinLock) * rb->thread_count, "ba spin locks");
- for (int i = 0; i < rb->thread_count; i++) {
- BLI_spin_init(&rb->lock_bounding_areas[i]);
- }
return rb;
}
@@ -3420,9 +3414,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;
@@ -3449,7 +3448,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. */
@@ -3721,8 +3720,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 f1800f9378f..6ce042450af 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_intern.h
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_intern.h
@@ -144,4 +144,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