diff options
author | Antonioya <blendergit@gmail.com> | 2019-01-11 18:58:18 +0300 |
---|---|---|
committer | Antonioya <blendergit@gmail.com> | 2019-01-11 18:58:42 +0300 |
commit | 6c056f9ae2d7898fe577d71a20daf4984838a577 (patch) | |
tree | 94c8f77f6417bc64f566f7d5276de41aa58c3064 | |
parent | 1c91b6ee29845c323ffd3f477b56f3a68f4e76be (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.c | 4 | ||||
-rw-r--r-- | source/blender/draw/engines/gpencil/gpencil_draw_utils.c | 4 |
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; |