diff options
Diffstat (limited to 'intern/cycles/render/session.cpp')
-rw-r--r-- | intern/cycles/render/session.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp index 361a1465aac..7c50140ecfe 100644 --- a/intern/cycles/render/session.cpp +++ b/intern/cycles/render/session.cpp @@ -436,6 +436,12 @@ bool Session::acquire_tile(RenderTile &rtile, Device *tile_device, uint tile_typ /* Reset copy state, since buffer contents change after the tile was acquired */ buffers->map_neighbor_copied = false; + /* This hack ensures that the copy in 'MultiDevice::map_neighbor_tiles' accounts + * for the buffer resolution divider. */ + buffers->buffer.data_width = (buffers->params.width * buffers->params.get_passes_size()) / + tile_manager.state.resolution_divider; + buffers->buffer.data_height = buffers->params.height / tile_manager.state.resolution_divider; + return true; } @@ -1125,13 +1131,6 @@ bool Session::render_need_denoise(bool &delayed) return false; } - /* Cannot denoise with resolution divider and separate denoising devices. - * It breaks the copy in 'MultiDevice::map_neighbor_tiles' (which operates on - * the full buffer dimensions and not the scaled ones). */ - if (!params.device.denoising_devices.empty() && tile_manager.state.resolution_divider > 1) { - return false; - } - /* Avoid excessive denoising in viewport after reaching a certain amount of samples. */ delayed = (tile_manager.state.sample >= 20 && (time_dt() - last_display_time) < params.progressive_update_timeout); |