]> 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 8080f673226db30bf0aca97c35a0aec61b7d9570..7f1cfa914884a518a7c766abe385204f72766e66 100644 (file)
@@ -34,10 +34,18 @@ TransferQueue::PendingTransfer &TransferQueue::prepare_transfer(size_t size)
 
 void TransferQueue::dispatch_transfers(VkCommandBuffer 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();