Fix T84496: Cycles: Tile stealing does not work with NLM

Reviewed By: brecht

Maniphest Tasks: T84496

Differential Revision: https://developer.blender.org/D10066
This commit is contained in:
Lukas Stockner 2021-01-10 19:16:07 +01:00
parent d5c59913de
commit b70f4a265a
Notes: blender-bot 2023-02-13 19:57:55 +01:00
Referenced by issue #84496, Tile stealing does not work with NLM
1 changed files with 6 additions and 1 deletions

View File

@ -459,13 +459,17 @@ bool Session::acquire_tile(RenderTile &rtile, Device *tile_device, uint tile_typ
int device_num = device->device_number(tile_device);
while (!tile_manager.next_tile(tile, device_num, tile_types)) {
if (steal_tile(rtile, tile_device, tile_lock)) {
return true;
}
/* Wait for denoising tiles to become available */
if ((tile_types & RenderTile::DENOISE) && !progress.get_cancel() && tile_manager.has_tiles()) {
denoising_cond.wait(tile_lock);
continue;
}
return steal_tile(rtile, tile_device, tile_lock);
return false;
}
/* fill render tile */
@ -477,6 +481,7 @@ bool Session::acquire_tile(RenderTile &rtile, Device *tile_device, uint tile_typ
rtile.num_samples = tile_manager.state.num_samples;
rtile.resolution = tile_manager.state.resolution_divider;
rtile.tile_index = tile->index;
rtile.stealing_state = RenderTile::NO_STEALING;
if (tile->state == Tile::DENOISE) {
rtile.task = RenderTile::DENOISE;