diff --git a/docs/html/allocation_annotation.html b/docs/html/allocation_annotation.html index da3ebf5..a3d7f54 100644 --- a/docs/html/allocation_annotation.html +++ b/docs/html/allocation_annotation.html @@ -92,17 +92,17 @@ Allocation user data
vmaCreateBuffer(allocator, &bufCreateInfo, &allocCreateInfo, &buffer, &allocation, nullptr);
vmaCreateBuffer
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.
VMA_MEMORY_USAGE_AUTO
@ VMA_MEMORY_USAGE_AUTO
Definition: vk_mem_alloc.h:495
-
VmaAllocationCreateInfo
Parameters of new VmaAllocation.
Definition: vk_mem_alloc.h:1305
-
VmaAllocationCreateInfo::pUserData
void * pUserData
Custom general-purpose pointer that will be stored in VmaAllocation, can be read as VmaAllocationInfo...
Definition: vk_mem_alloc.h:1344
-
VmaAllocationCreateInfo::usage
VmaMemoryUsage usage
Intended usage of memory.
Definition: vk_mem_alloc.h:1313
+
VmaAllocationCreateInfo
Parameters of new VmaAllocation.
Definition: vk_mem_alloc.h:1326
+
VmaAllocationCreateInfo::pUserData
void * pUserData
Custom general-purpose pointer that will be stored in VmaAllocation, can be read as VmaAllocationInfo...
Definition: vk_mem_alloc.h:1365
+
VmaAllocationCreateInfo::usage
VmaMemoryUsage usage
Intended usage of memory.
Definition: vk_mem_alloc.h:1334
VmaAllocation
Represents single memory allocation.

The pointer may be later retrieved as VmaAllocationInfo::pUserData:

VmaAllocationInfo allocInfo;
vmaGetAllocationInfo(allocator, allocation, &allocInfo);
MyBufferMetadata* pMetadata = (MyBufferMetadata*)allocInfo.pUserData;
void vmaGetAllocationInfo(VmaAllocator allocator, VmaAllocation allocation, VmaAllocationInfo *pAllocationInfo)
Returns current information about specified allocation.
-
Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo().
Definition: vk_mem_alloc.h:1420
-
void * pUserData
Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vma...
Definition: vk_mem_alloc.h:1467
+
Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo().
Definition: vk_mem_alloc.h:1441
+
void * pUserData
Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vma...
Definition: vk_mem_alloc.h:1488

It can also be changed using function vmaSetAllocationUserData().

Values of (non-zero) allocations' pUserData are printed in JSON report created by vmaBuildStatsString() in hexadecimal form.

