|  | 
| typedef enum VmaAllocatorCreateFlagBits | VmaAllocatorCreateFlagBits | 
|  | Flags for created VmaAllocator. 
 | 
|  | 
| typedef VkFlags | VmaAllocatorCreateFlags | 
|  | See VmaAllocatorCreateFlagBits. 
 | 
|  | 
| typedef enum VmaMemoryUsage | VmaMemoryUsage | 
|  | Intended usage of the allocated memory. 
 | 
|  | 
| typedef enum VmaAllocationCreateFlagBits | VmaAllocationCreateFlagBits | 
|  | Flags to be passed as VmaAllocationCreateInfo::flags. 
 | 
|  | 
| typedef VkFlags | VmaAllocationCreateFlags | 
|  | See VmaAllocationCreateFlagBits. 
 | 
|  | 
| typedef enum VmaPoolCreateFlagBits | VmaPoolCreateFlagBits | 
|  | Flags to be passed as VmaPoolCreateInfo::flags. 
 | 
|  | 
| typedef VkFlags | VmaPoolCreateFlags | 
|  | Flags to be passed as VmaPoolCreateInfo::flags. See VmaPoolCreateFlagBits. 
 | 
|  | 
| typedef enum VmaDefragmentationFlagBits | VmaDefragmentationFlagBits | 
|  | Flags to be passed as VmaDefragmentationInfo::flags. 
 | 
|  | 
| typedef VkFlags | VmaDefragmentationFlags | 
|  | See VmaDefragmentationFlagBits. 
 | 
|  | 
| typedef enum VmaDefragmentationMoveOperation | VmaDefragmentationMoveOperation | 
|  | Operation performed on single defragmentation move. See structure VmaDefragmentationMove. 
 | 
|  | 
| typedef enum VmaVirtualBlockCreateFlagBits | VmaVirtualBlockCreateFlagBits | 
|  | Flags to be passed as VmaVirtualBlockCreateInfo::flags. 
 | 
|  | 
| typedef VkFlags | VmaVirtualBlockCreateFlags | 
|  | Flags to be passed as VmaVirtualBlockCreateInfo::flags. See VmaVirtualBlockCreateFlagBits. 
 | 
|  | 
| typedef enum VmaVirtualAllocationCreateFlagBits | VmaVirtualAllocationCreateFlagBits | 
|  | Flags to be passed as VmaVirtualAllocationCreateInfo::flags. 
 | 
|  | 
| typedef VkFlags | VmaVirtualAllocationCreateFlags | 
|  | Flags to be passed as VmaVirtualAllocationCreateInfo::flags. See VmaVirtualAllocationCreateFlagBits. 
 | 
|  | 
| typedef void(VKAPI_PTR * | PFN_vmaAllocateDeviceMemoryFunction) (VmaAllocator allocator, uint32_t memoryType, VkDeviceMemory memory, VkDeviceSize size, void *pUserData) | 
|  | Callback function called after successful vkAllocateMemory. 
 | 
|  | 
| typedef void(VKAPI_PTR * | PFN_vmaFreeDeviceMemoryFunction) (VmaAllocator allocator, uint32_t memoryType, VkDeviceMemory memory, VkDeviceSize size, void *pUserData) | 
|  | Callback function called before vkFreeMemory. 
 | 
|  | 
| typedef struct VmaDeviceMemoryCallbacks | VmaDeviceMemoryCallbacks | 
|  | Set of callbacks that the library will call for vkAllocateMemoryandvkFreeMemory.
 | 
|  | 
| typedef struct VmaVulkanFunctions | VmaVulkanFunctions | 
|  | Pointers to some Vulkan functions - a subset used by the library. 
 | 
|  | 
| typedef struct VmaAllocatorCreateInfo | VmaAllocatorCreateInfo | 
|  | Description of a Allocator to be created. 
 | 
|  | 
| typedef struct VmaAllocatorInfo | VmaAllocatorInfo | 
|  | Information about existing VmaAllocator object. 
 | 
