Pyrogenesis trunk
Classes | Macros | Typedefs | Enumerations | Functions
vk_mem_alloc.h File Reference
#include <vulkan/vulkan.h>
Include dependency graph for vk_mem_alloc.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  VmaDeviceMemoryCallbacks
 Set of callbacks that the library will call for vkAllocateMemory and vkFreeMemory. More...
 
struct  VmaVulkanFunctions
 Pointers to some Vulkan functions - a subset used by the library. More...
 
struct  VmaAllocatorCreateInfo
 Description of a Allocator to be created. More...
 
struct  VmaAllocatorInfo
 Information about existing VmaAllocator object. More...
 
struct  VmaStatistics
 Calculated statistics of memory usage e.g. More...
 
struct  VmaDetailedStatistics
 More detailed statistics than VmaStatistics. More...
 
struct  VmaTotalStatistics
 General statistics from current state of the Allocator - total memory usage across all memory heaps and types. More...
 
struct  VmaBudget
 Statistics of current memory usage and available budget for a specific memory heap. More...
 
struct  VmaAllocationCreateInfo
 Parameters of new VmaAllocation. More...
 
struct  VmaPoolCreateInfo
 Describes parameter of created VmaPool. More...
 
struct  VmaAllocationInfo
 Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo(). More...
 
struct  VmaDefragmentationInfo
 Parameters for defragmentation. More...
 
struct  VmaDefragmentationMove
 Single move of an allocation to be done for defragmentation. More...
 
struct  VmaDefragmentationPassMoveInfo
 Parameters for incremental defragmentation steps. More...
 
struct  VmaDefragmentationStats
 Statistics returned for defragmentation process in function vmaEndDefragmentation(). More...
 
struct  VmaVirtualBlockCreateInfo
 Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock(). More...
 
struct  VmaVirtualAllocationCreateInfo
 Parameters of created virtual allocation to be passed to vmaVirtualAllocate(). More...
 
struct  VmaVirtualAllocationInfo
 Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo(). More...
 

Macros

#define VMA_VULKAN_VERSION   1000000
 
#define VMA_DEDICATED_ALLOCATION   0
 
#define VMA_BIND_MEMORY2   0
 
#define VMA_MEMORY_BUDGET   0
 
#define VMA_BUFFER_DEVICE_ADDRESS   0
 
#define VMA_MEMORY_PRIORITY   0
 
#define VMA_EXTERNAL_MEMORY   0
 
#define VMA_CALL_PRE
 
#define VMA_CALL_POST
 
#define VMA_LEN_IF_NOT_NULL(len)
 
#define VMA_NULLABLE
 
#define VMA_NOT_NULL
 
#define VMA_NOT_NULL_NON_DISPATCHABLE
 
#define VMA_NULLABLE_NON_DISPATCHABLE
 
#define VMA_STATS_STRING_ENABLED   1
 

Typedefs

typedef enum VmaAllocatorCreateFlagBits VmaAllocatorCreateFlagBits
 Flags for created VmaAllocator. More...
 
typedef VkFlags VmaAllocatorCreateFlags
 See VmaAllocatorCreateFlagBits. More...
 
typedef enum VmaMemoryUsage VmaMemoryUsage
 Intended usage of the allocated memory. More...
 
typedef enum VmaAllocationCreateFlagBits VmaAllocationCreateFlagBits
 Flags to be passed as VmaAllocationCreateInfo::flags. More...
 
typedef VkFlags VmaAllocationCreateFlags
 See VmaAllocationCreateFlagBits. More...
 
typedef enum VmaPoolCreateFlagBits VmaPoolCreateFlagBits
 Flags to be passed as VmaPoolCreateInfo::flags. More...
 
typedef VkFlags VmaPoolCreateFlags
 Flags to be passed as VmaPoolCreateInfo::flags. See VmaPoolCreateFlagBits. More...
 
typedef enum VmaDefragmentationFlagBits VmaDefragmentationFlagBits
 Flags to be passed as VmaDefragmentationInfo::flags. More...
 
typedef VkFlags VmaDefragmentationFlags
 See VmaDefragmentationFlagBits. More...
 
typedef enum VmaDefragmentationMoveOperation VmaDefragmentationMoveOperation
 Operation performed on single defragmentation move. See structure VmaDefragmentationMove. More...
 
typedef enum VmaVirtualBlockCreateFlagBits VmaVirtualBlockCreateFlagBits
 Flags to be passed as VmaVirtualBlockCreateInfo::flags. More...
 
typedef VkFlags VmaVirtualBlockCreateFlags
 Flags to be passed as VmaVirtualBlockCreateInfo::flags. See VmaVirtualBlockCreateFlagBits. More...
 
typedef enum VmaVirtualAllocationCreateFlagBits VmaVirtualAllocationCreateFlagBits
 Flags to be passed as VmaVirtualAllocationCreateInfo::flags. More...
 
typedef VkFlags VmaVirtualAllocationCreateFlags
 Flags to be passed as VmaVirtualAllocationCreateInfo::flags. See VmaVirtualAllocationCreateFlagBits. More...
 
typedef void(VKAPI_PTRPFN_vmaAllocateDeviceMemoryFunction) (VmaAllocator VMA_NOT_NULL allocator, uint32_t memoryType, VkDeviceMemory VMA_NOT_NULL_NON_DISPATCHABLE memory, VkDeviceSize size, void *VMA_NULLABLE pUserData)
 Callback function called after successful vkAllocateMemory. More...
 
typedef void(VKAPI_PTRPFN_vmaFreeDeviceMemoryFunction) (VmaAllocator VMA_NOT_NULL allocator, uint32_t memoryType, VkDeviceMemory VMA_NOT_NULL_NON_DISPATCHABLE memory, VkDeviceSize size, void *VMA_NULLABLE pUserData)
 Callback function called before vkFreeMemory. More...
 
typedef struct VmaDeviceMemoryCallbacks VmaDeviceMemoryCallbacks
 Set of callbacks that the library will call for vkAllocateMemory and vkFreeMemory. More...
 
typedef struct VmaVulkanFunctions VmaVulkanFunctions
 Pointers to some Vulkan functions - a subset used by the library. More...
 
typedef struct VmaAllocatorCreateInfo VmaAllocatorCreateInfo
 Description of a Allocator to be created. More...
 
typedef struct VmaAllocatorInfo VmaAllocatorInfo
 Information about existing VmaAllocator object. More...
 
typedef struct VmaStatistics VmaStatistics
 Calculated statistics of memory usage e.g. More...
 
typedef struct VmaDetailedStatistics VmaDetailedStatistics
 More detailed statistics than VmaStatistics. More...
 
typedef struct VmaTotalStatistics VmaTotalStatistics
 General statistics from current state of the Allocator - total memory usage across all memory heaps and types. More...
 
typedef struct VmaBudget VmaBudget
 Statistics of current memory usage and available budget for a specific memory heap. More...
 
typedef struct VmaAllocationCreateInfo VmaAllocationCreateInfo
 Parameters of new VmaAllocation. More...
 
typedef struct VmaPoolCreateInfo VmaPoolCreateInfo
 Describes parameter of created VmaPool. More...
 
typedef struct VmaAllocationInfo VmaAllocationInfo
 Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo(). More...
 
typedef struct VmaDefragmentationInfo VmaDefragmentationInfo
 Parameters for defragmentation. More...
 
typedef struct VmaDefragmentationMove VmaDefragmentationMove
 Single move of an allocation to be done for defragmentation. More...
 
typedef struct VmaDefragmentationPassMoveInfo VmaDefragmentationPassMoveInfo
 Parameters for incremental defragmentation steps. More...
 
typedef struct VmaDefragmentationStats VmaDefragmentationStats
 Statistics returned for defragmentation process in function vmaEndDefragmentation(). More...
 
typedef struct VmaVirtualBlockCreateInfo VmaVirtualBlockCreateInfo
 Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock(). More...
 
typedef struct VmaVirtualAllocationCreateInfo VmaVirtualAllocationCreateInfo
 Parameters of created virtual allocation to be passed to vmaVirtualAllocate(). More...
 
typedef struct VmaVirtualAllocationInfo VmaVirtualAllocationInfo
 Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo(). More...
 

Enumerations

enum  VmaAllocatorCreateFlagBits {
  VMA_ALLOCATOR_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 0x00000001 , VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT = 0x00000002 , VMA_ALLOCATOR_CREATE_KHR_BIND_MEMORY2_BIT = 0x00000004 , VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT = 0x00000008 ,
  VMA_ALLOCATOR_CREATE_AMD_DEVICE_COHERENT_MEMORY_BIT = 0x00000010 , VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT = 0x00000020 , VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT = 0x00000040 , VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
}
 Flags for created VmaAllocator. More...
 
enum  VmaMemoryUsage {
  VMA_MEMORY_USAGE_UNKNOWN = 0 , VMA_MEMORY_USAGE_GPU_ONLY = 1 , VMA_MEMORY_USAGE_CPU_ONLY = 2 , VMA_MEMORY_USAGE_CPU_TO_GPU = 3 ,
  VMA_MEMORY_USAGE_GPU_TO_CPU = 4 , VMA_MEMORY_USAGE_CPU_COPY = 5 , VMA_MEMORY_USAGE_GPU_LAZILY_ALLOCATED = 6 , VMA_MEMORY_USAGE_AUTO = 7 ,
  VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE = 8 , VMA_MEMORY_USAGE_AUTO_PREFER_HOST = 9 , VMA_MEMORY_USAGE_MAX_ENUM = 0x7FFFFFFF
}
 Intended usage of the allocated memory. More...
 
enum  VmaAllocationCreateFlagBits {
  VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT = 0x00000001 , VMA_ALLOCATION_CREATE_NEVER_ALLOCATE_BIT = 0x00000002 , VMA_ALLOCATION_CREATE_MAPPED_BIT = 0x00000004 , VMA_ALLOCATION_CREATE_USER_DATA_COPY_STRING_BIT = 0x00000020 ,
  VMA_ALLOCATION_CREATE_UPPER_ADDRESS_BIT = 0x00000040 , VMA_ALLOCATION_CREATE_DONT_BIND_BIT = 0x00000080 , VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT = 0x00000100 , VMA_ALLOCATION_CREATE_CAN_ALIAS_BIT = 0x00000200 ,
  VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT = 0x00000400 , VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT = 0x00000800 , VMA_ALLOCATION_CREATE_HOST_ACCESS_ALLOW_TRANSFER_INSTEAD_BIT = 0x00001000 , VMA_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT = 0x00010000 ,
  VMA_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT = 0x00020000 , VMA_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT = 0x00040000 , VMA_ALLOCATION_CREATE_STRATEGY_BEST_FIT_BIT = VMA_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT , VMA_ALLOCATION_CREATE_STRATEGY_FIRST_FIT_BIT = VMA_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT ,
  VMA_ALLOCATION_CREATE_STRATEGY_MASK , VMA_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
}
 Flags to be passed as VmaAllocationCreateInfo::flags. More...
 
enum  VmaPoolCreateFlagBits { VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT = 0x00000002 , VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT = 0x00000004 , VMA_POOL_CREATE_ALGORITHM_MASK , VMA_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF }
 Flags to be passed as VmaPoolCreateInfo::flags. More...
 
enum  VmaDefragmentationFlagBits {
  VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT = 0x1 , VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT = 0x2 , VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT = 0x4 , VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT = 0x8 ,
  VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK , VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
}
 Flags to be passed as VmaDefragmentationInfo::flags. More...
 
enum  VmaDefragmentationMoveOperation { VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY = 0 , VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE = 1 , VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY = 2 }
 Operation performed on single defragmentation move. See structure VmaDefragmentationMove. More...
 
enum  VmaVirtualBlockCreateFlagBits { VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT = 0x00000001 , VMA_VIRTUAL_BLOCK_CREATE_ALGORITHM_MASK , VMA_VIRTUAL_BLOCK_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF }
 Flags to be passed as VmaVirtualBlockCreateInfo::flags. More...
 
enum  VmaVirtualAllocationCreateFlagBits {
  VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT = VMA_ALLOCATION_CREATE_UPPER_ADDRESS_BIT , VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT = VMA_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT , VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT = VMA_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT , VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT = VMA_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT ,
  VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MASK = VMA_ALLOCATION_CREATE_STRATEGY_MASK , VMA_VIRTUAL_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
}
 Flags to be passed as VmaVirtualAllocationCreateInfo::flags. More...
 

