module gfx.vulkan.memory; package: import gfx.bindings.vulkan; import gfx.core.rc; import gfx.graal.memory; import gfx.vulkan.device; class VulkanDeviceMemory : VulkanDevObj!(VkDeviceMemory, "freeMemory"), DeviceMemory { mixin(atomicRcCode); this(VkDeviceMemory vk, VulkanDevice dev, in uint typeIndex, in size_t size) { super(vk, dev); _typeIndex = typeIndex; _size = size; } override @property uint typeIndex() { return _typeIndex; } override @property size_t size() { return _size; } void* map(in size_t offset, in size_t size) { void *data; vulkanEnforce( cmds.mapMemory(vkDev, vk, offset, size, 0, &data), "Could not map device memory" ); return data; } void unmap() { cmds.unmapMemory(vkDev, vk); } private uint _typeIndex; private size_t _size; }