[Bf-blender-cvs] [dcb7d5bfff1] cycles_procedural_api: prepare ground for updating bvh arrays instead of recreating them
Kévin Dietrich
noreply at git.blender.org
Fri Nov 6 18:48:01 CET 2020
Commit: dcb7d5bfff101062d25a0a8b7734db74e8e1609e
Author: Kévin Dietrich
Date: Fri Nov 6 18:37:22 2020 +0100
Branches: cycles_procedural_api
https://developer.blender.org/rBdcb7d5bfff101062d25a0a8b7734db74e8e1609e
prepare ground for updating bvh arrays instead of recreating them
===================================================================
M intern/cycles/device/device_memory.h
M intern/cycles/render/geometry.cpp
M intern/cycles/util/util_array.h
===================================================================
diff --git a/intern/cycles/device/device_memory.h b/intern/cycles/device/device_memory.h
index f1180ce58ee..084ec7b83b3 100644
--- a/intern/cycles/device/device_memory.h
+++ b/intern/cycles/device/device_memory.h
@@ -405,6 +405,19 @@ template<typename T> class device_vector : public device_memory {
assert(device_pointer == 0);
}
+ void give_data(array<T> &to)
+ {
+ device_free();
+
+ to.set_data((T *)host_pointer, data_size);
+ data_size = 0;
+ data_width = 0;
+ data_height = 0;
+ data_depth = 0;
+ host_pointer = 0;
+ assert(device_pointer == 0);
+ }
+
/* Free device and host memory. */
void free()
{
diff --git a/intern/cycles/render/geometry.cpp b/intern/cycles/render/geometry.cpp
index 8ed410c9388..b4dd4e01f04 100644
--- a/intern/cycles/render/geometry.cpp
+++ b/intern/cycles/render/geometry.cpp
@@ -1258,6 +1258,20 @@ void GeometryManager::device_update_bvh(Device *device,
if (!(device_update_flags & DEVICE_DATA_NEEDS_REALLOC) && bparams.bvh_layout == BVHLayout::BVH_LAYOUT_OPTIX) {
bvh->refit(progress);
}
+
+#if 0
+ PackedBVH &pack = bvh->pack;
+ dscene->bvh_nodes.give_data(pack.nodes);
+ dscene->bvh_leaf_nodes.give_data(pack.leaf_nodes);
+ dscene->object_node.give_data(pack.object_node);
+ dscene->prim_tri_index.give_data(pack.prim_tri_index);
+ dscene->prim_tri_verts.give_data(pack.prim_tri_verts);
+ dscene->prim_type.give_data(pack.prim_type);
+ dscene->prim_visibility.give_data(pack.prim_visibility);
+ dscene->prim_index.give_data(pack.prim_index);
+ dscene->prim_object.give_data(pack.prim_object);
+ dscene->prim_time.give_data(pack.prim_time);
+#endif
}
if (!bvh || (device_update_flags & DEVICE_DATA_NEEDS_REALLOC)) {
diff --git a/intern/cycles/util/util_array.h b/intern/cycles/util/util_array.h
index ea481787018..73f7d6cf7f8 100644
--- a/intern/cycles/util/util_array.h
+++ b/intern/cycles/util/util_array.h
@@ -131,6 +131,14 @@ template<typename T, size_t alignment = MIN_ALIGNMENT_CPU_DATA_TYPES> class arra
}
}
+ void set_data(T *ptr_, size_t datasize)
+ {
+ clear();
+ data_ = ptr_;
+ datasize_ = datasize;
+ capacity_ = datasize;
+ }
+
T *steal_pointer()
{
T *ptr = data_;
More information about the Bf-blender-cvs
mailing list