[Bf-blender-cvs] [95fe75cace2] temp-lineart-contained: Revert " LineArt: Thread optimized memory pool"
YimingWu
noreply at git.blender.org
Sun Apr 3 12:04:13 CEST 2022
Commit: 95fe75cace224d4a29babedc7ca1506630440334
Author: YimingWu
Date: Sun Apr 3 16:21:13 2022 +0800
Branches: temp-lineart-contained
https://developer.blender.org/rB95fe75cace224d4a29babedc7ca1506630440334
Revert " LineArt: Thread optimized memory pool"
This reverts commit f14ad1eabfcb23a1854c58fbe174cdac4f1e246f.
===================================================================
M source/blender/gpencil_modifiers/CMakeLists.txt
M source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
D source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp
M source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
M source/blender/gpencil_modifiers/intern/lineart/lineart_intern.h
M source/blender/gpencil_modifiers/intern/lineart/lineart_util.c
===================================================================
diff --git a/source/blender/gpencil_modifiers/CMakeLists.txt b/source/blender/gpencil_modifiers/CMakeLists.txt
index 94df32478b0..6108629183c 100644
--- a/source/blender/gpencil_modifiers/CMakeLists.txt
+++ b/source/blender/gpencil_modifiers/CMakeLists.txt
@@ -1,18 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright 2018 Blender Foundation. All rights reserved.
-if(WITH_TBB)
- add_definitions(-DWITH_TBB)
-
- list(APPEND INC_SYS
- ${TBB_INCLUDE_DIRS}
- )
-
- list(APPEND LIB
- ${TBB_LIBRARIES}
- )
-endif()
-
set(INC
.
intern
@@ -36,19 +24,10 @@ set(INC
${CMAKE_BINARY_DIR}/source/blender/makesrna
)
-list(APPEND INC_SYS
+set(INC_SYS
${ZLIB_INCLUDE_DIRS}
)
-if(WITH_CYCLES_EMBREE)
- add_definitions(-DWITH_EMBREE)
- add_definitions(-DEMBREE_STATIC_LIB)
- include_directories(
- SYSTEM
- ${EMBREE_INCLUDE_DIRS}
- )
-endif()
-
set(SRC
intern/MOD_gpencil_ui_common.c
@@ -85,7 +64,6 @@ set(SRC
intern/MOD_gpencil_util.h
# Lineart code
- intern/lineart/lineart_cpp_bridge.cpp
intern/lineart/lineart_chain.c
intern/lineart/lineart_cpu.c
intern/lineart/lineart_ops.c
diff --git a/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h b/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
index 1c69ed56afb..3c6eb8a47af 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
+++ b/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
@@ -29,12 +29,10 @@ typedef struct LineartStaticMemPoolNode {
/* User memory starts here */
} LineartStaticMemPoolNode;
-typedef struct _LineartMemPool {
+typedef struct LineartStaticMemPool {
ListBase pools;
SpinLock lock_mem;
-} _LineartMemPool;
-
-typedef struct _LineartMemPool *LineartMemPool;
+} LineartStaticMemPool;
typedef struct LineartTriangleAdjacent {
struct LineartEdge *e[3];
@@ -246,13 +244,13 @@ typedef struct LineartRenderBuffer {
ListBase intersecting_vertex_buffer;
/** Use the one comes with Line Art. */
- LineartMemPool render_data_pool;
+ LineartStaticMemPool render_data_pool;
ListBase wasted_cuts;
SpinLock lock_cuts;
/* This is just a reference to LineartCache::chain_data_pool, which is not cleared after line art
* completes which serves as a cache. */
- LineartMemPool *chain_data_pool;
+ LineartStaticMemPool *chain_data_pool;
/* Render status */
double view_vector[3];
@@ -342,7 +340,7 @@ typedef struct LineartRenderBuffer {
typedef struct LineartCache {
/** Separate memory pool for chain data, this goes to the cache, so when we free the main pool,
* chains will still be available. */
- LineartMemPool chain_data_pool;
+ LineartStaticMemPool chain_data_pool;
/** A copy of rb->Chains after calculation is done, then we can destroy rb. */
ListBase chains;
@@ -739,15 +737,3 @@ void MOD_lineart_gpencil_generate(LineartCache *cache,
float MOD_lineart_chain_compute_length(LineartEdgeChain *ec);
void ED_operatortypes_lineart(void);
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-LineartMemPool lineart_mem_init(void);
-LineartMemPool lineart_mem_local(LineartMemPool smp);
-void lineart_mem_destroy_internal(LineartMemPool *mp);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp
deleted file mode 100644
index ab372e7ab04..00000000000
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-
-#include "MOD_lineart.h"
-
-#include "lineart_intern.h"
-
-#include "BLI_enumerable_thread_specific.hh"
-#include "BLI_task.h"
-#include "BLI_utildefines.h"
-#include "BLI_vector.hh"
-
-#include "MEM_guardedalloc.h"
-
-using blender::Vector;
-using blender::threading::EnumerableThreadSpecific;
-
-typedef EnumerableThreadSpecific<_LineartMemPool> _LineartStaticMemPoolThread;
-typedef struct _LineartMemPool *LineartMemPool;
-
-LineartMemPool lineart_mem_init()
-{
- _LineartStaticMemPoolThread *result = new _LineartStaticMemPoolThread;
- return (LineartMemPool)result;
-}
-
-LineartMemPool lineart_mem_local(LineartMemPool smp)
-{
- _LineartStaticMemPoolThread *smp_thread = (_LineartStaticMemPoolThread *)smp;
- return (LineartMemPool)&smp_thread->local();
-}
-
-void lineart_mem_destroy_internal(LineartMemPool *mp)
-{
- if (!(*mp)) {
- return;
- }
- for (const _LineartMemPool &local : (*(_LineartStaticMemPoolThread *)(*mp))) {
- LineartStaticMemPoolNode *smpn;
- _LineartMemPool *smp = (_LineartMemPool *)(&local);
- while ((smpn = (LineartStaticMemPoolNode *)BLI_pophead(&smp->pools)) != NULL) {
- MEM_freeN(smpn);
- }
- }
- _LineartStaticMemPoolThread *smp_thread = (_LineartStaticMemPoolThread *)(*mp);
- delete smp_thread;
- (*mp) = NULL;
-}
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
index caf5bfccef8..69b4eb0efc5 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
@@ -2756,8 +2756,8 @@ static void lineart_object_load_worker(TaskPool *__restrict UNUSED(pool),
//- Assign the number of objects instead of number of threads
printf("thread start: %d\n", olti->thread_id);
for (LineartObjectInfo *obi = olti->pending; obi; obi = obi->next) {
- // lineart_geometry_object_load_no_bmesh(obi, olti->rb);
- lineart_geometry_object_load(obi, olti->rb);
+ lineart_geometry_object_load_no_bmesh(obi, olti->rb);
+ // lineart_geometry_object_load(obi, olti->rb);
printf("thread id: %d processed: %d\n", olti->thread_id, obi->original_me->totpoly);
}
printf("thread end: %d\n", olti->thread_id);
@@ -3823,7 +3823,7 @@ static void lineart_destroy_render_data(LineartRenderBuffer *rb)
BLI_spin_end(&rb->lock_task);
BLI_spin_end(&rb->lock_cuts);
- // BLI_spin_end(&rb->render_data_pool.lock_mem);
+ BLI_spin_end(&rb->render_data_pool.lock_mem);
for (int i = 0; i < rb->bounding_area_initial_count; i++) {
BLI_spin_end(&rb->lock_bounding_areas[i]);
@@ -3989,7 +3989,7 @@ static LineartRenderBuffer *lineart_create_render_buffer(Scene *scene,
BLI_spin_init(&rb->lock_task);
BLI_spin_init(&rb->lock_cuts);
- // BLI_spin_init(&rb->render_data_pool.lock_mem);
+ BLI_spin_init(&rb->render_data_pool.lock_mem);
rb->thread_count = BKE_render_num_threads(&scene->r);
@@ -4093,7 +4093,7 @@ static void lineart_bounding_areas_connect_new(LineartRenderBuffer *rb, LineartB
{
LineartBoundingArea *ba = root->child, *tba;
LinkData *lip2, *next_lip;
- LineartMemPool *mph = &rb->render_data_pool;
+ LineartStaticMemPool *mph = &rb->render_data_pool;
/* Inter-connection with newly created 4 child bounding areas. */
lineart_list_append_pointer_pool(&ba[1].rp, mph, &ba[0]);
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_intern.h b/source/blender/gpencil_modifiers/intern/lineart/lineart_intern.h
index d2c38dd87b3..5f6cc5086e5 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_intern.h
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_intern.h
@@ -19,33 +19,40 @@
struct LineartEdge;
struct LineartRenderBuffer;
-typedef struct _LineartMemPool *LineartMemPool;
+struct LineartStaticMemPool;
struct LineartStaticMemPoolNode;
-void *lineart_list_append_pointer_pool(ListBase *list, LineartMemPool *smp, void *data);
+void *lineart_list_append_pointer_pool(ListBase *list,
+ struct LineartStaticMemPool *smp,
+ void *data);
void *lineart_list_append_pointer_pool_sized(ListBase *list,
- LineartMemPool *smp,
+ struct LineartStaticMemPool *smp,
void *data,
int size);
-void *lineart_list_append_pointer_pool_thread(ListBase *list, LineartMemPool *smp, void *data);
+void *lineart_list_append_pointer_pool_thread(ListBase *list,
+ struct LineartStaticMemPool *smp,
+ void *data);
void *lineart_list_append_pointer_pool_sized_thread(ListBase *list,
- LineartMemPool *smp,
+ LineartStaticMemPool *smp,
void *data,
int size);
-void *list_push_pointer_static(ListBase *list, LineartMemPool *smp, void *p);
-void *list_push_pointer_static_sized(ListBase *list, LineartMemPool *smp, void *p, int size);
+void *list_push_pointer_static(ListBase *list, struct LineartStaticMemPool *smp, void *p);
+void *list_push_pointer_static_sized(ListBase *list,
+ struct LineartStaticMemPool *smp,
+ void *p,
+ int size);
void *lineart_list_pop_pointer_no_free(ListBase *list);
void lineart_list_remove_pointer_item_no_free(ListBase *list, LinkData *lip);
-struct LineartStaticMemPoolNode *lineart_mem_new_static_pool(struct _LineartMemPool *smp,
+struct LineartStaticMemPoolNode *lineart_mem_new_static_pool(struct LineartStaticMemPool *smp,
size_t size);
-void *lineart_mem_acquire(LineartMemPool *mp, size_t size);
-void *lineart_mem_acquire_thread(LineartMemPool *mp, size_t size);
-void lineart_mem_destroy(LineartMemPool *mp);
+void *lineart_mem_acquire(struct LineartStaticMemPool *smp, size_t size);
+void *lineart_mem_acquire_thread(struct LineartStaticMemPool *smp, size_t size);
+void lineart_mem_destroy(struct LineartStaticMemPool *smp);
void lineart_prepend_edge_direct(void **list_head, void *node);
-void lineart_prepend_pool(LinkNode **first, LineartMemPool *smp, void *link);
+void lineart_prepend_pool(LinkNode **first, struct LineartStaticMemPool *smp, void *link);
void lineart_matrix_ortho_44d(double
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list