[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