+ bool ordered = pt.order;
+
+ unsigned &order = next_orders[pt.object];
+ order += !order;
+ order += (order&1)|ordered;
+
+ auto j = upper_bound_member(transfers, order, &PendingTransfer::order);
+ j = transfers.emplace(j, move(pt));
+ j->order = order;
+
+ order += ordered;
+
+ return *j;
+}
+
+void TransferQueue::dispatch_transfers(const VulkanCommandRecorder &vkCmd)
+{
+ if(transfers.empty())
+ return;
+
+ ++current_frame;
+ for(auto i=transfers.begin(); i!=transfers.end(); )