[Bf-blender-cvs] [80d141e3584] cycles_procedural_api: fix crashes with embree
Kévin Dietrich
noreply at git.blender.org
Fri Nov 6 18:48:01 CET 2020
Commit: 80d141e358487f3acc058c13f87f71d505d2ef81
Author: Kévin Dietrich
Date: Fri Nov 6 18:35:57 2020 +0100
Branches: cycles_procedural_api
https://developer.blender.org/rB80d141e358487f3acc058c13f87f71d505d2ef81
fix crashes with embree
===================================================================
M intern/cycles/render/geometry.cpp
===================================================================
diff --git a/intern/cycles/render/geometry.cpp b/intern/cycles/render/geometry.cpp
index 589392dca53..8ed410c9388 100644
--- a/intern/cycles/render/geometry.cpp
+++ b/intern/cycles/render/geometry.cpp
@@ -1252,12 +1252,16 @@ void GeometryManager::device_update_bvh(Device *device,
VLOG(1) << "Using " << bvh_layout_name(bparams.bvh_layout) << " layout.";
- if (bvh && !(device_update_flags & DEVICE_DATA_NEEDS_REALLOC)) {
+ if (bvh) {
bvh->pack = {};
- bvh->refit(progress);
+
+ if (!(device_update_flags & DEVICE_DATA_NEEDS_REALLOC) && bparams.bvh_layout == BVHLayout::BVH_LAYOUT_OPTIX) {
+ bvh->refit(progress);
+ }
}
if (!bvh || (device_update_flags & DEVICE_DATA_NEEDS_REALLOC)) {
+ delete bvh;
bvh = BVH::create(bparams, scene->geometry, scene->objects, device);
}
@@ -1817,8 +1821,12 @@ void GeometryManager::device_free(Device *device, DeviceScene *dscene)
{
#ifdef WITH_EMBREE
if (dscene->data.bvh.scene) {
- if (dscene->data.bvh.bvh_layout == BVH_LAYOUT_EMBREE)
+ if (dscene->data.bvh.bvh_layout == BVH_LAYOUT_EMBREE) {
BVHEmbree::destroy(dscene->data.bvh.scene);
+ if (bvh) {
+ static_cast<BVHEmbree *>(bvh)->scene = NULL;
+ }
+ }
dscene->data.bvh.scene = NULL;
}
#endif
More information about the Bf-blender-cvs
mailing list