Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Mours <pmours@nvidia.com>2021-01-18 17:30:25 +0300
committerPatrick Mours <pmours@nvidia.com>2021-01-18 17:30:25 +0300
commit4fde594fda13abf98437bc5d0012decc2bd3d5f6 (patch)
tree4d1be6846885cc8f7af6be2b13c3ffaf5e065e54 /intern/cycles/render/session.cpp
parent1c2b2037956bf1d46a10842a4b503d20714bdcf2 (diff)
Fix T84650: CPU render + OptiX denoiser leaves empty tiles unprocessed
The OptiX denoiser is part of the OptiX device, so to the tile manager looks like a GPU device. As a result the tile stealing implementation erroneously stole CPU tiles and moved them to that OptiX device, even though in this configuration the OptiX device was only set up for denoising and not rendering. Launching the render kernel therefore caused a crash because of a missing AS etc. This fixes that by ensuring tiles can only be stolen by devices that support render tiles.
Diffstat (limited to 'intern/cycles/render/session.cpp')
-rw-r--r--intern/cycles/render/session.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp
index a00f8154148..0debc08d911 100644
--- a/intern/cycles/render/session.cpp
+++ b/intern/cycles/render/session.cpp
@@ -459,7 +459,11 @@ 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)) {
+ /* Can only steal tiles on devices that support rendering
+ * This is because denoising tiles cannot be stolen (see below)
+ */
+ if ((tile_types & (RenderTile::PATH_TRACE | RenderTile::BAKE)) &&
+ steal_tile(rtile, tile_device, tile_lock)) {
return true;
}