+ transfer.staging_address = static_cast<char *>(i->mapped_address)+transfer.offset;
+
+ i->used += size+47;
+ i->used -= i->used%48;
+ ++i->async_count;
+}
+
+TransferQueue::PendingTransfer &TransferQueue::prepare_transfer(const void *object, bool ordered, size_t size)
+{
+ PendingTransfer transfer;
+ transfer.object = object;
+ transfer.order = ordered;
+
+ if(size)
+ {
+ allocate_staging(transfer, size);
+ auto i = lower_bound_member(async_transfers, transfer.staging_address, &PendingTransfer::staging_address);
+ i = async_transfers.emplace(i, move(transfer));
+ return *i;
+ }
+ else
+ return insert_transfer(move(transfer));
+}