From bd4bea3e98a436521f9a7effcfed19cdf46eadfb Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 8 Nov 2017 20:15:38 +0100 Subject: Cycles: avoid reallocating tile denoising memory many times during render. --- intern/cycles/device/device_cpu.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'intern/cycles/device/device_cpu.cpp') diff --git a/intern/cycles/device/device_cpu.cpp b/intern/cycles/device/device_cpu.cpp index 0f4001ab1a6..ce02a5a932e 100644 --- a/intern/cycles/device/device_cpu.cpp +++ b/intern/cycles/device/device_cpu.cpp @@ -712,12 +712,10 @@ public: } } - void denoise(DeviceTask &task, RenderTile &tile) + void denoise(DeviceTask &task, DenoisingTask& denoising, RenderTile &tile) { tile.sample = tile.start_sample + tile.num_samples; - DenoisingTask denoising(this); - denoising.functions.construct_transform = function_bind(&CPUDevice::denoising_construct_transform, this, &denoising); denoising.functions.reconstruct = function_bind(&CPUDevice::denoising_reconstruct, this, _1, _2, _3, &denoising); denoising.functions.divide_shadow = function_bind(&CPUDevice::denoising_divide_shadow, this, _1, _2, _3, _4, _5, &denoising); @@ -769,6 +767,8 @@ public: } RenderTile tile; + DenoisingTask denoising(this); + while(task.acquire_tile(this, tile)) { if(tile.task == RenderTile::PATH_TRACE) { if(use_split_kernel) { @@ -780,7 +780,7 @@ public: } } else if(tile.task == RenderTile::DENOISE) { - denoise(task, tile); + denoise(task, denoising, tile); } task.release_tile(tile); -- cgit v1.2.3