Files
Towards/external/loft/modules/base/include/resources/BufferBusWriter.h
T
Martin Slachta a04f0dc262 initial
2026-07-18 14:31:15 +02:00

38 lines
686 B
C++

#pragma once
#include "Gpu.hpp"
#include <vector>
/**
* Writes data to a buffer by using a staging buffer
*/
class BufferBusWriter {
private:
const Gpu* m_gpu;
Buffer m_stagingBuffer;
size_t m_busSize;
VkCommandBuffer m_stagingCommandBuffer;
void *m_pData;
size_t m_unflushedSize;
uint32_t m_numWrites;
std::vector<std::pair<Buffer*, VkBufferCopy>> m_writes;
VkFence m_fence;
int create_staging_command_buffer();
int create_staging_buffer(size_t size);
public:
BufferBusWriter(const Gpu* gpu, size_t size);
~BufferBusWriter();
void write(Buffer* pTarget, void *pData, size_t offset, size_t size);
void flush();
void wait();
};