X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fvulkan%2Fbuffer_backend.cpp;h=bde76beaf8119b5985203b593117b0b799a2311b;hb=1b4d387b74b2108f3926796d8115bee134fbf7f1;hp=aaf415703db8158e5cba7cacd4b6d93ee294f769;hpb=c356a20547afae97b412da36e0b0a7d51e879401;p=libs%2Fgl.git diff --git a/source/backends/vulkan/buffer_backend.cpp b/source/backends/vulkan/buffer_backend.cpp index aaf41570..bde76bea 100644 --- a/source/backends/vulkan/buffer_backend.cpp +++ b/source/backends/vulkan/buffer_backend.cpp @@ -70,14 +70,13 @@ bool VulkanBuffer::can_map() const void *VulkanBuffer::map() { - size_t size = static_cast(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(buffer.map())+offset; + if(buffer->can_map()) + dest_addr = static_cast(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, ®ion); + vkCmd.CopyBuffer(staging_buf, buf.handle, 1, ®ion); }); } } 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