Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonioya <blendergit@gmail.com>2019-01-11 18:58:18 +0300
committerAntonioya <blendergit@gmail.com>2019-01-11 18:58:42 +0300
commit6c056f9ae2d7898fe577d71a20daf4984838a577 (patch)
tree94c8f77f6417bc64f566f7d5276de41aa58c3064
parent1c91b6ee29845c323ffd3f477b56f3a68f4e76be (diff)
GP: Reduce memory reallocation in multiedit mode
There was a problem counting the number of points for edit points and lines. Now the total size is used allocating the VBO size and not the stroke size.
-rw-r--r--source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c4
-rw-r--r--source/blender/draw/engines/gpencil/gpencil_draw_utils.c4
2 files changed, 5 insertions, 3 deletions
diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
index d5927ebca9a..beb9f3ee847 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
@@ -540,7 +540,7 @@ void DRW_gpencil_get_edit_geom(struct GpencilBatchCacheElem *be, bGPDstroke *gps
be->thickness_id = GPU_vertformat_attr_add(&be->format, "size", GPU_COMP_F32, 1, GPU_FETCH_FLOAT);
be->vbo = GPU_vertbuf_create_with_format(&be->format);
- GPU_vertbuf_data_alloc(be->vbo, gps->totpoints);
+ GPU_vertbuf_data_alloc(be->vbo, be->tot_vertex);
be->vbo_len = 0;
}
gpencil_vbo_ensure_size(be, gps->totpoints);
@@ -619,7 +619,7 @@ void DRW_gpencil_get_edlin_geom(struct GpencilBatchCacheElem *be, bGPDstroke *gp
be->color_id = GPU_vertformat_attr_add(&be->format, "color", GPU_COMP_F32, 4, GPU_FETCH_FLOAT);
be->vbo = GPU_vertbuf_create_with_format(&be->format);
- GPU_vertbuf_data_alloc(be->vbo, gps->totpoints);
+ GPU_vertbuf_data_alloc(be->vbo, be->tot_vertex);
be->vbo_len = 0;
}
gpencil_vbo_ensure_size(be, gps->totpoints);
diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
index 8bcd1e13fe1..bd0f6afd420 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
@@ -117,7 +117,7 @@ static void gpencil_calc_vertex(
cache_ob->tot_vertex += gps->totpoints + 3;
cache_ob->tot_triangles += gps->totpoints - 1;
}
- if (!is_onion) {
+ if ((!is_multiedit) && (!is_onion)) {
break;
}
}
@@ -126,6 +126,8 @@ static void gpencil_calc_vertex(
cache->b_fill.tot_vertex = cache_ob->tot_triangles * 3;
cache->b_stroke.tot_vertex = cache_ob->tot_vertex;
cache->b_point.tot_vertex = cache_ob->tot_vertex;
+ cache->b_edit.tot_vertex = cache_ob->tot_vertex;
+ cache->b_edlin.tot_vertex = cache_ob->tot_vertex;
/* some modifiers can change the number of points */
int factor = 0;