1#pragma once
2
3#include <basis/seadTypes.h>
4
5namespace agl {
6
7class GPUMemBlockBase;
8
9namespace detail {
10
11class GPUMemBlockMgrHeapEx;
12class MemoryPoolType;
13
14class MemoryPoolHeap {
15public:
16 MemoryPoolHeap(void*, u64, u64, const MemoryPoolType&, void*, u64, GPUMemBlockMgrHeapEx*);
17 ~MemoryPoolHeap();
18
19 static MemoryPoolHeap* create(u64, s32, u64, s32, u64, u64, const MemoryPoolType&,
20 GPUMemBlockMgrHeapEx*);
21 static void destroy(MemoryPoolHeap*);
22
23 void pushBack(GPUMemBlockBase*);
24 u64* allocFromMemoryPool(u64, s32);
25 void freeToHeap(GPUMemBlockBase*);
26 bool isAllocatable(const MemoryPoolType&, u64, s32) const;
27
28private:
29 GPUMemBlockBase* _120;
30};
31
32} // namespace detail
33} // namespace agl
34