Open 3D Engine Atom Gem API Reference
24.09
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
|
API elements related to the initialization and management of the entire library, especially VmaAllocator object. More...
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 | VmaAllocator |
Represents main object of this library initialized. More... | |
Typedefs | |
typedef enum VmaAllocatorCreateFlagBits | VmaAllocatorCreateFlagBits |
Flags for created VmaAllocator. | |
typedef VkFlags | VmaAllocatorCreateFlags |
See VmaAllocatorCreateFlagBits. | |
typedef void(VKAPI_PTR * | PFN_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. | |
typedef void(VKAPI_PTR * | PFN_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. | |
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. | |
typedef struct VmaAllocatorInfo | VmaAllocatorInfo |
Information about existing VmaAllocator object. | |
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... | |
Functions | |
VMA_CALL_PRE VkResult VMA_CALL_POST | vmaCreateAllocator (const VmaAllocatorCreateInfo *VMA_NOT_NULL pCreateInfo, VmaAllocator VMA_NULLABLE *VMA_NOT_NULL pAllocator) |
Creates VmaAllocator object. | |
VMA_CALL_PRE void VMA_CALL_POST | vmaDestroyAllocator (VmaAllocator VMA_NULLABLE allocator) |
Destroys allocator object. | |
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) |
VMA_CALL_PRE void VMA_CALL_POST | vmaGetMemoryProperties (VmaAllocator VMA_NOT_NULL allocator, const VkPhysicalDeviceMemoryProperties *VMA_NULLABLE *VMA_NOT_NULL ppPhysicalDeviceMemoryProperties) |
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. | |
API elements related to the initialization and management of the entire library, especially VmaAllocator object.
typedef struct VmaDeviceMemoryCallbacks VmaDeviceMemoryCallbacks |
Set of callbacks that the library will call for vkAllocateMemory
and vkFreeMemory
.
Provided for informative purpose, e.g. to gather statistics about number of allocations or total amount of memory allocated in Vulkan.
typedef struct VmaVulkanFunctions VmaVulkanFunctions |
Pointers to some Vulkan functions - a subset used by the library.
Flags for created VmaAllocator.
Enumerator | |
---|---|
VMA_ALLOCATOR_CREATE_EXTERNALLY_SYNCHRONIZED_BIT | Allocator and all objects created from it will not be synchronized internally, so you must guarantee they are used from only one thread at a time or synchronized externally by you. Using this flag may increase performance because internal mutexes are not used. |
VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT | Enables usage of VK_KHR_dedicated_allocation extension. The flag works only if VmaAllocatorCreateInfo::vulkanApiVersion Using this extension will automatically allocate dedicated blocks of memory for some buffers and images instead of suballocating place for them out of bigger memory blocks (as if you explicitly used VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT flag) when it is recommended by the driver. It may improve performance on some GPUs. You may set this flag only if you found out that following device extensions are supported, you enabled them while creating Vulkan device passed as VmaAllocatorCreateInfo::device, and you want them to be used internally by this library:
When this flag is set, you can experience following warnings reported by Vulkan validation layer. You can ignore them.
|
VMA_ALLOCATOR_CREATE_KHR_BIND_MEMORY2_BIT | Enables usage of VK_KHR_bind_memory2 extension. The flag works only if VmaAllocatorCreateInfo::vulkanApiVersion You may set this flag only if you found out that this device extension is supported, you enabled it while creating Vulkan device passed as VmaAllocatorCreateInfo::device, and you want it to be used internally by this library. The extension provides functions |
VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT | Enables usage of VK_EXT_memory_budget extension. You may set this flag only if you found out that this device extension is supported, you enabled it while creating Vulkan device passed as VmaAllocatorCreateInfo::device, and you want it to be used internally by this library, along with another instance extension VK_KHR_get_physical_device_properties2, which is required by it (or Vulkan 1.1, where this extension is promoted). The extension provides query for current memory usage and budget, which will probably be more accurate than an estimation used by the library otherwise. |
VMA_ALLOCATOR_CREATE_AMD_DEVICE_COHERENT_MEMORY_BIT | Enables usage of VK_AMD_device_coherent_memory extension. You may set this flag only if you:
The extension and accompanying device feature provide access to memory types with When the extension is not enabled, such memory types are still enumerated, but their usage is illegal. To protect from this error, if you don't create the allocator with this flag, it will refuse to allocate any memory or create a custom pool in such memory type, returning |
VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT | Enables usage of "buffer device address" feature, which allows you to use function You may set this flag only if you:
When this flag is set, you can create buffers with For more information, see documentation chapter Enabling buffer device address. |
VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT | Enables usage of VK_EXT_memory_priority extension in the library. You may set this flag only if you found available and enabled this device extension, along with When this flag is used, VmaAllocationCreateInfo::priority and VmaPoolCreateInfo::priority are used to set priorities of allocated Vulkan memory. Without it, these variables are ignored. A priority must be a floating-point value between 0 and 1, indicating the priority of the allocation relative to other memory allocations. Larger values are higher priority. The granularity of the priorities is implementation-dependent. It is automatically passed to every call to |
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.
It might be useful if you want to keep just the VmaAllocator handle and fetch other required handles to VkPhysicalDevice
, VkDevice
etc. every time using this function.
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. You can access it here, without fetching it again on your own.
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.
This is just a convenience function. Same information can be obtained using vmaGetMemoryProperties().
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. You can access it here, without fetching it again on your own.