[Bf-blender-cvs] [d93a6cdf00b] blender-v2.91-release: DrawManager: Cleanup unneeded memory allocation

Jeroen Bakker noreply at git.blender.org
Tue Nov 3 10:50:42 CET 2020


Commit: d93a6cdf00b0d5409d958ed5d6f6032cf7a4af2a
Author: Jeroen Bakker
Date:   Tue Nov 3 10:43:51 2020 +0100
Branches: blender-v2.91-release
https://developer.blender.org/rBd93a6cdf00b0d5409d958ed5d6f6032cf7a4af2a

DrawManager: Cleanup unneeded memory allocation

`tris_per_mat` is only valid for the final buffer cache. It was
allocated for every buffer cache.

===================================================================

M	source/blender/draw/intern/draw_cache_impl_mesh.c

===================================================================

diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c
index 0da132a8cab..7217be106ae 100644
--- a/source/blender/draw/intern/draw_cache_impl_mesh.c
+++ b/source/blender/draw/intern/draw_cache_impl_mesh.c
@@ -496,10 +496,8 @@ static void mesh_batch_cache_init(Mesh *me)
 
   cache->mat_len = mesh_render_mat_len_get(me);
   cache->surface_per_mat = MEM_callocN(sizeof(*cache->surface_per_mat) * cache->mat_len, __func__);
-  FOREACH_MESH_BUFFER_CACHE (cache, mbufcache) {
-    mbufcache->tris_per_mat = MEM_callocN(sizeof(*mbufcache->tris_per_mat) * cache->mat_len,
+  cache->final.tris_per_mat = MEM_callocN(sizeof(*cache->final.tris_per_mat) * cache->mat_len,
                                           __func__);
-  }
 
   cache->is_dirty = false;
   cache->batch_ready = 0;
@@ -707,16 +705,13 @@ static void mesh_batch_cache_clear(Mesh *me)
     for (int i = 0; i < sizeof(mbufcache->ibo) / sizeof(void *); i++) {
       GPU_INDEXBUF_DISCARD_SAFE(ibos[i]);
     }
+  }
 
-    BLI_assert((mbufcache->tris_per_mat != NULL) || (cache->mat_len == 0));
-    BLI_assert((mbufcache->tris_per_mat != NULL) && (cache->mat_len > 0));
-    if (mbufcache->tris_per_mat) {
-      for (int i = 0; i < cache->mat_len; i++) {
-        GPU_INDEXBUF_DISCARD_SAFE(mbufcache->tris_per_mat[i]);
-      }
-      MEM_SAFE_FREE(mbufcache->tris_per_mat);
-    }
+  for (int i = 0; i < cache->mat_len; i++) {
+    GPU_INDEXBUF_DISCARD_SAFE(cache->final.tris_per_mat[i]);
   }
+  MEM_SAFE_FREE(cache->final.tris_per_mat);
+
   for (int i = 0; i < sizeof(cache->batch) / sizeof(void *); i++) {
     GPUBatch **batch = (GPUBatch **)&cache->batch;
     GPU_BATCH_DISCARD_SAFE(batch[i]);



More information about the Bf-blender-cvs mailing list