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_; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs