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:
authorClément Foucault <foucault.clem@gmail.com>2022-04-18 16:45:32 +0300
committerClément Foucault <foucault.clem@gmail.com>2022-04-19 13:09:18 +0300
commit6296cb5129697676aa0055bb2162bd479106f6e3 (patch)
treeb8720982fb16e543c9fdd02d9748b13cff9384d7 /source/blender/draw/intern/draw_manager.c
parenteccc9d8eba8d65009307ebc7d4da344e9416d89b (diff)
DRW: Centralize smoke domain texture management
This code was duplicated in multiple engines. Now it is the draw manager responsability to manage the throwaway fluid textures.
Diffstat (limited to 'source/blender/draw/intern/draw_manager.c')
-rw-r--r--source/blender/draw/intern/draw_manager.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 88d05fcd928..441628f2490 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -1650,6 +1650,7 @@ void DRW_draw_render_loop_ex(struct Depsgraph *depsgraph,
drw_debug_init();
DRW_hair_init();
+ DRW_smoke_init(DST.vmempool);
/* No frame-buffer allowed before drawing. */
BLI_assert(GPU_framebuffer_active_get() == GPU_framebuffer_back_get());
@@ -1715,6 +1716,8 @@ void DRW_draw_render_loop_ex(struct Depsgraph *depsgraph,
GPU_flush();
}
+ DRW_smoke_exit(DST.vmempool);
+
DRW_stats_reset();
DRW_draw_callbacks_post_scene();
@@ -1999,6 +2002,8 @@ void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph)
GPU_framebuffer_restore();
+ DRW_smoke_exit(DST.vmempool);
+
drw_manager_exit(&DST);
/* Reset state after drawing */
@@ -2016,6 +2021,7 @@ void DRW_render_object_iter(
{
const DRWContextState *draw_ctx = DRW_context_state_get();
DRW_hair_init();
+ DRW_smoke_init(DST.vmempool);
drw_task_graph_init();
const int object_type_exclude_viewport = draw_ctx->v3d ?
@@ -2071,6 +2077,7 @@ void DRW_custom_pipeline(DrawEngineType *draw_engine_type,
drw_manager_init(&DST, NULL, NULL);
DRW_hair_init();
+ DRW_smoke_init(DST.vmempool);
ViewportEngineData *data = DRW_view_data_engine_data_get_ensure(DST.view_data_active,
draw_engine_type);
@@ -2079,6 +2086,8 @@ void DRW_custom_pipeline(DrawEngineType *draw_engine_type,
callback(data, user_data);
DST.buffer_finish_called = false;
+ DRW_smoke_exit(DST.vmempool);
+
GPU_framebuffer_restore();
/* The use of custom pipeline in other thread using the same
@@ -2095,11 +2104,14 @@ void DRW_custom_pipeline(DrawEngineType *draw_engine_type,
void DRW_cache_restart(void)
{
+ DRW_smoke_exit(DST.vmempool);
+
drw_manager_init(&DST, DST.viewport, (int[2]){UNPACK2(DST.size)});
DST.buffer_finish_called = false;
DRW_hair_init();
+ DRW_smoke_init(DST.vmempool);
}
void DRW_draw_render_loop_2d_ex(struct Depsgraph *depsgraph,
@@ -2417,6 +2429,7 @@ void DRW_draw_select_loop(struct Depsgraph *depsgraph,
/* Init engines */
drw_engines_init();
DRW_hair_init();
+ DRW_smoke_init(DST.vmempool);
{
drw_engines_cache_init();
@@ -2511,6 +2524,8 @@ void DRW_draw_select_loop(struct Depsgraph *depsgraph,
}
}
+ DRW_smoke_exit(DST.vmempool);
+
DRW_state_reset();
drw_engines_disable();
@@ -2587,6 +2602,7 @@ static void drw_draw_depth_loop_impl(struct Depsgraph *depsgraph,
/* Init engines */
drw_engines_init();
DRW_hair_init();
+ DRW_smoke_init(DST.vmempool);
{
drw_engines_cache_init();
@@ -2623,6 +2639,8 @@ static void drw_draw_depth_loop_impl(struct Depsgraph *depsgraph,
drw_engines_draw_scene();
+ DRW_smoke_exit(DST.vmempool);
+
DRW_state_reset();
/* TODO: Reading depth for operators should be done here. */