Functions

 VK_DEFINE_NON_DISPATCHABLE_HANDLE (VmaVirtualAllocation)
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateAllocator (const VmaAllocatorCreateInfo *VMA_NOT_NULL pCreateInfo, VmaAllocator VMA_NULLABLE *VMA_NOT_NULL pAllocator)
 Creates VmaAllocator object. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaDestroyAllocator (VmaAllocator VMA_NULLABLE allocator)
 Destroys allocator object. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaGetAllocatorInfo (VmaAllocator VMA_NOT_NULL allocator, VmaAllocatorInfo *VMA_NOT_NULL pAllocatorInfo)
 Returns information about existing VmaAllocator object - handle to Vulkan device etc. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaGetPhysicalDeviceProperties (VmaAllocator VMA_NOT_NULL allocator, const VkPhysicalDeviceProperties *VMA_NULLABLE *VMA_NOT_NULL ppPhysicalDeviceProperties)
 PhysicalDeviceProperties are fetched from physicalDevice by the allocator. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaGetMemoryProperties (VmaAllocator VMA_NOT_NULL allocator, const VkPhysicalDeviceMemoryProperties *VMA_NULLABLE *VMA_NOT_NULL ppPhysicalDeviceMemoryProperties)
 PhysicalDeviceMemoryProperties are fetched from physicalDevice by the allocator. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaGetMemoryTypeProperties (VmaAllocator VMA_NOT_NULL allocator, uint32_t memoryTypeIndex, VkMemoryPropertyFlags *VMA_NOT_NULL pFlags)
 Given Memory Type Index, returns Property Flags of this memory type. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaSetCurrentFrameIndex (VmaAllocator VMA_NOT_NULL allocator, uint32_t frameIndex)
 Sets index of the current frame. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaCalculateStatistics (VmaAllocator VMA_NOT_NULL allocator, VmaTotalStatistics *VMA_NOT_NULL pStats)
 Retrieves statistics from current state of the Allocator. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaGetHeapBudgets (VmaAllocator VMA_NOT_NULL allocator, VmaBudget *VMA_NOT_NULL VMA_LEN_IF_NOT_NULL("VkPhysicalDeviceMemoryProperties::memoryHeapCount") pBudgets)
 Retrieves information about current memory usage and budget for all memory heaps. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaFindMemoryTypeIndex (VmaAllocator VMA_NOT_NULL allocator, uint32_t memoryTypeBits, const VmaAllocationCreateInfo *VMA_NOT_NULL pAllocationCreateInfo, uint32_t *VMA_NOT_NULL pMemoryTypeIndex)
 Helps to find memoryTypeIndex, given memoryTypeBits and VmaAllocationCreateInfo. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaFindMemoryTypeIndexForBufferInfo (VmaAllocator VMA_NOT_NULL allocator, const VkBufferCreateInfo *VMA_NOT_NULL pBufferCreateInfo, const VmaAllocationCreateInfo *VMA_NOT_NULL pAllocationCreateInfo, uint32_t *VMA_NOT_NULL pMemoryTypeIndex)
 Helps to find memoryTypeIndex, given VkBufferCreateInfo and VmaAllocationCreateInfo. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaFindMemoryTypeIndexForImageInfo (VmaAllocator VMA_NOT_NULL allocator, const VkImageCreateInfo *VMA_NOT_NULL pImageCreateInfo, const VmaAllocationCreateInfo *VMA_NOT_NULL pAllocationCreateInfo, uint32_t *VMA_NOT_NULL pMemoryTypeIndex)
 Helps to find memoryTypeIndex, given VkImageCreateInfo and VmaAllocationCreateInfo. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreatePool (VmaAllocator VMA_NOT_NULL allocator, const VmaPoolCreateInfo *VMA_NOT_NULL pCreateInfo, VmaPool VMA_NULLABLE *VMA_NOT_NULL pPool)
 Allocates Vulkan device memory and creates VmaPool object. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaDestroyPool (VmaAllocator VMA_NOT_NULL allocator, VmaPool VMA_NULLABLE pool)
 Destroys VmaPool object and frees Vulkan device memory. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaGetPoolStatistics (VmaAllocator VMA_NOT_NULL allocator, VmaPool VMA_NOT_NULL pool, VmaStatistics *VMA_NOT_NULL pPoolStats)
 Retrieves statistics of existing VmaPool object. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaCalculatePoolStatistics (VmaAllocator VMA_NOT_NULL allocator, VmaPool VMA_NOT_NULL pool, VmaDetailedStatistics *VMA_NOT_NULL pPoolStats)
 Retrieves detailed statistics of existing VmaPool object. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaCheckPoolCorruption (VmaAllocator VMA_NOT_NULL allocator, VmaPool VMA_NOT_NULL pool)
 Checks magic number in margins around all allocations in given memory pool in search for corruptions. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaGetPoolName (VmaAllocator VMA_NOT_NULL allocator, VmaPool VMA_NOT_NULL pool, const char *VMA_NULLABLE *VMA_NOT_NULL ppName)
 Retrieves name of a custom pool. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaSetPoolName (VmaAllocator VMA_NOT_NULL allocator, VmaPool VMA_NOT_NULL pool, const char *VMA_NULLABLE pName)
 Sets name of a custom pool. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaAllocateMemory (VmaAllocator VMA_NOT_NULL allocator, const VkMemoryRequirements *VMA_NOT_NULL pVkMemoryRequirements, const VmaAllocationCreateInfo *VMA_NOT_NULL pCreateInfo, VmaAllocation VMA_NULLABLE *VMA_NOT_NULL pAllocation, VmaAllocationInfo *VMA_NULLABLE pAllocationInfo)
 General purpose memory allocation. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaAllocateMemoryPages (VmaAllocator VMA_NOT_NULL allocator, const VkMemoryRequirements *VMA_NOT_NULL VMA_LEN_IF_NOT_NULL(allocationCount) pVkMemoryRequirements, const VmaAllocationCreateInfo *VMA_NOT_NULL VMA_LEN_IF_NOT_NULL(allocationCount) pCreateInfo, size_t allocationCount, VmaAllocation VMA_NULLABLE *VMA_NOT_NULL VMA_LEN_IF_NOT_NULL(allocationCount) pAllocations, VmaAllocationInfo *VMA_NULLABLE VMA_LEN_IF_NOT_NULL(allocationCount) pAllocationInfo)
 General purpose memory allocation for multiple allocation objects at once. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaAllocateMemoryForBuffer (VmaAllocator VMA_NOT_NULL allocator, VkBuffer VMA_NOT_NULL_NON_DISPATCHABLE buffer, const VmaAllocationCreateInfo *VMA_NOT_NULL pCreateInfo, VmaAllocation VMA_NULLABLE *VMA_NOT_NULL pAllocation, VmaAllocationInfo *VMA_NULLABLE pAllocationInfo)
 Allocates memory suitable for given VkBuffer. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaAllocateMemoryForImage (VmaAllocator VMA_NOT_NULL allocator, VkImage VMA_NOT_NULL_NON_DISPATCHABLE image, const VmaAllocationCreateInfo *VMA_NOT_NULL pCreateInfo, VmaAllocation VMA_NULLABLE *VMA_NOT_NULL pAllocation, VmaAllocationInfo *VMA_NULLABLE pAllocationInfo)
 Allocates memory suitable for given VkImage. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaFreeMemory (VmaAllocator VMA_NOT_NULL allocator, const VmaAllocation VMA_NULLABLE allocation)
 Frees memory previously allocated using vmaAllocateMemory(), vmaAllocateMemoryForBuffer(), or vmaAllocateMemoryForImage(). More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaFreeMemoryPages (VmaAllocator VMA_NOT_NULL allocator, size_t allocationCount, const VmaAllocation VMA_NULLABLE *VMA_NOT_NULL VMA_LEN_IF_NOT_NULL(allocationCount) pAllocations)
 Frees memory and destroys multiple allocations. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaGetAllocationInfo (VmaAllocator VMA_NOT_NULL allocator, VmaAllocation VMA_NOT_NULL allocation, VmaAllocationInfo *VMA_NOT_NULL pAllocationInfo)
 Returns current information about specified allocation. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaSetAllocationUserData (VmaAllocator VMA_NOT_NULL allocator, VmaAllocation VMA_NOT_NULL allocation, void *VMA_NULLABLE pUserData)
 Sets pUserData in given allocation to new value. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaSetAllocationName (VmaAllocator VMA_NOT_NULL allocator, VmaAllocation VMA_NOT_NULL allocation, const char *VMA_NULLABLE pName)
 Sets pName in given allocation to new value. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaGetAllocationMemoryProperties (VmaAllocator VMA_NOT_NULL allocator, VmaAllocation VMA_NOT_NULL allocation, VkMemoryPropertyFlags *VMA_NOT_NULL pFlags)
 Given an allocation, returns Property Flags of its memory type. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaMapMemory (VmaAllocator VMA_NOT_NULL allocator, VmaAllocation VMA_NOT_NULL allocation, void *VMA_NULLABLE *VMA_NOT_NULL ppData)
 Maps memory represented by given allocation and returns pointer to it. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaUnmapMemory (VmaAllocator VMA_NOT_NULL allocator, VmaAllocation VMA_NOT_NULL allocation)
 Unmaps memory represented by given allocation, mapped previously using vmaMapMemory(). More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaFlushAllocation (VmaAllocator VMA_NOT_NULL allocator, VmaAllocation VMA_NOT_NULL allocation, VkDeviceSize offset, VkDeviceSize size)
 Flushes memory of given allocation. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaInvalidateAllocation (VmaAllocator VMA_NOT_NULL allocator, VmaAllocation VMA_NOT_NULL allocation, VkDeviceSize offset, VkDeviceSize size)
 Invalidates memory of given allocation. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaFlushAllocations (VmaAllocator VMA_NOT_NULL allocator, uint32_t allocationCount, const VmaAllocation VMA_NOT_NULL *VMA_NULLABLE VMA_LEN_IF_NOT_NULL(allocationCount) allocations, const VkDeviceSize *VMA_NULLABLE VMA_LEN_IF_NOT_NULL(allocationCount) offsets, const VkDeviceSize *VMA_NULLABLE VMA_LEN_IF_NOT_NULL(allocationCount) sizes)
 Flushes memory of given set of allocations. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaInvalidateAllocations (VmaAllocator VMA_NOT_NULL allocator, uint32_t allocationCount, const VmaAllocation VMA_NOT_NULL *VMA_NULLABLE VMA_LEN_IF_NOT_NULL(allocationCount) allocations, const VkDeviceSize *VMA_NULLABLE VMA_LEN_IF_NOT_NULL(allocationCount) offsets, const VkDeviceSize *VMA_NULLABLE VMA_LEN_IF_NOT_NULL(allocationCount) sizes)
 Invalidates memory of given set of allocations. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaCheckCorruption (VmaAllocator VMA_NOT_NULL 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. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaBeginDefragmentation (VmaAllocator VMA_NOT_NULL allocator, const VmaDefragmentationInfo *VMA_NOT_NULL pInfo, VmaDefragmentationContext VMA_NULLABLE *VMA_NOT_NULL pContext)
 Begins defragmentation process. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaEndDefragmentation (VmaAllocator VMA_NOT_NULL allocator, VmaDefragmentationContext VMA_NOT_NULL context, VmaDefragmentationStats *VMA_NULLABLE pStats)
 Ends defragmentation process. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaBeginDefragmentationPass (VmaAllocator VMA_NOT_NULL allocator, VmaDefragmentationContext VMA_NOT_NULL context, VmaDefragmentationPassMoveInfo *VMA_NOT_NULL pPassInfo)
 Starts single defragmentation pass. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaEndDefragmentationPass (VmaAllocator VMA_NOT_NULL allocator, VmaDefragmentationContext VMA_NOT_NULL context, VmaDefragmentationPassMoveInfo *VMA_NOT_NULL pPassInfo)
 Ends single defragmentation pass. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaBindBufferMemory (VmaAllocator VMA_NOT_NULL allocator, VmaAllocation VMA_NOT_NULL allocation, VkBuffer VMA_NOT_NULL_NON_DISPATCHABLE buffer)
 Binds buffer to allocation. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaBindBufferMemory2 (VmaAllocator VMA_NOT_NULL allocator, VmaAllocation VMA_NOT_NULL allocation, VkDeviceSize allocationLocalOffset, VkBuffer VMA_NOT_NULL_NON_DISPATCHABLE buffer, const void *VMA_NULLABLE pNext)
 Binds buffer to allocation with additional parameters. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaBindImageMemory (VmaAllocator VMA_NOT_NULL allocator, VmaAllocation VMA_NOT_NULL allocation, VkImage VMA_NOT_NULL_NON_DISPATCHABLE image)
 Binds image to allocation. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaBindImageMemory2 (VmaAllocator VMA_NOT_NULL allocator, VmaAllocation VMA_NOT_NULL allocation, VkDeviceSize allocationLocalOffset, VkImage VMA_NOT_NULL_NON_DISPATCHABLE image, const void *VMA_NULLABLE pNext)
 Binds image to allocation with additional parameters. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateBuffer (VmaAllocator VMA_NOT_NULL allocator, const VkBufferCreateInfo *VMA_NOT_NULL pBufferCreateInfo, const VmaAllocationCreateInfo *VMA_NOT_NULL pAllocationCreateInfo, VkBuffer VMA_NULLABLE_NON_DISPATCHABLE *VMA_NOT_NULL pBuffer, VmaAllocation VMA_NULLABLE *VMA_NOT_NULL pAllocation, VmaAllocationInfo *VMA_NULLABLE pAllocationInfo)
 Creates a new VkBuffer, allocates and binds memory for it. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateBufferWithAlignment (VmaAllocator VMA_NOT_NULL allocator, const VkBufferCreateInfo *VMA_NOT_NULL pBufferCreateInfo, const VmaAllocationCreateInfo *VMA_NOT_NULL pAllocationCreateInfo, VkDeviceSize minAlignment, VkBuffer VMA_NULLABLE_NON_DISPATCHABLE *VMA_NOT_NULL pBuffer, VmaAllocation VMA_NULLABLE *VMA_NOT_NULL pAllocation, VmaAllocationInfo *VMA_NULLABLE pAllocationInfo)
 Creates a buffer with additional minimum alignment. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateAliasingBuffer (VmaAllocator VMA_NOT_NULL allocator, VmaAllocation VMA_NOT_NULL allocation, const VkBufferCreateInfo *VMA_NOT_NULL pBufferCreateInfo, VkBuffer VMA_NULLABLE_NON_DISPATCHABLE *VMA_NOT_NULL pBuffer)
 Creates a new VkBuffer, binds already created memory for it. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaDestroyBuffer (VmaAllocator VMA_NOT_NULL allocator, VkBuffer VMA_NULLABLE_NON_DISPATCHABLE buffer, VmaAllocation VMA_NULLABLE allocation)
 Destroys Vulkan buffer and frees allocated memory. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateImage (VmaAllocator VMA_NOT_NULL allocator, const VkImageCreateInfo *VMA_NOT_NULL pImageCreateInfo, const VmaAllocationCreateInfo *VMA_NOT_NULL pAllocationCreateInfo, VkImage VMA_NULLABLE_NON_DISPATCHABLE *VMA_NOT_NULL pImage, VmaAllocation VMA_NULLABLE *VMA_NOT_NULL pAllocation, VmaAllocationInfo *VMA_NULLABLE pAllocationInfo)
 Function similar to vmaCreateBuffer(). More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateAliasingImage (VmaAllocator VMA_NOT_NULL allocator, VmaAllocation VMA_NOT_NULL allocation, const VkImageCreateInfo *VMA_NOT_NULL pImageCreateInfo, VkImage VMA_NULLABLE_NON_DISPATCHABLE *VMA_NOT_NULL pImage)
 Function similar to vmaCreateAliasingBuffer(). More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaDestroyImage (VmaAllocator VMA_NOT_NULL allocator, VkImage VMA_NULLABLE_NON_DISPATCHABLE image, VmaAllocation VMA_NULLABLE allocation)
 Destroys Vulkan image and frees allocated memory. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateVirtualBlock (const VmaVirtualBlockCreateInfo *VMA_NOT_NULL pCreateInfo, VmaVirtualBlock VMA_NULLABLE *VMA_NOT_NULL pVirtualBlock)
 Creates new VmaVirtualBlock object. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaDestroyVirtualBlock (VmaVirtualBlock VMA_NULLABLE virtualBlock)
 Destroys VmaVirtualBlock object. More...
 
VMA_CALL_PRE VkBool32 VMA_CALL_POST vmaIsVirtualBlockEmpty (VmaVirtualBlock VMA_NOT_NULL virtualBlock)
 Returns true of the VmaVirtualBlock is empty - contains 0 virtual allocations and has all its space available for new allocations. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaGetVirtualAllocationInfo (VmaVirtualBlock VMA_NOT_NULL virtualBlock, VmaVirtualAllocation VMA_NOT_NULL_NON_DISPATCHABLE allocation, VmaVirtualAllocationInfo *VMA_NOT_NULL pVirtualAllocInfo)
 Returns information about a specific virtual allocation within a virtual block, like its size and pUserData pointer. More...
 
VMA_CALL_PRE VkResult VMA_CALL_POST vmaVirtualAllocate (VmaVirtualBlock VMA_NOT_NULL virtualBlock, const VmaVirtualAllocationCreateInfo *VMA_NOT_NULL pCreateInfo, VmaVirtualAllocation VMA_NULLABLE_NON_DISPATCHABLE *VMA_NOT_NULL pAllocation, VkDeviceSize *VMA_NULLABLE pOffset)
 Allocates new virtual allocation inside given VmaVirtualBlock. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaVirtualFree (VmaVirtualBlock VMA_NOT_NULL virtualBlock, VmaVirtualAllocation VMA_NULLABLE_NON_DISPATCHABLE allocation)
 Frees virtual allocation inside given VmaVirtualBlock. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaClearVirtualBlock (VmaVirtualBlock VMA_NOT_NULL virtualBlock)
 Frees all virtual allocations inside given VmaVirtualBlock. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaSetVirtualAllocationUserData (VmaVirtualBlock VMA_NOT_NULL virtualBlock, VmaVirtualAllocation VMA_NOT_NULL_NON_DISPATCHABLE allocation, void *VMA_NULLABLE pUserData)
 Changes custom pointer associated with given virtual allocation. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaGetVirtualBlockStatistics (VmaVirtualBlock VMA_NOT_NULL virtualBlock, VmaStatistics *VMA_NOT_NULL pStats)
 Calculates and returns statistics about virtual allocations and memory usage in given VmaVirtualBlock. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaCalculateVirtualBlockStatistics (VmaVirtualBlock VMA_NOT_NULL virtualBlock, VmaDetailedStatistics *VMA_NOT_NULL pStats)
 Calculates and returns detailed statistics about virtual allocations and memory usage in given VmaVirtualBlock. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaBuildVirtualBlockStatsString (VmaVirtualBlock VMA_NOT_NULL virtualBlock, char *VMA_NULLABLE *VMA_NOT_NULL ppStatsString, VkBool32 detailedMap)
 Builds and returns a null-terminated string in JSON format with information about given VmaVirtualBlock. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaFreeVirtualBlockStatsString (VmaVirtualBlock VMA_NOT_NULL virtualBlock, char *VMA_NULLABLE pStatsString)
 Frees a string returned by vmaBuildVirtualBlockStatsString(). More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaBuildStatsString (VmaAllocator VMA_NOT_NULL allocator, char *VMA_NULLABLE *VMA_NOT_NULL ppStatsString, VkBool32 detailedMap)
 Builds and returns statistics as a null-terminated string in JSON format. More...
 
VMA_CALL_PRE void VMA_CALL_POST vmaFreeStatsString (VmaAllocator VMA_NOT_NULL allocator, char *VMA_NULLABLE pStatsString)
 

Macro Definition Documentation

◆ VMA_BIND_MEMORY2

#define VMA_BIND_MEMORY2   0

◆ VMA_BUFFER_DEVICE_ADDRESS

#define VMA_BUFFER_DEVICE_ADDRESS   0

◆ VMA_CALL_POST

#define VMA_CALL_POST

◆ VMA_CALL_PRE

#define VMA_CALL_PRE

◆ VMA_DEDICATED_ALLOCATION

#define VMA_DEDICATED_ALLOCATION   0

◆ VMA_EXTERNAL_MEMORY

#define VMA_EXTERNAL_MEMORY   0

◆ VMA_LEN_IF_NOT_NULL

#define VMA_LEN_IF_NOT_NULL (   len)

◆ VMA_MEMORY_BUDGET

#define VMA_MEMORY_BUDGET   0

◆ VMA_MEMORY_PRIORITY

#define VMA_MEMORY_PRIORITY   0

◆ VMA_NOT_NULL

#define VMA_NOT_NULL

◆ VMA_NOT_NULL_NON_DISPATCHABLE

#define VMA_NOT_NULL_NON_DISPATCHABLE

◆ VMA_NULLABLE

#define VMA_NULLABLE

◆ VMA_NULLABLE_NON_DISPATCHABLE

#define VMA_NULLABLE_NON_DISPATCHABLE

◆ VMA_STATS_STRING_ENABLED

#define VMA_STATS_STRING_ENABLED   1

◆ VMA_VULKAN_VERSION

#define VMA_VULKAN_VERSION   1000000