Struct vk_mem_alloc::ffi::VmaAllocatorCreateInfo
source · [−]#[repr(C)]pub struct VmaAllocatorCreateInfo {
pub flags: VmaAllocatorCreateFlags,
pub physicalDevice: PhysicalDevice,
pub device: Device,
pub preferredLargeHeapBlockSize: DeviceSize,
pub pAllocationCallbacks: *const AllocationCallbacks,
pub pDeviceMemoryCallbacks: *const VmaDeviceMemoryCallbacks,
pub pHeapSizeLimit: *const DeviceSize,
pub pVulkanFunctions: *const VmaVulkanFunctions,
pub instance: Instance,
pub vulkanApiVersion: u32,
pub pTypeExternalMemoryHandleTypes: *const ExternalMemoryHandleTypeFlagsKHR,
}
Expand description
Description of a Allocator to be created.
Fields
flags: VmaAllocatorCreateFlags
Flags for created allocator. Use #VmaAllocatorCreateFlagBits enum.
physicalDevice: PhysicalDevice
Vulkan physical device. ** It must be valid throughout whole lifetime of created allocator. */
device: Device
Vulkan device. ** It must be valid throughout whole lifetime of created allocator. */
preferredLargeHeapBlockSize: DeviceSize
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. */
pAllocationCallbacks: *const AllocationCallbacks
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
Informative callbacks for vkAllocateMemory
, vkFreeMemory
. Optional.
** Optional, can be null. */
pHeapSizeLimit: *const DeviceSize
\brief 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.
pVulkanFunctions: *const VmaVulkanFunctions
\brief Pointers to Vulkan functions. Can be null.
For details see [Pointers to Vulkan functions](@ref config_Vulkan_functions).
instance: Instance
\brief Handle to Vulkan instance object.
Starting from version 3.0.0 this member is no longer optional, it must be set!
vulkanApiVersion: u32
\brief 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
.
pTypeExternalMemoryHandleTypes: *const ExternalMemoryHandleTypeFlagsKHR
\brief 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.
Auto Trait Implementations
impl RefUnwindSafe for VmaAllocatorCreateInfo
impl !Send for VmaAllocatorCreateInfo
impl !Sync for VmaAllocatorCreateInfo
impl Unpin for VmaAllocatorCreateInfo
impl UnwindSafe for VmaAllocatorCreateInfo
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more