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 vkObj, VulkanDevice dev, in MemProps props, in size_t size, in uint typeIndex) { super(vkObj, dev); _props = props; _size = size; _typeIndex = typeIndex; } override @property MemProps props() { return _props; } override @property size_t size() { return _size; } override @property uint typeIndex() { return _typeIndex; } void* mapRaw(in size_t offset, in size_t size) { void *data; vulkanEnforce( vk.MapMemory(vkDev, vkObj, offset, size, 0, &data), "Could not map device memory" ); return data; } void unmapRaw() { vk.UnmapMemory(vkDev, vkObj); } private MemProps _props; private size_t _size; private uint _typeIndex; }