From c830c5b16bed32f55b93738f49580a305b906f48 Mon Sep 17 00:00:00 2001 From: Germano Cavalcante Date: Wed, 21 Jul 2021 14:45:02 -0300 Subject: Cleanup: Move loose geometry cache creation to render data task This centralizes caching functions. --- source/blender/draw/intern/draw_cache_extract_mesh.cc | 10 +++++----- .../draw/intern/draw_cache_extract_mesh_private.h | 7 +++++-- .../draw/intern/draw_cache_extract_mesh_render_data.c | 19 ++++++++++++------- 3 files changed, 22 insertions(+), 14 deletions(-) (limited to 'source/blender') 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; } -- cgit v1.2.3