diff --git a/Source/Engine/Renderer/RenderList.cpp b/Source/Engine/Renderer/RenderList.cpp index 90ad13574..d0d33077e 100644 --- a/Source/Engine/Renderer/RenderList.cpp +++ b/Source/Engine/Renderer/RenderList.cpp @@ -218,6 +218,7 @@ void RenderFogData::Init(const RenderView& view, IFogRenderer* renderer) void* RendererAllocation::Allocate(uintptr size) { PROFILE_CPU(); + size = AllocationUtils::AlignToPowerOf2((int32)size); // Reduce fragmentation by operating on power-of-2 blocks void* result = nullptr; MemPoolLocker.Lock(); for (int32 i = 0; i < MemPool.Count(); i++) @@ -238,6 +239,7 @@ void* RendererAllocation::Allocate(uintptr size) void RendererAllocation::Free(void* ptr, uintptr size) { PROFILE_CPU(); + size = AllocationUtils::AlignToPowerOf2((int32)size); // Reduce fragmentation by operating on power-of-2 blocks MemPoolLocker.Lock(); MemPool.Add({ ptr, size }); MemPoolLocker.Unlock(); diff --git a/Source/Engine/Renderer/RendererAllocation.h b/Source/Engine/Renderer/RendererAllocation.h index 30e55fbd8..80dc40b6e 100644 --- a/Source/Engine/Renderer/RendererAllocation.h +++ b/Source/Engine/Renderer/RendererAllocation.h @@ -4,6 +4,9 @@ #include "Engine/Core/Memory/SimpleHeapAllocation.h" +/// +/// Shared pool allocator for the renderer used for large chunks of memory. +/// class RendererAllocation : public SimpleHeapAllocation { public: