[Bf-blender-cvs] [c830c5b16be] master: Cleanup: Move loose geometry cache creation to render data task

Germano Cavalcante noreply at git.blender.org
Wed Jul 21 19:55:29 CEST 2021


Commit: c830c5b16bed32f55b93738f49580a305b906f48
Author: Germano Cavalcante
Date:   Wed Jul 21 14:45:02 2021 -0300
Branches: master
https://developer.blender.org/rBc830c5b16bed32f55b93738f49580a305b906f48

Cleanup: Move loose geometry cache creation to render data task

This centralizes caching functions.

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

M	source/blender/draw/intern/draw_cache_extract_mesh.cc
M	source/blender/draw/intern/draw_cache_extract_mesh_private.h
M	source/blender/draw/intern/draw_cache_extract_mesh_render_data.c

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

diff --git a/source/blender/draw/intern/draw_cache_extract_mesh.cc b/source/blender/draw/intern/draw_cache_extract_mesh.cc
index 6d71b01b7e0..1a602b5b8da 100644
--- a/source/blender/draw/intern/draw_cache_extract_mesh.cc
+++ b/source/blender/draw/intern/draw_cache_extract_mesh.cc
@@ -531,6 +531,7 @@ static void mesh_extract_render_data_node_exec(void *__restrict task_data)
 
   mesh_render_data_update_normals(mr, data_flag);
   mesh_render_data_update_looptris(mr, iter_type, data_flag);
+  mesh_render_data_update_loose_geom(mr, update_task_data->cache, iter_type, data_flag);
   mesh_render_data_update_mat_offsets(mr, update_task_data->cache, data_flag);
 }
 
@@ -685,9 +686,6 @@ static void mesh_buffer_cache_create_requested(struct TaskGraph *task_graph,
   double rdata_start = PIL_check_seconds_timer();
 #endif
 
-  eMRIterType iter_type = extractors.iter_types();
-  eMRDataType data_flag = extractors.data_types();
-
   MeshRenderData *mr = mesh_render_data_create(me,
                                                extraction_cache,
                                                is_editmode,
@@ -696,8 +694,7 @@ static void mesh_buffer_cache_create_requested(struct TaskGraph *task_graph,
                                                obmat,
                                                do_final,
                                                do_uvedit,
-                                               ts,
-                                               iter_type);
+                                               ts);
   mr->use_hide = use_hide;
   mr->use_subsurf_fdots = use_subsurf_fdots;
   mr->use_final_mesh = do_final;
@@ -706,6 +703,9 @@ static void mesh_buffer_cache_create_requested(struct TaskGraph *task_graph,
   double rdata_end = PIL_check_seconds_timer();
 #endif
 
+  eMRIterType iter_type = extractors.iter_types();
+  eMRDataType data_flag = extractors.data_types();
+
   struct TaskNode *task_node_mesh_render_data = mesh_extract_render_data_node_create(
       task_graph, mr, extraction_cache, iter_type, data_flag);
 
diff --git a/source/blender/draw/intern/draw_cache_extract_mesh_private.h b/source/blender/draw/intern/draw_cache_extract_mesh_private.h
index 5f670bdc5ec..f83f4bea9af 100644
--- a/source/blender/draw/intern/draw_cache_extract_mesh_private.h
+++ b/source/blender/draw/intern/draw_cache_extract_mesh_private.h
@@ -247,10 +247,13 @@ MeshRenderData *mesh_render_data_create(Mesh *me,
                                         const float obmat[4][4],
                                         const bool do_final,
                                         const bool do_uvedit,
-                                        const ToolSettings *ts,
-                                        const eMRIterType iter_type);
+                                        const ToolSettings *ts);
 void mesh_render_data_free(MeshRenderData *mr);
 void mesh_render_data_update_normals(MeshRenderData *mr, const eMRDataType data_flag);
+void mesh_render_data_update_loose_geom(MeshRenderData *mr,
+                                        MeshBufferExtractionCache *cache,
+                                        const eMRIterType iter_type,
+                                        const eMRDataType data_flag);
 void mesh_render_data_update_mat_offsets(MeshRenderData *mr,
                                          MeshBufferExtractionCache *cache,
                                          const eMRDataType data_flag);
diff --git a/source/blender/draw/intern/draw_cache_extract_mesh_render_data.c b/source/blender/draw/intern/draw_cache_extract_mesh_render_data.c
index bccf894cc53..041dd07b367 100644
--- a/source/blender/draw/intern/draw_cache_extract_mesh_render_data.c
+++ b/source/blender/draw/intern/draw_cache_extract_mesh_render_data.c
@@ -165,6 +165,17 @@ static void mesh_render_data_ledges_bm(const MeshRenderData *mr,
   }
 }
 
+void mesh_render_data_update_loose_geom(MeshRenderData *mr,
+                                        MeshBufferExtractionCache *cache,
+                                        const eMRIterType iter_type,
+                                        const eMRDataType data_flag)
+{
+  if (iter_type & (MR_ITER_LEDGE | MR_ITER_LVERT)) {
+    mesh_render_data_loose_geom_ensure(mr, cache);
+    mesh_render_data_loose_geom_load(mr, cache);
+  }
+}
+
 /** \} */
 
 /* ---------------------------------------------------------------------- */
@@ -454,8 +465,7 @@ MeshRenderData *mesh_render_data_create(Mesh *me,
                                         const float obmat[4][4],
                                         const bool do_final,
                                         const bool do_uvedit,
-                                        const ToolSettings *ts,
-                                        const eMRIterType iter_type)
+                                        const ToolSettings *ts)
 {
   MeshRenderData *mr = MEM_callocN(sizeof(*mr), __func__);
   mr->toolsettings = ts;
@@ -565,11 +575,6 @@ MeshRenderData *mesh_render_data_create(Mesh *me,
     mr->tri_len = poly_to_tri_count(mr->poly_len, mr->loop_len);
   }
 
-  if (iter_type & (MR_ITER_LEDGE | MR_ITER_LVERT)) {
-    mesh_render_data_loose_geom_ensure(mr, cache);
-    mesh_render_data_loose_geom_load(mr, cache);
-  }
-
   return mr;
 }



More information about the Bf-blender-cvs mailing list