]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/vulkan/transferqueue.h
Support transfers with no staged data
[libs/gl.git] / source / backends / vulkan / transferqueue.h
index b8719d627513bd8962dec3df4c1b52ddd2a8dbc5..b11b4503d59c78a0a60c77c2c905135ad714f57e 100644 (file)
@@ -31,7 +31,7 @@ private:
        struct PendingTransfer
        {
                unsigned order = 0;
-               unsigned buffer_index = 0;
+               int buffer_index = -1;
                std::size_t offset = 0;
                std::size_t size = 0;
                std::function<void()> synchronize;
@@ -63,7 +63,7 @@ void *TransferQueue::prepare_transfer(void *object, bool ordered, std::size_t si
        PendingTransfer &pt = prepare_transfer(object, ordered, size);
        pt.synchronize = std::forward<S>(synchronize);
        pt.transfer = std::forward<T>(transfer);
-       return static_cast<char *>(buffers[pt.buffer_index].mapped_address)+pt.offset;
+       return (pt.buffer_index<0 ? 0 : static_cast<char *>(buffers[pt.buffer_index].mapped_address)+pt.offset);
 }
 
 } // namespace GL