Fix T98769: Cycles crash with multi-device rendering and BVH refits
This commit is contained in:
parent
e437997174
commit
d95100e821
@ -74,6 +74,13 @@ class BVH {
|
||||
{
|
||||
}
|
||||
|
||||
virtual void replace_geometry(const vector<Geometry *> &geometry,
|
||||
const vector<Object *> &objects)
|
||||
{
|
||||
this->geometry = geometry;
|
||||
this->objects = objects;
|
||||
}
|
||||
|
||||
protected:
|
||||
BVH(const BVHParams ¶ms,
|
||||
const vector<Geometry *> &geometry,
|
||||
|
@ -21,4 +21,12 @@ BVHMulti::~BVHMulti()
|
||||
}
|
||||
}
|
||||
|
||||
void BVHMulti::replace_geometry(const vector<Geometry *> &geometry,
|
||||
const vector<Object *> &objects)
|
||||
{
|
||||
foreach (BVH *bvh, sub_bvhs) {
|
||||
bvh->replace_geometry(geometry, objects);
|
||||
}
|
||||
}
|
||||
|
||||
CCL_NAMESPACE_END
|
||||
|
@ -19,6 +19,9 @@ class BVHMulti : public BVH {
|
||||
const vector<Geometry *> &geometry,
|
||||
const vector<Object *> &objects);
|
||||
virtual ~BVHMulti();
|
||||
|
||||
virtual void replace_geometry(const vector<Geometry *> &geometry,
|
||||
const vector<Object *> &objects);
|
||||
};
|
||||
|
||||
CCL_NAMESPACE_END
|
||||
|
@ -217,8 +217,7 @@ void Geometry::compute_bvh(Device *device,
|
||||
if (bvh && !need_update_rebuild) {
|
||||
progress->set_status(msg, "Refitting BVH");
|
||||
|
||||
bvh->geometry = geometry;
|
||||
bvh->objects = objects;
|
||||
bvh->replace_geometry(geometry, objects);
|
||||
|
||||
device->build_bvh(bvh, *progress, true);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user