From 6cd4bb94350a9395da143fe90d9e600c0196025a Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Mon, 10 May 2021 12:51:44 +0200 Subject: Fix T87764: Mem-leak during viewport rendering. When a scene uses cryptomatte the viewport rendering would lead to a memory leak. The reason was that all image renders (viewport+final) activated cryptomatte. But is only used for final rendering. This patch only activates cryptomatte when doing final rendering. --- source/blender/draw/engines/eevee/eevee_cryptomatte.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'source/blender/draw/engines/eevee/eevee_cryptomatte.c') diff --git a/source/blender/draw/engines/eevee/eevee_cryptomatte.c b/source/blender/draw/engines/eevee/eevee_cryptomatte.c index 0cb2d55d1eb..eace4eb18f6 100644 --- a/source/blender/draw/engines/eevee/eevee_cryptomatte.c +++ b/source/blender/draw/engines/eevee/eevee_cryptomatte.c @@ -121,7 +121,7 @@ void EEVEE_cryptomatte_renderpasses_init(EEVEE_Data *vedata) ViewLayer *view_layer = draw_ctx->view_layer; /* Cryptomatte is only rendered for final image renders */ - if (!DRW_state_is_image_render()) { + if (!DRW_state_is_scene_render()) { return; } const eViewLayerCryptomatteFlags active_layers = eevee_cryptomatte_active_layers(view_layer); @@ -158,9 +158,9 @@ void EEVEE_cryptomatte_output_init(EEVEE_ViewLayerData *UNUSED(sldata), const ViewLayer *view_layer = draw_ctx->view_layer; const int num_cryptomatte_layers = eevee_cryptomatte_layers_count(view_layer); - eGPUTextureFormat format = (num_cryptomatte_layers == 1) ? - GPU_R32F : - (num_cryptomatte_layers == 2) ? GPU_RG32F : GPU_RGBA32F; + eGPUTextureFormat format = (num_cryptomatte_layers == 1) ? GPU_R32F : + (num_cryptomatte_layers == 2) ? GPU_RG32F : + GPU_RGBA32F; const float *viewport_size = DRW_viewport_size_get(); const int buffer_size = viewport_size[0] * viewport_size[1]; -- cgit v1.2.3