14#define HYMN_BUFFER_STRATEGY_SUBALLOCATE 0
15#define HYMN_BUFFER_STRATEGY_WHOLE 1
16#define HYMN_BUFFER_STRATEGY HYMN_BUFFER_STRATEGY_SUBALLOCATE
32 virtual void Write(uint32_t offset, uint32_t size,
const void* data) = 0;
103 std::vector<Buffer*>* freeBufferObjects;
104 std::vector<Buffer*>* usedBufferObjects;
107 std::vector<RawBuffer*> rawBuffers;
108 uint32_t currentRawBuffer = 0;
109#if HYMN_BUFFER_STRATEGY == HYMN_BUFFER_STRATEGY_SUBALLOCATE
110 uint32_t currentOffset;
114#if HYMN_BUFFER_STRATEGY == HYMN_BUFFER_STRATEGY_SUBALLOCATE
118#elif HYMN_BUFFER_STRATEGY == HYMN_BUFFER_STRATEGY_WHOLE
Responsible for allocating buffers.
Definition: BufferAllocator.hpp:51
Buffer * CreateTemporaryBuffer(Buffer::BufferUsage bufferUsage, uint32_t size, const void *data)
Create a temporary GPU buffer.
Definition: BufferAllocator.cpp:92
static const uint32_t poolSize
The size of each buffer in the pool.
Definition: BufferAllocator.hpp:87
virtual ~BufferAllocator()
Destructor.
Definition: BufferAllocator.cpp:24
BufferAllocator(uint32_t frames)
Create a new buffer allocator.
Definition: BufferAllocator.cpp:7
Buffer * CreateBuffer(Buffer::BufferUsage bufferUsage, uint32_t size, const void *data)
Create a GPU buffer.
Definition: BufferAllocator.cpp:73
void BeginFrame()
Call at the beginning of each frame.
Definition: BufferAllocator.cpp:53
A buffer containing GPU accessible data.
Definition: Buffer.hpp:8
BufferUsage
How the buffer is going to be used.
Definition: Buffer.hpp:11
@ COUNT
The number of different buffer usages.
A large buffer from which buffers are sub-allocated.
Definition: BufferAllocator.hpp:21
virtual void Write(uint32_t offset, uint32_t size, const void *data)=0
Write data to buffer.
virtual ~RawBuffer()
Destructor.
Definition: BufferAllocator.hpp:24
Definition: Editor.hpp:18
An allocation.
Definition: BufferAllocator.hpp:36
uint32_t offset
The offset into the buffer.
Definition: BufferAllocator.hpp:41
uint32_t size
The size of the allocation.
Definition: BufferAllocator.hpp:44
bool temporaryAllocation
Whether the allocation was temporary (buffer is not responsible for freeing memory).
Definition: BufferAllocator.hpp:47
RawBuffer * buffer
The buffer the allocation was made in.
Definition: BufferAllocator.hpp:38