Foundation
Loading...
Searching...
No Matches
VirtualAllocator.hpp
Go to the documentation of this file.
1#pragma once
2#include <Async/Future.hpp>
3#include <Core/Core.hpp>
4#include <Core/Pool.hpp>
5#include <vk_mem_alloc.h>
7{
8 using namespace Core;
10 // [Raw Offset, Size]
26 {
27 const size_t mSize;
30 // VMA virtual allocs are not thread-safe. Need guards.
32
33 public:
39 VirtualAllocator(size_t size, Allocator* alloc);
46 VirtualAllocation Allocate(size_t size, size_t alignment);
51 void Free(VirtualAllocation handle);
58 size_t QuerySize(size_t handle)
59 {
60 auto [off, sz] = Query(handle);
61 return sz;
62 };
63 size_t QueryOffset(size_t handle)
64 {
65 auto [off, sz] = Query(handle);
66 return off;
67 }
69 };
70} // namespace Foundation::Rendering
General Purpose Allocator (GPA) interface.
Definition Allocator.hpp:24
Thread-safe wrapper around VulkanMemoryAllocator's Virtual Allocator interface.
Definition VirtualAllocator.hpp:26
Pool< VirtualAllocation, Tuple< size_t, size_t, VmaVirtualAllocation > > mAllocs
Definition VirtualAllocator.hpp:29
Async::Mutex mMutex
Definition VirtualAllocator.hpp:31
size_t QueryOffset(size_t handle)
Definition VirtualAllocator.hpp:63
Pair< size_t, size_t > Query(VirtualAllocation handle)
Query the offset and size of a previous allocation.
Definition VirtualAllocator.cpp:31
size_t QuerySize(size_t handle)
Definition VirtualAllocator.hpp:58
void Free(VirtualAllocation handle)
Free a previous allocation.
Definition VirtualAllocator.cpp:24
VirtualAllocation Allocate(size_t size, size_t alignment)
Allocate memory of size and alignment.
Definition VirtualAllocator.cpp:11
VmaVirtualBlock mBlock
Definition VirtualAllocator.hpp:28
~VirtualAllocator()
Definition VirtualAllocator.cpp:36
const size_t mSize
Definition VirtualAllocator.hpp:27
std::mutex Mutex
Definition Future.hpp:15
std::unique_ptr< T, StlDeleter< T > > UniquePtr
std::unique_ptr with custom deleter that uses a Foundation::Core::Allocator to deallocate memory.
Definition Allocator.hpp:161
Reference implementations of real-time rendering routines.
Definition Application.hpp:18
uint32_t VirtualAllocation
Definition VirtualAllocator.hpp:9
constexpr VirtualAllocation kInvalidVirtualAllocation
Definition VirtualAllocator.hpp:11