class Buffer;
class Device;
+class VulkanCommandRecorder;
class TransferQueue
{
std::size_t size = 0;
std::size_t used = 0;
void *mapped_address = 0;
+ unsigned async_count = 0;
+ unsigned last_frame = 0;
StagingBuffer(Device &, std::size_t);
StagingBuffer(StagingBuffer &&);
std::size_t size = 0;
void *staging_address = 0;
std::function<void()> synchronize;
- std::function<void(VkCommandBuffer, VkBuffer, std::size_t)> transfer;
+ std::function<void(const VulkanCommandRecorder &, VkBuffer, std::size_t)> transfer;
};
Device &device;
std::vector<PendingTransfer> transfers;
std::vector<PendingTransfer> async_transfers;
std::map<const void *, unsigned> next_orders;
+ unsigned current_frame = 0;
public:
TransferQueue(Device &);
PendingTransfer &insert_transfer(PendingTransfer &&);
public:
- void dispatch_transfers(VkCommandBuffer);
+ void dispatch_transfers(const VulkanCommandRecorder &);
};
template<typename S, typename T>