]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/vulkan/buffer_backend.cpp
Check the flat qualifier from the correct member
[libs/gl.git] / source / backends / vulkan / buffer_backend.cpp
index aaf415703db8158e5cba7cacd4b6d93ee294f769..bde76beaf8119b5985203b593117b0b799a2311b 100644 (file)
@@ -70,14 +70,13 @@ bool VulkanBuffer::can_map() const
 
 void *VulkanBuffer::map()
 {
-       size_t size = static_cast<const Buffer *>(this)->size;
-       mapped_address = device.get_allocator().map(memory_id, 0, size);
+       mapped_address = device.get_allocator().map(memory_id);
        return mapped_address;
 }
 
 bool VulkanBuffer::unmap()
 {
-       device.get_allocator().unmap(mapped_address);
+       device.get_allocator().unmap(memory_id);
        mapped_address = 0;
        return true;
 }
@@ -110,39 +109,37 @@ void VulkanBuffer::set_vulkan_object_name() const
 
 void Buffer::AsyncTransfer::allocate()
 {
-       if(buffer.can_map())
-               dest_addr = static_cast<char *>(buffer.map())+offset;
+       if(buffer->can_map())
+               dest_addr = static_cast<char *>(buffer->map())+offset;
        else
        {
-               Buffer &buf = buffer;
+               Buffer &buf = *buffer;
                size_t off = offset;
                size_t sz = size;
 
-               dest_addr = buffer.device.get_transfer_queue().prepare_transfer(&buffer, false, size,
+               dest_addr = buf.device.get_transfer_queue().prepare_transfer(buffer, false, size,
                        [&buf, off, sz](){
                                buf.device.get_synchronizer().write_buffer(buf.handle, off, sz);
                        },
-                       [&buf, off, sz](VkCommandBuffer cmd_buf, VkBuffer staging_buf, size_t src_off){
-                               const VulkanFunctions &vk = buf.device.get_functions();
-
+                       [&buf, off, sz](const VulkanCommandRecorder &vkCmd, VkBuffer staging_buf, size_t src_off){
                                VkBufferCopy region = { };
                                region.srcOffset = src_off;
                                region.dstOffset = off;
                                region.size = sz;
-                               vk.CmdCopyBuffer(cmd_buf, staging_buf, buf.handle, 1, &region);
+                               vkCmd.CopyBuffer(staging_buf, buf.handle, 1, &region);
                        });
        }
 }
 
 void Buffer::AsyncTransfer::finalize()
 {
-       if(buffer.can_map())
+       if(buffer->can_map())
        {
-               buffer.unmap();
-               buffer.device.get_synchronizer().write_buffer(buffer.handle, offset, size, true);
+               buffer->unmap();
+               buffer->device.get_synchronizer().write_buffer(buffer->handle, offset, size, true);
        }
        else
-               buffer.device.get_transfer_queue().finalize_transfer(dest_addr);
+               buffer->device.get_transfer_queue().finalize_transfer(dest_addr);
 }
 
 } // namespace GL