[Bf-blender-cvs] [c224ca36892] lineart-fn-cached: LineArt: Use separate memory pool for chained data.
YimingWu
noreply at git.blender.org
Tue Jun 15 14:09:21 CEST 2021
Commit: c224ca36892a8ea531a3798dbaae182fbd807783
Author: YimingWu
Date: Wed Apr 7 20:53:35 2021 +0800
Branches: lineart-fn-cached
https://developer.blender.org/rBc224ca36892a8ea531a3798dbaae182fbd807783
LineArt: Use separate memory pool for chained data.
===================================================================
M source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
M source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c
M source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
===================================================================
diff --git a/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h b/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
index 44ff0616fe9..a1f3dbd34f1 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
+++ b/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
@@ -232,6 +232,10 @@ typedef struct LineartRenderBuffer {
ListBase wasted_cuts;
SpinLock lock_cuts;
+ /** Separate memory pool for chain data, this goes to the cache, so when we free the main pool,
+ * chains will still be available. */
+ LineartStaticMemPool chain_data_pool;
+
/* Render status */
double view_vector[3];
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c
index 464316b6a10..d936509e5c5 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c
@@ -74,7 +74,7 @@ static LineartEdge *lineart_line_get_connected(LineartBoundingArea *ba,
static LineartLineChain *lineart_chain_create(LineartRenderBuffer *rb)
{
LineartLineChain *rlc;
- rlc = lineart_mem_aquire(&rb->render_data_pool, sizeof(LineartLineChain));
+ rlc = lineart_mem_aquire(&rb->chain_data_pool, sizeof(LineartLineChain));
BLI_addtail(&rb->chains, rlc);
@@ -119,7 +119,7 @@ static LineartLineChainItem *lineart_chain_append_point(LineartRenderBuffer *rb,
return old_rlci;
}
- rlci = lineart_mem_aquire(&rb->render_data_pool, sizeof(LineartLineChainItem));
+ rlci = lineart_mem_aquire(&rb->chain_data_pool, sizeof(LineartLineChainItem));
copy_v2_v2(rlci->pos, fbcoord);
copy_v3_v3(rlci->gpos, gpos);
@@ -149,7 +149,7 @@ static LineartLineChainItem *lineart_chain_prepend_point(LineartRenderBuffer *rb
return rlc->chain.first;
}
- rlci = lineart_mem_aquire(&rb->render_data_pool, sizeof(LineartLineChainItem));
+ rlci = lineart_mem_aquire(&rb->chain_data_pool, sizeof(LineartLineChainItem));
copy_v2_v2(rlci->pos, fbcoord);
copy_v3_v3(rlci->gpos, gpos);
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
index e9cb8453f43..8e8c4785a25 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
@@ -40,6 +40,7 @@
#include "BKE_gpencil_modifier.h"
#include "BKE_material.h"
#include "BKE_mesh.h"
+#include "BKE_pointcache.h"
#include "BKE_scene.h"
#include "DEG_depsgraph_query.h"
#include "DNA_camera_types.h"
@@ -2627,6 +2628,7 @@ static void lineart_destroy_render_data(LineartRenderBuffer *rb)
BLI_spin_end(&rb->render_data_pool.lock_mem);
lineart_mem_destroy(&rb->render_data_pool);
+ lineart_mem_destroy(&rb->chain_data_pool);
}
void MOD_lineart_destroy_render_data(LineartGpencilModifierData *lmd)
More information about the Bf-blender-cvs
mailing list