|  | 
| typedef struct VmaStatistics | VmaStatistics | 
|  | Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool, or total. 
 | 
|  | 
| typedef struct VmaDetailedStatistics | VmaDetailedStatistics | 
|  | More detailed statistics than VmaStatistics. 
 | 
|  | 
| typedef struct VmaTotalStatistics | VmaTotalStatistics | 
|  | General statistics from current state of the Allocator - total memory usage across all memory heaps and types. 
 | 
|  | 
| typedef struct VmaBudget | VmaBudget | 
|  | Statistics of current memory usage and available budget for a specific memory heap. 
 | 
|  | 
| typedef struct VmaAllocationCreateInfo | VmaAllocationCreateInfo | 
|  | Parameters of new VmaAllocation. 
 | 
|  | 
| typedef struct VmaPoolCreateInfo | VmaPoolCreateInfo | 
|  | Describes parameter of created VmaPool. 
 | 
|  | 
| typedef struct VmaAllocationInfo | VmaAllocationInfo | 
|  | 
| typedef struct VmaAllocationInfo2 | VmaAllocationInfo2 | 
|  | Extended parameters of a VmaAllocation object that can be retrieved using function vmaGetAllocationInfo2(). 
 | 
|  | 
| typedef VkBool32(VKAPI_PTR * | PFN_vmaCheckDefragmentationBreakFunction) (void *pUserData) | 
|  | 
| typedef struct VmaDefragmentationInfo | VmaDefragmentationInfo | 
|  | Parameters for defragmentation. 
 | 
|  | 
| typedef struct VmaDefragmentationMove | VmaDefragmentationMove | 
|  | Single move of an allocation to be done for defragmentation. 
 | 
|  | 
| typedef struct VmaDefragmentationPassMoveInfo | VmaDefragmentationPassMoveInfo | 
|  | Parameters for incremental defragmentation steps. 
 | 
|  | 
| typedef struct VmaDefragmentationStats | VmaDefragmentationStats | 
|  | Statistics returned for defragmentation process in function vmaEndDefragmentation(). 
 | 
|  | 
| typedef struct VmaVirtualBlockCreateInfo | VmaVirtualBlockCreateInfo | 
|  | Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock(). 
 | 
|  | 
| typedef struct VmaVirtualAllocationCreateInfo | VmaVirtualAllocationCreateInfo | 
|  | Parameters of created virtual allocation to be passed to vmaVirtualAllocate(). 
 | 
|  | 
| typedef struct VmaVirtualAllocationInfo | VmaVirtualAllocationInfo | 
|  | Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo(). 
 | 
|  | 
|  | 
| VkResult | vmaCreateAllocator (const VmaAllocatorCreateInfo *pCreateInfo, VmaAllocator *pAllocator) | 
|  | Creates VmaAllocator object. 
 | 
|  | 
| void | vmaDestroyAllocator (VmaAllocator allocator) | 
|  | Destroys allocator object. 
 | 
|  | 
| void | vmaGetAllocatorInfo (VmaAllocator allocator, VmaAllocatorInfo *pAllocatorInfo) | 
|  | Returns information about existing VmaAllocator object - handle to Vulkan device etc. 
 | 
|  | 
| void | vmaGetPhysicalDeviceProperties (VmaAllocator allocator, const VkPhysicalDeviceProperties **ppPhysicalDeviceProperties) | 
|  | 
| void | vmaGetMemoryProperties (VmaAllocator allocator, const VkPhysicalDeviceMemoryProperties **ppPhysicalDeviceMemoryProperties) | 
|  | 
| void | vmaGetMemoryTypeProperties (VmaAllocator allocator, uint32_t memoryTypeIndex, VkMemoryPropertyFlags *pFlags) | 
|  | Given Memory Type Index, returns Property Flags of this memory type. 
 | 
|  | 
| void | vmaSetCurrentFrameIndex (VmaAllocator allocator, uint32_t frameIndex) | 
|  | Sets index of the current frame. 
 | 
