void TransferQueue::dispatch_transfers(VkCommandBuffer command_buffer)
{
- if(!transfers.empty())
- device.get_synchronizer().barrier(command_buffer);
+ if(transfers.empty())
+ return;
+
+ for(const PendingTransfer &t: transfers)
+ t.synchronize();
+
+ device.get_synchronizer().barrier(command_buffer);
for(const PendingTransfer &t: transfers)
{
VkBuffer buffer = buffers[t.buffer_index].buffer;
- t.callback(command_buffer, buffer, t.offset);
+ t.transfer(command_buffer, buffer, t.offset);
}
transfers.clear();