]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/vulkan/transferqueue.cpp
Use another callback for pre-transfer synchronization
[libs/gl.git] / source / backends / vulkan / transferqueue.cpp
index d0ccb0d571c88419838faec234a7cd99e0f7fcd9..7f1cfa914884a518a7c766abe385204f72766e66 100644 (file)
@@ -34,13 +34,18 @@ TransferQueue::PendingTransfer &TransferQueue::prepare_transfer(size_t size)
 
 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();