Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGermano Cavalcante <germano.costa@ig.com.br>2021-07-21 20:45:02 +0300
committerGermano Cavalcante <germano.costa@ig.com.br>2021-07-21 20:46:53 +0300
commitc830c5b16bed32f55b93738f49580a305b906f48 (patch)
tree231cdf99dc41def49c82f1214ad10e3611f95bf3 /source/blender
parente850c2b06d18e4292110d3fe9cdf5ebc7c281daa (diff)
Cleanup: Move loose geometry cache creation to render data task
This centralizes caching functions.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/draw/intern/draw_cache_extract_mesh.cc10
-rw-r--r--source/blender/draw/intern/draw_cache_extract_mesh_private.h7
-rw-r--r--source/blender/draw/intern/draw_cache_extract_mesh_render_data.c19
3 files changed, 22 insertions, 14 deletions
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;
}