|  | 
| void | vmaCalculateStatistics (VmaAllocator allocator, VmaTotalStatistics *pStats) | 
|  | Retrieves statistics from current state of the Allocator. 
 | 
|  | 
| void | vmaGetHeapBudgets (VmaAllocator allocator, VmaBudget *pBudgets) | 
|  | Retrieves information about current memory usage and budget for all memory heaps. 
 | 
|  | 
| VkResult | vmaFindMemoryTypeIndex (VmaAllocator allocator, uint32_t memoryTypeBits, const VmaAllocationCreateInfo *pAllocationCreateInfo, uint32_t *pMemoryTypeIndex) | 
|  | Helps to find memoryTypeIndex, given memoryTypeBits and VmaAllocationCreateInfo. 
 | 
|  | 
| VkResult | vmaFindMemoryTypeIndexForBufferInfo (VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, uint32_t *pMemoryTypeIndex) | 
|  | Helps to find memoryTypeIndex, given VkBufferCreateInfo and VmaAllocationCreateInfo. 
 | 
|  | 
| VkResult | vmaFindMemoryTypeIndexForImageInfo (VmaAllocator allocator, const VkImageCreateInfo *pImageCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, uint32_t *pMemoryTypeIndex) | 
|  | Helps to find memoryTypeIndex, given VkImageCreateInfo and VmaAllocationCreateInfo. 
 | 
|  | 
| VkResult | vmaCreatePool (VmaAllocator allocator, const VmaPoolCreateInfo *pCreateInfo, VmaPool *pPool) | 
|  | Allocates Vulkan device memory and creates VmaPool object. 
 | 
|  | 
| void | vmaDestroyPool (VmaAllocator allocator, VmaPool pool) | 
|  | Destroys VmaPool object and frees Vulkan device memory. 
 | 
|  | 
| void | vmaGetPoolStatistics (VmaAllocator allocator, VmaPool pool, VmaStatistics *pPoolStats) | 
|  | Retrieves statistics of existing VmaPool object. 
 | 
|  | 
| void | vmaCalculatePoolStatistics (VmaAllocator allocator, VmaPool pool, VmaDetailedStatistics *pPoolStats) | 
|  | Retrieves detailed statistics of existing VmaPool object. 
 | 
|  | 
| VkResult | vmaCheckPoolCorruption (VmaAllocator allocator, VmaPool pool) | 
|  | Checks magic number in margins around all allocations in given memory pool in search for corruptions. 
 | 
|  | 
| void | vmaGetPoolName (VmaAllocator allocator, VmaPool pool, const char **ppName) | 
|  | Retrieves name of a custom pool. 
 | 
|  | 
| void | vmaSetPoolName (VmaAllocator allocator, VmaPool pool, const char *pName) | 
|  | Sets name of a custom pool. 
 | 
|  | 
| VkResult | vmaAllocateMemory (VmaAllocator allocator, const VkMemoryRequirements *pVkMemoryRequirements, const VmaAllocationCreateInfo *pCreateInfo, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo) | 
|  | General purpose memory allocation. 
 | 
|  | 
| VkResult | vmaAllocateMemoryPages (VmaAllocator allocator, const VkMemoryRequirements *pVkMemoryRequirements, const VmaAllocationCreateInfo *pCreateInfo, size_t allocationCount, VmaAllocation *pAllocations, VmaAllocationInfo *pAllocationInfo) | 
|  | General purpose memory allocation for multiple allocation objects at once. 
 | 
|  | 
| VkResult | vmaAllocateMemoryForBuffer (VmaAllocator allocator, VkBuffer buffer, const VmaAllocationCreateInfo *pCreateInfo, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo) | 
|  | Allocates memory suitable for given VkBuffer.
 | 
|  | 
| VkResult | vmaAllocateMemoryForImage (VmaAllocator allocator, VkImage image, const VmaAllocationCreateInfo *pCreateInfo, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo) | 
|  | Allocates memory suitable for given VkImage.
 | 
