Commit: 4fde594fda13abf98437bc5d0012decc2bd3d5f6
Author: Patrick Mours
Date: Mon Jan 18 15:30:25 2021 +0100
Branches: blender-v2.92-release master
https://developer.blender.org/rB4fde594fda13abf98437bc5d0012decc2bd3d5f6
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.
===================================================================
M intern/cycles/render/session.cpp
===================================================================
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;
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs