From 8d04f49d0ea53552500e82afea92addaaa939dfd Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Thu, 26 Jan 2017 19:08:27 +0100 Subject: [PATCH] Mesh batch caches update from depsgraph We no longer need to rely on Derived mesh flag since the mesh is properly flushed from the depsgraph --- source/blender/blenkernel/BKE_DerivedMesh.h | 2 -- .../blender/blenkernel/intern/mesh_render.c | 25 +++++++------------ 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index 784c76bffd3..789bc8df7e5 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -172,8 +172,6 @@ typedef enum DMDirtyFlag { /* check this with modifier dependsOnNormals callback to see if normals need recalculation */ DM_DIRTY_NORMALS = 1 << 2, - - DM_MESH_BATCH_CACHE = 1 << 3, } DMDirtyFlag; typedef struct DerivedMesh DerivedMesh; diff --git a/source/blender/blenkernel/intern/mesh_render.c b/source/blender/blenkernel/intern/mesh_render.c index e18b4ceb439..4118208d32f 100644 --- a/source/blender/blenkernel/intern/mesh_render.c +++ b/source/blender/blenkernel/intern/mesh_render.c @@ -255,18 +255,14 @@ static bool mesh_batch_cache_valid(Mesh *me) return false; } - if (cache->is_editmode) { - DerivedMesh *dm = me->edit_btmesh->derivedFinal; - if ((dm->dirty & DM_MESH_BATCH_CACHE) == 0) { - return false; - } - } - if (cache->is_dirty == false) { return true; } else { - if ((cache->tot_edges != mesh_render_get_num_edges(me)) || + if (cache->is_editmode) { + return false; + } + else if ((cache->tot_edges != mesh_render_get_num_edges(me)) || (cache->tot_faces != mesh_render_get_num_faces(me)) || (cache->tot_polys != mesh_render_get_num_polys(me)) || (cache->tot_verts != mesh_render_get_num_verts(me))) @@ -283,14 +279,11 @@ static void mesh_batch_cache_init(Mesh *me) MeshBatchCache *cache = me->batch_cache; cache->is_editmode = me->edit_btmesh != NULL; - cache->tot_edges = mesh_render_get_num_edges(me); - cache->tot_faces = mesh_render_get_num_faces(me); - cache->tot_polys = mesh_render_get_num_polys(me); - cache->tot_verts = mesh_render_get_num_verts(me); - - if (cache->is_editmode) { - DerivedMesh *dm = me->edit_btmesh->derivedFinal; - dm->dirty |= DM_MESH_BATCH_CACHE; + if (cache->is_editmode == false) { + cache->tot_edges = mesh_render_get_num_edges(me); + cache->tot_faces = mesh_render_get_num_faces(me); + cache->tot_polys = mesh_render_get_num_polys(me); + cache->tot_verts = mesh_render_get_num_verts(me); } cache->is_dirty = false;