#pragma once #include "Gpu.hpp" #include /** * 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> 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(); };