[Bf-blender-cvs] [731b9ad1371] temp-lineart-contained: LineArt: Use separate memory pool for chained data.
YimingWu
noreply at git.blender.org
Wed Apr 7 17:03:41 CEST 2021
Commit: 731b9ad1371844585768f1f6ef65cde305340af2
Author: YimingWu
Date: Wed Apr 7 20:53:35 2021 +0800
Branches: temp-lineart-contained
https://developer.blender.org/rB731b9ad1371844585768f1f6ef65cde305340af2
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 a1d7e14cdb3..84a6530e43b 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
+++ b/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
@@ -234,6 +234,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 9ac384a6a70..d1cf2fea48f 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"
@@ -2735,6 +2736,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