|  | 
| void | vmaFreeMemory (VmaAllocator allocator, const VmaAllocation allocation) | 
|  | Frees memory previously allocated using vmaAllocateMemory(), vmaAllocateMemoryForBuffer(), or vmaAllocateMemoryForImage(). 
 | 
|  | 
| void | vmaFreeMemoryPages (VmaAllocator allocator, size_t allocationCount, const VmaAllocation *pAllocations) | 
|  | Frees memory and destroys multiple allocations. 
 | 
|  | 
| void | vmaGetAllocationInfo (VmaAllocator allocator, VmaAllocation allocation, VmaAllocationInfo *pAllocationInfo) | 
|  | Returns current information about specified allocation. 
 | 
|  | 
| void | vmaGetAllocationInfo2 (VmaAllocator allocator, VmaAllocation allocation, VmaAllocationInfo2 *pAllocationInfo) | 
|  | Returns extended information about specified allocation. 
 | 
|  | 
| void | vmaSetAllocationUserData (VmaAllocator allocator, VmaAllocation allocation, void *pUserData) | 
|  | Sets pUserData in given allocation to new value. 
 | 
|  | 
| void | vmaSetAllocationName (VmaAllocator allocator, VmaAllocation allocation, const char *pName) | 
|  | Sets pName in given allocation to new value. 
 | 
|  | 
| void | vmaGetAllocationMemoryProperties (VmaAllocator allocator, VmaAllocation allocation, VkMemoryPropertyFlags *pFlags) | 
|  | Given an allocation, returns Property Flags of its memory type. 
 | 
|  | 
| VkResult | vmaGetMemoryWin32Handle (VmaAllocator allocator, VmaAllocation allocation, HANDLE hTargetProcess, HANDLE *pHandle) | 
|  | Given an allocation, returns Win32 handle that may be imported by other processes or APIs. 
 | 
|  | 
| VkResult | vmaMapMemory (VmaAllocator allocator, VmaAllocation allocation, void **ppData) | 
|  | Maps memory represented by given allocation and returns pointer to it. 
 | 
|  | 
| void | vmaUnmapMemory (VmaAllocator allocator, VmaAllocation allocation) | 
|  | Unmaps memory represented by given allocation, mapped previously using vmaMapMemory(). 
 | 
|  | 
| VkResult | vmaFlushAllocation (VmaAllocator allocator, VmaAllocation allocation, VkDeviceSize offset, VkDeviceSize size) | 
|  | Flushes memory of given allocation. 
 | 
|  | 
| VkResult | vmaInvalidateAllocation (VmaAllocator allocator, VmaAllocation allocation, VkDeviceSize offset, VkDeviceSize size) | 
|  | Invalidates memory of given allocation. 
 | 
|  | 
| VkResult | vmaFlushAllocations (VmaAllocator allocator, uint32_t allocationCount, const VmaAllocation *allocations, const VkDeviceSize *offsets, const VkDeviceSize *sizes) | 
|  | Flushes memory of given set of allocations. 
 | 
|  | 
| VkResult | vmaInvalidateAllocations (VmaAllocator allocator, uint32_t allocationCount, const VmaAllocation *allocations, const VkDeviceSize *offsets, const VkDeviceSize *sizes) | 
|  | Invalidates memory of given set of allocations. 
 | 
|  | 
| VkResult | vmaCopyMemoryToAllocation (VmaAllocator allocator, const void *pSrcHostPointer, VmaAllocation dstAllocation, VkDeviceSize dstAllocationLocalOffset, VkDeviceSize size) | 
|  | Maps the allocation temporarily if needed, copies data from specified host pointer to it, and flushes the memory from the host caches if needed. 
 | 
|  | 
| VkResult | vmaCopyAllocationToMemory (VmaAllocator allocator, VmaAllocation srcAllocation, VkDeviceSize srcAllocationLocalOffset, void *pDstHostPointer, VkDeviceSize size) | 
|  | Invalidates memory in the host caches if needed, maps the allocation temporarily if needed, and copies data from it to a specified host pointer. 
 | 
