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;
}
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);
},
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