diff --git a/docs/html/annotated.html b/docs/html/annotated.html index 4266301..b17c25c 100644 --- a/docs/html/annotated.html +++ b/docs/html/annotated.html @@ -81,11 +81,11 @@ $(function() {  CVmaAllocatorCreateInfoDescription of a Allocator to be created  CVmaAllocatorInfoInformation about existing VmaAllocator object  CVmaBudgetStatistics of current memory usage and available budget for a specific memory heap - CVmaBufferAllocatorTODO document! - CVmaBufferAllocatorCreateInfoParameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator() - CVmaBufferSuballocationTODO document! - CVmaBufferSuballocationCreateInfoParameters of created VmaBufferSuballocation object to be passed to vmaBufferAllocatorAllocate() - CVmaBufferSuballocationInfoParameters of an existing buffer suballocation, returned by vmaGetBufferSuballocationInfo() + CVmaBufferAllocatorRepresent main object that can allocate parts of larger Vulkan buffers + CVmaBufferAllocatorCreateInfoParameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator() + CVmaBufferSuballocationRepresents a single sub-allocation - allocated part of a larger Vulkan buffer + CVmaBufferSuballocationCreateInfoParameters of created VmaBufferSuballocation object to be passed to vmaBufferAllocatorAllocate() + CVmaBufferSuballocationInfoParameters of an existing buffer suballocation, returned by vmaBufferAllocatorAllocate() or vmaGetBufferSuballocationInfo()  CVmaDefragmentationContextAn opaque object that represents started defragmentation process  CVmaDefragmentationInfoParameters for defragmentation  CVmaDefragmentationMoveSingle move of an allocation to be done for defragmentation diff --git a/docs/html/choosing_memory_type.html b/docs/html/choosing_memory_type.html index b44529e..f6c4256 100644 --- a/docs/html/choosing_memory_type.html +++ b/docs/html/choosing_memory_type.html @@ -102,8 +102,8 @@ Usage

vmaCreateBuffer(allocator, &bufferInfo, &allocInfo, &buffer, &allocation, nullptr);
vmaCreateBuffer
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.
VMA_MEMORY_USAGE_AUTO
@ VMA_MEMORY_USAGE_AUTO
Definition: vk_mem_alloc.h:495
-
VmaAllocationCreateInfo
Parameters of new VmaAllocation.
Definition: vk_mem_alloc.h:1305
-
VmaAllocationCreateInfo::usage
VmaMemoryUsage usage
Intended usage of memory.
Definition: vk_mem_alloc.h:1313
+
VmaAllocationCreateInfo
Parameters of new VmaAllocation.
Definition: vk_mem_alloc.h:1326
+
VmaAllocationCreateInfo::usage
VmaMemoryUsage usage
Intended usage of memory.
Definition: vk_mem_alloc.h:1334
VmaAllocation
Represents single memory allocation.

If you have a preference for putting the resource in GPU (device) memory or CPU (host) memory on systems with discrete graphics card that have the memories separate, you can use VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE or VMA_MEMORY_USAGE_AUTO_PREFER_HOST.

When using VMA_MEMORY_USAGE_AUTO* while you want to map the allocated memory, you also need to specify one of the host access flags: VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT or VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT. This will help the library decide about preferred memory type to ensure it has VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT so you can map it.

@@ -120,7 +120,7 @@ Usage
VmaAllocation stagingAllocation;
vmaCreateBuffer(allocator, &stagingBufferInfo, &stagingAllocInfo, &stagingBuffer, &stagingAllocation, nullptr);
VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT
@ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT
Definition: vk_mem_alloc.h:601
-
VmaAllocationCreateInfo::flags
VmaAllocationCreateFlags flags
Use VmaAllocationCreateFlagBits enum.
Definition: vk_mem_alloc.h:1307
+
VmaAllocationCreateInfo::flags
VmaAllocationCreateFlags flags
Use VmaAllocationCreateFlagBits enum.
Definition: vk_mem_alloc.h:1328

For more examples of creating different kinds of resources, see chapter Recommended usage patterns.

Usage values VMA_MEMORY_USAGE_AUTO* are legal to use only when the library knows about the resource being created by having VkBufferCreateInfo / VkImageCreateInfo passed, so they work with functions like: vmaCreateBuffer(), vmaCreateImage(), vmaFindMemoryTypeIndexForBufferInfo() etc. If you allocate raw memory using function vmaAllocateMemory(), you have to use other means of selecting memory type, as described below.

Note
Old usage values (VMA_MEMORY_USAGE_GPU_ONLY, VMA_MEMORY_USAGE_CPU_ONLY, VMA_MEMORY_USAGE_CPU_TO_GPU, VMA_MEMORY_USAGE_GPU_TO_CPU, VMA_MEMORY_USAGE_CPU_COPY) are still available and work same way as in previous versions of the library for backward compatibility, but they are not recommended.
@@ -137,8 +137,8 @@ Required and preferred flags
vmaCreateBuffer(allocator, &bufferInfo, &allocInfo, &buffer, &allocation, nullptr);
VMA_ALLOCATION_CREATE_MAPPED_BIT
@ VMA_ALLOCATION_CREATE_MAPPED_BIT
Set this flag to use a memory that will be persistently mapped and retrieve pointer to it.
Definition: vk_mem_alloc.h:552
VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT
@ VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT
Definition: vk_mem_alloc.h:613
-
VmaAllocationCreateInfo::preferredFlags
VkMemoryPropertyFlags preferredFlags
Flags that preferably should be set in a memory type chosen for an allocation.
Definition: vk_mem_alloc.h:1323
-
VmaAllocationCreateInfo::requiredFlags
VkMemoryPropertyFlags requiredFlags
Flags that must be set in a Memory Type chosen for an allocation.
Definition: vk_mem_alloc.h:1318
+
VmaAllocationCreateInfo::preferredFlags
VkMemoryPropertyFlags preferredFlags
Flags that preferably should be set in a memory type chosen for an allocation.
Definition: vk_mem_alloc.h:1344
+
VmaAllocationCreateInfo::requiredFlags
VkMemoryPropertyFlags requiredFlags
Flags that must be set in a Memory Type chosen for an allocation.
Definition: vk_mem_alloc.h:1339

A memory type is chosen that has all the required flags and as many preferred flags set as possible.

Value passed in VmaAllocationCreateInfo::usage is internally converted to a set of required and preferred flags, plus some extra "magic" (heuristics).

@@ -153,7 +153,7 @@ Explicit memory types

VkBuffer buffer;
VmaAllocation allocation;
vmaCreateBuffer(allocator, &bufferInfo, &allocInfo, &buffer, &allocation, nullptr);
-
VmaAllocationCreateInfo::memoryTypeBits
uint32_t memoryTypeBits
Bitmask containing one bit set for every memory type acceptable for this allocation.
Definition: vk_mem_alloc.h:1331
+
VmaAllocationCreateInfo::memoryTypeBits
uint32_t memoryTypeBits
Bitmask containing one bit set for every memory type acceptable for this allocation.
Definition: vk_mem_alloc.h:1352

Custom memory pools

If you allocate from custom memory pool, all the ways of specifying memory requirements described above are not applicable and the aforementioned members of VmaAllocationCreateInfo structure are ignored. Memory type is selected explicitly when creating the pool and then used to make all the allocations from that pool. For further details, see Custom memory pools.

diff --git a/docs/html/custom_memory_pools.html b/docs/html/custom_memory_pools.html index 98b8fee..dbbbdcb 100644 --- a/docs/html/custom_memory_pools.html +++ b/docs/html/custom_memory_pools.html @@ -132,14 +132,14 @@ $(function() {
vmaCreateBuffer
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.
vmaFindMemoryTypeIndexForBufferInfo
VkResult vmaFindMemoryTypeIndexForBufferInfo(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, uint32_t *pMemoryTypeIndex)
Helps to find memoryTypeIndex, given VkBufferCreateInfo and VmaAllocationCreateInfo.
VMA_MEMORY_USAGE_AUTO
@ VMA_MEMORY_USAGE_AUTO
Definition: vk_mem_alloc.h:495
-
VmaAllocationCreateInfo
Parameters of new VmaAllocation.
Definition: vk_mem_alloc.h:1305
-
VmaAllocationCreateInfo::pool
VmaPool pool
Pool that this allocation should be created in.
Definition: vk_mem_alloc.h:1337
-
VmaAllocationCreateInfo::usage
VmaMemoryUsage usage
Intended usage of memory.
Definition: vk_mem_alloc.h:1313
+
VmaAllocationCreateInfo
Parameters of new VmaAllocation.
Definition: vk_mem_alloc.h:1326
+
VmaAllocationCreateInfo::pool
VmaPool pool
Pool that this allocation should be created in.
Definition: vk_mem_alloc.h:1358
+
VmaAllocationCreateInfo::usage
VmaMemoryUsage usage
Intended usage of memory.
Definition: vk_mem_alloc.h:1334
VmaAllocation
Represents single memory allocation.
-
VmaPoolCreateInfo
Describes parameter of created VmaPool.
Definition: vk_mem_alloc.h:1356
-
VmaPoolCreateInfo::memoryTypeIndex
uint32_t memoryTypeIndex
Vulkan memory type index to allocate this pool from.
Definition: vk_mem_alloc.h:1359
-
VmaPoolCreateInfo::blockSize
VkDeviceSize blockSize
Size of a single VkDeviceMemory block to be allocated as part of this pool, in bytes....
Definition: vk_mem_alloc.h:1372
-
VmaPoolCreateInfo::maxBlockCount
size_t maxBlockCount
Maximum number of blocks that can be allocated in this pool. Optional.
Definition: vk_mem_alloc.h:1385
+
VmaPoolCreateInfo
Describes parameter of created VmaPool.
Definition: vk_mem_alloc.h:1377
+
VmaPoolCreateInfo::memoryTypeIndex
uint32_t memoryTypeIndex
Vulkan memory type index to allocate this pool from.
Definition: vk_mem_alloc.h:1380
+
VmaPoolCreateInfo::blockSize
VkDeviceSize blockSize
Size of a single VkDeviceMemory block to be allocated as part of this pool, in bytes....
Definition: vk_mem_alloc.h:1393
+
VmaPoolCreateInfo::maxBlockCount
size_t maxBlockCount
Maximum number of blocks that can be allocated in this pool. Optional.
Definition: vk_mem_alloc.h:1406
VmaPool
Represents custom memory pool.

You have to free all allocations made from this pool before destroying it.

vmaDestroyBuffer(allocator, buf, alloc);
diff --git a/docs/html/defragmentation.html b/docs/html/defragmentation.html index 5d007c8..17c4394 100644 --- a/docs/html/defragmentation.html +++ b/docs/html/defragmentation.html @@ -142,17 +142,17 @@ $(function() {
VkResult vmaBeginDefragmentation(VmaAllocator allocator, const VmaDefragmentationInfo *pInfo, VmaDefragmentationContext *pContext)
Begins defragmentation process.
VkResult vmaEndDefragmentationPass(VmaAllocator allocator, VmaDefragmentationContext context, VmaDefragmentationPassMoveInfo *pPassInfo)
Ends single defragmentation pass.
@ VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT
Definition: vk_mem_alloc.h:709
-
Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo().
Definition: vk_mem_alloc.h:1420
-
void * pUserData
Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vma...
Definition: vk_mem_alloc.h:1467
+
Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo().
Definition: vk_mem_alloc.h:1441
+
void * pUserData
Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vma...
Definition: vk_mem_alloc.h:1488
An opaque object that represents started defragmentation process.
-
Parameters for defragmentation.
Definition: vk_mem_alloc.h:1483
-
VmaPool pool
Custom pool to be defragmented.
Definition: vk_mem_alloc.h:1490
-
VmaDefragmentationFlags flags
Use combination of VmaDefragmentationFlagBits.
Definition: vk_mem_alloc.h:1485
-
VmaAllocation srcAllocation
Allocation that should be moved.
Definition: vk_mem_alloc.h:1509
-
VmaAllocation dstTmpAllocation
Temporary allocation pointing to destination memory that will replace srcAllocation.
Definition: vk_mem_alloc.h:1516
-
Parameters for incremental defragmentation steps.
Definition: vk_mem_alloc.h:1524
-
uint32_t moveCount
Number of elements in the pMoves array.
Definition: vk_mem_alloc.h:1526
-
VmaDefragmentationMove * pMoves
Array of moves to be performed by the user in the current defragmentation pass.
Definition: vk_mem_alloc.h:1550
+
Parameters for defragmentation.
Definition: vk_mem_alloc.h:1504
+
VmaPool pool
Custom pool to be defragmented.
Definition: vk_mem_alloc.h:1511
+
VmaDefragmentationFlags flags
Use combination of VmaDefragmentationFlagBits.
Definition: vk_mem_alloc.h:1506
+
VmaAllocation srcAllocation
Allocation that should be moved.
Definition: vk_mem_alloc.h:1530
+
VmaAllocation dstTmpAllocation
Temporary allocation pointing to destination memory that will replace srcAllocation.
Definition: vk_mem_alloc.h:1537
+
Parameters for incremental defragmentation steps.
Definition: vk_mem_alloc.h:1545
+
uint32_t moveCount
Number of elements in the pMoves array.
Definition: vk_mem_alloc.h:1547
+
VmaDefragmentationMove * pMoves
Array of moves to be performed by the user in the current defragmentation pass.
Definition: vk_mem_alloc.h:1571

Although functions like vmaCreateBuffer(), vmaCreateImage(), vmaDestroyBuffer(), vmaDestroyImage() create/destroy an allocation and a buffer/image at once, these are just a shortcut for creating the resource, allocating memory, and binding them together. Defragmentation works on memory allocations only. You must handle the rest manually. Defragmentation is an iterative process that should repreat "passes" as long as related functions return VK_INCOMPLETE not VK_SUCCESS. In each pass:

  1. vmaBeginDefragmentationPass() function call: + + +

    - v -

  2. VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT : vk_mem_alloc.h
  3. VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM : vk_mem_alloc.h
  4. VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT : vk_mem_alloc.h
  5. +
  6. VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT : vk_mem_alloc.h
  7. VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK : vk_mem_alloc.h
  8. VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT : vk_mem_alloc.h
  9. VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT : vk_mem_alloc.h
  10. diff --git a/docs/html/globals_func.html b/docs/html/globals_func.html index 15f0019..b873b1d 100644 --- a/docs/html/globals_func.html +++ b/docs/html/globals_func.html @@ -114,8 +114,7 @@ $(function() {
  11. vmaFindMemoryTypeIndexForImageInfo() : vk_mem_alloc.h
  12. vmaFlushAllocation() : vk_mem_alloc.h
  13. vmaFlushAllocations() : vk_mem_alloc.h
  14. -
  15. vmaFlushBufferSuballocation() : vk_mem_alloc.h
  16. -
  17. vmaFlushBufferSuballocations() : vk_mem_alloc.h
  18. +
  19. vmaFlushBufferSuballocation() : vk_mem_alloc.h
  20. vmaFreeMemory() : vk_mem_alloc.h
  21. vmaFreeMemoryPages() : vk_mem_alloc.h
  22. vmaGetAllocationInfo() : vk_mem_alloc.h
  23. @@ -132,8 +131,7 @@ $(function() {
  24. vmaGetVirtualBlockStatistics() : vk_mem_alloc.h
  25. vmaInvalidateAllocation() : vk_mem_alloc.h
  26. vmaInvalidateAllocations() : vk_mem_alloc.h
  27. -
  28. vmaInvalidateBufferSuballocation() : vk_mem_alloc.h
  29. -
  30. vmaInvalidateBufferSuballocations() : vk_mem_alloc.h
  31. +
  32. vmaInvalidateBufferSuballocation() : vk_mem_alloc.h
  33. vmaIsVirtualBlockEmpty() : vk_mem_alloc.h
  34. vmaMapBufferSuballocation() : vk_mem_alloc.h
  35. vmaMapMemory() : vk_mem_alloc.h
  36. diff --git a/docs/html/group__group__buffer__suballocation.html b/docs/html/group__group__buffer__suballocation.html index d6ef487..d4b548c 100644 --- a/docs/html/group__group__buffer__suballocation.html +++ b/docs/html/group__group__buffer__suballocation.html @@ -84,28 +84,28 @@ $(function() {

    Classes

    struct  VmaBufferAllocatorCreateInfo - Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator(). More...
    + Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator(). More...
      struct  VmaBufferSuballocationCreateInfo - Parameters of created VmaBufferSuballocation object to be passed to vmaBufferAllocatorAllocate(). More...
    + Parameters of created VmaBufferSuballocation object to be passed to vmaBufferAllocatorAllocate(). More...
      struct  VmaBufferSuballocationInfo - Parameters of an existing buffer suballocation, returned by vmaGetBufferSuballocationInfo(). More...
    + Parameters of an existing buffer suballocation, returned by vmaBufferAllocatorAllocate() or vmaGetBufferSuballocationInfo(). More...
      struct  VmaBufferSuballocation - TODO document! More...
    + Represents a single sub-allocation - allocated part of a larger Vulkan buffer. More...
      struct  VmaBufferAllocator - TODO document! More...
    + Represent main object that can allocate parts of larger Vulkan buffers. More...
      - + - + @@ -114,13 +114,13 @@ Typedefs - + - + - +

    Typedefs

    typedef enum VmaBufferAllocatorCreateFlagBits VmaBufferAllocatorCreateFlagBits
     Flags to be passed as VmaBufferAllocatorCreateInfo::flags. More...
     Flags to be passed as VmaBufferAllocatorCreateInfo::flags. More...
     
    typedef VkFlags VmaBufferAllocatorCreateFlags
     Flags to be passed as VmaBufferAllocatorCreateInfo::flags. See VmaBufferAllocatorCreateFlagBits. More...
     Flags to be passed as VmaBufferAllocatorCreateInfo::flags. See VmaBufferAllocatorCreateFlagBits. More...
     
    typedef enum VmaBufferSuballocationCreateFlagBits VmaBufferSuballocationCreateFlagBits
     Flags to be passed as VmaVirtualAllocationCreateInfo::flags. More...
     Flags to be passed as VmaBufferSuballocationCreateInfo::flags. See VmaBufferSuballocationCreateFlagBits. More...
     
    typedef struct VmaBufferAllocatorCreateInfo VmaBufferAllocatorCreateInfo
     Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator(). More...
     Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator(). More...
     
    typedef struct VmaBufferSuballocationCreateInfo VmaBufferSuballocationCreateInfo
     Parameters of created VmaBufferSuballocation object to be passed to vmaBufferAllocatorAllocate(). More...
     Parameters of created VmaBufferSuballocation object to be passed to vmaBufferAllocatorAllocate(). More...
     
    typedef struct VmaBufferSuballocationInfo VmaBufferSuballocationInfo
     Parameters of an existing buffer suballocation, returned by vmaGetBufferSuballocationInfo(). More...
     Parameters of an existing buffer suballocation, returned by vmaBufferAllocatorAllocate() or vmaGetBufferSuballocationInfo(). More...
     
    , VMA_BUFFER_ALLOCATOR_CREATE_ALGORITHM_MASK , VMA_BUFFER_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } - + @@ -172,18 +174,12 @@ Functions - - - - - - - - - - - - + + + + + +

    @@ -129,18 +129,20 @@ Enumerations

     Flags to be passed as VmaBufferAllocatorCreateInfo::flags. More...
     Flags to be passed as VmaBufferAllocatorCreateInfo::flags. More...
     
    enum  VmaBufferSuballocationCreateFlagBits {
      VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT = 0x00000001 -, VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT = 0x00000002 -, VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT = 0x00000004 -, VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT = 0x00010000 +, VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT = 0x00000002 +, VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT = 0x00000004 +, VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT = 0x00000008 ,
    -  VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT = 0x00020000 +  VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT = 0x00010000 +, VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT = 0x00020000 , VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT = 0x00040000 , VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK -, VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +,
    +  VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    }
     Flags to be passed as VmaVirtualAllocationCreateInfo::flags. More...
    void vmaUnmapBufferSuballocation (VmaAllocator allocator, VmaBufferAllocator bufferAllocator, VmaBufferSuballocation bufferSuballocation)
     TODO implement! TODO document! More...
     
    VkResult vmaFlushBufferSuballocation (VmaAllocator allocator, VmaBufferAllocator bufferAllocator, VmaBufferSuballocation bufferSuballocation, VkDeviceSize offset, VkDeviceSize size)
     TODO implement! TODO document! More...
     
    VkResult vmaInvalidateBufferSuballocation (VmaAllocator allocator, VmaBufferAllocator bufferAllocator, VmaBufferSuballocation bufferSuballocation, VkDeviceSize offset, VkDeviceSize size)
     TODO implement! TODO document! More...
     
    VkResult vmaFlushBufferSuballocations (VmaAllocator allocator, VmaBufferAllocator bufferAllocator, uint32_t bufferSuballocationCount, const VmaBufferSuballocation *pBufferSuballocations, const VkDeviceSize *pOffset, const VkDeviceSize *pSizes)
     TODO implement! TODO document! More...
     
    VkResult vmaInvalidateBufferSuballocations (VmaAllocator allocator, VmaBufferAllocator bufferAllocator, const VmaBufferSuballocation *pBufferSuballocations, const VkDeviceSize *pOffset, const VkDeviceSize *pSizes)
     TODO implement! TODO document! More...
     
    VkResult vmaFlushBufferSuballocation (VmaAllocator allocator, VmaBufferAllocator bufferAllocator, VmaBufferSuballocation bufferSuballocation, VkDeviceSize suballocationLocalOffset, VkDeviceSize size)
     TODO implement! TODO document! More...
     
    VkResult vmaInvalidateBufferSuballocation (VmaAllocator allocator, VmaBufferAllocator bufferAllocator, VmaBufferSuballocation bufferSuballocation, VkDeviceSize suballocationLocalOffset, VkDeviceSize size)
     TODO implement! TODO document! More...
     

    Detailed Description

    API elements related to the mechanism of Buffer suballocation - allocating parts of larger buffers that allocator can create implicitly.

    @@ -200,7 +196,7 @@ Functions
    -

    Flags to be passed as VmaBufferAllocatorCreateInfo::flags.

    +

    Flags to be passed as VmaBufferAllocatorCreateInfo::flags.

    @@ -216,7 +212,7 @@ Functions @@ -232,7 +228,7 @@ Functions
    -

    Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator().

    +

    Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator().

    @@ -280,7 +276,7 @@ Functions
    -

    Parameters of created VmaBufferSuballocation object to be passed to vmaBufferAllocatorAllocate().

    +

    Parameters of created VmaBufferSuballocation object to be passed to vmaBufferAllocatorAllocate().

    @@ -296,7 +292,7 @@ Functions
    -

    Parameters of an existing buffer suballocation, returned by vmaGetBufferSuballocationInfo().

    +

    Parameters of an existing buffer suballocation, returned by vmaBufferAllocatorAllocate() or vmaGetBufferSuballocationInfo().

    @@ -313,13 +309,12 @@ Functions
    -

    Flags to be passed as VmaBufferAllocatorCreateInfo::flags.

    +

    Flags to be passed as VmaBufferAllocatorCreateInfo::flags.

    - @@ -342,17 +337,19 @@ Functions

    Flags to be passed as VmaVirtualAllocationCreateInfo::flags.

    Enumerator
    VMA_BUFFER_ALLOCATOR_CREATE_LINEAR_ALGORITHM_BIT 

    Enables alternative, linear allocation algorithm in this virtual block.

    +
    Enumerator
    VMA_BUFFER_ALLOCATOR_CREATE_LINEAR_ALGORITHM_BIT 

    Enables alternative, linear allocation algorithm in this virtual block.

    Specify this flag to enable linear allocation algorithm, which always creates new allocations after last one and doesn't reuse space from allocations freed in between. It trades memory consumption for simplified algorithm and data structure, which has better performance and uses less memory for metadata.

    By using this flag, you can achieve behavior of free-at-once, stack, ring buffer, and double stack. For details, see documentation chapter Linear allocation algorithm.

    -

    Under the hood, it uses a Virtual allocator with flag VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT.

    -

    TODO implement!

    +

    Internally it uses a Virtual allocator with flag VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT.

    VMA_BUFFER_ALLOCATOR_CREATE_ALGORITHM_MASK 

    Bit mask to extract only ALGORITHM bits from entire set of flags.

    - - - - - - + @@ -512,8 +509,8 @@ Functions - -

    ◆ vmaFlushBufferSuballocation()

    + +

    ◆ vmaFlushBufferSuballocation()

    @@ -540,7 +537,7 @@ Functions
    - + @@ -558,60 +555,6 @@ Functions

    TODO implement! TODO document!

    - - - -

    ◆ vmaFlushBufferSuballocations()

    - -
    -
    -
    Enumerator
    VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT 

    TODO document! TODO implement!

    +
    Enumerator
    VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT 

    Always creates a separate VkBuffer dedicated for this suballocation. Suballocation will then always have buffer-local offset 0.

    VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT 

    TODO document! TODO implement!

    +
    VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT 

    Never creates a new VkBuffer or allocates new Vulkan memory. Tries to create the suballocation in a free space of an existing buffer. If not possible, returns VK_ERROR_OUT_OF_DEVICE_MEMORY.

    VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT 

    TODO document! TODO implement!

    +
    VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT 

    Never allocates new Vulkan memory. Tries to create the suballocation in a free space of an existing buffer. If not possible, tries to create a new buffer but in existing memory blocks, internally using VMA_ALLOCATION_CREATE_NEVER_ALLOCATE_BIT. If not possible, returns VK_ERROR_OUT_OF_DEVICE_MEMORY.

    VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT 

    TODO document! TODO implement!

    +
    VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT 

    Creates suballocation only if additional Vulkan memory required for it, if any, won't exceed memory budget. Otherwise return VK_ERROR_OUT_OF_DEVICE_MEMORY.

    VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT 

    TODO document! TODO implement!

    +
    VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT 

    Allocation strategy that chooses smallest possible empty space for the suballocation to minimize memory usage and fragmentation, possibly at the expense of allocation time.

    VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT 

    TODO document! TODO implement!

    +
    VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT 

    Allocation strategy that chooses first suitable empty space for the suballocation - not necessarily in terms of the smallest offset but the one that is easiest and fastest to find to minimize allocation time, possibly at the expense of allocation quality.

    +
    VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT 

    Allocation strategy that chooses always the lowest offset in available space. This is not the most efficient strategy but achieves highly packed data. Not recommended or useful, provided just for completeness.

    VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK 

    A bit mask to extract only STRATEGY bits from entire set of flags.

    VkDeviceSize offset, suballocationLocalOffset,
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    VkResult vmaFlushBufferSuballocations (VmaAllocator allocator,
    VmaBufferAllocator bufferAllocator,
    uint32_t bufferSuballocationCount,
    const VmaBufferSuballocationpBufferSuballocations,
    const VkDeviceSize * pOffset,
    const VkDeviceSize * pSizes 
    )
    -
    - -

    TODO implement! TODO document!

    -
    @@ -656,8 +599,8 @@ Functions - -

    ◆ vmaInvalidateBufferSuballocation()

    + +

    ◆ vmaInvalidateBufferSuballocation()

    @@ -684,7 +627,7 @@ Functions VkDeviceSize  - offset, + suballocationLocalOffset, @@ -702,54 +645,6 @@ Functions

    TODO implement! TODO document!

    -
    -
    - -

    ◆ vmaInvalidateBufferSuballocations()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    VkResult vmaInvalidateBufferSuballocations (VmaAllocator allocator,
    VmaBufferAllocator bufferAllocator,
    const VmaBufferSuballocationpBufferSuballocations,
    const VkDeviceSize * pOffset,
    const VkDeviceSize * pSizes 
    )
    -
    - -

    TODO implement! TODO document!

    -
    diff --git a/docs/html/memory_mapping.html b/docs/html/memory_mapping.html index dcda71c..b089b80 100644 --- a/docs/html/memory_mapping.html +++ b/docs/html/memory_mapping.html @@ -126,12 +126,12 @@ Persistently mapped memory
    @ VMA_MEMORY_USAGE_AUTO
    Definition: vk_mem_alloc.h:495
    @ VMA_ALLOCATION_CREATE_MAPPED_BIT
    Set this flag to use a memory that will be persistently mapped and retrieve pointer to it.
    Definition: vk_mem_alloc.h:552
    @ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT
    Definition: vk_mem_alloc.h:601
    -
    Parameters of new VmaAllocation.
    Definition: vk_mem_alloc.h:1305
    -
    VmaMemoryUsage usage
    Intended usage of memory.
    Definition: vk_mem_alloc.h:1313
    -
    VmaAllocationCreateFlags flags
    Use VmaAllocationCreateFlagBits enum.
    Definition: vk_mem_alloc.h:1307
    +
    Parameters of new VmaAllocation.
    Definition: vk_mem_alloc.h:1326
    +
    VmaMemoryUsage usage
    Intended usage of memory.
    Definition: vk_mem_alloc.h:1334
    +
    VmaAllocationCreateFlags flags
    Use VmaAllocationCreateFlagBits enum.
    Definition: vk_mem_alloc.h:1328
    Represents single memory allocation.
    -
    Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo().
    Definition: vk_mem_alloc.h:1420
    -
    void * pMappedData
    Pointer to the beginning of this allocation as mapped data.
    Definition: vk_mem_alloc.h:1462
    +
    Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo().
    Definition: vk_mem_alloc.h:1441
    +
    void * pMappedData
    Pointer to the beginning of this allocation as mapped data.
    Definition: vk_mem_alloc.h:1483
    Note
    VMA_ALLOCATION_CREATE_MAPPED_BIT by itself doesn't guarantee that the allocation will end up in a mappable memory type. For this, you need to also specify VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT or VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT. VMA_ALLOCATION_CREATE_MAPPED_BIT only guarantees that if the memory is HOST_VISIBLE, the allocation will be mapped on creation. For an example of how to make use of this fact, see section Advanced data uploading.

    Cache flush and invalidate

    diff --git a/docs/html/menudata.js b/docs/html/menudata.js index 4a1228a..74a8ea2 100644 --- a/docs/html/menudata.js +++ b/docs/html/menudata.js @@ -63,7 +63,7 @@ var menudata={children:[ {text:"File Members",url:"globals.html",children:[ {text:"All",url:"globals.html",children:[ {text:"p",url:"globals.html#index_p"}, -{text:"v",url:"globals_v.html#index_v"}]}, +{text:"v",url:"globals.html#index_v"}]}, {text:"Functions",url:"globals_func.html",children:[ {text:"v",url:"globals_func.html#index_v"}]}, {text:"Typedefs",url:"globals_type.html",children:[ diff --git a/docs/html/quick_start.html b/docs/html/quick_start.html index a3f353a..8f51464 100644 --- a/docs/html/quick_start.html +++ b/docs/html/quick_start.html @@ -148,12 +148,12 @@ Importing Vulkan functions
    VmaAllocator allocator;
    vmaCreateAllocator(&allocatorCreateInfo, &allocator);
    VkResult vmaCreateAllocator(const VmaAllocatorCreateInfo *pCreateInfo, VmaAllocator *pAllocator)
    Creates VmaAllocator object.
    -
    Description of a Allocator to be created.
    Definition: vk_mem_alloc.h:1084
    -
    VkPhysicalDevice physicalDevice
    Vulkan physical device.
    Definition: vk_mem_alloc.h:1089
    -
    const VmaVulkanFunctions * pVulkanFunctions
    Pointers to Vulkan functions. Can be null.
    Definition: vk_mem_alloc.h:1132
    -
    VkInstance instance
    Handle to Vulkan instance object.
    Definition: vk_mem_alloc.h:1137
    -
    VkDevice device
    Vulkan device.
    Definition: vk_mem_alloc.h:1092
    -
    uint32_t vulkanApiVersion
    Optional. The highest version of Vulkan that the application is designed to use.
    Definition: vk_mem_alloc.h:1146
    +
    Description of a Allocator to be created.
    Definition: vk_mem_alloc.h:1105
    +
    VkPhysicalDevice physicalDevice
    Vulkan physical device.
    Definition: vk_mem_alloc.h:1110
    +
    const VmaVulkanFunctions * pVulkanFunctions
    Pointers to Vulkan functions. Can be null.
    Definition: vk_mem_alloc.h:1153
    +
    VkInstance instance
    Handle to Vulkan instance object.
    Definition: vk_mem_alloc.h:1158
    +
    VkDevice device
    Vulkan device.
    Definition: vk_mem_alloc.h:1113
    +
    uint32_t vulkanApiVersion
    Optional. The highest version of Vulkan that the application is designed to use.
    Definition: vk_mem_alloc.h:1167
    Represents main object of this library initialized.

    Resource allocation

    @@ -175,8 +175,8 @@ Resource allocation
    vmaCreateBuffer(allocator, &bufferInfo, &allocInfo, &buffer, &allocation, nullptr);
    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.
    @ VMA_MEMORY_USAGE_AUTO
    Definition: vk_mem_alloc.h:495
    -
    Parameters of new VmaAllocation.
    Definition: vk_mem_alloc.h:1305
    -
    VmaMemoryUsage usage
    Intended usage of memory.
    Definition: vk_mem_alloc.h:1313
    +
    Parameters of new VmaAllocation.
    Definition: vk_mem_alloc.h:1326
    +
    VmaMemoryUsage usage
    Intended usage of memory.
    Definition: vk_mem_alloc.h:1334
    Represents single memory allocation.

    Don't forget to destroy your objects when no longer needed:

    vmaDestroyBuffer(allocator, buffer, allocation);
    diff --git a/docs/html/resource_aliasing.html b/docs/html/resource_aliasing.html index be1487e..75643d0 100644 --- a/docs/html/resource_aliasing.html +++ b/docs/html/resource_aliasing.html @@ -147,8 +147,8 @@ $(function() {
    VkResult vmaBindImageMemory(VmaAllocator allocator, VmaAllocation allocation, VkImage image)
    Binds image to allocation.
    void vmaFreeMemory(VmaAllocator allocator, const VmaAllocation allocation)
    Frees memory previously allocated using vmaAllocateMemory(), vmaAllocateMemoryForBuffer(),...
    VkResult vmaAllocateMemory(VmaAllocator allocator, const VkMemoryRequirements *pVkMemoryRequirements, const VmaAllocationCreateInfo *pCreateInfo, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)
    General purpose memory allocation.
    -
    Parameters of new VmaAllocation.
    Definition: vk_mem_alloc.h:1305
    -
    VkMemoryPropertyFlags preferredFlags
    Flags that preferably should be set in a memory type chosen for an allocation.
    Definition: vk_mem_alloc.h:1323
    +
    Parameters of new VmaAllocation.
    Definition: vk_mem_alloc.h:1326
    +
    VkMemoryPropertyFlags preferredFlags
    Flags that preferably should be set in a memory type chosen for an allocation.
    Definition: vk_mem_alloc.h:1344
    Represents single memory allocation.

    Remember that using resources that alias in memory requires proper synchronization. You need to issue a memory barrier to make sure commands that use img1 and img2 don't overlap on GPU timeline. You also need to treat a resource after aliasing as uninitialized - containing garbage data. For example, if you use img1 and then want to use img2, you need to issue an image memory barrier for img2 with oldLayout = VK_IMAGE_LAYOUT_UNDEFINED.

    Additional considerations:

    diff --git a/docs/html/search/all_11.js b/docs/html/search/all_11.js index 526451a..58209f7 100644 --- a/docs/html/search/all_11.js +++ b/docs/html/search/all_11.js @@ -65,121 +65,121 @@ var searchData= ['vma_5fbuffer_5fsuballocation_5fcreate_5fdedicated_5fbuffer_5fbit_62',['VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a',1,'vk_mem_alloc.h']]], ['vma_5fbuffer_5fsuballocation_5fcreate_5fflag_5fbits_5fmax_5fenum_63',['VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaec0e2b1cec0f2337ad134cec5aead0df',1,'vk_mem_alloc.h']]], ['vma_5fbuffer_5fsuballocation_5fcreate_5fnever_5fallocate_5fbit_64',['VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012',1,'vk_mem_alloc.h']]], - ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmask_65',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388',1,'vk_mem_alloc.h']]], - ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_66',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb',1,'vk_mem_alloc.h']]], - ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_67',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099',1,'vk_mem_alloc.h']]], - ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_68',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30',1,'vk_mem_alloc.h']]], - ['vma_5fbuffer_5fsuballocation_5fcreate_5fwithin_5fbudget_5fbit_69',['VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd',1,'vk_mem_alloc.h']]], - ['vma_5fdedicated_5fallocation_70',['VMA_DEDICATED_ALLOCATION',['../vk__mem__alloc_8h.html#af7b860e63b96d11e44ae8587ba06bbf4',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5fbalanced_5fbit_71',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50caec35a4138111605a6ff32ca61aa871b6',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5fextensive_5fbit_72',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cae45a9469e5337731627758671741e412',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5ffast_5fbit_73',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5ffull_5fbit_74',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cafa162eac5be800bcdd4011427a71156d',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5fmask_75',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cabcbbdb3bfd53c4c3ab4eaeb5fd4894e9',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5fbits_5fmax_5fenum_76',['VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cab87ec33154803bfeb5ac2b379f1d6a97',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fmove_5foperation_5fcopy_77',['VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad4a06ac46c4cb1c67b0ebc1edfab9f18',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fmove_5foperation_5fdestroy_78',['VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257a9786f8492a9be2c03bd26395e352ab85',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fmove_5foperation_5fignore_79',['VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad25bc6f816b226b4fd5170e845f218d2',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fbudget_80',['VMA_MEMORY_BUDGET',['../vk__mem__alloc_8h.html#a05decf1cf4ebf767beba7acca6c1ec3a',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fauto_81',['VMA_MEMORY_USAGE_AUTO',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fauto_5fprefer_5fdevice_82',['VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccae2adb696d6a73c18bb20c23666661327',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fauto_5fprefer_5fhost_83',['VMA_MEMORY_USAGE_AUTO_PREFER_HOST',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9b422585242160b8ed3418310ee6664d',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fcpu_5fcopy_84',['VMA_MEMORY_USAGE_CPU_COPY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca416a444d4d0fc20067c3f76f32ff2500',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fcpu_5fonly_85',['VMA_MEMORY_USAGE_CPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca40bdf4cddeffeb12f43d45ca1286e0a5',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fcpu_5fto_5fgpu_86',['VMA_MEMORY_USAGE_CPU_TO_GPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9066b52c5a7079bb74a69aaf8b92ff67',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fgpu_5flazily_5fallocated_87',['VMA_MEMORY_USAGE_GPU_LAZILY_ALLOCATED',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca835333d9072db63a653818030e17614d',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fgpu_5fonly_88',['VMA_MEMORY_USAGE_GPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccac6b5dc1432d88647aa4cd456246eadf7',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fgpu_5fto_5fcpu_89',['VMA_MEMORY_USAGE_GPU_TO_CPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca7b586d2fdaf82a463b58f581ed72be27',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fmax_5fenum_90',['VMA_MEMORY_USAGE_MAX_ENUM',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca091e69437ef693e8d0d287f1c719ba6e',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5funknown_91',['VMA_MEMORY_USAGE_UNKNOWN',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccaf50d27e34e0925cf3a63db8c839121dd',1,'vk_mem_alloc.h']]], - ['vma_5fpool_5fcreate_5falgorithm_5fmask_92',['VMA_POOL_CREATE_ALGORITHM_MASK',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7af4d270f8f42517a0f70037ceb6ac1d9c',1,'vk_mem_alloc.h']]], - ['vma_5fpool_5fcreate_5fflag_5fbits_5fmax_5fenum_93',['VMA_POOL_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a1c7312bea9ea246846b9054fd6bd6aec',1,'vk_mem_alloc.h']]], - ['vma_5fpool_5fcreate_5fignore_5fbuffer_5fimage_5fgranularity_5fbit_94',['VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a9f1a499508a8edb4e8ba40aa0290a3d2',1,'vk_mem_alloc.h']]], - ['vma_5fpool_5fcreate_5flinear_5falgorithm_5fbit_95',['VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a13c8a444197c67866be9cb05599fc726',1,'vk_mem_alloc.h']]], - ['vma_5fstats_5fstring_5fenabled_96',['VMA_STATS_STRING_ENABLED',['../vk__mem__alloc_8h.html#ae25f0d55fd91cb166f002b63244800e1',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum_97',['VMA_VIRTUAL_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac1163c03ea837fa663462dc286d6a1a9',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmask_98',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MASK',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac5b5e45c335368d18df59c9f27df17e3',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_99',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ae2a9591a62b5e3b1bdcbc81c6188a1bf',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_100',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a3bb82d2aedd587a64846a1d7778852e6',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_101',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a562d10a46012719d33167d3dc5dbbf9b',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fupper_5faddress_5fbit_102',['VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a9524a329a55b5ec390d57d90b67ad78e',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fblock_5fcreate_5falgorithm_5fmask_103',['VMA_VIRTUAL_BLOCK_CREATE_ALGORITHM_MASK',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaaf9487467136e1a9e371894dc3a7c4844',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fblock_5fcreate_5fflag_5fbits_5fmax_5fenum_104',['VMA_VIRTUAL_BLOCK_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaa5fc0d333c3d5687a8bbf57df9b377a87',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fblock_5fcreate_5flinear_5falgorithm_5fbit_105',['VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaae6423e2fa2f3c9211b21c819e3f10f96',1,'vk_mem_alloc.h']]], - ['vmaallocatememory_106',['vmaAllocateMemory',['../group__group__alloc.html#gabf28077dbf82d0908b8acbe8ee8dd9b8',1,'vk_mem_alloc.h']]], - ['vmaallocatememoryforbuffer_107',['vmaAllocateMemoryForBuffer',['../group__group__alloc.html#ga7fdf64415b6c3d83c454f28d2c53df7b',1,'vk_mem_alloc.h']]], - ['vmaallocatememoryforimage_108',['vmaAllocateMemoryForImage',['../group__group__alloc.html#ga0faa3f9e5fb233d29d1e00390650febb',1,'vk_mem_alloc.h']]], - ['vmaallocatememorypages_109',['vmaAllocateMemoryPages',['../group__group__alloc.html#gad37e82e492b3de38fc3f4cffd9ad0ae1',1,'vk_mem_alloc.h']]], - ['vmaallocation_110',['VmaAllocation',['../struct_vma_allocation.html',1,'']]], - ['vmaallocationcreateflagbits_111',['VmaAllocationCreateFlagBits',['../group__group__alloc.html#ga4fceecc301f4064dc808d3cd6c038941',1,'VmaAllocationCreateFlagBits(): vk_mem_alloc.h'],['../group__group__alloc.html#gad9889c10c798b040d59c92f257cae597',1,'VmaAllocationCreateFlagBits(): vk_mem_alloc.h']]], - ['vmaallocationcreateflags_112',['VmaAllocationCreateFlags',['../group__group__alloc.html#ga5225e5e11f8376f6a31a1791f3d6e817',1,'vk_mem_alloc.h']]], - ['vmaallocationcreateinfo_113',['VmaAllocationCreateInfo',['../struct_vma_allocation_create_info.html',1,'VmaAllocationCreateInfo'],['../group__group__alloc.html#ga3bf110892ea2fb4649fedb68488d026a',1,'VmaAllocationCreateInfo(): vk_mem_alloc.h']]], - ['vmaallocationinfo_114',['VmaAllocationInfo',['../struct_vma_allocation_info.html',1,'VmaAllocationInfo'],['../group__group__alloc.html#ga1cf7774606721026a68aabe3af2e5b50',1,'VmaAllocationInfo(): vk_mem_alloc.h']]], - ['vmaallocator_115',['VmaAllocator',['../struct_vma_allocator.html',1,'']]], - ['vmaallocatorcreateflagbits_116',['VmaAllocatorCreateFlagBits',['../group__group__init.html#ga4f87c9100d154a65a4ad495f7763cf7c',1,'VmaAllocatorCreateFlagBits(): vk_mem_alloc.h'],['../group__group__init.html#gafd73b95e737ee7e76f827cb5472f559f',1,'VmaAllocatorCreateFlagBits(): vk_mem_alloc.h']]], - ['vmaallocatorcreateflags_117',['VmaAllocatorCreateFlags',['../group__group__init.html#gacfe6863e160722c2c1bbcf7573fddc4d',1,'vk_mem_alloc.h']]], - ['vmaallocatorcreateinfo_118',['VmaAllocatorCreateInfo',['../struct_vma_allocator_create_info.html',1,'VmaAllocatorCreateInfo'],['../group__group__init.html#gaad9652301d33759b83e52d4f3605a14a',1,'VmaAllocatorCreateInfo(): vk_mem_alloc.h']]], - ['vmaallocatorinfo_119',['VmaAllocatorInfo',['../struct_vma_allocator_info.html',1,'VmaAllocatorInfo'],['../group__group__init.html#ga1988031b0223fdbd564250fa1edd942c',1,'VmaAllocatorInfo(): vk_mem_alloc.h']]], - ['vmabegindefragmentation_120',['vmaBeginDefragmentation',['../group__group__alloc.html#gac3335566858b45541fa9c0d7a6bbb57e',1,'vk_mem_alloc.h']]], - ['vmabegindefragmentationpass_121',['vmaBeginDefragmentationPass',['../group__group__alloc.html#ga980d7da2ce3b1fd5c8b8476bc362cc00',1,'vk_mem_alloc.h']]], - ['vmabindbuffermemory_122',['vmaBindBufferMemory',['../group__group__alloc.html#ga6b0929b914b60cf2d45cac4bf3547470',1,'vk_mem_alloc.h']]], - ['vmabindbuffermemory2_123',['vmaBindBufferMemory2',['../group__group__alloc.html#ga927c944f45e0f2941182abb6f608e64a',1,'vk_mem_alloc.h']]], - ['vmabindimagememory_124',['vmaBindImageMemory',['../group__group__alloc.html#ga3d3ca45799923aa5d138e9e5f9eb2da5',1,'vk_mem_alloc.h']]], - ['vmabindimagememory2_125',['vmaBindImageMemory2',['../group__group__alloc.html#gaa8251ee81b0045a443e35b8e8aa021bc',1,'vk_mem_alloc.h']]], - ['vmabudget_126',['VmaBudget',['../group__group__stats.html#gaa078667e71b1ef24e87a6a30d128381d',1,'VmaBudget(): vk_mem_alloc.h'],['../struct_vma_budget.html',1,'VmaBudget']]], - ['vmabufferallocator_127',['VmaBufferAllocator',['../struct_vma_buffer_allocator.html',1,'']]], - ['vmabufferallocatorallocate_128',['vmaBufferAllocatorAllocate',['../group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39',1,'vk_mem_alloc.h']]], - ['vmabufferallocatorcreateflagbits_129',['VmaBufferAllocatorCreateFlagBits',['../group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08',1,'VmaBufferAllocatorCreateFlagBits(): vk_mem_alloc.h'],['../group__group__buffer__suballocation.html#gab59dc80be7e88530693d2140c7e4baa9',1,'VmaBufferAllocatorCreateFlagBits(): vk_mem_alloc.h']]], - ['vmabufferallocatorcreateflags_130',['VmaBufferAllocatorCreateFlags',['../group__group__buffer__suballocation.html#ga524fc82795862079781317e33be657e1',1,'vk_mem_alloc.h']]], - ['vmabufferallocatorcreateinfo_131',['VmaBufferAllocatorCreateInfo',['../struct_vma_buffer_allocator_create_info.html',1,'VmaBufferAllocatorCreateInfo'],['../group__group__buffer__suballocation.html#ga07daea3c55e292b9ea9cdbe481f6d598',1,'VmaBufferAllocatorCreateInfo(): vk_mem_alloc.h']]], - ['vmabufferallocatorfree_132',['vmaBufferAllocatorFree',['../group__group__buffer__suballocation.html#gaffeae9a3b55e1f1ccaf4dd97d9e74a5f',1,'vk_mem_alloc.h']]], - ['vmabuffersuballocation_133',['VmaBufferSuballocation',['../struct_vma_buffer_suballocation.html',1,'']]], - ['vmabuffersuballocationcreateflagbits_134',['VmaBufferSuballocationCreateFlagBits',['../group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb',1,'VmaBufferSuballocationCreateFlagBits(): vk_mem_alloc.h'],['../group__group__buffer__suballocation.html#gab4d54a73919432f9d90f5e8cb1752fb0',1,'VmaBufferSuballocationCreateFlagBits(): vk_mem_alloc.h']]], - ['vmabuffersuballocationcreateflags_135',['VmaBufferSuballocationCreateFlags',['../group__group__buffer__suballocation.html#ga7445a51cdb572ba54e795c74d8abc2b4',1,'vk_mem_alloc.h']]], - ['vmabuffersuballocationcreateinfo_136',['VmaBufferSuballocationCreateInfo',['../struct_vma_buffer_suballocation_create_info.html',1,'VmaBufferSuballocationCreateInfo'],['../group__group__buffer__suballocation.html#ga0ee2c81ee2378cc43620c0d577175935',1,'VmaBufferSuballocationCreateInfo(): vk_mem_alloc.h']]], - ['vmabuffersuballocationinfo_137',['VmaBufferSuballocationInfo',['../struct_vma_buffer_suballocation_info.html',1,'VmaBufferSuballocationInfo'],['../group__group__buffer__suballocation.html#ga18bf3079703d3188bb268b5838bb9c22',1,'VmaBufferSuballocationInfo(): vk_mem_alloc.h']]], - ['vmacalculatepoolstatistics_138',['vmaCalculatePoolStatistics',['../group__group__stats.html#ga50ba0eb25d2b363b792be4645ca7a380',1,'vk_mem_alloc.h']]], - ['vmacalculatestatistics_139',['vmaCalculateStatistics',['../group__group__stats.html#ga36f3484de7aa6cd6edc4de9edfa0ff59',1,'vk_mem_alloc.h']]], - ['vmacalculatevirtualblockstatistics_140',['vmaCalculateVirtualBlockStatistics',['../group__group__virtual.html#ga93c5741bca44b43e5b849cacbd616098',1,'vk_mem_alloc.h']]], - ['vmacheckcorruption_141',['vmaCheckCorruption',['../group__group__alloc.html#ga49329a7f030dafcf82f7b73334c22e98',1,'vk_mem_alloc.h']]], - ['vmacheckpoolcorruption_142',['vmaCheckPoolCorruption',['../group__group__alloc.html#gad535935619c7a549bf837e1bb0068f89',1,'vk_mem_alloc.h']]], - ['vmaclearvirtualblock_143',['vmaClearVirtualBlock',['../group__group__virtual.html#ga5eda6f55919fb05bd2f56a112590c571',1,'vk_mem_alloc.h']]], - ['vmacreatealiasingbuffer_144',['vmaCreateAliasingBuffer',['../group__group__alloc.html#ga60d5d4803e3c82505a2bfddb929adb03',1,'vk_mem_alloc.h']]], - ['vmacreatealiasingbuffer2_145',['vmaCreateAliasingBuffer2',['../group__group__alloc.html#gaf0cf014344213e117bd9f9cf5f928122',1,'vk_mem_alloc.h']]], - ['vmacreatealiasingimage_146',['vmaCreateAliasingImage',['../group__group__alloc.html#gaebc4db1f94b53dba2338b4c0fd80d0dc',1,'vk_mem_alloc.h']]], - ['vmacreatealiasingimage2_147',['vmaCreateAliasingImage2',['../group__group__alloc.html#ga69ac829f5bb0737449fa92c2d971f1bb',1,'vk_mem_alloc.h']]], - ['vmacreateallocator_148',['vmaCreateAllocator',['../group__group__init.html#ga200692051ddb34240248234f5f4c17bb',1,'vk_mem_alloc.h']]], - ['vmacreatebuffer_149',['vmaCreateBuffer',['../group__group__alloc.html#gac72ee55598617e8eecca384e746bab51',1,'vk_mem_alloc.h']]], - ['vmacreatebufferallocator_150',['vmaCreateBufferAllocator',['../group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66',1,'vk_mem_alloc.h']]], - ['vmacreatebufferwithalignment_151',['vmaCreateBufferWithAlignment',['../group__group__alloc.html#gaa06a690013a0d01e60894ac378083834',1,'vk_mem_alloc.h']]], - ['vmacreateimage_152',['vmaCreateImage',['../group__group__alloc.html#ga02a94f25679275851a53e82eacbcfc73',1,'vk_mem_alloc.h']]], - ['vmacreatepool_153',['vmaCreatePool',['../group__group__alloc.html#ga5c8770ded7c59c8caac6de0c2cb00b50',1,'vk_mem_alloc.h']]], - ['vmacreatevirtualblock_154',['vmaCreateVirtualBlock',['../group__group__virtual.html#gab585754076877265fdae33e5c40ef13b',1,'vk_mem_alloc.h']]], - ['vmadefragmentationcontext_155',['VmaDefragmentationContext',['../struct_vma_defragmentation_context.html',1,'']]], - ['vmadefragmentationflagbits_156',['VmaDefragmentationFlagBits',['../group__group__alloc.html#ga13415cc0b443353a7b5abda300b833fc',1,'VmaDefragmentationFlagBits(): vk_mem_alloc.h'],['../group__group__alloc.html#ga6552a65b71d16f378c6994b3ceaef50c',1,'VmaDefragmentationFlagBits(): vk_mem_alloc.h']]], - ['vmadefragmentationflags_157',['VmaDefragmentationFlags',['../group__group__alloc.html#ga88a77cef37e5d3c4fc9eb328885d048d',1,'vk_mem_alloc.h']]], - ['vmadefragmentationinfo_158',['VmaDefragmentationInfo',['../struct_vma_defragmentation_info.html',1,'VmaDefragmentationInfo'],['../group__group__alloc.html#ga2bf47f96bf92bed2a49461bd9af3acfa',1,'VmaDefragmentationInfo(): vk_mem_alloc.h']]], - ['vmadefragmentationmove_159',['VmaDefragmentationMove',['../struct_vma_defragmentation_move.html',1,'VmaDefragmentationMove'],['../group__group__alloc.html#ga563f4b43d3e31ed603d80cacc9ba8589',1,'VmaDefragmentationMove(): vk_mem_alloc.h']]], - ['vmadefragmentationmoveoperation_160',['VmaDefragmentationMoveOperation',['../group__group__alloc.html#gada9e3861caf96f08894b0bcc160ec257',1,'VmaDefragmentationMoveOperation(): vk_mem_alloc.h'],['../group__group__alloc.html#ga2ea666deeb3c2c74806a097e27cdb4a1',1,'VmaDefragmentationMoveOperation(): vk_mem_alloc.h']]], - ['vmadefragmentationpassmoveinfo_161',['VmaDefragmentationPassMoveInfo',['../struct_vma_defragmentation_pass_move_info.html',1,'VmaDefragmentationPassMoveInfo'],['../group__group__alloc.html#gad6799e8e2b1527abfc84d33bc44aeaf5',1,'VmaDefragmentationPassMoveInfo(): vk_mem_alloc.h']]], - ['vmadefragmentationstats_162',['VmaDefragmentationStats',['../struct_vma_defragmentation_stats.html',1,'VmaDefragmentationStats'],['../group__group__alloc.html#gad94034192259c2e34a4d1c5e27810403',1,'VmaDefragmentationStats(): vk_mem_alloc.h']]], - ['vmadestroyallocator_163',['vmaDestroyAllocator',['../group__group__init.html#gaa8d164061c88f22fb1fd3c8f3534bc1d',1,'vk_mem_alloc.h']]], - ['vmadestroybuffer_164',['vmaDestroyBuffer',['../group__group__alloc.html#ga0d9f4e4ba5bf9aab1f1c746387753d77',1,'vk_mem_alloc.h']]], - ['vmadestroybufferallocator_165',['vmaDestroyBufferAllocator',['../group__group__buffer__suballocation.html#ga0583fc4a16f1b38d02b2d57a46a20183',1,'vk_mem_alloc.h']]], - ['vmadestroyimage_166',['vmaDestroyImage',['../group__group__alloc.html#gae50d2cb3b4a3bfd4dd40987234e50e7e',1,'vk_mem_alloc.h']]], - ['vmadestroypool_167',['vmaDestroyPool',['../group__group__alloc.html#ga5485779c8f1948238fc4e92232fa65e1',1,'vk_mem_alloc.h']]], - ['vmadestroyvirtualblock_168',['vmaDestroyVirtualBlock',['../group__group__virtual.html#ga3795f7783ae2c182cede067d656f66a5',1,'vk_mem_alloc.h']]], - ['vmadetailedstatistics_169',['VmaDetailedStatistics',['../struct_vma_detailed_statistics.html',1,'VmaDetailedStatistics'],['../group__group__stats.html#ga9ab0c535a6ca655dc63b8609ab4b8394',1,'VmaDetailedStatistics(): vk_mem_alloc.h']]], - ['vmadevicememorycallbacks_170',['VmaDeviceMemoryCallbacks',['../struct_vma_device_memory_callbacks.html',1,'VmaDeviceMemoryCallbacks'],['../group__group__init.html#ga77692d3c8770ea8882d573206bd27b2b',1,'VmaDeviceMemoryCallbacks(): vk_mem_alloc.h']]], - ['vmaenddefragmentation_171',['vmaEndDefragmentation',['../group__group__alloc.html#ga59f01ca3d53d50b7cca9b442b77a3e87',1,'vk_mem_alloc.h']]], - ['vmaenddefragmentationpass_172',['vmaEndDefragmentationPass',['../group__group__alloc.html#gaded05a445742a00718ee766144c5c226',1,'vk_mem_alloc.h']]], - ['vmafindmemorytypeindex_173',['vmaFindMemoryTypeIndex',['../group__group__alloc.html#gaef15a94b58fbcb0fe706d5720e84a74a',1,'vk_mem_alloc.h']]], - ['vmafindmemorytypeindexforbufferinfo_174',['vmaFindMemoryTypeIndexForBufferInfo',['../group__group__alloc.html#gae790ab9ffaf7667fb8f62523e6897888',1,'vk_mem_alloc.h']]], - ['vmafindmemorytypeindexforimageinfo_175',['vmaFindMemoryTypeIndexForImageInfo',['../group__group__alloc.html#ga088da83d8eaf3ce9056d9ea0b981d472',1,'vk_mem_alloc.h']]], - ['vmaflushallocation_176',['vmaFlushAllocation',['../group__group__alloc.html#ga30c37c1eec6025f397be41644f48490f',1,'vk_mem_alloc.h']]], - ['vmaflushallocations_177',['vmaFlushAllocations',['../group__group__alloc.html#gac3dd00da721875ed99fa8a881922bdfc',1,'vk_mem_alloc.h']]], - ['vmaflushbuffersuballocation_178',['vmaFlushBufferSuballocation',['../group__group__buffer__suballocation.html#gae20326d64236fe7ea9332483b83cab0d',1,'vk_mem_alloc.h']]], - ['vmaflushbuffersuballocations_179',['vmaFlushBufferSuballocations',['../group__group__buffer__suballocation.html#ga199d3aa9d77cd58670c06da2b6c5f53c',1,'vk_mem_alloc.h']]], + ['vma_5fbuffer_5fsuballocation_5fcreate_5fnever_5fcreate_5fbuffer_5fbit_65',['VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaa891857e2a3c8307408b4e0763c158f2',1,'vk_mem_alloc.h']]], + ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmask_66',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388',1,'vk_mem_alloc.h']]], + ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_67',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb',1,'vk_mem_alloc.h']]], + ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_68',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099',1,'vk_mem_alloc.h']]], + ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_69',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30',1,'vk_mem_alloc.h']]], + ['vma_5fbuffer_5fsuballocation_5fcreate_5fwithin_5fbudget_5fbit_70',['VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd',1,'vk_mem_alloc.h']]], + ['vma_5fdedicated_5fallocation_71',['VMA_DEDICATED_ALLOCATION',['../vk__mem__alloc_8h.html#af7b860e63b96d11e44ae8587ba06bbf4',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5fbalanced_5fbit_72',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50caec35a4138111605a6ff32ca61aa871b6',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5fextensive_5fbit_73',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cae45a9469e5337731627758671741e412',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5ffast_5fbit_74',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5ffull_5fbit_75',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cafa162eac5be800bcdd4011427a71156d',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5fmask_76',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cabcbbdb3bfd53c4c3ab4eaeb5fd4894e9',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5fbits_5fmax_5fenum_77',['VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cab87ec33154803bfeb5ac2b379f1d6a97',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fmove_5foperation_5fcopy_78',['VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad4a06ac46c4cb1c67b0ebc1edfab9f18',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fmove_5foperation_5fdestroy_79',['VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257a9786f8492a9be2c03bd26395e352ab85',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fmove_5foperation_5fignore_80',['VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad25bc6f816b226b4fd5170e845f218d2',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fbudget_81',['VMA_MEMORY_BUDGET',['../vk__mem__alloc_8h.html#a05decf1cf4ebf767beba7acca6c1ec3a',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fauto_82',['VMA_MEMORY_USAGE_AUTO',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fauto_5fprefer_5fdevice_83',['VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccae2adb696d6a73c18bb20c23666661327',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fauto_5fprefer_5fhost_84',['VMA_MEMORY_USAGE_AUTO_PREFER_HOST',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9b422585242160b8ed3418310ee6664d',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fcpu_5fcopy_85',['VMA_MEMORY_USAGE_CPU_COPY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca416a444d4d0fc20067c3f76f32ff2500',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fcpu_5fonly_86',['VMA_MEMORY_USAGE_CPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca40bdf4cddeffeb12f43d45ca1286e0a5',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fcpu_5fto_5fgpu_87',['VMA_MEMORY_USAGE_CPU_TO_GPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9066b52c5a7079bb74a69aaf8b92ff67',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fgpu_5flazily_5fallocated_88',['VMA_MEMORY_USAGE_GPU_LAZILY_ALLOCATED',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca835333d9072db63a653818030e17614d',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fgpu_5fonly_89',['VMA_MEMORY_USAGE_GPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccac6b5dc1432d88647aa4cd456246eadf7',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fgpu_5fto_5fcpu_90',['VMA_MEMORY_USAGE_GPU_TO_CPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca7b586d2fdaf82a463b58f581ed72be27',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fmax_5fenum_91',['VMA_MEMORY_USAGE_MAX_ENUM',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca091e69437ef693e8d0d287f1c719ba6e',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5funknown_92',['VMA_MEMORY_USAGE_UNKNOWN',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccaf50d27e34e0925cf3a63db8c839121dd',1,'vk_mem_alloc.h']]], + ['vma_5fpool_5fcreate_5falgorithm_5fmask_93',['VMA_POOL_CREATE_ALGORITHM_MASK',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7af4d270f8f42517a0f70037ceb6ac1d9c',1,'vk_mem_alloc.h']]], + ['vma_5fpool_5fcreate_5fflag_5fbits_5fmax_5fenum_94',['VMA_POOL_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a1c7312bea9ea246846b9054fd6bd6aec',1,'vk_mem_alloc.h']]], + ['vma_5fpool_5fcreate_5fignore_5fbuffer_5fimage_5fgranularity_5fbit_95',['VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a9f1a499508a8edb4e8ba40aa0290a3d2',1,'vk_mem_alloc.h']]], + ['vma_5fpool_5fcreate_5flinear_5falgorithm_5fbit_96',['VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a13c8a444197c67866be9cb05599fc726',1,'vk_mem_alloc.h']]], + ['vma_5fstats_5fstring_5fenabled_97',['VMA_STATS_STRING_ENABLED',['../vk__mem__alloc_8h.html#ae25f0d55fd91cb166f002b63244800e1',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum_98',['VMA_VIRTUAL_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac1163c03ea837fa663462dc286d6a1a9',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmask_99',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MASK',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac5b5e45c335368d18df59c9f27df17e3',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_100',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ae2a9591a62b5e3b1bdcbc81c6188a1bf',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_101',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a3bb82d2aedd587a64846a1d7778852e6',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_102',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a562d10a46012719d33167d3dc5dbbf9b',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fupper_5faddress_5fbit_103',['VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a9524a329a55b5ec390d57d90b67ad78e',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fblock_5fcreate_5falgorithm_5fmask_104',['VMA_VIRTUAL_BLOCK_CREATE_ALGORITHM_MASK',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaaf9487467136e1a9e371894dc3a7c4844',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fblock_5fcreate_5fflag_5fbits_5fmax_5fenum_105',['VMA_VIRTUAL_BLOCK_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaa5fc0d333c3d5687a8bbf57df9b377a87',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fblock_5fcreate_5flinear_5falgorithm_5fbit_106',['VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaae6423e2fa2f3c9211b21c819e3f10f96',1,'vk_mem_alloc.h']]], + ['vmaallocatememory_107',['vmaAllocateMemory',['../group__group__alloc.html#gabf28077dbf82d0908b8acbe8ee8dd9b8',1,'vk_mem_alloc.h']]], + ['vmaallocatememoryforbuffer_108',['vmaAllocateMemoryForBuffer',['../group__group__alloc.html#ga7fdf64415b6c3d83c454f28d2c53df7b',1,'vk_mem_alloc.h']]], + ['vmaallocatememoryforimage_109',['vmaAllocateMemoryForImage',['../group__group__alloc.html#ga0faa3f9e5fb233d29d1e00390650febb',1,'vk_mem_alloc.h']]], + ['vmaallocatememorypages_110',['vmaAllocateMemoryPages',['../group__group__alloc.html#gad37e82e492b3de38fc3f4cffd9ad0ae1',1,'vk_mem_alloc.h']]], + ['vmaallocation_111',['VmaAllocation',['../struct_vma_allocation.html',1,'']]], + ['vmaallocationcreateflagbits_112',['VmaAllocationCreateFlagBits',['../group__group__alloc.html#gad9889c10c798b040d59c92f257cae597',1,'VmaAllocationCreateFlagBits(): vk_mem_alloc.h'],['../group__group__alloc.html#ga4fceecc301f4064dc808d3cd6c038941',1,'VmaAllocationCreateFlagBits(): vk_mem_alloc.h']]], + ['vmaallocationcreateflags_113',['VmaAllocationCreateFlags',['../group__group__alloc.html#ga5225e5e11f8376f6a31a1791f3d6e817',1,'vk_mem_alloc.h']]], + ['vmaallocationcreateinfo_114',['VmaAllocationCreateInfo',['../struct_vma_allocation_create_info.html',1,'VmaAllocationCreateInfo'],['../group__group__alloc.html#ga3bf110892ea2fb4649fedb68488d026a',1,'VmaAllocationCreateInfo(): vk_mem_alloc.h']]], + ['vmaallocationinfo_115',['VmaAllocationInfo',['../struct_vma_allocation_info.html',1,'VmaAllocationInfo'],['../group__group__alloc.html#ga1cf7774606721026a68aabe3af2e5b50',1,'VmaAllocationInfo(): vk_mem_alloc.h']]], + ['vmaallocator_116',['VmaAllocator',['../struct_vma_allocator.html',1,'']]], + ['vmaallocatorcreateflagbits_117',['VmaAllocatorCreateFlagBits',['../group__group__init.html#gafd73b95e737ee7e76f827cb5472f559f',1,'VmaAllocatorCreateFlagBits(): vk_mem_alloc.h'],['../group__group__init.html#ga4f87c9100d154a65a4ad495f7763cf7c',1,'VmaAllocatorCreateFlagBits(): vk_mem_alloc.h']]], + ['vmaallocatorcreateflags_118',['VmaAllocatorCreateFlags',['../group__group__init.html#gacfe6863e160722c2c1bbcf7573fddc4d',1,'vk_mem_alloc.h']]], + ['vmaallocatorcreateinfo_119',['VmaAllocatorCreateInfo',['../struct_vma_allocator_create_info.html',1,'VmaAllocatorCreateInfo'],['../group__group__init.html#gaad9652301d33759b83e52d4f3605a14a',1,'VmaAllocatorCreateInfo(): vk_mem_alloc.h']]], + ['vmaallocatorinfo_120',['VmaAllocatorInfo',['../struct_vma_allocator_info.html',1,'VmaAllocatorInfo'],['../group__group__init.html#ga1988031b0223fdbd564250fa1edd942c',1,'VmaAllocatorInfo(): vk_mem_alloc.h']]], + ['vmabegindefragmentation_121',['vmaBeginDefragmentation',['../group__group__alloc.html#gac3335566858b45541fa9c0d7a6bbb57e',1,'vk_mem_alloc.h']]], + ['vmabegindefragmentationpass_122',['vmaBeginDefragmentationPass',['../group__group__alloc.html#ga980d7da2ce3b1fd5c8b8476bc362cc00',1,'vk_mem_alloc.h']]], + ['vmabindbuffermemory_123',['vmaBindBufferMemory',['../group__group__alloc.html#ga6b0929b914b60cf2d45cac4bf3547470',1,'vk_mem_alloc.h']]], + ['vmabindbuffermemory2_124',['vmaBindBufferMemory2',['../group__group__alloc.html#ga927c944f45e0f2941182abb6f608e64a',1,'vk_mem_alloc.h']]], + ['vmabindimagememory_125',['vmaBindImageMemory',['../group__group__alloc.html#ga3d3ca45799923aa5d138e9e5f9eb2da5',1,'vk_mem_alloc.h']]], + ['vmabindimagememory2_126',['vmaBindImageMemory2',['../group__group__alloc.html#gaa8251ee81b0045a443e35b8e8aa021bc',1,'vk_mem_alloc.h']]], + ['vmabudget_127',['VmaBudget',['../group__group__stats.html#gaa078667e71b1ef24e87a6a30d128381d',1,'VmaBudget(): vk_mem_alloc.h'],['../struct_vma_budget.html',1,'VmaBudget']]], + ['vmabufferallocator_128',['VmaBufferAllocator',['../struct_vma_buffer_allocator.html',1,'']]], + ['vmabufferallocatorallocate_129',['vmaBufferAllocatorAllocate',['../group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39',1,'vk_mem_alloc.h']]], + ['vmabufferallocatorcreateflagbits_130',['VmaBufferAllocatorCreateFlagBits',['../group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08',1,'VmaBufferAllocatorCreateFlagBits(): vk_mem_alloc.h'],['../group__group__buffer__suballocation.html#gab59dc80be7e88530693d2140c7e4baa9',1,'VmaBufferAllocatorCreateFlagBits(): vk_mem_alloc.h']]], + ['vmabufferallocatorcreateflags_131',['VmaBufferAllocatorCreateFlags',['../group__group__buffer__suballocation.html#ga524fc82795862079781317e33be657e1',1,'vk_mem_alloc.h']]], + ['vmabufferallocatorcreateinfo_132',['VmaBufferAllocatorCreateInfo',['../struct_vma_buffer_allocator_create_info.html',1,'VmaBufferAllocatorCreateInfo'],['../group__group__buffer__suballocation.html#ga07daea3c55e292b9ea9cdbe481f6d598',1,'VmaBufferAllocatorCreateInfo(): vk_mem_alloc.h']]], + ['vmabufferallocatorfree_133',['vmaBufferAllocatorFree',['../group__group__buffer__suballocation.html#gaffeae9a3b55e1f1ccaf4dd97d9e74a5f',1,'vk_mem_alloc.h']]], + ['vmabuffersuballocation_134',['VmaBufferSuballocation',['../struct_vma_buffer_suballocation.html',1,'']]], + ['vmabuffersuballocationcreateflagbits_135',['VmaBufferSuballocationCreateFlagBits',['../group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb',1,'VmaBufferSuballocationCreateFlagBits(): vk_mem_alloc.h'],['../group__group__buffer__suballocation.html#gab4d54a73919432f9d90f5e8cb1752fb0',1,'VmaBufferSuballocationCreateFlagBits(): vk_mem_alloc.h']]], + ['vmabuffersuballocationcreateflags_136',['VmaBufferSuballocationCreateFlags',['../group__group__buffer__suballocation.html#ga7445a51cdb572ba54e795c74d8abc2b4',1,'vk_mem_alloc.h']]], + ['vmabuffersuballocationcreateinfo_137',['VmaBufferSuballocationCreateInfo',['../struct_vma_buffer_suballocation_create_info.html',1,'VmaBufferSuballocationCreateInfo'],['../group__group__buffer__suballocation.html#ga0ee2c81ee2378cc43620c0d577175935',1,'VmaBufferSuballocationCreateInfo(): vk_mem_alloc.h']]], + ['vmabuffersuballocationinfo_138',['VmaBufferSuballocationInfo',['../struct_vma_buffer_suballocation_info.html',1,'VmaBufferSuballocationInfo'],['../group__group__buffer__suballocation.html#ga18bf3079703d3188bb268b5838bb9c22',1,'VmaBufferSuballocationInfo(): vk_mem_alloc.h']]], + ['vmacalculatepoolstatistics_139',['vmaCalculatePoolStatistics',['../group__group__stats.html#ga50ba0eb25d2b363b792be4645ca7a380',1,'vk_mem_alloc.h']]], + ['vmacalculatestatistics_140',['vmaCalculateStatistics',['../group__group__stats.html#ga36f3484de7aa6cd6edc4de9edfa0ff59',1,'vk_mem_alloc.h']]], + ['vmacalculatevirtualblockstatistics_141',['vmaCalculateVirtualBlockStatistics',['../group__group__virtual.html#ga93c5741bca44b43e5b849cacbd616098',1,'vk_mem_alloc.h']]], + ['vmacheckcorruption_142',['vmaCheckCorruption',['../group__group__alloc.html#ga49329a7f030dafcf82f7b73334c22e98',1,'vk_mem_alloc.h']]], + ['vmacheckpoolcorruption_143',['vmaCheckPoolCorruption',['../group__group__alloc.html#gad535935619c7a549bf837e1bb0068f89',1,'vk_mem_alloc.h']]], + ['vmaclearvirtualblock_144',['vmaClearVirtualBlock',['../group__group__virtual.html#ga5eda6f55919fb05bd2f56a112590c571',1,'vk_mem_alloc.h']]], + ['vmacreatealiasingbuffer_145',['vmaCreateAliasingBuffer',['../group__group__alloc.html#ga60d5d4803e3c82505a2bfddb929adb03',1,'vk_mem_alloc.h']]], + ['vmacreatealiasingbuffer2_146',['vmaCreateAliasingBuffer2',['../group__group__alloc.html#gaf0cf014344213e117bd9f9cf5f928122',1,'vk_mem_alloc.h']]], + ['vmacreatealiasingimage_147',['vmaCreateAliasingImage',['../group__group__alloc.html#gaebc4db1f94b53dba2338b4c0fd80d0dc',1,'vk_mem_alloc.h']]], + ['vmacreatealiasingimage2_148',['vmaCreateAliasingImage2',['../group__group__alloc.html#ga69ac829f5bb0737449fa92c2d971f1bb',1,'vk_mem_alloc.h']]], + ['vmacreateallocator_149',['vmaCreateAllocator',['../group__group__init.html#ga200692051ddb34240248234f5f4c17bb',1,'vk_mem_alloc.h']]], + ['vmacreatebuffer_150',['vmaCreateBuffer',['../group__group__alloc.html#gac72ee55598617e8eecca384e746bab51',1,'vk_mem_alloc.h']]], + ['vmacreatebufferallocator_151',['vmaCreateBufferAllocator',['../group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66',1,'vk_mem_alloc.h']]], + ['vmacreatebufferwithalignment_152',['vmaCreateBufferWithAlignment',['../group__group__alloc.html#gaa06a690013a0d01e60894ac378083834',1,'vk_mem_alloc.h']]], + ['vmacreateimage_153',['vmaCreateImage',['../group__group__alloc.html#ga02a94f25679275851a53e82eacbcfc73',1,'vk_mem_alloc.h']]], + ['vmacreatepool_154',['vmaCreatePool',['../group__group__alloc.html#ga5c8770ded7c59c8caac6de0c2cb00b50',1,'vk_mem_alloc.h']]], + ['vmacreatevirtualblock_155',['vmaCreateVirtualBlock',['../group__group__virtual.html#gab585754076877265fdae33e5c40ef13b',1,'vk_mem_alloc.h']]], + ['vmadefragmentationcontext_156',['VmaDefragmentationContext',['../struct_vma_defragmentation_context.html',1,'']]], + ['vmadefragmentationflagbits_157',['VmaDefragmentationFlagBits',['../group__group__alloc.html#ga6552a65b71d16f378c6994b3ceaef50c',1,'VmaDefragmentationFlagBits(): vk_mem_alloc.h'],['../group__group__alloc.html#ga13415cc0b443353a7b5abda300b833fc',1,'VmaDefragmentationFlagBits(): vk_mem_alloc.h']]], + ['vmadefragmentationflags_158',['VmaDefragmentationFlags',['../group__group__alloc.html#ga88a77cef37e5d3c4fc9eb328885d048d',1,'vk_mem_alloc.h']]], + ['vmadefragmentationinfo_159',['VmaDefragmentationInfo',['../struct_vma_defragmentation_info.html',1,'VmaDefragmentationInfo'],['../group__group__alloc.html#ga2bf47f96bf92bed2a49461bd9af3acfa',1,'VmaDefragmentationInfo(): vk_mem_alloc.h']]], + ['vmadefragmentationmove_160',['VmaDefragmentationMove',['../struct_vma_defragmentation_move.html',1,'VmaDefragmentationMove'],['../group__group__alloc.html#ga563f4b43d3e31ed603d80cacc9ba8589',1,'VmaDefragmentationMove(): vk_mem_alloc.h']]], + ['vmadefragmentationmoveoperation_161',['VmaDefragmentationMoveOperation',['../group__group__alloc.html#gada9e3861caf96f08894b0bcc160ec257',1,'VmaDefragmentationMoveOperation(): vk_mem_alloc.h'],['../group__group__alloc.html#ga2ea666deeb3c2c74806a097e27cdb4a1',1,'VmaDefragmentationMoveOperation(): vk_mem_alloc.h']]], + ['vmadefragmentationpassmoveinfo_162',['VmaDefragmentationPassMoveInfo',['../struct_vma_defragmentation_pass_move_info.html',1,'VmaDefragmentationPassMoveInfo'],['../group__group__alloc.html#gad6799e8e2b1527abfc84d33bc44aeaf5',1,'VmaDefragmentationPassMoveInfo(): vk_mem_alloc.h']]], + ['vmadefragmentationstats_163',['VmaDefragmentationStats',['../struct_vma_defragmentation_stats.html',1,'VmaDefragmentationStats'],['../group__group__alloc.html#gad94034192259c2e34a4d1c5e27810403',1,'VmaDefragmentationStats(): vk_mem_alloc.h']]], + ['vmadestroyallocator_164',['vmaDestroyAllocator',['../group__group__init.html#gaa8d164061c88f22fb1fd3c8f3534bc1d',1,'vk_mem_alloc.h']]], + ['vmadestroybuffer_165',['vmaDestroyBuffer',['../group__group__alloc.html#ga0d9f4e4ba5bf9aab1f1c746387753d77',1,'vk_mem_alloc.h']]], + ['vmadestroybufferallocator_166',['vmaDestroyBufferAllocator',['../group__group__buffer__suballocation.html#ga0583fc4a16f1b38d02b2d57a46a20183',1,'vk_mem_alloc.h']]], + ['vmadestroyimage_167',['vmaDestroyImage',['../group__group__alloc.html#gae50d2cb3b4a3bfd4dd40987234e50e7e',1,'vk_mem_alloc.h']]], + ['vmadestroypool_168',['vmaDestroyPool',['../group__group__alloc.html#ga5485779c8f1948238fc4e92232fa65e1',1,'vk_mem_alloc.h']]], + ['vmadestroyvirtualblock_169',['vmaDestroyVirtualBlock',['../group__group__virtual.html#ga3795f7783ae2c182cede067d656f66a5',1,'vk_mem_alloc.h']]], + ['vmadetailedstatistics_170',['VmaDetailedStatistics',['../struct_vma_detailed_statistics.html',1,'VmaDetailedStatistics'],['../group__group__stats.html#ga9ab0c535a6ca655dc63b8609ab4b8394',1,'VmaDetailedStatistics(): vk_mem_alloc.h']]], + ['vmadevicememorycallbacks_171',['VmaDeviceMemoryCallbacks',['../struct_vma_device_memory_callbacks.html',1,'VmaDeviceMemoryCallbacks'],['../group__group__init.html#ga77692d3c8770ea8882d573206bd27b2b',1,'VmaDeviceMemoryCallbacks(): vk_mem_alloc.h']]], + ['vmaenddefragmentation_172',['vmaEndDefragmentation',['../group__group__alloc.html#ga59f01ca3d53d50b7cca9b442b77a3e87',1,'vk_mem_alloc.h']]], + ['vmaenddefragmentationpass_173',['vmaEndDefragmentationPass',['../group__group__alloc.html#gaded05a445742a00718ee766144c5c226',1,'vk_mem_alloc.h']]], + ['vmafindmemorytypeindex_174',['vmaFindMemoryTypeIndex',['../group__group__alloc.html#gaef15a94b58fbcb0fe706d5720e84a74a',1,'vk_mem_alloc.h']]], + ['vmafindmemorytypeindexforbufferinfo_175',['vmaFindMemoryTypeIndexForBufferInfo',['../group__group__alloc.html#gae790ab9ffaf7667fb8f62523e6897888',1,'vk_mem_alloc.h']]], + ['vmafindmemorytypeindexforimageinfo_176',['vmaFindMemoryTypeIndexForImageInfo',['../group__group__alloc.html#ga088da83d8eaf3ce9056d9ea0b981d472',1,'vk_mem_alloc.h']]], + ['vmaflushallocation_177',['vmaFlushAllocation',['../group__group__alloc.html#ga30c37c1eec6025f397be41644f48490f',1,'vk_mem_alloc.h']]], + ['vmaflushallocations_178',['vmaFlushAllocations',['../group__group__alloc.html#gac3dd00da721875ed99fa8a881922bdfc',1,'vk_mem_alloc.h']]], + ['vmaflushbuffersuballocation_179',['vmaFlushBufferSuballocation',['../group__group__buffer__suballocation.html#ga662e8386b36dc17573da63796713b50a',1,'vk_mem_alloc.h']]], ['vmafreememory_180',['vmaFreeMemory',['../group__group__alloc.html#ga5fea5518972ae9094b1526cbcb19b05f',1,'vk_mem_alloc.h']]], ['vmafreememorypages_181',['vmaFreeMemoryPages',['../group__group__alloc.html#ga834b1e4aef395c0a1d56a28e69a4a17e',1,'vk_mem_alloc.h']]], ['vmagetallocationinfo_182',['vmaGetAllocationInfo',['../group__group__alloc.html#ga86dd08aba8633bfa4ad0df2e76481d8b',1,'vk_mem_alloc.h']]], @@ -196,38 +196,37 @@ var searchData= ['vmagetvirtualblockstatistics_193',['vmaGetVirtualBlockStatistics',['../group__group__virtual.html#ga2902aa3130866afcc64bb5f984113db3',1,'vk_mem_alloc.h']]], ['vmainvalidateallocation_194',['vmaInvalidateAllocation',['../group__group__alloc.html#gaaa8412919139ef413a4215ac6a290fae',1,'vk_mem_alloc.h']]], ['vmainvalidateallocations_195',['vmaInvalidateAllocations',['../group__group__alloc.html#gab25b558d75f7378ec944a1522fdcc3c5',1,'vk_mem_alloc.h']]], - ['vmainvalidatebuffersuballocation_196',['vmaInvalidateBufferSuballocation',['../group__group__buffer__suballocation.html#gaa6da44bb7c952e31ee908b06dcaeaa1b',1,'vk_mem_alloc.h']]], - ['vmainvalidatebuffersuballocations_197',['vmaInvalidateBufferSuballocations',['../group__group__buffer__suballocation.html#ga90de24bda8b9156113cfdc6b3e515191',1,'vk_mem_alloc.h']]], - ['vmaisvirtualblockempty_198',['vmaIsVirtualBlockEmpty',['../group__group__virtual.html#gacd53b5b1d23f8fcbad692ccfdc1811f1',1,'vk_mem_alloc.h']]], - ['vmamapbuffersuballocation_199',['vmaMapBufferSuballocation',['../group__group__buffer__suballocation.html#ga5559d88f4181d96baa2671a9b5bbb195',1,'vk_mem_alloc.h']]], - ['vmamapmemory_200',['vmaMapMemory',['../group__group__alloc.html#gad5bd1243512d099706de88168992f069',1,'vk_mem_alloc.h']]], - ['vmamemoryusage_201',['VmaMemoryUsage',['../group__group__alloc.html#gaa5846affa1e9da3800e3e78fae2305cc',1,'VmaMemoryUsage(): vk_mem_alloc.h'],['../group__group__alloc.html#ga806e8499dde802e59eb72a1dc811c35f',1,'VmaMemoryUsage(): vk_mem_alloc.h']]], - ['vmapool_202',['VmaPool',['../struct_vma_pool.html',1,'']]], - ['vmapoolcreateflagbits_203',['VmaPoolCreateFlagBits',['../group__group__alloc.html#ga9a7c45f9c863695d98c83fa5ac940fe7',1,'VmaPoolCreateFlagBits(): vk_mem_alloc.h'],['../group__group__alloc.html#ga4d4f2efc2509157a9e4ecd4fd7942303',1,'VmaPoolCreateFlagBits(): vk_mem_alloc.h']]], - ['vmapoolcreateflags_204',['VmaPoolCreateFlags',['../group__group__alloc.html#ga2770e325ea42e087c1b91fdf46d0292a',1,'vk_mem_alloc.h']]], - ['vmapoolcreateinfo_205',['VmaPoolCreateInfo',['../group__group__alloc.html#ga1017aa83489c0eee8d2163d2bf253f67',1,'VmaPoolCreateInfo(): vk_mem_alloc.h'],['../struct_vma_pool_create_info.html',1,'VmaPoolCreateInfo']]], - ['vmasetallocationname_206',['vmaSetAllocationName',['../group__group__alloc.html#gabe02cbb0cd913b3f125958179f2020fc',1,'vk_mem_alloc.h']]], - ['vmasetallocationuserdata_207',['vmaSetAllocationUserData',['../group__group__alloc.html#gaf9147d31ffc11d62fc187bde283ed14f',1,'vk_mem_alloc.h']]], - ['vmasetbuffersuballocationuserdata_208',['vmaSetBufferSuballocationUserData',['../group__group__buffer__suballocation.html#ga859ffc45110bced385384044572b227c',1,'vk_mem_alloc.h']]], - ['vmasetcurrentframeindex_209',['vmaSetCurrentFrameIndex',['../group__group__init.html#gade56bf8dc9f5a5eaddf5f119ed525236',1,'vk_mem_alloc.h']]], - ['vmasetpoolname_210',['vmaSetPoolName',['../group__group__alloc.html#gadbae3a0b4ab078024462fc85c37f3b58',1,'vk_mem_alloc.h']]], - ['vmasetvirtualallocationuserdata_211',['vmaSetVirtualAllocationUserData',['../group__group__virtual.html#ga001ea1850458a4062b829e09c303fca2',1,'vk_mem_alloc.h']]], - ['vmastatistics_212',['VmaStatistics',['../struct_vma_statistics.html',1,'VmaStatistics'],['../group__group__stats.html#gac94bd1a382a3922ddc8de3af4d3ddd06',1,'VmaStatistics(): vk_mem_alloc.h']]], - ['vmatotalstatistics_213',['VmaTotalStatistics',['../struct_vma_total_statistics.html',1,'VmaTotalStatistics'],['../group__group__stats.html#ga68916e729e55d513f88ffafbadddb770',1,'VmaTotalStatistics(): vk_mem_alloc.h']]], - ['vmaunmapbuffersuballocation_214',['vmaUnmapBufferSuballocation',['../group__group__buffer__suballocation.html#gabd39fc17fc5c76e1dc4f95a3753446d4',1,'vk_mem_alloc.h']]], - ['vmaunmapmemory_215',['vmaUnmapMemory',['../group__group__alloc.html#ga9bc268595cb33f6ec4d519cfce81ff45',1,'vk_mem_alloc.h']]], - ['vmavirtualallocate_216',['vmaVirtualAllocate',['../group__group__virtual.html#ga6b7cdcc1c3e5103c323fedc4e1319e01',1,'vk_mem_alloc.h']]], - ['vmavirtualallocation_217',['VmaVirtualAllocation',['../struct_vma_virtual_allocation.html',1,'']]], - ['vmavirtualallocationcreateflagbits_218',['VmaVirtualAllocationCreateFlagBits',['../group__group__virtual.html#ga2e9c64d405b14156fea7e10c4ad06cb6',1,'VmaVirtualAllocationCreateFlagBits(): vk_mem_alloc.h'],['../group__group__virtual.html#ga936815e64946a6b6d812d08d10184c23',1,'VmaVirtualAllocationCreateFlagBits(): vk_mem_alloc.h']]], - ['vmavirtualallocationcreateflags_219',['VmaVirtualAllocationCreateFlags',['../group__group__virtual.html#gae96ffc099bf898257fb19e9410ed08a7',1,'vk_mem_alloc.h']]], - ['vmavirtualallocationcreateinfo_220',['VmaVirtualAllocationCreateInfo',['../struct_vma_virtual_allocation_create_info.html',1,'VmaVirtualAllocationCreateInfo'],['../group__group__virtual.html#gac3c90d80bedc6847a41b82d0e2158c9e',1,'VmaVirtualAllocationCreateInfo(): vk_mem_alloc.h']]], - ['vmavirtualallocationinfo_221',['VmaVirtualAllocationInfo',['../group__group__virtual.html#ga75bc33ff7cf18c98e101f570dc2a5ebc',1,'VmaVirtualAllocationInfo(): vk_mem_alloc.h'],['../struct_vma_virtual_allocation_info.html',1,'VmaVirtualAllocationInfo']]], - ['vmavirtualblock_222',['VmaVirtualBlock',['../struct_vma_virtual_block.html',1,'']]], - ['vmavirtualblockcreateflagbits_223',['VmaVirtualBlockCreateFlagBits',['../group__group__virtual.html#ga88bcf8c1cd3bb1610ff7343811c65bca',1,'VmaVirtualBlockCreateFlagBits(): vk_mem_alloc.h'],['../group__group__virtual.html#ga0860ba1c0a67178fae4aecb63a78573e',1,'VmaVirtualBlockCreateFlagBits(): vk_mem_alloc.h']]], - ['vmavirtualblockcreateflags_224',['VmaVirtualBlockCreateFlags',['../group__group__virtual.html#ga4e49c2f0ab7f6b4868833e5bac78d91e',1,'vk_mem_alloc.h']]], - ['vmavirtualblockcreateinfo_225',['VmaVirtualBlockCreateInfo',['../group__group__virtual.html#ga4753d42d40217a3a652a3cdf253ad773',1,'VmaVirtualBlockCreateInfo(): vk_mem_alloc.h'],['../struct_vma_virtual_block_create_info.html',1,'VmaVirtualBlockCreateInfo']]], - ['vmavirtualfree_226',['vmaVirtualFree',['../group__group__virtual.html#ga09fc688c0c3653ff23723b037e5d5033',1,'vk_mem_alloc.h']]], - ['vmavulkanfunctions_227',['VmaVulkanFunctions',['../group__group__init.html#gabb0a8e3b5040d847571cca6c7f9a8074',1,'VmaVulkanFunctions(): vk_mem_alloc.h'],['../struct_vma_vulkan_functions.html',1,'VmaVulkanFunctions']]], - ['vulkan_20memory_20allocator_228',['Vulkan Memory Allocator',['../index.html',1,'']]], - ['vulkanapiversion_229',['vulkanApiVersion',['../struct_vma_allocator_create_info.html#ae0ffc55139b54520a6bb704b29ffc285',1,'VmaAllocatorCreateInfo']]] + ['vmainvalidatebuffersuballocation_196',['vmaInvalidateBufferSuballocation',['../group__group__buffer__suballocation.html#ga1aa4e38503fae280262527ce41af6920',1,'vk_mem_alloc.h']]], + ['vmaisvirtualblockempty_197',['vmaIsVirtualBlockEmpty',['../group__group__virtual.html#gacd53b5b1d23f8fcbad692ccfdc1811f1',1,'vk_mem_alloc.h']]], + ['vmamapbuffersuballocation_198',['vmaMapBufferSuballocation',['../group__group__buffer__suballocation.html#ga5559d88f4181d96baa2671a9b5bbb195',1,'vk_mem_alloc.h']]], + ['vmamapmemory_199',['vmaMapMemory',['../group__group__alloc.html#gad5bd1243512d099706de88168992f069',1,'vk_mem_alloc.h']]], + ['vmamemoryusage_200',['VmaMemoryUsage',['../group__group__alloc.html#gaa5846affa1e9da3800e3e78fae2305cc',1,'VmaMemoryUsage(): vk_mem_alloc.h'],['../group__group__alloc.html#ga806e8499dde802e59eb72a1dc811c35f',1,'VmaMemoryUsage(): vk_mem_alloc.h']]], + ['vmapool_201',['VmaPool',['../struct_vma_pool.html',1,'']]], + ['vmapoolcreateflagbits_202',['VmaPoolCreateFlagBits',['../group__group__alloc.html#ga9a7c45f9c863695d98c83fa5ac940fe7',1,'VmaPoolCreateFlagBits(): vk_mem_alloc.h'],['../group__group__alloc.html#ga4d4f2efc2509157a9e4ecd4fd7942303',1,'VmaPoolCreateFlagBits(): vk_mem_alloc.h']]], + ['vmapoolcreateflags_203',['VmaPoolCreateFlags',['../group__group__alloc.html#ga2770e325ea42e087c1b91fdf46d0292a',1,'vk_mem_alloc.h']]], + ['vmapoolcreateinfo_204',['VmaPoolCreateInfo',['../group__group__alloc.html#ga1017aa83489c0eee8d2163d2bf253f67',1,'VmaPoolCreateInfo(): vk_mem_alloc.h'],['../struct_vma_pool_create_info.html',1,'VmaPoolCreateInfo']]], + ['vmasetallocationname_205',['vmaSetAllocationName',['../group__group__alloc.html#gabe02cbb0cd913b3f125958179f2020fc',1,'vk_mem_alloc.h']]], + ['vmasetallocationuserdata_206',['vmaSetAllocationUserData',['../group__group__alloc.html#gaf9147d31ffc11d62fc187bde283ed14f',1,'vk_mem_alloc.h']]], + ['vmasetbuffersuballocationuserdata_207',['vmaSetBufferSuballocationUserData',['../group__group__buffer__suballocation.html#ga859ffc45110bced385384044572b227c',1,'vk_mem_alloc.h']]], + ['vmasetcurrentframeindex_208',['vmaSetCurrentFrameIndex',['../group__group__init.html#gade56bf8dc9f5a5eaddf5f119ed525236',1,'vk_mem_alloc.h']]], + ['vmasetpoolname_209',['vmaSetPoolName',['../group__group__alloc.html#gadbae3a0b4ab078024462fc85c37f3b58',1,'vk_mem_alloc.h']]], + ['vmasetvirtualallocationuserdata_210',['vmaSetVirtualAllocationUserData',['../group__group__virtual.html#ga001ea1850458a4062b829e09c303fca2',1,'vk_mem_alloc.h']]], + ['vmastatistics_211',['VmaStatistics',['../struct_vma_statistics.html',1,'VmaStatistics'],['../group__group__stats.html#gac94bd1a382a3922ddc8de3af4d3ddd06',1,'VmaStatistics(): vk_mem_alloc.h']]], + ['vmatotalstatistics_212',['VmaTotalStatistics',['../struct_vma_total_statistics.html',1,'VmaTotalStatistics'],['../group__group__stats.html#ga68916e729e55d513f88ffafbadddb770',1,'VmaTotalStatistics(): vk_mem_alloc.h']]], + ['vmaunmapbuffersuballocation_213',['vmaUnmapBufferSuballocation',['../group__group__buffer__suballocation.html#gabd39fc17fc5c76e1dc4f95a3753446d4',1,'vk_mem_alloc.h']]], + ['vmaunmapmemory_214',['vmaUnmapMemory',['../group__group__alloc.html#ga9bc268595cb33f6ec4d519cfce81ff45',1,'vk_mem_alloc.h']]], + ['vmavirtualallocate_215',['vmaVirtualAllocate',['../group__group__virtual.html#ga6b7cdcc1c3e5103c323fedc4e1319e01',1,'vk_mem_alloc.h']]], + ['vmavirtualallocation_216',['VmaVirtualAllocation',['../struct_vma_virtual_allocation.html',1,'']]], + ['vmavirtualallocationcreateflagbits_217',['VmaVirtualAllocationCreateFlagBits',['../group__group__virtual.html#ga2e9c64d405b14156fea7e10c4ad06cb6',1,'VmaVirtualAllocationCreateFlagBits(): vk_mem_alloc.h'],['../group__group__virtual.html#ga936815e64946a6b6d812d08d10184c23',1,'VmaVirtualAllocationCreateFlagBits(): vk_mem_alloc.h']]], + ['vmavirtualallocationcreateflags_218',['VmaVirtualAllocationCreateFlags',['../group__group__virtual.html#gae96ffc099bf898257fb19e9410ed08a7',1,'vk_mem_alloc.h']]], + ['vmavirtualallocationcreateinfo_219',['VmaVirtualAllocationCreateInfo',['../struct_vma_virtual_allocation_create_info.html',1,'VmaVirtualAllocationCreateInfo'],['../group__group__virtual.html#gac3c90d80bedc6847a41b82d0e2158c9e',1,'VmaVirtualAllocationCreateInfo(): vk_mem_alloc.h']]], + ['vmavirtualallocationinfo_220',['VmaVirtualAllocationInfo',['../group__group__virtual.html#ga75bc33ff7cf18c98e101f570dc2a5ebc',1,'VmaVirtualAllocationInfo(): vk_mem_alloc.h'],['../struct_vma_virtual_allocation_info.html',1,'VmaVirtualAllocationInfo']]], + ['vmavirtualblock_221',['VmaVirtualBlock',['../struct_vma_virtual_block.html',1,'']]], + ['vmavirtualblockcreateflagbits_222',['VmaVirtualBlockCreateFlagBits',['../group__group__virtual.html#ga88bcf8c1cd3bb1610ff7343811c65bca',1,'VmaVirtualBlockCreateFlagBits(): vk_mem_alloc.h'],['../group__group__virtual.html#ga0860ba1c0a67178fae4aecb63a78573e',1,'VmaVirtualBlockCreateFlagBits(): vk_mem_alloc.h']]], + ['vmavirtualblockcreateflags_223',['VmaVirtualBlockCreateFlags',['../group__group__virtual.html#ga4e49c2f0ab7f6b4868833e5bac78d91e',1,'vk_mem_alloc.h']]], + ['vmavirtualblockcreateinfo_224',['VmaVirtualBlockCreateInfo',['../group__group__virtual.html#ga4753d42d40217a3a652a3cdf253ad773',1,'VmaVirtualBlockCreateInfo(): vk_mem_alloc.h'],['../struct_vma_virtual_block_create_info.html',1,'VmaVirtualBlockCreateInfo']]], + ['vmavirtualfree_225',['vmaVirtualFree',['../group__group__virtual.html#ga09fc688c0c3653ff23723b037e5d5033',1,'vk_mem_alloc.h']]], + ['vmavulkanfunctions_226',['VmaVulkanFunctions',['../group__group__init.html#gabb0a8e3b5040d847571cca6c7f9a8074',1,'VmaVulkanFunctions(): vk_mem_alloc.h'],['../struct_vma_vulkan_functions.html',1,'VmaVulkanFunctions']]], + ['vulkan_20memory_20allocator_227',['Vulkan Memory Allocator',['../index.html',1,'']]], + ['vulkanapiversion_228',['vulkanApiVersion',['../struct_vma_allocator_create_info.html#ae0ffc55139b54520a6bb704b29ffc285',1,'VmaAllocatorCreateInfo']]] ]; diff --git a/docs/html/search/all_b.js b/docs/html/search/all_b.js index 926cdc3..501f1ad 100644 --- a/docs/html/search/all_b.js +++ b/docs/html/search/all_b.js @@ -13,10 +13,11 @@ var searchData= ['pmoves_10',['pMoves',['../struct_vma_defragmentation_pass_move_info.html#adfa7a4994afd9b940e7f1dfaf436a725',1,'VmaDefragmentationPassMoveInfo']]], ['pname_11',['pName',['../struct_vma_allocation_info.html#a28612f3e897e5b268254a3c63413d759',1,'VmaAllocationInfo']]], ['pool_12',['pool',['../struct_vma_allocation_create_info.html#a6272c0555cfd1fe28bff1afeb6190150',1,'VmaAllocationCreateInfo::pool()'],['../struct_vma_defragmentation_info.html#a18dd2097d8ab2976cdc7dd3e7b978bd4',1,'VmaDefragmentationInfo::pool()']]], - ['preferredflags_13',['preferredFlags',['../struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d',1,'VmaAllocationCreateInfo']]], - ['preferredlargeheapblocksize_14',['preferredLargeHeapBlockSize',['../struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a',1,'VmaAllocatorCreateInfo']]], - ['priority_15',['priority',['../struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7',1,'VmaAllocationCreateInfo::priority()'],['../struct_vma_pool_create_info.html#a16e686c688f6725f119ebf6e24ab5274',1,'VmaPoolCreateInfo::priority()']]], - ['ptypeexternalmemoryhandletypes_16',['pTypeExternalMemoryHandleTypes',['../struct_vma_allocator_create_info.html#ae8f0db05e5cb4c43d7713bf4a49a736b',1,'VmaAllocatorCreateInfo']]], - ['puserdata_17',['pUserData',['../struct_vma_device_memory_callbacks.html#a24052de0937ddd54015a2df0363903c6',1,'VmaDeviceMemoryCallbacks::pUserData()'],['../struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19',1,'VmaAllocationCreateInfo::pUserData()'],['../struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13',1,'VmaAllocationInfo::pUserData()'],['../struct_vma_virtual_allocation_create_info.html#a015f8544ca51a7350f7434d42d0587bb',1,'VmaVirtualAllocationCreateInfo::pUserData()'],['../struct_vma_virtual_allocation_info.html#a41d5cb09357656411653d82fee436f45',1,'VmaVirtualAllocationInfo::pUserData()'],['../struct_vma_buffer_suballocation_create_info.html#a2c4a9a3a240e093c4679a9c72f084966',1,'VmaBufferSuballocationCreateInfo::pUserData()'],['../struct_vma_buffer_suballocation_info.html#aafb0ff200f8fae41e383dec078e3eb47',1,'VmaBufferSuballocationInfo::pUserData()']]], - ['pvulkanfunctions_18',['pVulkanFunctions',['../struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd',1,'VmaAllocatorCreateInfo']]] + ['preferredbuffersize_13',['preferredBufferSize',['../struct_vma_buffer_allocator_create_info.html#a7abb079b970fd8e777a7f6961e4ce7c9',1,'VmaBufferAllocatorCreateInfo']]], + ['preferredflags_14',['preferredFlags',['../struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d',1,'VmaAllocationCreateInfo']]], + ['preferredlargeheapblocksize_15',['preferredLargeHeapBlockSize',['../struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a',1,'VmaAllocatorCreateInfo']]], + ['priority_16',['priority',['../struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7',1,'VmaAllocationCreateInfo::priority()'],['../struct_vma_pool_create_info.html#a16e686c688f6725f119ebf6e24ab5274',1,'VmaPoolCreateInfo::priority()']]], + ['ptypeexternalmemoryhandletypes_17',['pTypeExternalMemoryHandleTypes',['../struct_vma_allocator_create_info.html#ae8f0db05e5cb4c43d7713bf4a49a736b',1,'VmaAllocatorCreateInfo']]], + ['puserdata_18',['pUserData',['../struct_vma_device_memory_callbacks.html#a24052de0937ddd54015a2df0363903c6',1,'VmaDeviceMemoryCallbacks::pUserData()'],['../struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19',1,'VmaAllocationCreateInfo::pUserData()'],['../struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13',1,'VmaAllocationInfo::pUserData()'],['../struct_vma_virtual_allocation_create_info.html#a015f8544ca51a7350f7434d42d0587bb',1,'VmaVirtualAllocationCreateInfo::pUserData()'],['../struct_vma_virtual_allocation_info.html#a41d5cb09357656411653d82fee436f45',1,'VmaVirtualAllocationInfo::pUserData()'],['../struct_vma_buffer_suballocation_create_info.html#a2c4a9a3a240e093c4679a9c72f084966',1,'VmaBufferSuballocationCreateInfo::pUserData()'],['../struct_vma_buffer_suballocation_info.html#aafb0ff200f8fae41e383dec078e3eb47',1,'VmaBufferSuballocationInfo::pUserData()']]], + ['pvulkanfunctions_19',['pVulkanFunctions',['../struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd',1,'VmaAllocatorCreateInfo']]] ]; diff --git a/docs/html/search/enumvalues_0.js b/docs/html/search/enumvalues_0.js index a860eab..115be5f 100644 --- a/docs/html/search/enumvalues_0.js +++ b/docs/html/search/enumvalues_0.js @@ -32,42 +32,43 @@ var searchData= ['vma_5fbuffer_5fsuballocation_5fcreate_5fdedicated_5fbuffer_5fbit_29',['VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a',1,'vk_mem_alloc.h']]], ['vma_5fbuffer_5fsuballocation_5fcreate_5fflag_5fbits_5fmax_5fenum_30',['VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaec0e2b1cec0f2337ad134cec5aead0df',1,'vk_mem_alloc.h']]], ['vma_5fbuffer_5fsuballocation_5fcreate_5fnever_5fallocate_5fbit_31',['VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012',1,'vk_mem_alloc.h']]], - ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmask_32',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388',1,'vk_mem_alloc.h']]], - ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_33',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb',1,'vk_mem_alloc.h']]], - ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_34',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099',1,'vk_mem_alloc.h']]], - ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_35',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30',1,'vk_mem_alloc.h']]], - ['vma_5fbuffer_5fsuballocation_5fcreate_5fwithin_5fbudget_5fbit_36',['VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5fbalanced_5fbit_37',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50caec35a4138111605a6ff32ca61aa871b6',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5fextensive_5fbit_38',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cae45a9469e5337731627758671741e412',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5ffast_5fbit_39',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5ffull_5fbit_40',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cafa162eac5be800bcdd4011427a71156d',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5fmask_41',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cabcbbdb3bfd53c4c3ab4eaeb5fd4894e9',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5fbits_5fmax_5fenum_42',['VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cab87ec33154803bfeb5ac2b379f1d6a97',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fmove_5foperation_5fcopy_43',['VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad4a06ac46c4cb1c67b0ebc1edfab9f18',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fmove_5foperation_5fdestroy_44',['VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257a9786f8492a9be2c03bd26395e352ab85',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fmove_5foperation_5fignore_45',['VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad25bc6f816b226b4fd5170e845f218d2',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fauto_46',['VMA_MEMORY_USAGE_AUTO',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fauto_5fprefer_5fdevice_47',['VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccae2adb696d6a73c18bb20c23666661327',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fauto_5fprefer_5fhost_48',['VMA_MEMORY_USAGE_AUTO_PREFER_HOST',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9b422585242160b8ed3418310ee6664d',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fcpu_5fcopy_49',['VMA_MEMORY_USAGE_CPU_COPY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca416a444d4d0fc20067c3f76f32ff2500',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fcpu_5fonly_50',['VMA_MEMORY_USAGE_CPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca40bdf4cddeffeb12f43d45ca1286e0a5',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fcpu_5fto_5fgpu_51',['VMA_MEMORY_USAGE_CPU_TO_GPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9066b52c5a7079bb74a69aaf8b92ff67',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fgpu_5flazily_5fallocated_52',['VMA_MEMORY_USAGE_GPU_LAZILY_ALLOCATED',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca835333d9072db63a653818030e17614d',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fgpu_5fonly_53',['VMA_MEMORY_USAGE_GPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccac6b5dc1432d88647aa4cd456246eadf7',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fgpu_5fto_5fcpu_54',['VMA_MEMORY_USAGE_GPU_TO_CPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca7b586d2fdaf82a463b58f581ed72be27',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fmax_5fenum_55',['VMA_MEMORY_USAGE_MAX_ENUM',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca091e69437ef693e8d0d287f1c719ba6e',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5funknown_56',['VMA_MEMORY_USAGE_UNKNOWN',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccaf50d27e34e0925cf3a63db8c839121dd',1,'vk_mem_alloc.h']]], - ['vma_5fpool_5fcreate_5falgorithm_5fmask_57',['VMA_POOL_CREATE_ALGORITHM_MASK',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7af4d270f8f42517a0f70037ceb6ac1d9c',1,'vk_mem_alloc.h']]], - ['vma_5fpool_5fcreate_5fflag_5fbits_5fmax_5fenum_58',['VMA_POOL_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a1c7312bea9ea246846b9054fd6bd6aec',1,'vk_mem_alloc.h']]], - ['vma_5fpool_5fcreate_5fignore_5fbuffer_5fimage_5fgranularity_5fbit_59',['VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a9f1a499508a8edb4e8ba40aa0290a3d2',1,'vk_mem_alloc.h']]], - ['vma_5fpool_5fcreate_5flinear_5falgorithm_5fbit_60',['VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a13c8a444197c67866be9cb05599fc726',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum_61',['VMA_VIRTUAL_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac1163c03ea837fa663462dc286d6a1a9',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmask_62',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MASK',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac5b5e45c335368d18df59c9f27df17e3',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_63',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ae2a9591a62b5e3b1bdcbc81c6188a1bf',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_64',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a3bb82d2aedd587a64846a1d7778852e6',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_65',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a562d10a46012719d33167d3dc5dbbf9b',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fupper_5faddress_5fbit_66',['VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a9524a329a55b5ec390d57d90b67ad78e',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fblock_5fcreate_5falgorithm_5fmask_67',['VMA_VIRTUAL_BLOCK_CREATE_ALGORITHM_MASK',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaaf9487467136e1a9e371894dc3a7c4844',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fblock_5fcreate_5fflag_5fbits_5fmax_5fenum_68',['VMA_VIRTUAL_BLOCK_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaa5fc0d333c3d5687a8bbf57df9b377a87',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fblock_5fcreate_5flinear_5falgorithm_5fbit_69',['VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaae6423e2fa2f3c9211b21c819e3f10f96',1,'vk_mem_alloc.h']]] + ['vma_5fbuffer_5fsuballocation_5fcreate_5fnever_5fcreate_5fbuffer_5fbit_32',['VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaa891857e2a3c8307408b4e0763c158f2',1,'vk_mem_alloc.h']]], + ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmask_33',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388',1,'vk_mem_alloc.h']]], + ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_34',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb',1,'vk_mem_alloc.h']]], + ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_35',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099',1,'vk_mem_alloc.h']]], + ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_36',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30',1,'vk_mem_alloc.h']]], + ['vma_5fbuffer_5fsuballocation_5fcreate_5fwithin_5fbudget_5fbit_37',['VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5fbalanced_5fbit_38',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50caec35a4138111605a6ff32ca61aa871b6',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5fextensive_5fbit_39',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cae45a9469e5337731627758671741e412',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5ffast_5fbit_40',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5ffull_5fbit_41',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cafa162eac5be800bcdd4011427a71156d',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5fmask_42',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cabcbbdb3bfd53c4c3ab4eaeb5fd4894e9',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5fbits_5fmax_5fenum_43',['VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cab87ec33154803bfeb5ac2b379f1d6a97',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fmove_5foperation_5fcopy_44',['VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad4a06ac46c4cb1c67b0ebc1edfab9f18',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fmove_5foperation_5fdestroy_45',['VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257a9786f8492a9be2c03bd26395e352ab85',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fmove_5foperation_5fignore_46',['VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad25bc6f816b226b4fd5170e845f218d2',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fauto_47',['VMA_MEMORY_USAGE_AUTO',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fauto_5fprefer_5fdevice_48',['VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccae2adb696d6a73c18bb20c23666661327',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fauto_5fprefer_5fhost_49',['VMA_MEMORY_USAGE_AUTO_PREFER_HOST',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9b422585242160b8ed3418310ee6664d',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fcpu_5fcopy_50',['VMA_MEMORY_USAGE_CPU_COPY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca416a444d4d0fc20067c3f76f32ff2500',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fcpu_5fonly_51',['VMA_MEMORY_USAGE_CPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca40bdf4cddeffeb12f43d45ca1286e0a5',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fcpu_5fto_5fgpu_52',['VMA_MEMORY_USAGE_CPU_TO_GPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9066b52c5a7079bb74a69aaf8b92ff67',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fgpu_5flazily_5fallocated_53',['VMA_MEMORY_USAGE_GPU_LAZILY_ALLOCATED',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca835333d9072db63a653818030e17614d',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fgpu_5fonly_54',['VMA_MEMORY_USAGE_GPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccac6b5dc1432d88647aa4cd456246eadf7',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fgpu_5fto_5fcpu_55',['VMA_MEMORY_USAGE_GPU_TO_CPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca7b586d2fdaf82a463b58f581ed72be27',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fmax_5fenum_56',['VMA_MEMORY_USAGE_MAX_ENUM',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca091e69437ef693e8d0d287f1c719ba6e',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5funknown_57',['VMA_MEMORY_USAGE_UNKNOWN',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccaf50d27e34e0925cf3a63db8c839121dd',1,'vk_mem_alloc.h']]], + ['vma_5fpool_5fcreate_5falgorithm_5fmask_58',['VMA_POOL_CREATE_ALGORITHM_MASK',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7af4d270f8f42517a0f70037ceb6ac1d9c',1,'vk_mem_alloc.h']]], + ['vma_5fpool_5fcreate_5fflag_5fbits_5fmax_5fenum_59',['VMA_POOL_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a1c7312bea9ea246846b9054fd6bd6aec',1,'vk_mem_alloc.h']]], + ['vma_5fpool_5fcreate_5fignore_5fbuffer_5fimage_5fgranularity_5fbit_60',['VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a9f1a499508a8edb4e8ba40aa0290a3d2',1,'vk_mem_alloc.h']]], + ['vma_5fpool_5fcreate_5flinear_5falgorithm_5fbit_61',['VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a13c8a444197c67866be9cb05599fc726',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum_62',['VMA_VIRTUAL_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac1163c03ea837fa663462dc286d6a1a9',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmask_63',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MASK',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac5b5e45c335368d18df59c9f27df17e3',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_64',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ae2a9591a62b5e3b1bdcbc81c6188a1bf',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_65',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a3bb82d2aedd587a64846a1d7778852e6',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_66',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a562d10a46012719d33167d3dc5dbbf9b',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fupper_5faddress_5fbit_67',['VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a9524a329a55b5ec390d57d90b67ad78e',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fblock_5fcreate_5falgorithm_5fmask_68',['VMA_VIRTUAL_BLOCK_CREATE_ALGORITHM_MASK',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaaf9487467136e1a9e371894dc3a7c4844',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fblock_5fcreate_5fflag_5fbits_5fmax_5fenum_69',['VMA_VIRTUAL_BLOCK_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaa5fc0d333c3d5687a8bbf57df9b377a87',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fblock_5fcreate_5flinear_5falgorithm_5fbit_70',['VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaae6423e2fa2f3c9211b21c819e3f10f96',1,'vk_mem_alloc.h']]] ]; diff --git a/docs/html/search/functions_0.js b/docs/html/search/functions_0.js index 9e6de76..0db8d98 100644 --- a/docs/html/search/functions_0.js +++ b/docs/html/search/functions_0.js @@ -42,37 +42,35 @@ var searchData= ['vmafindmemorytypeindexforimageinfo_39',['vmaFindMemoryTypeIndexForImageInfo',['../group__group__alloc.html#ga088da83d8eaf3ce9056d9ea0b981d472',1,'vk_mem_alloc.h']]], ['vmaflushallocation_40',['vmaFlushAllocation',['../group__group__alloc.html#ga30c37c1eec6025f397be41644f48490f',1,'vk_mem_alloc.h']]], ['vmaflushallocations_41',['vmaFlushAllocations',['../group__group__alloc.html#gac3dd00da721875ed99fa8a881922bdfc',1,'vk_mem_alloc.h']]], - ['vmaflushbuffersuballocation_42',['vmaFlushBufferSuballocation',['../group__group__buffer__suballocation.html#gae20326d64236fe7ea9332483b83cab0d',1,'vk_mem_alloc.h']]], - ['vmaflushbuffersuballocations_43',['vmaFlushBufferSuballocations',['../group__group__buffer__suballocation.html#ga199d3aa9d77cd58670c06da2b6c5f53c',1,'vk_mem_alloc.h']]], - ['vmafreememory_44',['vmaFreeMemory',['../group__group__alloc.html#ga5fea5518972ae9094b1526cbcb19b05f',1,'vk_mem_alloc.h']]], - ['vmafreememorypages_45',['vmaFreeMemoryPages',['../group__group__alloc.html#ga834b1e4aef395c0a1d56a28e69a4a17e',1,'vk_mem_alloc.h']]], - ['vmagetallocationinfo_46',['vmaGetAllocationInfo',['../group__group__alloc.html#ga86dd08aba8633bfa4ad0df2e76481d8b',1,'vk_mem_alloc.h']]], - ['vmagetallocationmemoryproperties_47',['vmaGetAllocationMemoryProperties',['../group__group__alloc.html#ga571e87dd38e552249b56b1b0b982fad1',1,'vk_mem_alloc.h']]], - ['vmagetallocatorinfo_48',['vmaGetAllocatorInfo',['../group__group__init.html#gafa02231a791b37255720d566a52683e7',1,'vk_mem_alloc.h']]], - ['vmagetbuffersuballocationinfo_49',['vmaGetBufferSuballocationInfo',['../group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6',1,'vk_mem_alloc.h']]], - ['vmagetheapbudgets_50',['vmaGetHeapBudgets',['../group__group__stats.html#ga9f88db9d46a432c0ad7278cecbc5eaa7',1,'vk_mem_alloc.h']]], - ['vmagetmemoryproperties_51',['vmaGetMemoryProperties',['../group__group__init.html#gab88db292a17974f911182543fda52d19',1,'vk_mem_alloc.h']]], - ['vmagetmemorytypeproperties_52',['vmaGetMemoryTypeProperties',['../group__group__init.html#ga8701444752eb5de4464adb5a2b514bca',1,'vk_mem_alloc.h']]], - ['vmagetphysicaldeviceproperties_53',['vmaGetPhysicalDeviceProperties',['../group__group__init.html#gaecabf7b6e91ea87d0316fa0a9e014fe0',1,'vk_mem_alloc.h']]], - ['vmagetpoolname_54',['vmaGetPoolName',['../group__group__alloc.html#gaf09b4e4eafdbee812e8d73ddf960f030',1,'vk_mem_alloc.h']]], - ['vmagetpoolstatistics_55',['vmaGetPoolStatistics',['../group__group__stats.html#ga34d8e7d83774eed0caee5c5ae88e217d',1,'vk_mem_alloc.h']]], - ['vmagetvirtualallocationinfo_56',['vmaGetVirtualAllocationInfo',['../group__group__virtual.html#ga8ee14ceb1fe033ec84d8aa29e1f75afa',1,'vk_mem_alloc.h']]], - ['vmagetvirtualblockstatistics_57',['vmaGetVirtualBlockStatistics',['../group__group__virtual.html#ga2902aa3130866afcc64bb5f984113db3',1,'vk_mem_alloc.h']]], - ['vmainvalidateallocation_58',['vmaInvalidateAllocation',['../group__group__alloc.html#gaaa8412919139ef413a4215ac6a290fae',1,'vk_mem_alloc.h']]], - ['vmainvalidateallocations_59',['vmaInvalidateAllocations',['../group__group__alloc.html#gab25b558d75f7378ec944a1522fdcc3c5',1,'vk_mem_alloc.h']]], - ['vmainvalidatebuffersuballocation_60',['vmaInvalidateBufferSuballocation',['../group__group__buffer__suballocation.html#gaa6da44bb7c952e31ee908b06dcaeaa1b',1,'vk_mem_alloc.h']]], - ['vmainvalidatebuffersuballocations_61',['vmaInvalidateBufferSuballocations',['../group__group__buffer__suballocation.html#ga90de24bda8b9156113cfdc6b3e515191',1,'vk_mem_alloc.h']]], - ['vmaisvirtualblockempty_62',['vmaIsVirtualBlockEmpty',['../group__group__virtual.html#gacd53b5b1d23f8fcbad692ccfdc1811f1',1,'vk_mem_alloc.h']]], - ['vmamapbuffersuballocation_63',['vmaMapBufferSuballocation',['../group__group__buffer__suballocation.html#ga5559d88f4181d96baa2671a9b5bbb195',1,'vk_mem_alloc.h']]], - ['vmamapmemory_64',['vmaMapMemory',['../group__group__alloc.html#gad5bd1243512d099706de88168992f069',1,'vk_mem_alloc.h']]], - ['vmasetallocationname_65',['vmaSetAllocationName',['../group__group__alloc.html#gabe02cbb0cd913b3f125958179f2020fc',1,'vk_mem_alloc.h']]], - ['vmasetallocationuserdata_66',['vmaSetAllocationUserData',['../group__group__alloc.html#gaf9147d31ffc11d62fc187bde283ed14f',1,'vk_mem_alloc.h']]], - ['vmasetbuffersuballocationuserdata_67',['vmaSetBufferSuballocationUserData',['../group__group__buffer__suballocation.html#ga859ffc45110bced385384044572b227c',1,'vk_mem_alloc.h']]], - ['vmasetcurrentframeindex_68',['vmaSetCurrentFrameIndex',['../group__group__init.html#gade56bf8dc9f5a5eaddf5f119ed525236',1,'vk_mem_alloc.h']]], - ['vmasetpoolname_69',['vmaSetPoolName',['../group__group__alloc.html#gadbae3a0b4ab078024462fc85c37f3b58',1,'vk_mem_alloc.h']]], - ['vmasetvirtualallocationuserdata_70',['vmaSetVirtualAllocationUserData',['../group__group__virtual.html#ga001ea1850458a4062b829e09c303fca2',1,'vk_mem_alloc.h']]], - ['vmaunmapbuffersuballocation_71',['vmaUnmapBufferSuballocation',['../group__group__buffer__suballocation.html#gabd39fc17fc5c76e1dc4f95a3753446d4',1,'vk_mem_alloc.h']]], - ['vmaunmapmemory_72',['vmaUnmapMemory',['../group__group__alloc.html#ga9bc268595cb33f6ec4d519cfce81ff45',1,'vk_mem_alloc.h']]], - ['vmavirtualallocate_73',['vmaVirtualAllocate',['../group__group__virtual.html#ga6b7cdcc1c3e5103c323fedc4e1319e01',1,'vk_mem_alloc.h']]], - ['vmavirtualfree_74',['vmaVirtualFree',['../group__group__virtual.html#ga09fc688c0c3653ff23723b037e5d5033',1,'vk_mem_alloc.h']]] + ['vmaflushbuffersuballocation_42',['vmaFlushBufferSuballocation',['../group__group__buffer__suballocation.html#ga662e8386b36dc17573da63796713b50a',1,'vk_mem_alloc.h']]], + ['vmafreememory_43',['vmaFreeMemory',['../group__group__alloc.html#ga5fea5518972ae9094b1526cbcb19b05f',1,'vk_mem_alloc.h']]], + ['vmafreememorypages_44',['vmaFreeMemoryPages',['../group__group__alloc.html#ga834b1e4aef395c0a1d56a28e69a4a17e',1,'vk_mem_alloc.h']]], + ['vmagetallocationinfo_45',['vmaGetAllocationInfo',['../group__group__alloc.html#ga86dd08aba8633bfa4ad0df2e76481d8b',1,'vk_mem_alloc.h']]], + ['vmagetallocationmemoryproperties_46',['vmaGetAllocationMemoryProperties',['../group__group__alloc.html#ga571e87dd38e552249b56b1b0b982fad1',1,'vk_mem_alloc.h']]], + ['vmagetallocatorinfo_47',['vmaGetAllocatorInfo',['../group__group__init.html#gafa02231a791b37255720d566a52683e7',1,'vk_mem_alloc.h']]], + ['vmagetbuffersuballocationinfo_48',['vmaGetBufferSuballocationInfo',['../group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6',1,'vk_mem_alloc.h']]], + ['vmagetheapbudgets_49',['vmaGetHeapBudgets',['../group__group__stats.html#ga9f88db9d46a432c0ad7278cecbc5eaa7',1,'vk_mem_alloc.h']]], + ['vmagetmemoryproperties_50',['vmaGetMemoryProperties',['../group__group__init.html#gab88db292a17974f911182543fda52d19',1,'vk_mem_alloc.h']]], + ['vmagetmemorytypeproperties_51',['vmaGetMemoryTypeProperties',['../group__group__init.html#ga8701444752eb5de4464adb5a2b514bca',1,'vk_mem_alloc.h']]], + ['vmagetphysicaldeviceproperties_52',['vmaGetPhysicalDeviceProperties',['../group__group__init.html#gaecabf7b6e91ea87d0316fa0a9e014fe0',1,'vk_mem_alloc.h']]], + ['vmagetpoolname_53',['vmaGetPoolName',['../group__group__alloc.html#gaf09b4e4eafdbee812e8d73ddf960f030',1,'vk_mem_alloc.h']]], + ['vmagetpoolstatistics_54',['vmaGetPoolStatistics',['../group__group__stats.html#ga34d8e7d83774eed0caee5c5ae88e217d',1,'vk_mem_alloc.h']]], + ['vmagetvirtualallocationinfo_55',['vmaGetVirtualAllocationInfo',['../group__group__virtual.html#ga8ee14ceb1fe033ec84d8aa29e1f75afa',1,'vk_mem_alloc.h']]], + ['vmagetvirtualblockstatistics_56',['vmaGetVirtualBlockStatistics',['../group__group__virtual.html#ga2902aa3130866afcc64bb5f984113db3',1,'vk_mem_alloc.h']]], + ['vmainvalidateallocation_57',['vmaInvalidateAllocation',['../group__group__alloc.html#gaaa8412919139ef413a4215ac6a290fae',1,'vk_mem_alloc.h']]], + ['vmainvalidateallocations_58',['vmaInvalidateAllocations',['../group__group__alloc.html#gab25b558d75f7378ec944a1522fdcc3c5',1,'vk_mem_alloc.h']]], + ['vmainvalidatebuffersuballocation_59',['vmaInvalidateBufferSuballocation',['../group__group__buffer__suballocation.html#ga1aa4e38503fae280262527ce41af6920',1,'vk_mem_alloc.h']]], + ['vmaisvirtualblockempty_60',['vmaIsVirtualBlockEmpty',['../group__group__virtual.html#gacd53b5b1d23f8fcbad692ccfdc1811f1',1,'vk_mem_alloc.h']]], + ['vmamapbuffersuballocation_61',['vmaMapBufferSuballocation',['../group__group__buffer__suballocation.html#ga5559d88f4181d96baa2671a9b5bbb195',1,'vk_mem_alloc.h']]], + ['vmamapmemory_62',['vmaMapMemory',['../group__group__alloc.html#gad5bd1243512d099706de88168992f069',1,'vk_mem_alloc.h']]], + ['vmasetallocationname_63',['vmaSetAllocationName',['../group__group__alloc.html#gabe02cbb0cd913b3f125958179f2020fc',1,'vk_mem_alloc.h']]], + ['vmasetallocationuserdata_64',['vmaSetAllocationUserData',['../group__group__alloc.html#gaf9147d31ffc11d62fc187bde283ed14f',1,'vk_mem_alloc.h']]], + ['vmasetbuffersuballocationuserdata_65',['vmaSetBufferSuballocationUserData',['../group__group__buffer__suballocation.html#ga859ffc45110bced385384044572b227c',1,'vk_mem_alloc.h']]], + ['vmasetcurrentframeindex_66',['vmaSetCurrentFrameIndex',['../group__group__init.html#gade56bf8dc9f5a5eaddf5f119ed525236',1,'vk_mem_alloc.h']]], + ['vmasetpoolname_67',['vmaSetPoolName',['../group__group__alloc.html#gadbae3a0b4ab078024462fc85c37f3b58',1,'vk_mem_alloc.h']]], + ['vmasetvirtualallocationuserdata_68',['vmaSetVirtualAllocationUserData',['../group__group__virtual.html#ga001ea1850458a4062b829e09c303fca2',1,'vk_mem_alloc.h']]], + ['vmaunmapbuffersuballocation_69',['vmaUnmapBufferSuballocation',['../group__group__buffer__suballocation.html#gabd39fc17fc5c76e1dc4f95a3753446d4',1,'vk_mem_alloc.h']]], + ['vmaunmapmemory_70',['vmaUnmapMemory',['../group__group__alloc.html#ga9bc268595cb33f6ec4d519cfce81ff45',1,'vk_mem_alloc.h']]], + ['vmavirtualallocate_71',['vmaVirtualAllocate',['../group__group__virtual.html#ga6b7cdcc1c3e5103c323fedc4e1319e01',1,'vk_mem_alloc.h']]], + ['vmavirtualfree_72',['vmaVirtualFree',['../group__group__virtual.html#ga09fc688c0c3653ff23723b037e5d5033',1,'vk_mem_alloc.h']]] ]; diff --git a/docs/html/search/variables_7.js b/docs/html/search/variables_7.js index a49657f..3fcae56 100644 --- a/docs/html/search/variables_7.js +++ b/docs/html/search/variables_7.js @@ -11,10 +11,11 @@ var searchData= ['pmoves_8',['pMoves',['../struct_vma_defragmentation_pass_move_info.html#adfa7a4994afd9b940e7f1dfaf436a725',1,'VmaDefragmentationPassMoveInfo']]], ['pname_9',['pName',['../struct_vma_allocation_info.html#a28612f3e897e5b268254a3c63413d759',1,'VmaAllocationInfo']]], ['pool_10',['pool',['../struct_vma_allocation_create_info.html#a6272c0555cfd1fe28bff1afeb6190150',1,'VmaAllocationCreateInfo::pool()'],['../struct_vma_defragmentation_info.html#a18dd2097d8ab2976cdc7dd3e7b978bd4',1,'VmaDefragmentationInfo::pool()']]], - ['preferredflags_11',['preferredFlags',['../struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d',1,'VmaAllocationCreateInfo']]], - ['preferredlargeheapblocksize_12',['preferredLargeHeapBlockSize',['../struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a',1,'VmaAllocatorCreateInfo']]], - ['priority_13',['priority',['../struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7',1,'VmaAllocationCreateInfo::priority()'],['../struct_vma_pool_create_info.html#a16e686c688f6725f119ebf6e24ab5274',1,'VmaPoolCreateInfo::priority()']]], - ['ptypeexternalmemoryhandletypes_14',['pTypeExternalMemoryHandleTypes',['../struct_vma_allocator_create_info.html#ae8f0db05e5cb4c43d7713bf4a49a736b',1,'VmaAllocatorCreateInfo']]], - ['puserdata_15',['pUserData',['../struct_vma_device_memory_callbacks.html#a24052de0937ddd54015a2df0363903c6',1,'VmaDeviceMemoryCallbacks::pUserData()'],['../struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19',1,'VmaAllocationCreateInfo::pUserData()'],['../struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13',1,'VmaAllocationInfo::pUserData()'],['../struct_vma_virtual_allocation_create_info.html#a015f8544ca51a7350f7434d42d0587bb',1,'VmaVirtualAllocationCreateInfo::pUserData()'],['../struct_vma_virtual_allocation_info.html#a41d5cb09357656411653d82fee436f45',1,'VmaVirtualAllocationInfo::pUserData()'],['../struct_vma_buffer_suballocation_create_info.html#a2c4a9a3a240e093c4679a9c72f084966',1,'VmaBufferSuballocationCreateInfo::pUserData()'],['../struct_vma_buffer_suballocation_info.html#aafb0ff200f8fae41e383dec078e3eb47',1,'VmaBufferSuballocationInfo::pUserData()']]], - ['pvulkanfunctions_16',['pVulkanFunctions',['../struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd',1,'VmaAllocatorCreateInfo']]] + ['preferredbuffersize_11',['preferredBufferSize',['../struct_vma_buffer_allocator_create_info.html#a7abb079b970fd8e777a7f6961e4ce7c9',1,'VmaBufferAllocatorCreateInfo']]], + ['preferredflags_12',['preferredFlags',['../struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d',1,'VmaAllocationCreateInfo']]], + ['preferredlargeheapblocksize_13',['preferredLargeHeapBlockSize',['../struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a',1,'VmaAllocatorCreateInfo']]], + ['priority_14',['priority',['../struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7',1,'VmaAllocationCreateInfo::priority()'],['../struct_vma_pool_create_info.html#a16e686c688f6725f119ebf6e24ab5274',1,'VmaPoolCreateInfo::priority()']]], + ['ptypeexternalmemoryhandletypes_15',['pTypeExternalMemoryHandleTypes',['../struct_vma_allocator_create_info.html#ae8f0db05e5cb4c43d7713bf4a49a736b',1,'VmaAllocatorCreateInfo']]], + ['puserdata_16',['pUserData',['../struct_vma_device_memory_callbacks.html#a24052de0937ddd54015a2df0363903c6',1,'VmaDeviceMemoryCallbacks::pUserData()'],['../struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19',1,'VmaAllocationCreateInfo::pUserData()'],['../struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13',1,'VmaAllocationInfo::pUserData()'],['../struct_vma_virtual_allocation_create_info.html#a015f8544ca51a7350f7434d42d0587bb',1,'VmaVirtualAllocationCreateInfo::pUserData()'],['../struct_vma_virtual_allocation_info.html#a41d5cb09357656411653d82fee436f45',1,'VmaVirtualAllocationInfo::pUserData()'],['../struct_vma_buffer_suballocation_create_info.html#a2c4a9a3a240e093c4679a9c72f084966',1,'VmaBufferSuballocationCreateInfo::pUserData()'],['../struct_vma_buffer_suballocation_info.html#aafb0ff200f8fae41e383dec078e3eb47',1,'VmaBufferSuballocationInfo::pUserData()']]], + ['pvulkanfunctions_17',['pVulkanFunctions',['../struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd',1,'VmaAllocatorCreateInfo']]] ]; diff --git a/docs/html/struct_vma_buffer_allocator.html b/docs/html/struct_vma_buffer_allocator.html index c0e8a31..5673968 100644 --- a/docs/html/struct_vma_buffer_allocator.html +++ b/docs/html/struct_vma_buffer_allocator.html @@ -73,10 +73,11 @@ $(function() {
    -

    TODO document! +

    Represent main object that can allocate parts of larger Vulkan buffers. More...

    Detailed Description

    -

    TODO document!

    +

    Represent main object that can allocate parts of larger Vulkan buffers.

    +

    To create one, fill in structure VmaBufferAllocatorCreateInfo and call vmaCreateBufferAllocator(). To destroy it, call vmaDestroyBufferAllocator(). For more information, see: Buffer suballocation.


    The documentation for this struct was generated from the following file: diff --git a/docs/html/struct_vma_buffer_allocator_create_info-members.html b/docs/html/struct_vma_buffer_allocator_create_info-members.html index 2299281..f626862 100644 --- a/docs/html/struct_vma_buffer_allocator_create_info-members.html +++ b/docs/html/struct_vma_buffer_allocator_create_info-members.html @@ -81,6 +81,7 @@ $(function() { maxBufferCountVmaBufferAllocatorCreateInfo minBufferCountVmaBufferAllocatorCreateInfo minSuballocationAlignmentVmaBufferAllocatorCreateInfo + preferredBufferSizeVmaBufferAllocatorCreateInfo
    -

    Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator(). +

    Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator(). More...

    - + - + - + - + - + + + + - +

    Public Attributes

    VmaBufferAllocatorCreateFlags flags
     TODO document! TODO implement! More...
     Flags - use VmaBufferAllocatorCreateFlagBits. More...
     
    VkBufferCreateInfo bufferCreateInfo
     TODO document! TODO implement! More...
     Parameters of Vulkan buffers to be created internally by the created VmaBufferAllocator. More...
     
    VmaAllocationCreateInfo allocationCreateInfo
     TODO document! TODO implement! More...
     Parameters of allocations to be created internally for buffers. More...
     
    size_t minBufferCount
     TODO document! TODO implement! More...
     Minimum number of buffers to be created and always exist during lifetime of the created allocator. Default: 0. More...
     
    size_t maxBufferCount
     TODO document! TODO implement! More...
     Maximum number of buffers that can be created by the allocator. 0 means no limit. More...
     
    VkDeviceSize preferredBufferSize
     Preferred size of a single VkBuffer to be created by the allocator. 0 means default, which is currently 64 MB. More...
     
    VkDeviceSize minSuballocationAlignment
     TODO document! TODO implement! More...
     Minimum alignment to be used for all suballocations created from this allocator. 0 or 1 means no minimum alignment is specified. More...
     

    Detailed Description

    -

    Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator().

    +

    Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator().

    Member Data Documentation

    ◆ allocationCreateInfo

    @@ -115,7 +118,8 @@ Public Attributes
    -

    TODO document! TODO implement!

    +

    Parameters of allocations to be created internally for buffers.

    +

    The structure is copied, so you can free the memory of if together with the entire VmaBufferAllocatorCreateInfo after the creation call, but it has non-null VmaAllocationCreateInfo::pool, this pool must remain alive for the whole lifetime of the created allocator.

    @@ -131,7 +135,9 @@ Public Attributes
    -

    TODO document! TODO implement!

    +

    Parameters of Vulkan buffers to be created internally by the created VmaBufferAllocator.

    +

    size parameter has special meaning. Set it to 0 to allow the allocator to managed buffer sizes automatically. This also allows buffer sizes to vary and allows to use VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT. Set it to some other value to enforce that all buffers created by the allocator must have this specific size. This will also disallow to use VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT. Note this is different than VmaBufferAllocatorCreateInfo::preferredBufferSize.

    +

    The structure is copied, so you can free the memory of if together with the entire VmaBufferAllocatorCreateInfo after the creation call, but if points to additional memory, e.g. using pNext chain or pQueueFamilyIndices, this memory must remain alive and unchanged for the whole lifetime of the created allocator.

    @@ -147,7 +153,7 @@ Public Attributes
    -

    TODO document! TODO implement!

    +

    Flags - use VmaBufferAllocatorCreateFlagBits.

    @@ -163,7 +169,7 @@ Public Attributes
    -

    TODO document! TODO implement!

    +

    Maximum number of buffers that can be created by the allocator. 0 means no limit.

    @@ -179,7 +185,8 @@ Public Attributes
    -

    TODO document! TODO implement!

    +

    Minimum number of buffers to be created and always exist during lifetime of the created allocator. Default: 0.

    +

    Set it to 0 if you don't want to reserve a minimum number of buffers, so that no buffers are created before first suballocation is made.

    @@ -195,7 +202,25 @@ Public Attributes
    -

    TODO document! TODO implement!

    +

    Minimum alignment to be used for all suballocations created from this allocator. 0 or 1 means no minimum alignment is specified.

    +

    As aligment for a new suballocation, maximum of this parameter and VmaBufferSuballocationCreateInfo::alignment will be taken.

    + +
    + + +

    ◆ preferredBufferSize

    + +
    +
    + + + + +
    VkDeviceSize VmaBufferAllocatorCreateInfo::preferredBufferSize
    +
    + +

    Preferred size of a single VkBuffer to be created by the allocator. 0 means default, which is currently 64 MB.

    +

    Note this is different than VmaBufferAllocatorCreateInfo::bufferCreateInfo size parameter. By setting non-zero preferredBufferSize, you still allow the allocator to create buffers of different sizes, smaller and larger than this number. This also doesn't disallow to use VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT.

    diff --git a/docs/html/struct_vma_buffer_suballocation.html b/docs/html/struct_vma_buffer_suballocation.html index da75e72..6b50aac 100644 --- a/docs/html/struct_vma_buffer_suballocation.html +++ b/docs/html/struct_vma_buffer_suballocation.html @@ -73,10 +73,11 @@ $(function() {
    -

    TODO document! +

    Represents a single sub-allocation - allocated part of a larger Vulkan buffer. More...

    Detailed Description

    -

    TODO document!

    +

    Represents a single sub-allocation - allocated part of a larger Vulkan buffer.

    +

    To use this object, create VmaBufferAllocator object first. For more information, see: Buffer suballocation.


    The documentation for this struct was generated from the following file: diff --git a/docs/html/struct_vma_buffer_suballocation_create_info.html b/docs/html/struct_vma_buffer_suballocation_create_info.html index 45aac6a..ed023eb 100644 --- a/docs/html/struct_vma_buffer_suballocation_create_info.html +++ b/docs/html/struct_vma_buffer_suballocation_create_info.html @@ -76,7 +76,7 @@ $(function() {
    -

    Parameters of created VmaBufferSuballocation object to be passed to vmaBufferAllocatorAllocate(). +

    Parameters of created VmaBufferSuballocation object to be passed to vmaBufferAllocatorAllocate(). More...

    @@ -95,7 +95,7 @@ Public Attributes

     

    Detailed Description

    -

    Parameters of created VmaBufferSuballocation object to be passed to vmaBufferAllocatorAllocate().

    +

    Parameters of created VmaBufferSuballocation object to be passed to vmaBufferAllocatorAllocate().

    Member Data Documentation

    ◆ alignment

    diff --git a/docs/html/struct_vma_buffer_suballocation_info.html b/docs/html/struct_vma_buffer_suballocation_info.html index 7ec84e9..783c0fb 100644 --- a/docs/html/struct_vma_buffer_suballocation_info.html +++ b/docs/html/struct_vma_buffer_suballocation_info.html @@ -76,7 +76,7 @@ $(function() {
    -

    Parameters of an existing buffer suballocation, returned by vmaGetBufferSuballocationInfo(). +

    Parameters of an existing buffer suballocation, returned by vmaBufferAllocatorAllocate() or vmaGetBufferSuballocationInfo(). More...

    @@ -101,7 +101,7 @@ Public Attributes

     

    Detailed Description

    -

    Parameters of an existing buffer suballocation, returned by vmaGetBufferSuballocationInfo().

    +

    Parameters of an existing buffer suballocation, returned by vmaBufferAllocatorAllocate() or vmaGetBufferSuballocationInfo().

    Member Data Documentation

    ◆ allocation

    diff --git a/docs/html/usage_patterns.html b/docs/html/usage_patterns.html index d47efee..912ab63 100644 --- a/docs/html/usage_patterns.html +++ b/docs/html/usage_patterns.html @@ -106,10 +106,10 @@ GPU-only resource
    VkResult vmaCreateImage(VmaAllocator allocator, const VkImageCreateInfo *pImageCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkImage *pImage, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)
    Function similar to vmaCreateBuffer().
    @ VMA_MEMORY_USAGE_AUTO
    Definition: vk_mem_alloc.h:495
    @ VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT
    Set this flag if the allocation should have its own memory block.
    Definition: vk_mem_alloc.h:531
    -
    Parameters of new VmaAllocation.
    Definition: vk_mem_alloc.h:1305
    -
    float priority
    A floating-point value between 0 and 1, indicating the priority of the allocation relative to other m...
    Definition: vk_mem_alloc.h:1351
    -
    VmaMemoryUsage usage
    Intended usage of memory.
    Definition: vk_mem_alloc.h:1313
    -
    VmaAllocationCreateFlags flags
    Use VmaAllocationCreateFlagBits enum.
    Definition: vk_mem_alloc.h:1307
    +
    Parameters of new VmaAllocation.
    Definition: vk_mem_alloc.h:1326
    +
    float priority
    A floating-point value between 0 and 1, indicating the priority of the allocation relative to other m...
    Definition: vk_mem_alloc.h:1372
    +
    VmaMemoryUsage usage
    Intended usage of memory.
    Definition: vk_mem_alloc.h:1334
    +
    VmaAllocationCreateFlags flags
    Use VmaAllocationCreateFlagBits enum.
    Definition: vk_mem_alloc.h:1328
    Represents single memory allocation.

    Also consider: Consider creating them as dedicated allocations using VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT, especially if they are large or if you plan to destroy and recreate them with different sizes e.g. when display resolution changes. Prefer to create such resources first and all other GPU resources (like textures and vertex buffers) later. When VK_EXT_memory_priority extension is enabled, it is also worth setting high priority to such allocation to decrease chances to be evicted to system memory by the operating system.

    @@ -136,8 +136,8 @@ Staging copy for upload

    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.
    @ VMA_ALLOCATION_CREATE_MAPPED_BIT
    Set this flag to use a memory that will be persistently mapped and retrieve pointer to it.
    Definition: vk_mem_alloc.h:552
    @ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT
    Definition: vk_mem_alloc.h:601
    -
    Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo().
    Definition: vk_mem_alloc.h:1420
    -
    void * pMappedData
    Pointer to the beginning of this allocation as mapped data.
    Definition: vk_mem_alloc.h:1462
    +
    Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo().
    Definition: vk_mem_alloc.h:1441
    +
    void * pMappedData
    Pointer to the beginning of this allocation as mapped data.
    Definition: vk_mem_alloc.h:1483

    Also consider: You can map the allocation using vmaMapMemory() or you can create it as persistenly mapped using VMA_ALLOCATION_CREATE_MAPPED_BIT, as in the example above.

    Readback

    diff --git a/docs/html/virtual_allocator.html b/docs/html/virtual_allocator.html index e0cf5fc..54d9660 100644 --- a/docs/html/virtual_allocator.html +++ b/docs/html/virtual_allocator.html @@ -91,8 +91,8 @@ Creating virtual block
    VkResult res = vmaCreateVirtualBlock(&blockCreateInfo, &block);
    VkResult vmaCreateVirtualBlock(const VmaVirtualBlockCreateInfo *pCreateInfo, VmaVirtualBlock *pVirtualBlock)
    Creates new VmaVirtualBlock object.
    -
    Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock().
    Definition: vk_mem_alloc.h:1575
    -
    VkDeviceSize size
    Total size of the virtual block.
    Definition: vk_mem_alloc.h:1581
    +
    Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock().
    Definition: vk_mem_alloc.h:1596
    +
    VkDeviceSize size
    Total size of the virtual block.
    Definition: vk_mem_alloc.h:1602
    Handle to a virtual block object that allows to use core allocation algorithm without allocating any ...

    Making virtual allocations

    @@ -118,8 +118,8 @@ Making virtual allocations
    // Allocation failed - no space for it could be found. Handle this error!
    }
    VkResult vmaVirtualAllocate(VmaVirtualBlock virtualBlock, const VmaVirtualAllocationCreateInfo *pCreateInfo, VmaVirtualAllocation *pAllocation, VkDeviceSize *pOffset)
    Allocates new virtual allocation inside given VmaVirtualBlock.
    -
    Parameters of created virtual allocation to be passed to vmaVirtualAllocate().
    Definition: vk_mem_alloc.h:1596
    -
    VkDeviceSize size
    Size of the allocation.
    Definition: vk_mem_alloc.h:1601
    +
    Parameters of created virtual allocation to be passed to vmaVirtualAllocate().
    Definition: vk_mem_alloc.h:1617
    +
    VkDeviceSize size
    Size of the allocation.
    Definition: vk_mem_alloc.h:1622
    Represents single memory allocation done inside VmaVirtualBlock.

    Deallocation

    @@ -147,8 +147,8 @@ Allocation parameters
    vmaVirtualFree(block, alloc);
    void vmaGetVirtualAllocationInfo(VmaVirtualBlock virtualBlock, VmaVirtualAllocation allocation, VmaVirtualAllocationInfo *pVirtualAllocInfo)
    Returns information about a specific virtual allocation within a virtual block, like its size and pUs...
    -
    Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo().
    Definition: vk_mem_alloc.h:1619
    -
    void * pUserData
    Custom pointer associated with the allocation.
    Definition: vk_mem_alloc.h:1634
    +
    Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo().
    Definition: vk_mem_alloc.h:1640
    +
    void * pUserData
    Custom pointer associated with the allocation.
    Definition: vk_mem_alloc.h:1655

    Alignment and units

    It feels natural to express sizes and offsets in bytes. If an offset of an allocation needs to be aligned to a multiply of some number (e.g. 4 bytes), you can fill optional member VmaVirtualAllocationCreateInfo::alignment to request it. Example:

    @@ -158,7 +158,7 @@ Alignment and units
    res = vmaVirtualAllocate(block, &allocCreateInfo, &alloc, nullptr);
    -
    VkDeviceSize alignment
    Required alignment of the allocation. Optional.
    Definition: vk_mem_alloc.h:1606
    +
    VkDeviceSize alignment
    Required alignment of the allocation. Optional.
    Definition: vk_mem_alloc.h:1627

    Alignments of different allocations made from one block may vary. However, if all alignments and sizes are always multiply of some size e.g. 4 B or sizeof(MyDataStruct), you can express all sizes, alignments, and offsets in multiples of that size instead of individual bytes. It might be more convenient, but you need to make sure to use this new unit consistently in all the places:

    • VmaVirtualBlockCreateInfo::size
    • @@ -173,9 +173,9 @@ Statistics
      printf("My virtual block has %llu bytes used by %u virtual allocations\n",
      void vmaGetVirtualBlockStatistics(VmaVirtualBlock virtualBlock, VmaStatistics *pStats)
      Calculates and returns statistics about virtual allocations and memory usage in given VmaVirtualBlock...
      -
      Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool,...
      Definition: vk_mem_alloc.h:1194
      -
      VkDeviceSize allocationBytes
      Total number of bytes occupied by all VmaAllocation objects.
      Definition: vk_mem_alloc.h:1216
      -
      uint32_t allocationCount
      Number of VmaAllocation objects allocated.
      Definition: vk_mem_alloc.h:1202
      +
      Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool,...
      Definition: vk_mem_alloc.h:1215
      +
      VkDeviceSize allocationBytes
      Total number of bytes occupied by all VmaAllocation objects.
      Definition: vk_mem_alloc.h:1237
      +
      uint32_t allocationCount
      Number of VmaAllocation objects allocated.
      Definition: vk_mem_alloc.h:1223

      You can also request a full list of allocations and free regions as a string in JSON format by calling vmaBuildVirtualBlockStatsString(). Returned string must be later freed using vmaFreeVirtualBlockStatsString(). The format of this string differs from the one returned by the main Vulkan allocator, but it is similar.

      Additional considerations

      diff --git a/docs/html/vk__mem__alloc_8h.html b/docs/html/vk__mem__alloc_8h.html index 978cc39..6abf645 100644 --- a/docs/html/vk__mem__alloc_8h.html +++ b/docs/html/vk__mem__alloc_8h.html @@ -141,13 +141,13 @@ Classes  Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo(). More...
        struct  VmaBufferAllocatorCreateInfo - Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator(). More...
      + Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator(). More...
        struct  VmaBufferSuballocationCreateInfo - Parameters of created VmaBufferSuballocation object to be passed to vmaBufferAllocatorAllocate(). More...
      + Parameters of created VmaBufferSuballocation object to be passed to vmaBufferAllocatorAllocate(). More...
        struct  VmaBufferSuballocationInfo - Parameters of an existing buffer suballocation, returned by vmaGetBufferSuballocationInfo(). More...
      + Parameters of an existing buffer suballocation, returned by vmaBufferAllocatorAllocate() or vmaGetBufferSuballocationInfo(). More...
        - + - + @@ -280,13 +280,13 @@ Typedefs - + - + - +

      @@ -208,10 +208,10 @@ Typedefs

       Flags to be passed as VmaVirtualAllocationCreateInfo::flags. See VmaVirtualAllocationCreateFlagBits. More...
       
      typedef enum VmaBufferAllocatorCreateFlagBits VmaBufferAllocatorCreateFlagBits
       Flags to be passed as VmaBufferAllocatorCreateInfo::flags. More...
       Flags to be passed as VmaBufferAllocatorCreateInfo::flags. More...
       
      typedef VkFlags VmaBufferAllocatorCreateFlags
       Flags to be passed as VmaBufferAllocatorCreateInfo::flags. See VmaBufferAllocatorCreateFlagBits. More...
       Flags to be passed as VmaBufferAllocatorCreateInfo::flags. See VmaBufferAllocatorCreateFlagBits. More...
       
      typedef enum VmaBufferSuballocationCreateFlagBits VmaBufferSuballocationCreateFlagBits
       Flags to be passed as VmaVirtualAllocationCreateInfo::flags. More...
       Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo(). More...
       
      typedef struct VmaBufferAllocatorCreateInfo VmaBufferAllocatorCreateInfo
       Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator(). More...
       Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator(). More...
       
      typedef struct VmaBufferSuballocationCreateInfo VmaBufferSuballocationCreateInfo
       Parameters of created VmaBufferSuballocation object to be passed to vmaBufferAllocatorAllocate(). More...
       Parameters of created VmaBufferSuballocation object to be passed to vmaBufferAllocatorAllocate(). More...
       
      typedef struct VmaBufferSuballocationInfo VmaBufferSuballocationInfo
       Parameters of an existing buffer suballocation, returned by vmaGetBufferSuballocationInfo(). More...
       Parameters of an existing buffer suballocation, returned by vmaBufferAllocatorAllocate() or vmaGetBufferSuballocationInfo(). More...
       
      , VMA_BUFFER_ALLOCATOR_CREATE_ALGORITHM_MASK , VMA_BUFFER_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } - + @@ -627,18 +629,12 @@ Functions - - - - - - - - - - - - + + + + + +

      @@ -397,18 +397,20 @@ Enumerations

       Flags to be passed as VmaBufferAllocatorCreateInfo::flags. More...
       Flags to be passed as VmaBufferAllocatorCreateInfo::flags. More...
       
      enum  VmaBufferSuballocationCreateFlagBits {
        VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT = 0x00000001 -, VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT = 0x00000002 -, VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT = 0x00000004 -, VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT = 0x00010000 +, VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT = 0x00000002 +, VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT = 0x00000004 +, VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT = 0x00000008 ,
      -  VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT = 0x00020000 +  VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT = 0x00010000 +, VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT = 0x00020000 , VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT = 0x00040000 , VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK -, VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +,
      +  VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
      }
       Flags to be passed as VmaVirtualAllocationCreateInfo::flags. More...
      void vmaUnmapBufferSuballocation (VmaAllocator allocator, VmaBufferAllocator bufferAllocator, VmaBufferSuballocation bufferSuballocation)
       TODO implement! TODO document! More...
       
      VkResult vmaFlushBufferSuballocation (VmaAllocator allocator, VmaBufferAllocator bufferAllocator, VmaBufferSuballocation bufferSuballocation, VkDeviceSize offset, VkDeviceSize size)
       TODO implement! TODO document! More...
       
      VkResult vmaInvalidateBufferSuballocation (VmaAllocator allocator, VmaBufferAllocator bufferAllocator, VmaBufferSuballocation bufferSuballocation, VkDeviceSize offset, VkDeviceSize size)
       TODO implement! TODO document! More...
       
      VkResult vmaFlushBufferSuballocations (VmaAllocator allocator, VmaBufferAllocator bufferAllocator, uint32_t bufferSuballocationCount, const VmaBufferSuballocation *pBufferSuballocations, const VkDeviceSize *pOffset, const VkDeviceSize *pSizes)
       TODO implement! TODO document! More...
       
      VkResult vmaInvalidateBufferSuballocations (VmaAllocator allocator, VmaBufferAllocator bufferAllocator, const VmaBufferSuballocation *pBufferSuballocations, const VkDeviceSize *pOffset, const VkDeviceSize *pSizes)
       TODO implement! TODO document! More...
       
      VkResult vmaFlushBufferSuballocation (VmaAllocator allocator, VmaBufferAllocator bufferAllocator, VmaBufferSuballocation bufferSuballocation, VkDeviceSize suballocationLocalOffset, VkDeviceSize size)
       TODO implement! TODO document! More...
       
      VkResult vmaInvalidateBufferSuballocation (VmaAllocator allocator, VmaBufferAllocator bufferAllocator, VmaBufferSuballocation bufferSuballocation, VkDeviceSize suballocationLocalOffset, VkDeviceSize size)
       TODO implement! TODO document! More...
       

      Macro Definition Documentation

      diff --git a/docs/html/vk_ext_memory_priority.html b/docs/html/vk_ext_memory_priority.html index 1ef4359..96ff89b 100644 --- a/docs/html/vk_ext_memory_priority.html +++ b/docs/html/vk_ext_memory_priority.html @@ -119,10 +119,10 @@ Usage
      VkResult vmaCreateImage(VmaAllocator allocator, const VkImageCreateInfo *pImageCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkImage *pImage, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)
      Function similar to vmaCreateBuffer().
      @ VMA_MEMORY_USAGE_AUTO
      Definition: vk_mem_alloc.h:495
      @ VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT
      Set this flag if the allocation should have its own memory block.
      Definition: vk_mem_alloc.h:531
      -
      Parameters of new VmaAllocation.
      Definition: vk_mem_alloc.h:1305
      -
      float priority
      A floating-point value between 0 and 1, indicating the priority of the allocation relative to other m...
      Definition: vk_mem_alloc.h:1351
      -
      VmaMemoryUsage usage
      Intended usage of memory.
      Definition: vk_mem_alloc.h:1313
      -
      VmaAllocationCreateFlags flags
      Use VmaAllocationCreateFlagBits enum.
      Definition: vk_mem_alloc.h:1307
      +
      Parameters of new VmaAllocation.
      Definition: vk_mem_alloc.h:1326
      +
      float priority
      A floating-point value between 0 and 1, indicating the priority of the allocation relative to other m...
      Definition: vk_mem_alloc.h:1372
      +
      VmaMemoryUsage usage
      Intended usage of memory.
      Definition: vk_mem_alloc.h:1334
      +
      VmaAllocationCreateFlags flags
      Use VmaAllocationCreateFlagBits enum.
      Definition: vk_mem_alloc.h:1328
      Represents single memory allocation.

      priority member is ignored in the following situations:

        diff --git a/include/vk_mem_alloc.h b/include/vk_mem_alloc.h index 75ca34a..b8a7cfa 100644 --- a/include/vk_mem_alloc.h +++ b/include/vk_mem_alloc.h @@ -817,7 +817,7 @@ typedef VkFlags VmaVirtualAllocationCreateFlags; /// Flags to be passed as VmaBufferAllocatorCreateInfo::flags. typedef enum VmaBufferAllocatorCreateFlagBits { - /** \brief Enables alternative, linear allocation algorithm in this virtual block. + /** Enables alternative, linear allocation algorithm in this virtual block. Specify this flag to enable linear allocation algorithm, which always creates new allocations after last one and doesn't reuse space from allocations freed in @@ -828,13 +828,11 @@ typedef enum VmaBufferAllocatorCreateFlagBits ring buffer, and double stack. For details, see documentation chapter \ref linear_algorithm. - Under the hood, it uses a \ref virtual_allocator with flag #VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT. - - TODO implement! + Internally it uses a \ref virtual_allocator with flag #VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT. */ VMA_BUFFER_ALLOCATOR_CREATE_LINEAR_ALGORITHM_BIT = 0x00000001, - /** \brief Bit mask to extract only `ALGORITHM` bits from entire set of flags. + /** Bit mask to extract only `ALGORITHM` bits from entire set of flags. */ VMA_BUFFER_ALLOCATOR_CREATE_ALGORITHM_MASK = VMA_BUFFER_ALLOCATOR_CREATE_LINEAR_ALGORITHM_BIT, @@ -847,25 +845,38 @@ typedef VkFlags VmaBufferAllocatorCreateFlags; /// Flags to be passed as VmaVirtualAllocationCreateInfo::flags. typedef enum VmaBufferSuballocationCreateFlagBits { - /** \brief TODO document! TODO implement! + /** Always creates a separate `VkBuffer` dedicated for this suballocation. + Suballocation will then always have buffer-local offset 0. */ VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT = 0x00000001, - /** \brief TODO document! TODO implement! + /** Never creates a new `VkBuffer` or allocates new Vulkan memory. + Tries to create the suballocation in a free space of an existing buffer. + If not possible, returns `VK_ERROR_OUT_OF_DEVICE_MEMORY`. */ VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT = 0x00000002, - /** \brief TODO document! TODO implement! + /** Never allocates new Vulkan memory. + Tries to create the suballocation in a free space of an existing buffer. + If not possible, tries to create a new buffer but in existing memory blocks, + internally using #VMA_ALLOCATION_CREATE_NEVER_ALLOCATE_BIT. + If not possible, returns `VK_ERROR_OUT_OF_DEVICE_MEMORY`. */ VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT = 0x00000004, - /** \brief TODO document! TODO implement! + /** Creates suballocation only if additional Vulkan memory required for it, if any, + won't exceed memory budget. Otherwise return `VK_ERROR_OUT_OF_DEVICE_MEMORY`. */ VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT = 0x00000008, - /** \brief TODO document! TODO implement! + /** Allocation strategy that chooses smallest possible empty space for the suballocation + to minimize memory usage and fragmentation, possibly at the expense of allocation time. */ VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT = 0x00010000, - /** \brief TODO document! TODO implement! + /** Allocation strategy that chooses first suitable empty space for the suballocation - + not necessarily in terms of the smallest offset but the one that is easiest and fastest to find + to minimize allocation time, possibly at the expense of allocation quality. */ VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT = 0x00020000, - /** \brief TODO document! TODO implement! + /** Allocation strategy that chooses always the lowest offset in available space. + This is not the most efficient strategy but achieves highly packed data. + Not recommended or useful, provided just for completeness. */ VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT = 0x00040000, /** A bit mask to extract only `STRATEGY` bits from entire set of flags. @@ -983,12 +994,19 @@ VK_DEFINE_HANDLE(VmaVirtualBlock) */ /** \struct VmaBufferSuballocation -\brief TODO document! +\brief Represents a single sub-allocation - allocated part of a larger Vulkan buffer. + +To use this object, create #VmaBufferAllocator object first. +For more information, see: \ref buffer_suballocation. */ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VmaBufferSuballocation) /** \struct VmaBufferAllocator -\brief TODO document! +\brief Represent main object that can allocate parts of larger Vulkan buffers. + +To create one, fill in structure #VmaBufferAllocatorCreateInfo and call vmaCreateBufferAllocator(). +To destroy it, call vmaDestroyBufferAllocator(). +For more information, see: \ref buffer_suballocation. */ VK_DEFINE_HANDLE(VmaBufferAllocator) @@ -1647,22 +1665,50 @@ typedef struct VmaVirtualAllocationInfo /// Parameters of created #VmaBufferAllocator object to be passed to vmaCreateBufferAllocator(). typedef struct VmaBufferAllocatorCreateInfo { - /** \brief TODO document! TODO implement! + /** \brief Flags - use #VmaBufferAllocatorCreateFlagBits. */ VmaBufferAllocatorCreateFlags flags; - /** \brief TODO document! TODO implement! + /** \brief Parameters of Vulkan buffers to be created internally by the created #VmaBufferAllocator. + + `size` parameter has special meaning. Set it to 0 to allow the allocator + to managed buffer sizes automatically. This also allows buffer sizes to vary + and allows to use #VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT. + Set it to some other value to enforce that all buffers created by the allocator must have this specific size. + This will also disallow to use #VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT. + Note this is different than VmaBufferAllocatorCreateInfo::preferredBufferSize. + + The structure is copied, so you can free the memory of if together with the entire #VmaBufferAllocatorCreateInfo + after the creation call, but if points to additional memory, e.g. using `pNext` chain or `pQueueFamilyIndices`, + this memory must remain alive and unchanged for the whole lifetime of the created allocator. */ VkBufferCreateInfo bufferCreateInfo; - /** \brief TODO document! TODO implement! + /** \brief Parameters of allocations to be created internally for buffers. + + The structure is copied, so you can free the memory of if together with the entire #VmaBufferAllocatorCreateInfo + after the creation call, but it has non-null VmaAllocationCreateInfo::pool, + this pool must remain alive for the whole lifetime of the created allocator. */ VmaAllocationCreateInfo allocationCreateInfo; - /** \brief TODO document! TODO implement! + /** \brief Minimum number of buffers to be created and always exist during lifetime of the created allocator. Default: 0. + + Set it to 0 if you don't want to reserve a minimum number of buffers, + so that no buffers are created before first suballocation is made. */ size_t minBufferCount; - /** \brief TODO document! TODO implement! + /** \brief Maximum number of buffers that can be created by the allocator. 0 means no limit. */ size_t maxBufferCount; - /** \brief TODO document! TODO implement! + /** \brief Preferred size of a single `VkBuffer` to be created by the allocator. 0 means default, which is currently 64 MB. + + Note this is different than VmaBufferAllocatorCreateInfo::bufferCreateInfo size parameter. + By setting non-zero `preferredBufferSize`, you still allow the allocator + to create buffers of different sizes, smaller and larger than this number. + This also doesn't disallow to use #VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT. + */ + VkDeviceSize preferredBufferSize; + /** \brief Minimum alignment to be used for all suballocations created from this allocator. 0 or 1 means no minimum alignment is specified. + + As aligment for a new suballocation, maximum of this parameter and VmaBufferSuballocationCreateInfo::alignment will be taken. */ VkDeviceSize minSuballocationAlignment; } VmaBufferAllocatorCreateInfo; @@ -1686,7 +1732,7 @@ typedef struct VmaBufferSuballocationCreateInfo void* VMA_NULLABLE pUserData; } VmaBufferSuballocationCreateInfo; -/// Parameters of an existing buffer suballocation, returned by vmaGetBufferSuballocationInfo(). +/// Parameters of an existing buffer suballocation, returned by vmaBufferAllocatorAllocate() or vmaGetBufferSuballocationInfo(). typedef struct VmaBufferSuballocationInfo { /** \brief TODO document! TODO implement! @@ -2764,7 +2810,7 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaFlushBufferSuballocation( VmaAllocator VMA_NOT_NULL allocator, VmaBufferAllocator VMA_NOT_NULL bufferAllocator, VmaBufferSuballocation VMA_NOT_NULL bufferSuballocation, - VkDeviceSize offset, + VkDeviceSize suballocationLocalOffset, VkDeviceSize size); /** \brief TODO implement! TODO document! */ @@ -2772,26 +2818,8 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaInvalidateBufferSuballocation( VmaAllocator VMA_NOT_NULL allocator, VmaBufferAllocator VMA_NOT_NULL bufferAllocator, VmaBufferSuballocation VMA_NOT_NULL bufferSuballocation, - VkDeviceSize offset, + VkDeviceSize suballocationLocalOffset, VkDeviceSize size); -/** \brief TODO implement! TODO document! -*/ -VMA_CALL_PRE VkResult VMA_CALL_POST vmaFlushBufferSuballocations( - VmaAllocator VMA_NOT_NULL allocator, - VmaBufferAllocator VMA_NOT_NULL bufferAllocator, - uint32_t bufferSuballocationCount, - const VmaBufferSuballocation VMA_NOT_NULL* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pBufferSuballocations, - const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pOffsets, - const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pSizes); -/** \brief TODO implement! TODO document! -*/ -VMA_CALL_PRE VkResult VMA_CALL_POST vmaInvalidateBufferSuballocations( - VmaAllocator VMA_NOT_NULL allocator, - VmaBufferAllocator VMA_NOT_NULL bufferAllocator, - uint32_t bufferSuballocationCount, - const VmaBufferSuballocation VMA_NOT_NULL* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pBufferSuballocations, - const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pOffsets, - const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pSizes); /** @} */ @@ -11596,11 +11624,58 @@ void VmaVirtualBlock_T::BuildStatsString(bool detailedMap, VmaStringBuilder& sb) struct VmaBufferAllocation_T; +// TODO: turn it into a class hierarchy with separate PoolAllocators for each of 2 variants, so that Normal object is smaller than Dedicated. struct VmaBufferSuballocation_T { - VmaBufferAllocation_T* m_BufferAllocation = nullptr; - VmaVirtualAllocation m_VirtualAllocation = VK_NULL_HANDLE; - VkDeviceSize m_BufferLocalOffset = 0; // Cached for optimization. + enum class Type { None, Normal, Dedicated } m_Type = Type::None; + union + { + struct DedicatedStruct + { + VmaBufferAllocator m_ParentBufferAllocator; + VmaAllocation m_Allocation; + VkBuffer m_Buffer; + /* In normal suballocation, UserData is stored in m_Normal.m_VirtualAllocation.pUserData. + In dedicated suballocation, it must be stored manually. + We cannot store it in m_Dedicated.m_Allocation.m_UserData as it must store + VmaBufferAllocatorCreateInfo::VmaAllocationCreateInfo::pUserData. + */ + void* m_UserData; + VmaBufferSuballocation_T* m_ListPrev; + VmaBufferSuballocation_T* m_ListNext; + } m_Dedicated; + struct NormalStruct + { + VmaBufferAllocation_T* m_BufferAllocation; + VmaVirtualAllocation m_VirtualAllocation; + VkDeviceSize m_BufferLocalOffset; // Cached for optimization. + } m_Normal; + }; +}; + +struct VmaBufferDedicatedSuballocationListTypeTraits +{ + typedef VmaBufferSuballocation_T ItemType; + static ItemType* GetPrev(const ItemType* item) + { + VMA_HEAVY_ASSERT(item->m_Type == VmaBufferSuballocation_T::Type::Dedicated); + return item->m_Dedicated.m_ListPrev; + } + static ItemType* GetNext(const ItemType* item) + { + VMA_HEAVY_ASSERT(item->m_Type == VmaBufferSuballocation_T::Type::Dedicated); + return item->m_Dedicated.m_ListNext; + } + static ItemType*& AccessPrev(ItemType* item) + { + VMA_HEAVY_ASSERT(item->m_Type == VmaBufferSuballocation_T::Type::Dedicated); + return item->m_Dedicated.m_ListPrev; + } + static ItemType*& AccessNext(ItemType* item) + { + VMA_HEAVY_ASSERT(item->m_Type == VmaBufferSuballocation_T::Type::Dedicated); + return item->m_Dedicated.m_ListNext; + } }; // Represents a single buffer managed by VmaBufferAllocator: @@ -11618,21 +11693,19 @@ public: VkResult Allocate( const VmaBufferSuballocationCreateInfo& createInfo, - VmaBufferSuballocation_T*& outBufferSuballocation, - VmaBufferSuballocationInfo* outBufferSuballocationInfo); - void Free(VmaBufferSuballocation_T* bufferSuballocation); + VmaBufferSuballocation_T*& outSuballoc, + VmaBufferSuballocationInfo* outSuballocInfo); + void Free(VmaBufferSuballocation_T* suballoc); void GetSuballocationInfo( - const VmaBufferSuballocation_T& bufferSuballocation, - VmaBufferSuballocationInfo& outBufferSuballocationInfo) const; + const VmaBufferSuballocation_T& suballoc, + VmaBufferSuballocationInfo& outSuballocInfo) const; void SetSuballocationUserData( - const VmaBufferSuballocation_T& bufferSuballocation, void* pUserData); - VkResult MapSuballocation( - const VmaBufferSuballocation_T& bufferSuballocation, - void*& outData); - void UnmapSuballocation(const VmaBufferSuballocation_T& bufferSuballocation); + const VmaBufferSuballocation_T& suballoc, void* pUserData); + VkResult MapSuballocation(const VmaBufferSuballocation_T& suballoc, void*& outData); + void UnmapSuballocation(const VmaBufferSuballocation_T& suballoc); VkResult FlushOrInvalidateSuballocation( - const VmaBufferSuballocation_T& bufferSuballocation, + const VmaBufferSuballocation_T& suballoc, VkDeviceSize suballocLocalOffset, VkDeviceSize size, VMA_CACHE_OPERATION op) const; private: @@ -11666,21 +11739,44 @@ public: VmaBufferSuballocationInfo& outBufferSuballocationInfo) const; void SetSuballocationUserData( const VmaBufferSuballocation bufferSuballocation, void* pUserData); - VkResult MapSuballocation( - const VmaBufferSuballocation bufferSuballocation, + + VkResult MapSuballocation(const VmaBufferSuballocation bufferSuballocation, void*& outData); void UnmapSuballocation(const VmaBufferSuballocation bufferSuballocation); - VkResult FlushOrInvalidateSuballocations( - uint32_t count, const VmaBufferSuballocation* bufferSuballocations, - const VkDeviceSize* offsets, const VkDeviceSize* sizes, VMA_CACHE_OPERATION op) const; + + VkResult FlushOrInvalidateSuballocation( + VmaBufferSuballocation bufferSuballocation, + VkDeviceSize suballocationLocalOffset, VkDeviceSize size, VMA_CACHE_OPERATION op) const; private: - VmaAllocator m_Allocator = VK_NULL_HANDLE; - VmaBufferAllocatorCreateInfo m_CreateInfo = {}; + VmaAllocator const m_Allocator = VK_NULL_HANDLE; + const VmaBufferAllocatorCreateInfo m_CreateInfo = {}; + typedef VmaVector> BufferAllocationVectorType; BufferAllocationVectorType m_BufferAllocations; + typedef VmaIntrusiveLinkedList DedicatedListType; + DedicatedListType m_DedicatedSuballocations; VkResult CreateBufferAllocation(VkDeviceSize size); + + VkResult AllocateDedicated( + const VmaBufferSuballocationCreateInfo& createInfo, + VmaBufferSuballocation& outBufferSuballocation, + VmaBufferSuballocationInfo* outBufferSuballocationInfo); + // Given suballocation that must be of Type::Dedicated, releases its resources, + // removes it from the list of dedicated suballocations and frees the object from memory. + void FreeDedicated(VmaBufferSuballocation_T* suballoc); + // Given suballocation that must be of Type::Normal, frees its memory region, + // updates management of BufferAllocations, frees the object from memory. + void FreeNormal(VmaBufferSuballocation_T* suballoc); + + void GetDedicatedInfo( + const VmaBufferSuballocation_T& suballoc, + VmaBufferSuballocationInfo& outBufferSuballocationInfo) const; + VkResult MapDedicated(const VmaBufferSuballocation_T& suballoc, void*& outData); + void UnmapDedicated(const VmaBufferSuballocation_T& suballoc); + VkResult FlushOrInvalidateDedicated(const VmaBufferSuballocation_T& suballoc, + VkDeviceSize suballocationLocalOffset, VkDeviceSize size, VMA_CACHE_OPERATION op) const; }; #endif // _VMA_BUFFER_ALLOCATOR_T @@ -15944,7 +16040,7 @@ VkResult VmaAllocator_T::BindImageMemory( VkImage hImage, const void* pNext) { - VkResult res = VK_ERROR_UNKNOWN; + VkResult res = VK_ERROR_UNKNOWN_COPY; switch(hAllocation->GetType()) { case VmaAllocation_T::ALLOCATION_TYPE_DEDICATED: @@ -16384,8 +16480,8 @@ VmaBufferAllocation_T::~VmaBufferAllocation_T() VkResult VmaBufferAllocation_T::Allocate( const VmaBufferSuballocationCreateInfo& createInfo, - VmaBufferSuballocation_T*& outBufferSuballocation, - VmaBufferSuballocationInfo* outBufferSuballocationInfo) + VmaBufferSuballocation_T*& outSuballoc, + VmaBufferSuballocationInfo* outSuballocInfo) { VmaVirtualAllocationCreateInfo virtualAllocCreateInfo = {}; virtualAllocCreateInfo.size = createInfo.size; // TODO check size if it fits, early return if not. @@ -16411,77 +16507,85 @@ VkResult VmaBufferAllocation_T::Allocate( VMA_ASSERT(virtualAlloc != VK_NULL_HANDLE); // Create VmaBufferSuballocation structure. - outBufferSuballocation = vma_new( + outSuballoc = vma_new( m_ParentBufferAllocator->GetAllocator()->GetAllocationCallbacks(), VmaBufferSuballocation_T); - outBufferSuballocation->m_BufferAllocation = this; - outBufferSuballocation->m_VirtualAllocation = virtualAlloc; - outBufferSuballocation->m_BufferLocalOffset = bufferLocalOffset; + // TODO convert it to some method InitNormal(...). + outSuballoc->m_Type = VmaBufferSuballocation_T::Type::Normal; + outSuballoc->m_Normal.m_BufferAllocation = this; + outSuballoc->m_Normal.m_VirtualAllocation = virtualAlloc; + outSuballoc->m_Normal.m_BufferLocalOffset = bufferLocalOffset; // Fetch VmaBufferSuballocationInfo. - if(outBufferSuballocationInfo) + if(outSuballocInfo) { - outBufferSuballocationInfo->allocation = m_Allocation; - outBufferSuballocationInfo->buffer = m_Buffer; - outBufferSuballocationInfo->bufferLocalOffset = bufferLocalOffset; - outBufferSuballocationInfo->size = createInfo.size; - outBufferSuballocationInfo->pMappedData = allocInfo.pMappedData ? + outSuballocInfo->allocation = m_Allocation; + outSuballocInfo->buffer = m_Buffer; + outSuballocInfo->bufferLocalOffset = bufferLocalOffset; + outSuballocInfo->size = createInfo.size; + outSuballocInfo->pMappedData = allocInfo.pMappedData ? (void*)((char*)allocInfo.pMappedData + bufferLocalOffset) : nullptr; - outBufferSuballocationInfo->pUserData = createInfo.pUserData; + outSuballocInfo->pUserData = createInfo.pUserData; } } return res; } -void VmaBufferAllocation_T::Free(VmaBufferSuballocation_T* bufferSuballocation) +void VmaBufferAllocation_T::Free(VmaBufferSuballocation_T* suballoc) { - VMA_ASSERT(bufferSuballocation->m_BufferAllocation == this); + VMA_ASSERT(suballoc->m_Type == VmaBufferSuballocation_T::Type::Normal && + suballoc->m_Normal.m_BufferAllocation == this); - vmaVirtualFree(m_VirtualBlock, bufferSuballocation->m_VirtualAllocation); - vma_delete(m_ParentBufferAllocator->GetAllocator()->GetAllocationCallbacks(), bufferSuballocation); + vmaVirtualFree(m_VirtualBlock, suballoc->m_Normal.m_VirtualAllocation); + vma_delete(m_ParentBufferAllocator->GetAllocator()->GetAllocationCallbacks(), suballoc); } void VmaBufferAllocation_T::GetSuballocationInfo( - const VmaBufferSuballocation_T& bufferSuballocation, - VmaBufferSuballocationInfo& outBufferSuballocationInfo) const + const VmaBufferSuballocation_T& suballoc, + VmaBufferSuballocationInfo& outSuballocInfo) const { - VMA_ASSERT(bufferSuballocation.m_BufferAllocation == this); + VMA_ASSERT(suballoc.m_Type == VmaBufferSuballocation_T::Type::Normal && + suballoc.m_Normal.m_BufferAllocation == this); VmaAllocationInfo allocInfo = {}; vmaGetAllocationInfo(m_ParentBufferAllocator->GetAllocator(), m_Allocation, &allocInfo); VmaVirtualAllocationInfo virtualAllocInfo = {}; - vmaGetVirtualAllocationInfo(m_VirtualBlock, bufferSuballocation.m_VirtualAllocation, &virtualAllocInfo); + vmaGetVirtualAllocationInfo(m_VirtualBlock, suballoc.m_Normal.m_VirtualAllocation, &virtualAllocInfo); - outBufferSuballocationInfo.allocation = m_Allocation; - outBufferSuballocationInfo.buffer = m_Buffer; - outBufferSuballocationInfo.bufferLocalOffset = virtualAllocInfo.offset; - outBufferSuballocationInfo.size = virtualAllocInfo.size; - outBufferSuballocationInfo.pMappedData = allocInfo.pMappedData ? + outSuballocInfo.allocation = m_Allocation; + outSuballocInfo.buffer = m_Buffer; + outSuballocInfo.bufferLocalOffset = virtualAllocInfo.offset; + outSuballocInfo.size = virtualAllocInfo.size; + outSuballocInfo.pMappedData = allocInfo.pMappedData ? (void*)((char*)allocInfo.pMappedData + virtualAllocInfo.offset) : nullptr; - outBufferSuballocationInfo.pUserData = virtualAllocInfo.pUserData; + outSuballocInfo.pUserData = virtualAllocInfo.pUserData; } void VmaBufferAllocation_T::SetSuballocationUserData( - const VmaBufferSuballocation_T& bufferSuballocation, void* pUserData) + const VmaBufferSuballocation_T& suballoc, void* pUserData) { - VMA_ASSERT(bufferSuballocation.m_BufferAllocation == this); + VMA_ASSERT(suballoc.m_Type == VmaBufferSuballocation_T::Type::Normal && + suballoc.m_Normal.m_BufferAllocation == this); - vmaSetVirtualAllocationUserData(m_VirtualBlock, bufferSuballocation.m_VirtualAllocation, + vmaSetVirtualAllocationUserData(m_VirtualBlock, suballoc.m_Normal.m_VirtualAllocation, pUserData); } VkResult VmaBufferAllocation_T::MapSuballocation( - const VmaBufferSuballocation_T& bufferSuballocation, + const VmaBufferSuballocation_T& suballoc, void*& outData) { + VMA_ASSERT(suballoc.m_Type == VmaBufferSuballocation_T::Type::Normal && + suballoc.m_Normal.m_BufferAllocation == this); + void* allocMappedPtr = nullptr; if(m_MapCounter == 0) { VkResult res = vmaMapMemory(m_ParentBufferAllocator->GetAllocator(), m_Allocation, &allocMappedPtr); if(res == VK_SUCCESS) { - outData = (void*)((char*)allocMappedPtr + bufferSuballocation.m_BufferLocalOffset); + outData = (void*)((char*)allocMappedPtr + suballoc.m_Normal.m_BufferLocalOffset); m_MapCounter = 1; return VK_SUCCESS; } @@ -16492,13 +16596,13 @@ VkResult VmaBufferAllocation_T::MapSuballocation( VmaAllocationInfo allocInfo = {}; vmaGetAllocationInfo(m_ParentBufferAllocator->GetAllocator(), m_Allocation, &allocInfo); VMA_ASSERT(allocInfo.pMappedData); - outData = (void*)((char*)allocInfo.pMappedData + bufferSuballocation.m_BufferLocalOffset); + outData = (void*)((char*)allocInfo.pMappedData + suballoc.m_Normal.m_BufferLocalOffset); ++m_MapCounter; return VK_SUCCESS; } } -void VmaBufferAllocation_T::UnmapSuballocation(const VmaBufferSuballocation_T& bufferSuballocation) +void VmaBufferAllocation_T::UnmapSuballocation(const VmaBufferSuballocation_T& suballoc) { VMA_ASSERT(m_MapCounter > 0); if(m_MapCounter == 1) @@ -16513,18 +16617,33 @@ void VmaBufferAllocation_T::UnmapSuballocation(const VmaBufferSuballocation_T& b } VkResult VmaBufferAllocation_T::FlushOrInvalidateSuballocation( - const VmaBufferSuballocation_T& bufferSuballocation, + const VmaBufferSuballocation_T& suballoc, VkDeviceSize suballocLocalOffset, VkDeviceSize size, VMA_CACHE_OPERATION op) const { - VMA_ASSERT(bufferSuballocation.m_BufferAllocation == this); + VMA_ASSERT(suballoc.m_Type == VmaBufferSuballocation_T::Type::Normal && + suballoc.m_Normal.m_BufferAllocation == this); // VkBuffer-local offset is the same thing as VmaAllocation-local offset. - const VkDeviceSize allocOffset = bufferSuballocation.m_BufferLocalOffset + suballocLocalOffset; + const VkDeviceSize allocOffset = suballoc.m_Normal.m_BufferLocalOffset + suballocLocalOffset; + + // Size should be limited to at most the size of the suballocation. + // TODO maybe optimize it somehow do not fetch the full structure, here and in other places. + VmaVirtualAllocationInfo virtualAllocInfo = {}; + vmaGetVirtualAllocationInfo(m_VirtualBlock, suballoc.m_Normal.m_VirtualAllocation, &virtualAllocInfo); + const VkDeviceSize suballocSize = virtualAllocInfo.size; + VMA_ASSERT(suballocLocalOffset < suballocSize); + const VkDeviceSize finalFlushOrInvalidateSize = VMA_MIN(size, suballocSize - suballocLocalOffset); if(op == VMA_CACHE_FLUSH) - return vmaFlushAllocation(m_ParentBufferAllocator->GetAllocator(), m_Allocation, allocOffset, size); + { + return vmaFlushAllocation(m_ParentBufferAllocator->GetAllocator(), m_Allocation, + allocOffset, finalFlushOrInvalidateSize); + } else - return vmaInvalidateAllocation(m_ParentBufferAllocator->GetAllocator(), m_Allocation, allocOffset, size); + { + return vmaInvalidateAllocation(m_ParentBufferAllocator->GetAllocator(), m_Allocation, + allocOffset, finalFlushOrInvalidateSize); + } } VmaBufferAllocator_T::VmaBufferAllocator_T(VmaAllocator allocator, const VmaBufferAllocatorCreateInfo& createInfo) : @@ -16543,6 +16662,9 @@ VkResult VmaBufferAllocator_T::Init() VmaBufferAllocator_T::~VmaBufferAllocator_T() { const VkAllocationCallbacks* const allocationCallbacks = m_Allocator->GetAllocationCallbacks(); + + while(!m_DedicatedSuballocations.IsEmpty()) + FreeDedicated(m_DedicatedSuballocations.Front()); for(size_t i = m_BufferAllocations.size(); i--; ) vma_delete(allocationCallbacks, m_BufferAllocations[i]); @@ -16553,12 +16675,15 @@ VkResult VmaBufferAllocator_T::Allocate( VmaBufferSuballocation& outBufferSuballocation, VmaBufferSuballocationInfo* outBufferSuballocationInfo) { + // TODO TEMP + return AllocateDedicated(createInfo, outBufferSuballocation, outBufferSuballocationInfo); + // TODO find existing BufferAllocation to allocate if possible. // TODO respect VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT // TODO respect VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT and VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT. // TODO respect VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT. // TODO manage BufferAllocation sizes - + /* VkResult res = CreateBufferAllocation(createInfo.size); if(res == VK_SUCCESS) { @@ -16567,77 +16692,116 @@ VkResult VmaBufferAllocator_T::Allocate( outBufferSuballocation = (VmaBufferSuballocation)suballocStruct; } return res; + */ } void VmaBufferAllocator_T::Free(VmaBufferSuballocation bufferSuballocation) { VmaBufferSuballocation_T* const suballocStruct = (VmaBufferSuballocation_T*)bufferSuballocation; - - // Find BufferAllocation. TODO any faster than linear search to use? - for(size_t i = 0, count = m_BufferAllocations.size(); i < count; ++i) + switch(suballocStruct->m_Type) { - VmaBufferAllocation_T* bufferAllocation = m_BufferAllocations[i]; - if(suballocStruct->m_BufferAllocation == bufferAllocation) - { - bufferAllocation->Free(suballocStruct); - vma_delete(m_Allocator->GetAllocationCallbacks(), bufferAllocation); - m_BufferAllocations.remove(i); - return; - } + case VmaBufferSuballocation_T::Type::Dedicated: + FreeDedicated(suballocStruct); + break; + case VmaBufferSuballocation_T::Type::Normal: + FreeNormal(suballocStruct); + break; + default: + VMA_ASSERT(0); } - VMA_ASSERT(0 && "BufferSuballocation doesn't belong to this BufferAllocator!"); } void VmaBufferAllocator_T::GetSuballocationInfo( const VmaBufferSuballocation bufferSuballocation, VmaBufferSuballocationInfo& outBufferSuballocationInfo) const { - VmaBufferSuballocation_T* const suballocStruct = (VmaBufferSuballocation_T*)bufferSuballocation; - VMA_ASSERT(suballocStruct->m_BufferAllocation); - suballocStruct->m_BufferAllocation->GetSuballocationInfo( - *suballocStruct, outBufferSuballocationInfo); + VmaBufferSuballocation_T* const suballoc = (VmaBufferSuballocation_T*)bufferSuballocation; + switch(suballoc->m_Type) + { + case VmaBufferSuballocation_T::Type::Dedicated: + GetDedicatedInfo(*suballoc, outBufferSuballocationInfo); + break; + case VmaBufferSuballocation_T::Type::Normal: + VMA_ASSERT(suballoc->m_Normal.m_BufferAllocation); + suballoc->m_Normal.m_BufferAllocation->GetSuballocationInfo( + *suballoc, outBufferSuballocationInfo); + break; + default: + VMA_ASSERT(0); + } } void VmaBufferAllocator_T::SetSuballocationUserData( const VmaBufferSuballocation bufferSuballocation, void* pUserData) { - VmaBufferSuballocation_T* const suballocStruct = (VmaBufferSuballocation_T*)bufferSuballocation; - VMA_ASSERT(suballocStruct->m_BufferAllocation); - suballocStruct->m_BufferAllocation->SetSuballocationUserData( - *suballocStruct, pUserData); + VmaBufferSuballocation_T* const suballoc = (VmaBufferSuballocation_T*)bufferSuballocation; + switch(suballoc->m_Type) + { + case VmaBufferSuballocation_T::Type::Dedicated: + suballoc->m_Dedicated.m_UserData = pUserData; + break; + case VmaBufferSuballocation_T::Type::Normal: + VMA_ASSERT(suballoc->m_Normal.m_BufferAllocation); + suballoc->m_Normal.m_BufferAllocation->SetSuballocationUserData( + *suballoc, pUserData); + break; + default: + VMA_ASSERT(0); + } } VkResult VmaBufferAllocator_T::MapSuballocation( const VmaBufferSuballocation bufferSuballocation, void*& outData) { - VmaBufferSuballocation_T* const suballocStruct = (VmaBufferSuballocation_T*)bufferSuballocation; - VMA_ASSERT(suballocStruct->m_BufferAllocation); - return suballocStruct->m_BufferAllocation->MapSuballocation(*suballocStruct, outData); + VmaBufferSuballocation_T* const suballoc = (VmaBufferSuballocation_T*)bufferSuballocation; + switch(suballoc->m_Type) + { + case VmaBufferSuballocation_T::Type::Dedicated: + return MapDedicated(*suballoc, outData); + case VmaBufferSuballocation_T::Type::Normal: + VMA_ASSERT(suballoc->m_Normal.m_BufferAllocation); + return suballoc->m_Normal.m_BufferAllocation->MapSuballocation(*suballoc, outData); + default: + VMA_ASSERT(0); + return VK_ERROR_UNKNOWN_COPY; + } } void VmaBufferAllocator_T::UnmapSuballocation(const VmaBufferSuballocation bufferSuballocation) { - VmaBufferSuballocation_T* const suballocStruct = (VmaBufferSuballocation_T*)bufferSuballocation; - VMA_ASSERT(suballocStruct->m_BufferAllocation); - suballocStruct->m_BufferAllocation->UnmapSuballocation(*suballocStruct); + VmaBufferSuballocation_T* const suballoc = (VmaBufferSuballocation_T*)bufferSuballocation; + switch(suballoc->m_Type) + { + case VmaBufferSuballocation_T::Type::Dedicated: + return UnmapDedicated(*suballoc); + case VmaBufferSuballocation_T::Type::Normal: + VMA_ASSERT(suballoc->m_Normal.m_BufferAllocation); + suballoc->m_Normal.m_BufferAllocation->UnmapSuballocation(*suballoc); + default: + VMA_ASSERT(0); + } } -VkResult VmaBufferAllocator_T::FlushOrInvalidateSuballocations( - uint32_t count, const VmaBufferSuballocation* bufferSuballocations, - const VkDeviceSize* offsets, const VkDeviceSize* sizes, VMA_CACHE_OPERATION op) const +VkResult VmaBufferAllocator_T::FlushOrInvalidateSuballocation( + VmaBufferSuballocation bufferSuballocation, + VkDeviceSize suballocationLocalOffset, VkDeviceSize size, VMA_CACHE_OPERATION op) const { - VkResult res = VK_SUCCESS; - for(uint32_t i = 0; i < count; ++i) + if(size == 0) + return VK_SUCCESS; + + const VmaBufferSuballocation_T* const suballoc = (const VmaBufferSuballocation_T*)bufferSuballocation; + switch(suballoc->m_Type) { - const VmaBufferSuballocation_T* const suballocStruct = (const VmaBufferSuballocation_T*)bufferSuballocations[i]; - VMA_ASSERT(suballocStruct->m_BufferAllocation); - const VkResult localRes = suballocStruct->m_BufferAllocation->FlushOrInvalidateSuballocation( - *suballocStruct, offsets[i], sizes[i], op); - if(res == VK_SUCCESS) - res = localRes; + case VmaBufferSuballocation_T::Type::Dedicated: + return FlushOrInvalidateDedicated(*suballoc, suballocationLocalOffset, size, op); + case VmaBufferSuballocation_T::Type::Normal: + return suballoc->m_Normal.m_BufferAllocation->FlushOrInvalidateSuballocation( + *suballoc, suballocationLocalOffset, size, op); + default: + VMA_ASSERT(0); + return VK_ERROR_UNKNOWN_COPY; } - return res; } VkResult VmaBufferAllocator_T::CreateBufferAllocation(VkDeviceSize size) @@ -16660,6 +16824,134 @@ VkResult VmaBufferAllocator_T::CreateBufferAllocation(VkDeviceSize size) return res; } + +VkResult VmaBufferAllocator_T::AllocateDedicated( + const VmaBufferSuballocationCreateInfo& createInfo, + VmaBufferSuballocation& outBufferSuballocation, + VmaBufferSuballocationInfo* outBufferSuballocationInfo) +{ + outBufferSuballocation = VK_NULL_HANDLE; + if(outBufferSuballocationInfo) + *outBufferSuballocationInfo = VmaBufferSuballocationInfo{}; + + VkBufferCreateInfo finalBufCreateInfo = m_CreateInfo.bufferCreateInfo; + finalBufCreateInfo.size = createInfo.size; + + VmaAllocation alloc = VK_NULL_HANDLE; + VkBuffer buf = VK_NULL_HANDLE; + VmaAllocationInfo allocInfo = {}; + VkResult res = vmaCreateBuffer(m_Allocator, + &finalBufCreateInfo, &m_CreateInfo.allocationCreateInfo, + &buf, &alloc, &allocInfo); + if(res == VK_SUCCESS) + { + VmaBufferSuballocation_T* suballoc = vma_new(m_Allocator, VmaBufferSuballocation_T)(); + // TODO enclose this into some method suballoc->InitDedicated(...). + suballoc->m_Type = VmaBufferSuballocation_T::Type::Dedicated; + suballoc->m_Dedicated.m_ParentBufferAllocator = this; + suballoc->m_Dedicated.m_Buffer = buf; + suballoc->m_Dedicated.m_Allocation = alloc; + suballoc->m_Dedicated.m_UserData = createInfo.pUserData; + suballoc->m_Dedicated.m_ListPrev = nullptr; + suballoc->m_Dedicated.m_ListNext = nullptr; + + m_DedicatedSuballocations.PushBack(suballoc); + + outBufferSuballocation = (VmaBufferSuballocation)suballoc; + + if(outBufferSuballocationInfo) + { + outBufferSuballocationInfo->allocation = alloc; + outBufferSuballocationInfo->buffer = buf; + outBufferSuballocationInfo->bufferLocalOffset = 0; + outBufferSuballocationInfo->size = allocInfo.size; + outBufferSuballocationInfo->pMappedData = allocInfo.pMappedData; + outBufferSuballocationInfo->pUserData = createInfo.pUserData; + } + } + return res; +} + +void VmaBufferAllocator_T::FreeDedicated(VmaBufferSuballocation_T* suballoc) +{ + VMA_ASSERT(suballoc->m_Type == VmaBufferSuballocation_T::Type::Dedicated); + VMA_ASSERT(suballoc->m_Dedicated.m_ParentBufferAllocator == this); + vmaDestroyBuffer(m_Allocator, suballoc->m_Dedicated.m_Buffer, suballoc->m_Dedicated.m_Allocation); + m_DedicatedSuballocations.Remove(suballoc); + vma_delete(m_Allocator, suballoc); +} + + +void VmaBufferAllocator_T::FreeNormal(VmaBufferSuballocation_T* suballoc) +{ + VMA_ASSERT(suballoc->m_Type == VmaBufferSuballocation_T::Type::Normal); + // Find BufferAllocation. TODO any faster than linear search to use? + for(size_t i = 0, count = m_BufferAllocations.size(); i < count; ++i) + { + VmaBufferAllocation_T* bufferAllocation = m_BufferAllocations[i]; + if(suballoc->m_Normal.m_BufferAllocation == bufferAllocation) + { + bufferAllocation->Free(suballoc); + vma_delete(m_Allocator, suballoc); + // TODO TEMP + vma_delete(m_Allocator, bufferAllocation); + m_BufferAllocations.remove(i); + return; + } + } + VMA_ASSERT(0 && "BufferSuballocation doesn't belong to this BufferAllocator!"); +} + + +void VmaBufferAllocator_T::GetDedicatedInfo( + const VmaBufferSuballocation_T& suballoc, + VmaBufferSuballocationInfo& outBufferSuballocationInfo) const +{ + VMA_ASSERT(suballoc.m_Type == VmaBufferSuballocation_T::Type::Dedicated); + + VmaAllocationInfo allocInfo = {}; + vmaGetAllocationInfo(m_Allocator, suballoc.m_Dedicated.m_Allocation, &allocInfo); + + // TODO enclose it in some function VmaSetBufferSuballocationInfo(...). + outBufferSuballocationInfo.allocation = suballoc.m_Dedicated.m_Allocation; + outBufferSuballocationInfo.buffer = suballoc.m_Dedicated.m_Buffer; + outBufferSuballocationInfo.bufferLocalOffset = 0; + outBufferSuballocationInfo.size = allocInfo.size; + outBufferSuballocationInfo.pMappedData = allocInfo.pMappedData; + outBufferSuballocationInfo.pUserData = suballoc.m_Dedicated.m_UserData; +} + +VkResult VmaBufferAllocator_T::MapDedicated(const VmaBufferSuballocation_T& suballoc, void*& outData) +{ + VMA_ASSERT(suballoc.m_Type == VmaBufferSuballocation_T::Type::Dedicated); + return vmaMapMemory(m_Allocator, suballoc.m_Dedicated.m_Allocation, &outData); +} + +void VmaBufferAllocator_T::UnmapDedicated(const VmaBufferSuballocation_T& suballoc) +{ + VMA_ASSERT(suballoc.m_Type == VmaBufferSuballocation_T::Type::Dedicated); + vmaUnmapMemory(m_Allocator, suballoc.m_Dedicated.m_Allocation); +} + + +VkResult VmaBufferAllocator_T::FlushOrInvalidateDedicated( + const VmaBufferSuballocation_T& suballoc, VkDeviceSize suballocationLocalOffset, VkDeviceSize size, + VMA_CACHE_OPERATION op) const +{ + VMA_ASSERT(suballoc.m_Type == VmaBufferSuballocation_T::Type::Dedicated); + // For dedicated, suballocationLocalOffset == offset local to the beginning of VmaAllocation and VkBuffer. + switch(op) + { + case VMA_CACHE_FLUSH: + return vmaFlushAllocation(m_Allocator, suballoc.m_Dedicated.m_Allocation, suballocationLocalOffset, size); + case VMA_CACHE_INVALIDATE: + return vmaInvalidateAllocation(m_Allocator, suballoc.m_Dedicated.m_Allocation, suballocationLocalOffset, size); + default: + VMA_ASSERT(0); + return VK_ERROR_UNKNOWN_COPY; + } +} + #endif // _VMA_BUFFER_ALLOCATOR_T_FUNCTIONS #ifndef _VMA_PUBLIC_INTERFACE @@ -18351,7 +18643,7 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaFlushBufferSuballocation( VmaAllocator VMA_NOT_NULL allocator, VmaBufferAllocator VMA_NOT_NULL bufferAllocator, VmaBufferSuballocation VMA_NOT_NULL bufferSuballocation, - VkDeviceSize offset, + VkDeviceSize suballocationLocalOffset, VkDeviceSize size) { VMA_ASSERT(allocator != VK_NULL_HANDLE && bufferAllocator != VK_NULL_HANDLE && @@ -18360,65 +18652,23 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaFlushBufferSuballocation( VMA_DEBUG_LOG("vmaFlushBufferSuballocation"); //VMA_DEBUG_GLOBAL_MUTEX_LOCK; // Not using, as this is a higher-level API that uses public VMA functions with this lock under the hood. - return bufferAllocator->FlushOrInvalidateSuballocations(1, &bufferSuballocation, &offset, &size, VMA_CACHE_FLUSH); + return bufferAllocator->FlushOrInvalidateSuballocation(bufferSuballocation, suballocationLocalOffset, size, VMA_CACHE_FLUSH); } VMA_CALL_PRE VkResult VMA_CALL_POST vmaInvalidateBufferSuballocation( VmaAllocator VMA_NOT_NULL allocator, VmaBufferAllocator VMA_NOT_NULL bufferAllocator, VmaBufferSuballocation VMA_NOT_NULL bufferSuballocation, - VkDeviceSize offset, + VkDeviceSize suballocationLocalOffset, VkDeviceSize size) { VMA_ASSERT(allocator != VK_NULL_HANDLE && bufferAllocator != VK_NULL_HANDLE && bufferSuballocation != VK_NULL_HANDLE); - VMA_DEBUG_LOG("vmaInvalidateBufferSuballocation"); + VMA_DEBUG_LOG("vmaFlushBufferSuballocation"); //VMA_DEBUG_GLOBAL_MUTEX_LOCK; // Not using, as this is a higher-level API that uses public VMA functions with this lock under the hood. - return bufferAllocator->FlushOrInvalidateSuballocations(1, &bufferSuballocation, &offset, &size, VMA_CACHE_INVALIDATE); -} - -VMA_CALL_PRE VkResult VMA_CALL_POST vmaFlushBufferSuballocations( - VmaAllocator VMA_NOT_NULL allocator, - VmaBufferAllocator VMA_NOT_NULL bufferAllocator, - uint32_t bufferSuballocationCount, - const VmaBufferSuballocation VMA_NOT_NULL* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pBufferSuballocations, - const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pOffsets, - const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pSizes) -{ - VMA_ASSERT(allocator != VK_NULL_HANDLE && bufferAllocator != VK_NULL_HANDLE); - - VMA_DEBUG_LOG("vmaFlushBufferSuballocations"); - //VMA_DEBUG_GLOBAL_MUTEX_LOCK; // Not using, as this is a higher-level API that uses public VMA functions with this lock under the hood. - - if(bufferSuballocationCount > 0) - { - VMA_ASSERT(pBufferSuballocations && pOffsets && pSizes); - return bufferAllocator->FlushOrInvalidateSuballocations(bufferSuballocationCount, pBufferSuballocations, pOffsets, pSizes, VMA_CACHE_FLUSH); - } - return VK_SUCCESS; -} - -VMA_CALL_PRE VkResult VMA_CALL_POST vmaInvalidateBufferSuballocations( - VmaAllocator VMA_NOT_NULL allocator, - VmaBufferAllocator VMA_NOT_NULL bufferAllocator, - uint32_t bufferSuballocationCount, - const VmaBufferSuballocation VMA_NOT_NULL* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pBufferSuballocations, - const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pOffsets, - const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pSizes) -{ - VMA_ASSERT(allocator != VK_NULL_HANDLE && bufferAllocator != VK_NULL_HANDLE); - - VMA_DEBUG_LOG("vmaInvalidateBufferSuballocations"); - //VMA_DEBUG_GLOBAL_MUTEX_LOCK; // Not using, as this is a higher-level API that uses public VMA functions with this lock under the hood. - - if(bufferSuballocationCount > 0) - { - VMA_ASSERT(pBufferSuballocations && pOffsets && pSizes); - return bufferAllocator->FlushOrInvalidateSuballocations(bufferSuballocationCount, pBufferSuballocations, pOffsets, pSizes, VMA_CACHE_INVALIDATE); - } - return VK_SUCCESS; + return bufferAllocator->FlushOrInvalidateSuballocation(bufferSuballocation, suballocationLocalOffset, size, VMA_CACHE_INVALIDATE); } #endif // _VMA_PUBLIC_INTERFACE diff --git a/src/Tests.cpp b/src/Tests.cpp index 3180d20..fcee002 100644 --- a/src/Tests.cpp +++ b/src/Tests.cpp @@ -7742,9 +7742,6 @@ static void TestBufferAllocator() // Random calls to flush/invalidate just to test they don't crash. vmaFlushBufferSuballocation(g_hAllocator, bufferAllocator, suballoc, 0, suballocSize); vmaInvalidateBufferSuballocation(g_hAllocator, bufferAllocator, suballoc, 0, suballocSize); - const VkDeviceSize zero = 0; - vmaFlushBufferSuballocations(g_hAllocator, bufferAllocator, 1, &suballoc, &zero, &suballocSize); - vmaInvalidateBufferSuballocations(g_hAllocator, bufferAllocator, 1, &suballoc, &zero, &suballocSize); // Testing map/unmap, on the already mapped suballocation. void* mappedPtr;