vk.FreeMemory(allocations[id-1].memory);
}
-void *MemoryAllocator::map(unsigned id, size_t offset, size_t size)
+void *MemoryAllocator::map(unsigned id)
{
if(!id || id>allocations.size() || !allocations[id-1].memory)
throw key_error(id);
const VulkanFunctions &vk = device.get_functions();
- vk.MapMemory(alloc.memory, offset, size, 0, &alloc.mapped_address);
+ vk.MapMemory(alloc.memory, 0, alloc.size, 0, &alloc.mapped_address);
return alloc.mapped_address;
}
-void MemoryAllocator::unmap(void *ptr)
+void MemoryAllocator::unmap(unsigned id)
{
- auto i = find_member(allocations, ptr, &Allocation::mapped_address);
- if(i==allocations.end())
+ if(!id || id>allocations.size() || !allocations[id-1].memory)
+ throw key_error(id);
+
+ Allocation &alloc = allocations[id-1];
+ if(!alloc.mapped_address)
throw invalid_operation("MemoryAllocator::unmap");
const VulkanFunctions &vk = device.get_functions();
- vk.UnmapMemory(i->memory);
- i->mapped_address = 0;
+ vk.UnmapMemory(alloc.memory);
+ alloc.mapped_address = 0;
}
} // namespace GL