diff options
author | Michael Jones <michael_p_jones@apple.com> | 2021-12-14 01:20:16 +0300 |
---|---|---|
committer | Michael Jones <michael_p_jones@apple.com> | 2021-12-14 01:34:48 +0300 |
commit | e688c927eb3a82b21ba744ec57540ea2cd4f44c8 (patch) | |
tree | 294f18f8adf2d7a668d67399939b22239743e551 /intern/cycles/scene | |
parent | b8952ecec947308ded826d6025ddfe7d6ff0325e (diff) |
Fix T94022: Both options GPU/CPU checked under preferences cause viewport render crash. (ARM/Metal)
This fixes crash T94022 when selecting live viewport render with both GPU & CPU devices selected. It is caused by incorrect `KernelBVHLayout` assignment. Similar to `BVH_LAYOUT_MULTI_OPTIX` for Optix, this patch adds a `BVH_LAYOUT_MULTI_METAL` to correctly redirect to the correct Metal BVH layout type.
Reviewed By: brecht
Differential Revision: https://developer.blender.org/D13561
Diffstat (limited to 'intern/cycles/scene')
-rw-r--r-- | intern/cycles/scene/geometry.cpp | 2 | ||||
-rw-r--r-- | intern/cycles/scene/object.cpp | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/intern/cycles/scene/geometry.cpp b/intern/cycles/scene/geometry.cpp index 346b030817f..ca330c5544d 100644 --- a/intern/cycles/scene/geometry.cpp +++ b/intern/cycles/scene/geometry.cpp @@ -166,7 +166,7 @@ bool Geometry::need_build_bvh(BVHLayout layout) const { return is_instanced() || layout == BVH_LAYOUT_OPTIX || layout == BVH_LAYOUT_MULTI_OPTIX || layout == BVH_LAYOUT_METAL || layout == BVH_LAYOUT_MULTI_OPTIX_EMBREE || - layout == BVH_LAYOUT_MULTI_METAL_EMBREE; + layout == BVH_LAYOUT_MULTI_METAL || layout == BVH_LAYOUT_MULTI_METAL_EMBREE; } bool Geometry::is_instanced() const diff --git a/intern/cycles/scene/object.cpp b/intern/cycles/scene/object.cpp index bf224a81af5..77c6c6614e3 100644 --- a/intern/cycles/scene/object.cpp +++ b/intern/cycles/scene/object.cpp @@ -533,7 +533,7 @@ void ObjectManager::device_update_object_transform(UpdateObjectTransformState *s void ObjectManager::device_update_prim_offsets(Device *device, DeviceScene *dscene, Scene *scene) { BVHLayoutMask layout_mask = device->get_bvh_layout_mask(); - if (layout_mask != BVH_LAYOUT_METAL && layout_mask != BVH_LAYOUT_MULTI_METAL_EMBREE) { + if (layout_mask != BVH_LAYOUT_METAL && layout_mask != BVH_LAYOUT_MULTI_METAL && layout_mask != BVH_LAYOUT_MULTI_METAL_EMBREE) { return; } |