Vulkan Memory Allocator: VmaAllocatorCreateInfo Struct Reference

Vulkan Memory Allocator

Loading...
Searching...
No Matches
Public Attributes | List of all members
VmaAllocatorCreateInfo Struct Reference
Library initialization

Description of a Allocator to be created. More...

## Public Attributes
VmaAllocatorCreateFlags | flags
| Flags for created allocator. Use VmaAllocatorCreateFlagBits enum.
VkPhysicalDevice | physicalDevice
| Vulkan physical device.
VkDevice | device
| Vulkan device.
VkDeviceSize | preferredLargeHeapBlockSize
| Preferred size of a single `VkDeviceMemory` block to be allocated from large heaps > 1 GiB. Optional.
const VkAllocationCallbacks * | pAllocationCallbacks
| Custom CPU memory allocation callbacks. Optional.
const VmaDeviceMemoryCallbacks * | pDeviceMemoryCallbacks
| Informative callbacks for `vkAllocateMemory`, `vkFreeMemory`. Optional.
const VkDeviceSize * | pHeapSizeLimit
| Either null or a pointer to an array of limits on maximum number of bytes that can be allocated out of particular Vulkan memory heap.
const VmaVulkanFunctions * | pVulkanFunctions
| Pointers to Vulkan functions. Can be null.
VkInstance | instance
| Handle to Vulkan instance object.
uint32_t | vulkanApiVersion
| Optional. The highest version of Vulkan that the application is designed to use.
const VkExternalMemoryHandleTypeFlagsKHR * | pTypeExternalMemoryHandleTypes
| Either null or a pointer to an array of external memory handle types for each Vulkan memory type.

## Detailed Description

Description of a Allocator to be created.

## Member Data Documentation

## ◆ device

VkDevice VmaAllocatorCreateInfo::device

Vulkan device.

It must be valid throughout whole lifetime of created allocator.

## ◆ flags

VmaAllocatorCreateFlags VmaAllocatorCreateInfo::flags

Flags for created allocator. Use VmaAllocatorCreateFlagBits enum.

## ◆ instance

VkInstance VmaAllocatorCreateInfo::instance

Handle to Vulkan instance object.

Starting from version 3.0.0 this member is no longer optional, it must be set!

## ◆ pAllocationCallbacks

const VkAllocationCallbacks* VmaAllocatorCreateInfo::pAllocationCallbacks

Custom CPU memory allocation callbacks. Optional.

Optional, can be null. When specified, will also be used for all CPU-side memory allocations.

## ◆ pDeviceMemoryCallbacks

const VmaDeviceMemoryCallbacks* VmaAllocatorCreateInfo::pDeviceMemoryCallbacks

Informative callbacks for `vkAllocateMemory`, `vkFreeMemory`. Optional.

Optional, can be null.

## ◆ pHeapSizeLimit

const VkDeviceSize* VmaAllocatorCreateInfo::pHeapSizeLimit

Either null or a pointer to an array of limits on maximum number of bytes that can be allocated out of particular Vulkan memory heap.

If not NULL, it must be a pointer to an array of `VkPhysicalDeviceMemoryProperties::memoryHeapCount` elements, defining limit on maximum number of bytes that can be allocated out of particular Vulkan memory heap.

Any of the elements may be equal to `VK_WHOLE_SIZE`, which means no limit on that heap. This is also the default in case of `pHeapSizeLimit` = NULL.

If there is a limit defined for a heap:

- If user tries to allocate more memory from that heap using this allocator, the allocation fails with `VK_ERROR_OUT_OF_DEVICE_MEMORY`.
- If the limit is smaller than heap size reported in `VkMemoryHeap::size`, the value of this limit will be reported instead when using vmaGetMemoryProperties().

Warning! Using this feature may not be equivalent to installing a GPU with smaller amount of memory, because graphics driver doesn't necessary fail new allocations with `VK_ERROR_OUT_OF_DEVICE_MEMORY` result when memory capacity is exceeded. It may return success and just silently migrate some device memory blocks to system RAM. This driver behavior can also be controlled using VK_AMD_memory_overallocation_behavior extension.

## ◆ physicalDevice

VkPhysicalDevice VmaAllocatorCreateInfo::physicalDevice

Vulkan physical device.

It must be valid throughout whole lifetime of created allocator.

## ◆ preferredLargeHeapBlockSize

VkDeviceSize VmaAllocatorCreateInfo::preferredLargeHeapBlockSize

Preferred size of a single `VkDeviceMemory` block to be allocated from large heaps > 1 GiB. Optional.

Set to 0 to use default, which is currently 256 MiB.

## ◆ pTypeExternalMemoryHandleTypes

const VkExternalMemoryHandleTypeFlagsKHR* VmaAllocatorCreateInfo::pTypeExternalMemoryHandleTypes

Either null or a pointer to an array of external memory handle types for each Vulkan memory type.

If not NULL, it must be a pointer to an array of `VkPhysicalDeviceMemoryProperties::memoryTypeCount` elements, defining external memory handle types of particular Vulkan memory type, to be passed using `VkExportMemoryAllocateInfoKHR`.

Any of the elements may be equal to 0, which means not to use `VkExportMemoryAllocateInfoKHR` on this memory type. This is also the default in case of `pTypeExternalMemoryHandleTypes` = NULL.

## ◆ pVulkanFunctions

const VmaVulkanFunctions* VmaAllocatorCreateInfo::pVulkanFunctions

Pointers to Vulkan functions. Can be null.

For details see Pointers to Vulkan functions.

## ◆ vulkanApiVersion

uint32_t VmaAllocatorCreateInfo::vulkanApiVersion

Optional. The highest version of Vulkan that the application is designed to use.

It must be a value in the format as created by macro `VK_MAKE_VERSION` or a constant like: `VK_API_VERSION_1_1`, `VK_API_VERSION_1_0`. The patch version number specified is ignored. Only the major and minor versions are considered. It must be less or equal (preferably equal) to value as passed to `vkCreateInstance` as `VkApplicationInfo::apiVersion`. Only versions 1.0, 1.1, 1.2, 1.3 are supported by the current implementation. Leaving it initialized to zero is equivalent to `VK_API_VERSION_1_0`.

The documentation for this struct was generated from the following file:

- D:/PROJECTS/Vulkan Memory Allocator/REPO/include/vk_mem_alloc.h