diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-09-23 12:02:58 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-09-23 12:09:00 +0300 |
commit | 1d1ef2e79793ab57920f81739bfb3b6b8101fb99 (patch) | |
tree | c7d0dd773ca89051b364921467b5b6b77521e5e4 /source/blender/draw/intern/draw_cache_impl_mesh.c | |
parent | 3a1b0c0f3035afcfb5f082bb43b27296cc94dafe (diff) |
Revert part of "GPencil: Invert Paste operator and make Paste to Active default"
This commit accidentally undid a bunch of previous commits. Only the intended
changes are left now.
Diffstat (limited to 'source/blender/draw/intern/draw_cache_impl_mesh.c')
-rw-r--r-- | source/blender/draw/intern/draw_cache_impl_mesh.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c index 56b2b20cc05..e399b784145 100644 --- a/source/blender/draw/intern/draw_cache_impl_mesh.c +++ b/source/blender/draw/intern/draw_cache_impl_mesh.c @@ -1016,6 +1016,26 @@ void DRW_mesh_batch_cache_create_requested( } } + /* HACK: if MBC_SURF_PER_MAT is requested and ibo.tris is already available, it won't have it's + * index ranges initialized. So discard ibo.tris in order to recreate it. + * This needs to happen before saved_elem_ranges is populated. */ + if ((batch_requested & MBC_SURF_PER_MAT) != 0 && (cache->batch_ready & MBC_SURF_PER_MAT) == 0) { + FOREACH_MESH_BUFFER_CACHE(cache, mbuffercache) + { + GPU_INDEXBUF_DISCARD_SAFE(mbuffercache->ibo.tris); + } + /* Clear all batches that reference ibo.tris. */ + GPU_BATCH_CLEAR_SAFE(cache->batch.surface); + GPU_BATCH_CLEAR_SAFE(cache->batch.surface_weights); + GPU_BATCH_CLEAR_SAFE(cache->batch.edit_mesh_analysis); + GPU_BATCH_CLEAR_SAFE(cache->batch.edit_triangles); + GPU_BATCH_CLEAR_SAFE(cache->batch.edit_lnor); + GPU_BATCH_CLEAR_SAFE(cache->batch.edit_selection_faces); + + cache->batch_ready &= ~(MBC_SURFACE | MBC_SURFACE_WEIGHTS | MBC_EDIT_MESH_ANALYSIS | + MBC_EDIT_TRIANGLES | MBC_EDIT_LNOR | MBC_EDIT_SELECTION_FACES); + } + if (batch_requested & (MBC_SURFACE | MBC_SURF_PER_MAT | MBC_WIRE_LOOPS_UVS | MBC_EDITUV_FACES_STRETCH_AREA | MBC_EDITUV_FACES_STRETCH_ANGLE | MBC_EDITUV_FACES | MBC_EDITUV_EDGES | MBC_EDITUV_VERTS)) { |