From 2e66e5d5992a521fe27dc88fee92c680f4adf98b Mon Sep 17 00:00:00 2001 From: reduz Date: Thu, 24 Dec 2020 14:08:03 -0300 Subject: Use page allocator for BVH --- core/math/dynamic_bvh.cpp | 4 ++-- core/math/dynamic_bvh.h | 2 ++ core/templates/paged_allocator.h | 6 +++--- 3 files changed, 7 insertions(+), 5 deletions(-) (limited to 'core') diff --git a/core/math/dynamic_bvh.cpp b/core/math/dynamic_bvh.cpp index e66de5037d..23e713dd2d 100644 --- a/core/math/dynamic_bvh.cpp +++ b/core/math/dynamic_bvh.cpp @@ -31,7 +31,7 @@ #include "dynamic_bvh.h" void DynamicBVH::_delete_node(Node *p_node) { - memdelete(p_node); + node_allocator.free(p_node); } void DynamicBVH::_recurse_delete_node(Node *p_node) { @@ -46,7 +46,7 @@ void DynamicBVH::_recurse_delete_node(Node *p_node) { } DynamicBVH::Node *DynamicBVH::_create_node(Node *p_parent, void *p_data) { - Node *node = memnew(Node); + Node *node = node_allocator.alloc(); node->parent = p_parent; node->data = p_data; return (node); diff --git a/core/math/dynamic_bvh.h b/core/math/dynamic_bvh.h index 968badc093..ecf2feb3d8 100644 --- a/core/math/dynamic_bvh.h +++ b/core/math/dynamic_bvh.h @@ -34,6 +34,7 @@ #include "core/math/aabb.h" #include "core/templates/list.h" #include "core/templates/local_vector.h" +#include "core/templates/paged_allocator.h" #include "core/typedefs.h" // Based on bullet Dbvh @@ -217,6 +218,7 @@ private: } }; + PagedAllocator node_allocator; // Fields Node *bvh_root = nullptr; int lkhd = -1; diff --git a/core/templates/paged_allocator.h b/core/templates/paged_allocator.h index 8bd1eecdeb..ab9945dd3b 100644 --- a/core/templates/paged_allocator.h +++ b/core/templates/paged_allocator.h @@ -108,7 +108,7 @@ public: return page_size > 0; } - void configure(uint32_t p_page_size, bool p_thread_safe) { + void configure(uint32_t p_page_size) { ERR_FAIL_COND(page_pool != nullptr); //sanity check ERR_FAIL_COND(p_page_size == 0); page_size = nearest_power_of_2_templated(p_page_size); @@ -116,8 +116,8 @@ public: page_shift = get_shift_from_power_of_2(page_size); } - PagedAllocator(uint32_t p_page_size = 4096, bool p_thread_safe = false) { // power of 2 recommended because of alignment with OS page sizes. Even if element is bigger, its still a multiple and get rounded amount of pages - configure(p_page_size, false); + PagedAllocator(uint32_t p_page_size = 4096) { // power of 2 recommended because of alignment with OS page sizes. Even if element is bigger, its still a multiple and get rounded amount of pages + configure(p_page_size); } ~PagedAllocator() { -- cgit v1.2.3