|  | 
| VkResult | vmaCheckCorruption (VmaAllocator allocator, uint32_t memoryTypeBits) | 
|  | Checks magic number in margins around all allocations in given memory types (in both default and custom pools) in search for corruptions. 
 | 
|  | 
| VkResult | vmaBeginDefragmentation (VmaAllocator allocator, const VmaDefragmentationInfo *pInfo, VmaDefragmentationContext *pContext) | 
|  | Begins defragmentation process. 
 | 
|  | 
| void | vmaEndDefragmentation (VmaAllocator allocator, VmaDefragmentationContext context, VmaDefragmentationStats *pStats) | 
|  | Ends defragmentation process. 
 | 
|  | 
| VkResult | vmaBeginDefragmentationPass (VmaAllocator allocator, VmaDefragmentationContext context, VmaDefragmentationPassMoveInfo *pPassInfo) | 
|  | Starts single defragmentation pass. 
 | 
|  | 
| VkResult | vmaEndDefragmentationPass (VmaAllocator allocator, VmaDefragmentationContext context, VmaDefragmentationPassMoveInfo *pPassInfo) | 
|  | Ends single defragmentation pass. 
 | 
|  | 
| VkResult | vmaBindBufferMemory (VmaAllocator allocator, VmaAllocation allocation, VkBuffer buffer) | 
|  | Binds buffer to allocation. 
 | 
|  | 
| VkResult | vmaBindBufferMemory2 (VmaAllocator allocator, VmaAllocation allocation, VkDeviceSize allocationLocalOffset, VkBuffer buffer, const void *(VkBindBufferMemoryInfoKHR) pNext) | 
|  | Binds buffer to allocation with additional parameters. 
 | 
|  | 
| VkResult | vmaBindImageMemory (VmaAllocator allocator, VmaAllocation allocation, VkImage image) | 
|  | Binds image to allocation. 
 | 
|  | 
| VkResult | vmaBindImageMemory2 (VmaAllocator allocator, VmaAllocation allocation, VkDeviceSize allocationLocalOffset, VkImage image, const void *(VkBindImageMemoryInfoKHR) pNext) | 
|  | Binds image to allocation with additional parameters. 
 | 
|  | 
| VkResult | vmaCreateBuffer (VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkBuffer *pBuffer, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo) | 
|  | Creates a new VkBuffer, allocates and binds memory for it.
 | 
|  | 
| VkResult | vmaCreateBufferWithAlignment (VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkDeviceSize minAlignment, VkBuffer *pBuffer, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo) | 
|  | Creates a buffer with additional minimum alignment. 
 | 
|  | 
| VkResult | vmaCreateAliasingBuffer (VmaAllocator allocator, VmaAllocation allocation, const VkBufferCreateInfo *pBufferCreateInfo, VkBuffer *pBuffer) | 
|  | Creates a new VkBuffer, binds already created memory for it.
 | 
|  | 
| VkResult | vmaCreateAliasingBuffer2 (VmaAllocator allocator, VmaAllocation allocation, VkDeviceSize allocationLocalOffset, const VkBufferCreateInfo *pBufferCreateInfo, VkBuffer *pBuffer) | 
|  | Creates a new VkBuffer, binds already created memory for it.
 | 
|  | 
| void | vmaDestroyBuffer (VmaAllocator allocator, VkBuffer buffer, VmaAllocation allocation) | 
|  | Destroys Vulkan buffer and frees allocated memory. 
 | 
|  | 
| VkResult | vmaCreateImage (VmaAllocator allocator, const VkImageCreateInfo *pImageCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkImage *pImage, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo) | 
|  | Function similar to vmaCreateBuffer(). 
 | 
|  | 
| VkResult | vmaCreateAliasingImage (VmaAllocator allocator, VmaAllocation allocation, const VkImageCreateInfo *pImageCreateInfo, VkImage *pImage) | 
|  | Function similar to vmaCreateAliasingBuffer() but for images. 
 | 
