From 88c956c13be40aeaaf3828369ab63801413fef82 Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Fri, 11 Nov 2022 08:23:16 +0100 Subject: Fix T100969: Memory leak GPU subdivision during rendering. The viewport cleans up old subdivision buffers right after drawing. During rendering this was not done and when rendering many frames this lead to memory issues. This patch will also clear up the GPU Subdivision buffers after any offscreen render or final render. There is already a mutex so this is safe to be done from a non main thread. Thanks to @kevindietrich to finding the root cause. --- source/blender/draw/intern/draw_manager.c | 1 + source/blender/editors/space_view3d/view3d_draw.cc | 1 + 2 files changed, 2 insertions(+) diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index 4fcfec833eb..c8f0fdde62d 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -2039,6 +2039,7 @@ void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph) DRW_smoke_exit(DST.vmempool); drw_manager_exit(&DST); + DRW_cache_free_old_subdiv(); /* Reset state after drawing */ DRW_state_reset(); diff --git a/source/blender/editors/space_view3d/view3d_draw.cc b/source/blender/editors/space_view3d/view3d_draw.cc index 5d4ed032bb4..6400a015ef1 100644 --- a/source/blender/editors/space_view3d/view3d_draw.cc +++ b/source/blender/editors/space_view3d/view3d_draw.cc @@ -1717,6 +1717,7 @@ void ED_view3d_draw_offscreen(Depsgraph *depsgraph, do_color_management, ofs, viewport); + DRW_cache_free_old_subdiv(); GPU_matrix_pop_projection(); GPU_matrix_pop(); -- cgit v1.2.3