|  | 
| VkResult | vmaCreateAliasingImage2 (VmaAllocator allocator, VmaAllocation allocation, VkDeviceSize allocationLocalOffset, const VkImageCreateInfo *pImageCreateInfo, VkImage *pImage) | 
|  | Function similar to vmaCreateAliasingBuffer2() but for images. 
 | 
|  | 
| void | vmaDestroyImage (VmaAllocator allocator, VkImage image, VmaAllocation allocation) | 
|  | Destroys Vulkan image and frees allocated memory. 
 | 
|  | 
| VkResult | vmaCreateVirtualBlock (const VmaVirtualBlockCreateInfo *pCreateInfo, VmaVirtualBlock *pVirtualBlock) | 
|  | Creates new VmaVirtualBlock object. 
 | 
|  | 
| void | vmaDestroyVirtualBlock (VmaVirtualBlock virtualBlock) | 
|  | Destroys VmaVirtualBlock object. 
 | 
|  | 
| VkBool32 | vmaIsVirtualBlockEmpty (VmaVirtualBlock virtualBlock) | 
|  | Returns true of the VmaVirtualBlock is empty - contains 0 virtual allocations and has all its space available for new allocations. 
 | 
|  | 
| void | vmaGetVirtualAllocationInfo (VmaVirtualBlock virtualBlock, VmaVirtualAllocation allocation, VmaVirtualAllocationInfo *pVirtualAllocInfo) | 
|  | Returns information about a specific virtual allocation within a virtual block, like its size and pUserDatapointer.
 | 
|  | 
| VkResult | vmaVirtualAllocate (VmaVirtualBlock virtualBlock, const VmaVirtualAllocationCreateInfo *pCreateInfo, VmaVirtualAllocation *pAllocation, VkDeviceSize *pOffset) | 
|  | Allocates new virtual allocation inside given VmaVirtualBlock. 
 | 
|  | 
| void | vmaVirtualFree (VmaVirtualBlock virtualBlock, VmaVirtualAllocation allocation) | 
|  | Frees virtual allocation inside given VmaVirtualBlock. 
 | 
|  | 
| void | vmaClearVirtualBlock (VmaVirtualBlock virtualBlock) | 
|  | Frees all virtual allocations inside given VmaVirtualBlock. 
 | 
|  | 
| void | vmaSetVirtualAllocationUserData (VmaVirtualBlock virtualBlock, VmaVirtualAllocation allocation, void *pUserData) | 
|  | Changes custom pointer associated with given virtual allocation. 
 | 
|  | 
| void | vmaGetVirtualBlockStatistics (VmaVirtualBlock virtualBlock, VmaStatistics *pStats) | 
|  | Calculates and returns statistics about virtual allocations and memory usage in given VmaVirtualBlock. 
 | 
|  | 
| void | vmaCalculateVirtualBlockStatistics (VmaVirtualBlock virtualBlock, VmaDetailedStatistics *pStats) | 
|  | Calculates and returns detailed statistics about virtual allocations and memory usage in given VmaVirtualBlock. 
 | 
|  | 
| void | vmaBuildVirtualBlockStatsString (VmaVirtualBlock virtualBlock, char **ppStatsString, VkBool32 detailedMap) | 
|  | Builds and returns a null-terminated string in JSON format with information about given VmaVirtualBlock. 
 | 
|  | 
| void | vmaFreeVirtualBlockStatsString (VmaVirtualBlock virtualBlock, char *pStatsString) | 
|  | Frees a string returned by vmaBuildVirtualBlockStatsString(). 
 | 
|  | 
| void | vmaBuildStatsString (VmaAllocator allocator, char **ppStatsString, VkBool32 detailedMap) | 
|  | Builds and returns statistics as a null-terminated string in JSON format. 
 | 
|  | 
| void | vmaFreeStatsString (VmaAllocator allocator, char *pStatsString) | 
|  |