From b5456bb4e5622e3de5a07495d1bb55299f4dbdc7 Mon Sep 17 00:00:00 2001 From: Adam Sawicki Date: Sun, 21 Jan 2024 13:30:23 +0100 Subject: [PATCH] Added functions vmaCopyMemoryToAllocation, vmaCopyAllocationToMemory Few other minor fixes and improvements. Regenerated documentation. --- CHANGELOG.md | 3 +- docs/html/allocation_annotation.html | 22 +- docs/html/annotated.html | 10 +- docs/html/bdwn.png | Bin 147 -> 0 bytes docs/html/choosing_memory_type.html | 47 +- docs/html/classes.html | 10 +- docs/html/clipboard.js | 61 + docs/html/configuration.html | 10 +- docs/html/cookie.js | 58 + docs/html/custom_memory_pools.html | 48 +- docs/html/debugging_memory_usage.html | 10 +- docs/html/defragmentation.html | 32 +- docs/html/deprecated.html | 10 +- .../dir_d44c64559bbebec7f509842c48db8b23.html | 10 +- docs/html/doc.png | Bin 746 -> 0 bytes docs/html/docd.png | Bin 756 -> 0 bytes docs/html/doxygen.css | 252 +++- docs/html/doxygen_crawl.html | 123 ++ docs/html/dynsections.js | 322 ++-- docs/html/enabling_buffer_device_address.html | 10 +- docs/html/files.html | 14 +- docs/html/folderclosed.png | Bin 616 -> 0 bytes docs/html/folderopen.png | Bin 597 -> 0 bytes docs/html/functions.html | 16 +- docs/html/functions_func.html | 81 - docs/html/functions_vars.html | 15 +- docs/html/general_considerations.html | 10 +- docs/html/globals.html | 20 +- docs/html/globals_defs.html | 12 +- docs/html/globals_enum.html | 10 +- docs/html/globals_eval.html | 11 +- docs/html/globals_func.html | 17 +- docs/html/globals_type.html | 10 +- docs/html/group__group__alloc.html | 1326 +++++++---------- docs/html/group__group__init.html | 163 +- docs/html/group__group__stats.html | 96 +- docs/html/group__group__virtual.html | 239 ++- docs/html/index.html | 33 +- docs/html/memory_mapping.html | 61 +- docs/html/menu.js | 34 +- docs/html/menudata.js | 1 - docs/html/modules.html | 89 -- ...gl_interop.html => other_api_interop.html} | 26 +- docs/html/pages.html | 10 +- docs/html/quick_start.html | 90 +- docs/html/resource_aliasing.html | 16 +- docs/html/search/all_0.html | 37 - docs/html/search/all_0.js | 56 +- docs/html/search/all_1.html | 37 - docs/html/search/all_1.js | 14 +- docs/html/search/all_10.html | 37 - docs/html/search/all_11.html | 37 - docs/html/search/all_11.js | 23 +- docs/html/search/all_12.js | 4 +- docs/html/search/all_13.js | 12 +- docs/html/search/all_14.js | 408 ++--- docs/html/search/all_15.js | 4 +- docs/html/search/all_2.html | 37 - docs/html/search/all_2.js | 21 +- docs/html/search/all_3.html | 37 - docs/html/search/all_3.js | 37 +- docs/html/search/all_4.html | 37 - docs/html/search/all_4.js | 8 +- docs/html/search/all_5.html | 37 - docs/html/search/all_5.js | 13 +- docs/html/search/all_6.html | 37 - docs/html/search/all_6.js | 3 +- docs/html/search/all_7.html | 37 - docs/html/search/all_8.html | 37 - docs/html/search/all_8.js | 12 +- docs/html/search/all_9.html | 37 - docs/html/search/all_a.html | 37 - docs/html/search/all_b.html | 37 - docs/html/search/all_b.js | 39 +- docs/html/search/all_c.html | 37 - docs/html/search/all_c.js | 3 +- docs/html/search/all_d.html | 37 - docs/html/search/all_d.js | 17 +- docs/html/search/all_e.html | 37 - docs/html/search/all_e.js | 32 +- docs/html/search/all_f.html | 37 - docs/html/search/classes_0.html | 37 - docs/html/search/defines_0.html | 37 - docs/html/search/defines_0.js | 2 +- docs/html/search/enums_0.html | 37 - docs/html/search/enumvalues_0.html | 37 - docs/html/search/enumvalues_0.js | 67 +- docs/html/search/files_0.html | 37 - docs/html/search/functions_0.html | 37 - docs/html/search/functions_0.js | 104 +- docs/html/search/groups_0.html | 37 - docs/html/search/groups_1.html | 37 - docs/html/search/groups_2.html | 37 - docs/html/search/groups_3.html | 37 - docs/html/search/nomatches.html | 13 - docs/html/search/pages_0.html | 37 - docs/html/search/pages_0.js | 6 +- docs/html/search/pages_1.html | 37 - docs/html/search/pages_12.js | 3 +- docs/html/search/pages_2.html | 37 - docs/html/search/pages_3.html | 37 - docs/html/search/pages_4.html | 37 - docs/html/search/pages_5.html | 37 - docs/html/search/pages_5.js | 3 +- docs/html/search/pages_6.html | 37 - docs/html/search/pages_6.js | 2 +- docs/html/search/pages_7.html | 37 - docs/html/search/pages_8.html | 37 - docs/html/search/pages_9.html | 37 - docs/html/search/pages_a.html | 37 - docs/html/search/pages_a.js | 2 +- docs/html/search/search.js | 932 +++++------- docs/html/search/search_l.png | Bin 567 -> 0 bytes docs/html/search/search_m.png | Bin 158 -> 0 bytes docs/html/search/search_r.png | Bin 553 -> 0 bytes docs/html/search/typedefs_0.html | 37 - docs/html/search/typedefs_1.html | 37 - docs/html/search/variables_0.html | 37 - docs/html/search/variables_1.html | 37 - docs/html/search/variables_1.js | 2 +- docs/html/search/variables_2.html | 37 - docs/html/search/variables_3.html | 37 - docs/html/search/variables_4.html | 37 - docs/html/search/variables_5.html | 37 - docs/html/search/variables_5.js | 2 +- docs/html/search/variables_6.html | 37 - docs/html/search/variables_7.html | 37 - docs/html/search/variables_7.js | 23 +- docs/html/search/variables_8.html | 37 - docs/html/search/variables_9.html | 37 - docs/html/search/variables_a.html | 37 - docs/html/search/variables_b.html | 37 - docs/html/search/variables_c.html | 37 - docs/html/search/variables_c.js | 4 +- docs/html/statistics.html | 10 +- docs/html/staying_within_budget.html | 10 +- docs/html/struct_vma_allocation.html | 12 +- ...ct_vma_allocation_create_info-members.html | 10 +- .../struct_vma_allocation_create_info.html | 28 +- .../struct_vma_allocation_info-members.html | 10 +- docs/html/struct_vma_allocation_info.html | 24 +- .../struct_vma_allocation_info2-members.html | 10 +- docs/html/struct_vma_allocation_info2.html | 18 +- docs/html/struct_vma_allocator.html | 12 +- ...uct_vma_allocator_create_info-members.html | 10 +- .../struct_vma_allocator_create_info.html | 40 +- .../struct_vma_allocator_info-members.html | 10 +- docs/html/struct_vma_allocator_info.html | 18 +- docs/html/struct_vma_budget-members.html | 10 +- docs/html/struct_vma_budget.html | 18 +- .../struct_vma_defragmentation_context.html | 12 +- ...ruct_vma_defragmentation_info-members.html | 10 +- .../html/struct_vma_defragmentation_info.html | 24 +- ...ruct_vma_defragmentation_move-members.html | 10 +- .../html/struct_vma_defragmentation_move.html | 18 +- ...efragmentation_pass_move_info-members.html | 10 +- ...ct_vma_defragmentation_pass_move_info.html | 16 +- ...uct_vma_defragmentation_stats-members.html | 10 +- .../struct_vma_defragmentation_stats.html | 20 +- ...truct_vma_detailed_statistics-members.html | 10 +- docs/html/struct_vma_detailed_statistics.html | 24 +- ...t_vma_device_memory_callbacks-members.html | 10 +- .../struct_vma_device_memory_callbacks.html | 18 +- docs/html/struct_vma_pool.html | 12 +- .../struct_vma_pool_create_info-members.html | 14 +- docs/html/struct_vma_pool_create_info.html | 81 +- docs/html/struct_vma_statistics-members.html | 10 +- docs/html/struct_vma_statistics.html | 20 +- .../struct_vma_total_statistics-members.html | 10 +- docs/html/struct_vma_total_statistics.html | 18 +- docs/html/struct_vma_virtual_allocation.html | 12 +- ...irtual_allocation_create_info-members.html | 10 +- ...ct_vma_virtual_allocation_create_info.html | 20 +- ...t_vma_virtual_allocation_info-members.html | 10 +- .../struct_vma_virtual_allocation_info.html | 18 +- docs/html/struct_vma_virtual_block.html | 12 +- ...vma_virtual_block_create_info-members.html | 10 +- .../struct_vma_virtual_block_create_info.html | 18 +- .../struct_vma_vulkan_functions-members.html | 14 +- docs/html/struct_vma_vulkan_functions.html | 84 +- docs/html/tabs.css | 2 +- docs/html/topics.html | 10 +- docs/html/usage_patterns.html | 34 +- docs/html/virtual_allocator.html | 30 +- docs/html/vk__mem__alloc_8h.html | 96 +- docs/html/vk_amd_device_coherent_memory.html | 10 +- docs/html/vk_ext_memory_priority.html | 22 +- docs/html/vk_khr_dedicated_allocation.html | 14 +- include/vk_mem_alloc.h | 210 ++- src/Tests.cpp | 95 ++ 190 files changed, 3464 insertions(+), 5181 deletions(-) delete mode 100644 docs/html/bdwn.png create mode 100644 docs/html/clipboard.js create mode 100644 docs/html/cookie.js delete mode 100644 docs/html/doc.png delete mode 100644 docs/html/docd.png create mode 100644 docs/html/doxygen_crawl.html delete mode 100644 docs/html/folderclosed.png delete mode 100644 docs/html/folderopen.png delete mode 100644 docs/html/functions_func.html delete mode 100644 docs/html/modules.html rename docs/html/{opengl_interop.html => other_api_interop.html} (64%) delete mode 100644 docs/html/search/all_0.html delete mode 100644 docs/html/search/all_1.html delete mode 100644 docs/html/search/all_10.html delete mode 100644 docs/html/search/all_11.html delete mode 100644 docs/html/search/all_2.html delete mode 100644 docs/html/search/all_3.html delete mode 100644 docs/html/search/all_4.html delete mode 100644 docs/html/search/all_5.html delete mode 100644 docs/html/search/all_6.html delete mode 100644 docs/html/search/all_7.html delete mode 100644 docs/html/search/all_8.html delete mode 100644 docs/html/search/all_9.html delete mode 100644 docs/html/search/all_a.html delete mode 100644 docs/html/search/all_b.html delete mode 100644 docs/html/search/all_c.html delete mode 100644 docs/html/search/all_d.html delete mode 100644 docs/html/search/all_e.html delete mode 100644 docs/html/search/all_f.html delete mode 100644 docs/html/search/classes_0.html delete mode 100644 docs/html/search/defines_0.html delete mode 100644 docs/html/search/enums_0.html delete mode 100644 docs/html/search/enumvalues_0.html delete mode 100644 docs/html/search/files_0.html delete mode 100644 docs/html/search/functions_0.html delete mode 100644 docs/html/search/groups_0.html delete mode 100644 docs/html/search/groups_1.html delete mode 100644 docs/html/search/groups_2.html delete mode 100644 docs/html/search/groups_3.html delete mode 100644 docs/html/search/nomatches.html delete mode 100644 docs/html/search/pages_0.html delete mode 100644 docs/html/search/pages_1.html delete mode 100644 docs/html/search/pages_2.html delete mode 100644 docs/html/search/pages_3.html delete mode 100644 docs/html/search/pages_4.html delete mode 100644 docs/html/search/pages_5.html delete mode 100644 docs/html/search/pages_6.html delete mode 100644 docs/html/search/pages_7.html delete mode 100644 docs/html/search/pages_8.html delete mode 100644 docs/html/search/pages_9.html delete mode 100644 docs/html/search/pages_a.html delete mode 100644 docs/html/search/search_l.png delete mode 100644 docs/html/search/search_m.png delete mode 100644 docs/html/search/search_r.png delete mode 100644 docs/html/search/typedefs_0.html delete mode 100644 docs/html/search/typedefs_1.html delete mode 100644 docs/html/search/variables_0.html delete mode 100644 docs/html/search/variables_1.html delete mode 100644 docs/html/search/variables_2.html delete mode 100644 docs/html/search/variables_3.html delete mode 100644 docs/html/search/variables_4.html delete mode 100644 docs/html/search/variables_5.html delete mode 100644 docs/html/search/variables_6.html delete mode 100644 docs/html/search/variables_7.html delete mode 100644 docs/html/search/variables_8.html delete mode 100644 docs/html/search/variables_9.html delete mode 100644 docs/html/search/variables_a.html delete mode 100644 docs/html/search/variables_b.html delete mode 100644 docs/html/search/variables_c.html diff --git a/CHANGELOG.md b/CHANGELOG.md index f4c79dd..47c8cf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ This release gathers fixes and improvements made during many months of continuou Additions to the library API: +- Added convenience functions `vmaCopyMemoryToAllocation`, `vmaCopyAllocationToMemory`. - Added functions `vmaCreateAliasingBuffer2`, `vmaCreateAliasingImage2` that offer creating a buffer/image in an existing allocation with additional `allocationLocalOffset`. - Added function `vmaGetAllocationInfo2`, structure `VmaAllocationInfo2` that return additional information about an allocation, useful for interop with other APIs (#383, #340). - Added callback `VmaDefragmentationInfo::pfnBreakCallback` that allows breaking long execution of `vmaBeginDefragmentation`. @@ -16,7 +17,7 @@ Other changes: - Split macros into separate `VMA_DEBUG_LOG` and `VMA_DEBUG_LOG_FORMAT` (#297). - Added macros `VMA_ASSERT_LEAK`, `VMA_LEAK_LOG_FORMAT` separate from normal `VMA_ASSERT`, `VMA_DEBUG_LOG_FORMAT` (#379, #385). - Added macro `VMA_EXTENDS_VK_STRUCT` (#347). -- Countless bug fixes and improvements in the code and documentation, mostly to improve compatibility with various platforms, compilers, and GPUs, including: +- Countless bug fixes and improvements in the code and documentation, mostly to improve compatibility with various compilers and GPUs, including: - Fixed missing `#include` that resulted in compilation error about `snprintf` not declared on some compilers (#312). - Fixed main memory type selection algorithm for GPUs that have no `HOST_CACHED` memory type, like Raspberry Pi (#362). - Major changes in Cmake script. diff --git a/docs/html/allocation_annotation.html b/docs/html/allocation_annotation.html index c92c26a..8605640 100644 --- a/docs/html/allocation_annotation.html +++ b/docs/html/allocation_annotation.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Allocation names and user data + + @@ -29,7 +31,7 @@ - + @@ -91,18 +93,18 @@ Allocation user data
VmaAllocation allocation;
vmaCreateBuffer(allocator, &bufCreateInfo, &allocCreateInfo, &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:493
-
Parameters of new VmaAllocation.
Definition vk_mem_alloc.h:1223
-
void * pUserData
Custom general-purpose pointer that will be stored in VmaAllocation, can be read as VmaAllocationInfo...
Definition vk_mem_alloc.h:1262
-
VmaMemoryUsage usage
Intended usage of memory.
Definition vk_mem_alloc.h:1231
+
@ VMA_MEMORY_USAGE_AUTO
Definition vk_mem_alloc.h:510
+
Parameters of new VmaAllocation.
Definition vk_mem_alloc.h:1245
+
void * pUserData
Custom general-purpose pointer that will be stored in VmaAllocation, can be read as VmaAllocationInfo...
Definition vk_mem_alloc.h:1284
+
VmaMemoryUsage usage
Intended usage of memory.
Definition vk_mem_alloc.h:1253
Represents single memory allocation.

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

vmaGetAllocationInfo(allocator, allocation, &allocInfo);
MyBufferMetadata* pMetadata = (MyBufferMetadata*)allocInfo.pUserData;
void vmaGetAllocationInfo(VmaAllocator allocator, VmaAllocation allocation, VmaAllocationInfo *pAllocationInfo)
Returns current information about specified allocation.
-
Definition vk_mem_alloc.h:1342
-
void * pUserData
Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vma...
Definition vk_mem_alloc.h:1389
+
Definition vk_mem_alloc.h:1364
+
void * pUserData
Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vma...
Definition vk_mem_alloc.h:1411

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.

@@ -118,7 +120,7 @@ Allocation names

diff --git a/docs/html/annotated.html b/docs/html/annotated.html index b575069..ebfe053 100644 --- a/docs/html/annotated.html +++ b/docs/html/annotated.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Class List + + @@ -29,7 +31,7 @@ - + @@ -104,7 +106,7 @@ $(function() { diff --git a/docs/html/bdwn.png b/docs/html/bdwn.png deleted file mode 100644 index 940a0b950443a0bb1b216ac03c45b8a16c955452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T - + Vulkan Memory Allocator: Choosing memory type + + @@ -29,7 +31,7 @@ - + @@ -80,8 +82,8 @@ $(function() {
  1. If you just want to find memory type index that meets your requirements, you can use function: vmaFindMemoryTypeIndexForBufferInfo(), vmaFindMemoryTypeIndexForImageInfo(), vmaFindMemoryTypeIndex().
  2. If you want to allocate a region of device memory without association with any specific image or buffer, you can use function vmaAllocateMemory(). Usage of this function is not recommended and usually not needed. vmaAllocateMemoryPages() function is also provided for creating multiple allocations at once, which may be useful for sparse binding.
  3. -
  4. If you already have a buffer or an image created, you want to allocate memory for it and then you will bind it yourself, you can use function vmaAllocateMemoryForBuffer(), vmaAllocateMemoryForImage(). For binding you should use functions: vmaBindBufferMemory(), vmaBindImageMemory() or their extended versions: vmaBindBufferMemory2(), vmaBindImageMemory2().
  5. -
  6. This is the easiest and recommended way to use this library: If you want to create a buffer or an image, allocate memory for it and bind them together, all in one call, you can use function vmaCreateBuffer(), vmaCreateImage().
  7. +
  8. If you already have a buffer or an image created, you want to allocate memory for it and then you will bind it yourself, you can use function vmaAllocateMemoryForBuffer(), vmaAllocateMemoryForImage(). For binding you should use functions: vmaBindBufferMemory(), vmaBindImageMemory() or their extended versions: vmaBindBufferMemory2(), vmaBindImageMemory2().
  9. +
  10. If you want to create a buffer or an image, allocate memory for it, and bind them together, all in one call, you can use function vmaCreateBuffer(), vmaCreateImage(). This is the easiest and recommended way to use this library!

When using 3. or 4., the library internally queries Vulkan for memory types supported for that buffer or image (function vkGetBufferMemoryRequirements()) and uses only one of these types.

If no memory type can be found that meets all the requirements, these functions return VK_ERROR_FEATURE_NOT_PRESENT.

@@ -101,9 +103,9 @@ Usage
VmaAllocation 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:493
-
Parameters of new VmaAllocation.
Definition vk_mem_alloc.h:1223
-
VmaMemoryUsage usage
Intended usage of memory.
Definition vk_mem_alloc.h:1231
+
@ VMA_MEMORY_USAGE_AUTO
Definition vk_mem_alloc.h:510
+
Parameters of new VmaAllocation.
Definition vk_mem_alloc.h:1245
+
VmaMemoryUsage usage
Intended usage of memory.
Definition vk_mem_alloc.h:1253
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.

@@ -119,11 +121,11 @@ Usage
VkBuffer stagingBuffer;
VmaAllocation stagingAllocation;
vmaCreateBuffer(allocator, &stagingBufferInfo, &stagingAllocInfo, &stagingBuffer, &stagingAllocation, nullptr);
-
@ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT
Definition vk_mem_alloc.h:599
-
VmaAllocationCreateFlags flags
Use VmaAllocationCreateFlagBits enum.
Definition vk_mem_alloc.h:1225
-

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

+
@ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT
Definition vk_mem_alloc.h:619
+
VmaAllocationCreateFlags flags
Use VmaAllocationCreateFlagBits enum.
Definition vk_mem_alloc.h:1247
+

For more examples of creating different kinds of resources, see chapter Recommended usage patterns. See also: Memory mapping.

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.
+
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 deprecated.

Required and preferred flags

You can specify more detailed requirements by filling members VmaAllocationCreateInfo::requiredFlags and VmaAllocationCreateInfo::preferredFlags with a combination of bits from enum VkMemoryPropertyFlags. For example, if you want to create a buffer that will be persistently mapped on host (so it must be HOST_VISIBLE) and preferably will also be HOST_COHERENT and HOST_CACHED, use following code:

@@ -135,15 +137,15 @@ Required and preferred flags
VkBuffer buffer;
VmaAllocation allocation;
vmaCreateBuffer(allocator, &bufferInfo, &allocInfo, &buffer, &allocation, nullptr);
-
@ 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:550
-
@ VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT
Definition vk_mem_alloc.h:611
-
VkMemoryPropertyFlags preferredFlags
Flags that preferably should be set in a memory type chosen for an allocation.
Definition vk_mem_alloc.h:1241
-
VkMemoryPropertyFlags requiredFlags
Flags that must be set in a Memory Type chosen for an allocation.
Definition vk_mem_alloc.h:1236
+
@ 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:570
+
@ VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT
Definition vk_mem_alloc.h:631
+
VkMemoryPropertyFlags preferredFlags
Flags that preferably should be set in a memory type chosen for an allocation.
Definition vk_mem_alloc.h:1263
+
VkMemoryPropertyFlags requiredFlags
Flags that must be set in a Memory Type chosen for an allocation.
Definition vk_mem_alloc.h:1258

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).

Explicit memory types

-

If you inspected memory types available on the physical device and you have a preference for memory types that you want to use, you can fill member VmaAllocationCreateInfo::memoryTypeBits. It is a bit mask, where each bit set means that a memory type with that index is allowed to be used for the allocation. Special value 0, just like UINT32_MAX, means there are no restrictions to memory type index.

+

If you inspected memory types available on the physical device and you have a preference for memory types that you want to use, you can fill member VmaAllocationCreateInfo::memoryTypeBits. It is a bit mask, where each bit set means that a memory type with that index is allowed to be used for the allocation. Special value 0, just like UINT32_MAX, means there are no restrictions to memory type index.

Please note that this member is NOT just a memory type index. Still you can use it to choose just one, specific memory type. For example, if you already determined that your buffer should be created in memory type 2, use following code:

uint32_t memoryTypeIndex = 2;
@@ -153,7 +155,14 @@ Explicit memory types
VkBuffer buffer;
VmaAllocation allocation;
vmaCreateBuffer(allocator, &bufferInfo, &allocInfo, &buffer, &allocation, nullptr);
-
uint32_t memoryTypeBits
Bitmask containing one bit set for every memory type acceptable for this allocation.
Definition vk_mem_alloc.h:1249
+
uint32_t memoryTypeBits
Bitmask containing one bit set for every memory type acceptable for this allocation.
Definition vk_mem_alloc.h:1271
+

You can also use this parameter to exclude some memory types. If you inspect memory heaps and types available on the current physical device and you determine that for some reason you don't want to use a specific memory type for the allocation, you can enable automatic memory type selection but exclude certain memory type or types by setting all bits of memoryTypeBits to 1 except the ones you choose.

+
// ...
+
uint32_t excludedMemoryTypeIndex = 2;
+
VmaAllocationCreateInfo allocInfo = {};
+ +
allocInfo.memoryTypeBits = ~(1u << excludedMemoryTypeIndex);
+
// ...

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.

@@ -169,7 +178,7 @@ Dedicated allocations diff --git a/docs/html/classes.html b/docs/html/classes.html index 7d500b9..08d4f6e 100644 --- a/docs/html/classes.html +++ b/docs/html/classes.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Class Index + + @@ -29,7 +31,7 @@ - + @@ -81,7 +83,7 @@ $(function() { diff --git a/docs/html/clipboard.js b/docs/html/clipboard.js new file mode 100644 index 0000000..42c1fb0 --- /dev/null +++ b/docs/html/clipboard.js @@ -0,0 +1,61 @@ +/** + +The code below is based on the Doxygen Awesome project, see +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +let clipboard_title = "Copy to clipboard" +let clipboard_icon = `` +let clipboard_successIcon = `` +let clipboard_successDuration = 1000 + +$(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const clipboard_div = document.createElement("div") + clipboard_div.classList.add("clipboard") + clipboard_div.innerHTML = clipboard_icon + clipboard_div.title = clipboard_title + $(clipboard_div).click(function() { + const content = this.parentNode.cloneNode(true) + // filter out line number and folded fragments from file listings + content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) + let text = content.textContent + // remove trailing newlines and trailing spaces from empty lines + text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') + navigator.clipboard.writeText(text); + this.classList.add("success") + this.innerHTML = clipboard_successIcon + window.setTimeout(() => { // switch back to normal icon after timeout + this.classList.remove("success") + this.innerHTML = clipboard_icon + }, clipboard_successDuration); + }) + fragment.insertBefore(clipboard_div, fragment.firstChild) + } + } +}) diff --git a/docs/html/configuration.html b/docs/html/configuration.html index ba8b30c..90ccaa4 100644 --- a/docs/html/configuration.html +++ b/docs/html/configuration.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Configuration + + @@ -29,7 +31,7 @@ - + @@ -102,7 +104,7 @@ Device heap memory limit diff --git a/docs/html/cookie.js b/docs/html/cookie.js new file mode 100644 index 0000000..53ad21d --- /dev/null +++ b/docs/html/cookie.js @@ -0,0 +1,58 @@ +/*! + Cookie helper functions + Copyright (c) 2023 Dimitri van Heesch + Released under MIT license. +*/ +let Cookie = { + cookie_namespace: 'doxygen_', + + readSetting(cookie,defVal) { + if (window.chrome) { + const val = localStorage.getItem(this.cookie_namespace+cookie) || + sessionStorage.getItem(this.cookie_namespace+cookie); + if (val) return val; + } else { + let myCookie = this.cookie_namespace+cookie+"="; + if (document.cookie) { + const index = document.cookie.indexOf(myCookie); + if (index != -1) { + const valStart = index + myCookie.length; + let valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + return document.cookie.substring(valStart, valEnd); + } + } + } + return defVal; + }, + + writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete + if (window.chrome) { + if (days==0) { + sessionStorage.setItem(this.cookie_namespace+cookie,val); + } else { + localStorage.setItem(this.cookie_namespace+cookie,val); + } + } else { + let date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; + document.cookie = this.cookie_namespace + cookie + "=" + + val + "; SameSite=Lax;" + expiration + "path=/"; + } + }, + + eraseSetting(cookie) { + if (window.chrome) { + if (localStorage.getItem(this.cookie_namespace+cookie)) { + localStorage.removeItem(this.cookie_namespace+cookie); + } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { + sessionStorage.removeItem(this.cookie_namespace+cookie); + } + } else { + this.writeSetting(cookie,'',-1); + } + }, +} diff --git a/docs/html/custom_memory_pools.html b/docs/html/custom_memory_pools.html index 4646c26..cad9d57 100644 --- a/docs/html/custom_memory_pools.html +++ b/docs/html/custom_memory_pools.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Custom memory pools + + @@ -29,7 +31,7 @@ - + @@ -76,7 +78,7 @@ $(function() {
Custom memory pools
-

A memory pool contains a number of VkDeviceMemory blocks. The library automatically creates and manages default pool for each memory type available on the device. Default memory pool automatically grows in size. Size of allocated blocks is also variable and managed automatically.

+

A memory pool contains a number of VkDeviceMemory blocks. The library automatically creates and manages default pool for each memory type available on the device. Default memory pool automatically grows in size. Size of allocated blocks is also variable and managed automatically. You are using default pools whenever you leave VmaAllocationCreateInfo::pool = null.

You can create custom pool and allocate memory out of it. It can be useful if you want to:

  • Keep certain kind of allocations separate from others.
  • @@ -131,15 +133,15 @@ $(function() {
    VkResult vmaCreatePool(VmaAllocator allocator, const VmaPoolCreateInfo *pCreateInfo, VmaPool *pPool)
    Allocates Vulkan device memory and creates VmaPool object.
    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.
    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
    Definition vk_mem_alloc.h:493
    -
    Parameters of new VmaAllocation.
    Definition vk_mem_alloc.h:1223
    -
    VmaPool pool
    Pool that this allocation should be created in.
    Definition vk_mem_alloc.h:1255
    -
    VmaMemoryUsage usage
    Intended usage of memory.
    Definition vk_mem_alloc.h:1231
    +
    @ VMA_MEMORY_USAGE_AUTO
    Definition vk_mem_alloc.h:510
    +
    Parameters of new VmaAllocation.
    Definition vk_mem_alloc.h:1245
    +
    VmaPool pool
    Pool that this allocation should be created in.
    Definition vk_mem_alloc.h:1277
    +
    VmaMemoryUsage usage
    Intended usage of memory.
    Definition vk_mem_alloc.h:1253
    Represents single memory allocation.
    -
    Describes parameter of created VmaPool.
    Definition vk_mem_alloc.h:1274
    -
    uint32_t memoryTypeIndex
    Vulkan memory type index to allocate this pool from.
    Definition vk_mem_alloc.h:1277
    -
    VkDeviceSize blockSize
    Size of a single VkDeviceMemory block to be allocated as part of this pool, in bytes....
    Definition vk_mem_alloc.h:1290
    -
    size_t maxBlockCount
    Maximum number of blocks that can be allocated in this pool. Optional.
    Definition vk_mem_alloc.h:1303
    +
    Describes parameter of created VmaPool.
    Definition vk_mem_alloc.h:1296
    +
    uint32_t memoryTypeIndex
    Vulkan memory type index to allocate this pool from.
    Definition vk_mem_alloc.h:1299
    +
    VkDeviceSize blockSize
    Size of a single VkDeviceMemory block to be allocated as part of this pool, in bytes....
    Definition vk_mem_alloc.h:1312
    +
    size_t maxBlockCount
    Maximum number of blocks that can be allocated in this pool. Optional.
    Definition vk_mem_alloc.h:1325
    Represents custom memory pool.

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

vmaDestroyBuffer(allocator, buf, alloc);
@@ -147,7 +149,6 @@ $(function() {
void vmaDestroyBuffer(VmaAllocator allocator, VkBuffer buffer, VmaAllocation allocation)
Destroys Vulkan buffer and frees allocated memory.
void vmaDestroyPool(VmaAllocator allocator, VmaPool pool)
Destroys VmaPool object and frees Vulkan device memory.

New versions of this library support creating dedicated allocations in custom pools. It is supported only when VmaPoolCreateInfo::blockSize = 0. To use this feature, set VmaAllocationCreateInfo::pool to the pointer to your custom pool and VmaAllocationCreateInfo::flags to VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT.

-
Note
Excessive use of custom pools is a common mistake when using this library. Custom pools may be useful for special purposes - when you want to keep certain type of resources separate e.g. to reserve minimum amount of memory for them or limit maximum amount of memory they can occupy. For most resources this is not needed and so it is not recommended to create VmaPool objects and allocations out of them. Allocating from the default pool is sufficient.

Choosing memory type index

When creating a pool, you must explicitly specify memory type index. To find the one suitable for your buffers or images, you can use helper functions vmaFindMemoryTypeIndexForBufferInfo(), vmaFindMemoryTypeIndexForImageInfo(). You need to provide structures with example parameters of buffers or images that you are going to create in that pool.

@@ -169,6 +170,25 @@ Choosing memory type index
  • VkBufferCreateInfo: Prefer to pass same parameters as above. Otherwise you risk creating resources in a memory type that is not suitable for them, which may result in undefined behavior. Using different VK_BUFFER_USAGE_ flags may work, but you shouldn't create images in a pool intended for buffers or the other way around.
  • VmaAllocationCreateInfo: You don't need to pass same parameters. Fill only pool member. Other members are ignored anyway.
  • +

    +When not to use custom pools

    +

    Custom pools are commonly overused by VMA users. While it may feel natural to keep some logical groups of resources separate in memory, in most cases it does more harm than good. Using custom pool shouldn't be your first choice. Instead, please make all allocations from default pools first and only use custom pools if you can prove and measure that it is beneficial in some way, e.g. it results in lower memory usage, better performance, etc.

    +

    Using custom pools has disadvantages:

    +
      +
    • Each pool has its own collection of VkDeviceMemory blocks. Some of them may be partially or even completely empty. Spreading allocations across multiple pools increases the amount of wasted (allocated but unbound) memory.
    • +
    • You must manually choose specific memory type to be used by a custom pool (set as VmaPoolCreateInfo::memoryTypeIndex). When using default pools, best memory type for each of your allocations can be selected automatically using a carefully design algorithm that works across all kinds of GPUs.
    • +
    • If an allocation from a custom pool at specific memory type fails, entire allocation operation returns failure. When using default pools, VMA tries another compatible memory type.
    • +
    • If you set VmaPoolCreateInfo::blockSize != 0, each memory block has the same size, while default pools start from small blocks and only allocate next blocks larger and larger up to the preferred block size.
    • +
    +

    Many of the common concerns can be addressed in a different way than using custom pools:

    +
      +
    • If you want to keep your allocations of certain size (small versus large) or certain lifetime (transient versus long lived) separate, you likely don't need to. VMA uses a high quality allocation algorithm that manages memory well in various cases. Please mesure and check if using custom pools provides a benefit.
    • +
    • If you want to keep your images and buffers separate, you don't need to. VMA respects bufferImageGranularity limit automatically.
    • +
    • If you want to keep your mapped and not mapped allocations separate, you don't need to. VMA respects nonCoherentAtomSize limit automatically. It also maps only those VkDeviceMemory blocks that need to map any allocation. It even tries to keep mappable and non-mappable allocations in separate blocks to minimize the amount of mapped memory.
    • +
    • If you want to choose a custom size for the default memory block, you can set it globally instead using VmaAllocatorCreateInfo::preferredLargeHeapBlockSize.
    • +
    • If you want to select specific memory type for your allocation, you can set VmaAllocationCreateInfo::memoryTypeBits to (1u << myMemoryTypeIndex) instead.
    • +
    • If you need to create a buffer with certain minimum alignment, you can still do it using default pools with dedicated function vmaCreateBufferWithAlignment().
    • +

    Linear allocation algorithm

    Each Vulkan memory block managed by this library has accompanying metadata that keeps track of used and unused regions. By default, the metadata structure and algorithm tries to find best place for new allocations among free regions to optimize memory usage. This way you can allocate and free objects in any order.

    @@ -207,7 +227,7 @@ Ring buffer
    diff --git a/docs/html/debugging_memory_usage.html b/docs/html/debugging_memory_usage.html index 11efc1d..788fcff 100644 --- a/docs/html/debugging_memory_usage.html +++ b/docs/html/debugging_memory_usage.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Debugging incorrect memory usage + + @@ -29,7 +31,7 @@
    - + @@ -114,7 +116,7 @@ Corruption detection diff --git a/docs/html/defragmentation.html b/docs/html/defragmentation.html index 31e07d6..784f407 100644 --- a/docs/html/defragmentation.html +++ b/docs/html/defragmentation.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Defragmentation + + @@ -29,7 +31,7 @@ - + @@ -141,18 +143,18 @@ $(function() {
    VkResult vmaBeginDefragmentationPass(VmaAllocator allocator, VmaDefragmentationContext context, VmaDefragmentationPassMoveInfo *pPassInfo)
    Starts single defragmentation pass.
    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:707
    -
    Definition vk_mem_alloc.h:1342
    -
    void * pUserData
    Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vma...
    Definition vk_mem_alloc.h:1389
    +
    @ VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT
    Definition vk_mem_alloc.h:727
    +
    Definition vk_mem_alloc.h:1364
    +
    void * pUserData
    Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vma...
    Definition vk_mem_alloc.h:1411
    An opaque object that represents started defragmentation process.
    -
    Parameters for defragmentation.
    Definition vk_mem_alloc.h:1432
    -
    VmaPool pool
    Custom pool to be defragmented.
    Definition vk_mem_alloc.h:1439
    -
    VmaDefragmentationFlags flags
    Use combination of VmaDefragmentationFlagBits.
    Definition vk_mem_alloc.h:1434
    -
    VmaAllocation srcAllocation
    Allocation that should be moved.
    Definition vk_mem_alloc.h:1465
    -
    VmaAllocation dstTmpAllocation
    Temporary allocation pointing to destination memory that will replace srcAllocation.
    Definition vk_mem_alloc.h:1472
    -
    Parameters for incremental defragmentation steps.
    Definition vk_mem_alloc.h:1480
    -
    uint32_t moveCount
    Number of elements in the pMoves array.
    Definition vk_mem_alloc.h:1482
    -
    VmaDefragmentationMove * pMoves
    Array of moves to be performed by the user in the current defragmentation pass.
    Definition vk_mem_alloc.h:1506
    +
    Parameters for defragmentation.
    Definition vk_mem_alloc.h:1454
    +
    VmaPool pool
    Custom pool to be defragmented.
    Definition vk_mem_alloc.h:1461
    +
    VmaDefragmentationFlags flags
    Use combination of VmaDefragmentationFlagBits.
    Definition vk_mem_alloc.h:1456
    +
    VmaAllocation srcAllocation
    Allocation that should be moved.
    Definition vk_mem_alloc.h:1487
    +
    VmaAllocation dstTmpAllocation
    Temporary allocation pointing to destination memory that will replace srcAllocation.
    Definition vk_mem_alloc.h:1494
    +
    Parameters for incremental defragmentation steps.
    Definition vk_mem_alloc.h:1502
    +
    uint32_t moveCount
    Number of elements in the pMoves array.
    Definition vk_mem_alloc.h:1504
    +
    VmaDefragmentationMove * pMoves
    Array of moves to be performed by the user in the current defragmentation pass.
    Definition vk_mem_alloc.h:1528

    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:
        @@ -202,7 +204,7 @@ $(function() { diff --git a/docs/html/deprecated.html b/docs/html/deprecated.html index c74057d..856a4f1 100644 --- a/docs/html/deprecated.html +++ b/docs/html/deprecated.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Deprecated List + + @@ -29,7 +31,7 @@ - + @@ -90,7 +92,7 @@ $(function() { diff --git a/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html b/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html index 0294cb6..78936ac 100644 --- a/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: D:/PROJECTS/Vulkan Memory Allocator/REPO/include Directory Reference + + @@ -29,7 +31,7 @@ - + @@ -85,7 +87,7 @@ Files diff --git a/docs/html/doc.png b/docs/html/doc.png deleted file mode 100644 index 17edabff95f7b8da13c9516a04efe05493c29501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t diff --git a/docs/html/docd.png b/docs/html/docd.png deleted file mode 100644 index d7c94fda9bf08ecc02c7190d968452b7a2dbf04b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcmV1wr-rhpn+wxm%q2)IkAYsr{iGq<}_z5JCD4J;FN?6Qh;@TCubdp(_XdD-^ zG_#)IP7_z6hKNdx5^+FGArwLWTWCG!j+oKji?U!hxA#d-ljgkN`+e^@-P+RWG{Bx= z2iQyYTtEf*o~ySWrIVW}HWHi0_hd4~$E6Jx1U`>Owo}EYJ1O>iZvS?!z8}B}QwLMA zC3Keqf1c}K@?C`X>68b(EUzYUYAS&OH^VPteZLPr{S&|nQvp@6W4GH-1U8!u&7l~A zx~RUSNH+>7@q38W6!BzirtjLFCzc|XGx)EF#G%^pWION*k@?vP<2O>|XkCD3ujl%1 z{55JSVkw{~HbX>iEZ2%yJ2eHj5Yh8OTpzs0A2;tZ^x!#5D+y-es{k1&0|Ns9-|+Xt ziGiTsZ8(^nUo#wdTpIDkb-Zp(3|A*FzW}GZ5SQD-r^R`&X@`26E3W|GyrwDIZjtQ& z$g5f8Sv=VgVtDien@J(!^BK+#l;s-LgP--p7C;7;E!ysXcXK6?+9D>_-B(?Wm(U zQbNm-5TyYxIU=rs0+)!ixqzhuxw(AqKc3?KKX32{D~Qibp*r0x&Wux5-9WCMMRi3U zTd6dOCQlj>a;gr;gLwRKulT&(m@^L{&HkSC(qH05HSSf$YEhynGvH zWNez``Z8FJXE+BSg=%ak{OR z+Nylcb{?evLYLuE1_HngYw0g%LC#=$a@?4~Tx>F9295Q>9UJ|_6v-KMw;!YZSgGj@ zR8fRov=hJ#QvsO@xw*{0%zH@OKVEUr span.arrow { + text-decoration: none; + background : var(--nav-background-color); } a.el { @@ -632,30 +682,63 @@ ul.multicol { .fragment { text-align: left; direction: ltr; - overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-x: auto; overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid var(--fragment-border-color); + border-radius: 4px; + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); } pre.fragment { - border: 1px solid var(--fragment-border-color); - background-color: var(--fragment-background-color); - color: var(--fragment-foreground-color); - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: var(--font-family-monospace); - font-size: 105%; + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: var(--font-family-monospace); } -div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - color: var(--fragment-foreground-color); - background-color: var(--fragment-background-color); - border: 1px solid var(--fragment-border-color); +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; + overflow: auto; + fill: var(--fragment-foreground-color); + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid var(--fragment-foreground-color); + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .28; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: var(--fragment-copy-ok-color); +} + +.clipboard.success { + border-color: var(--fragment-copy-ok-color); } div.line { @@ -778,10 +861,6 @@ img.light-mode-visible { display: none; } -img.formulaDsp { - -} - img.formulaInl, img.inline { vertical-align: middle; } @@ -1081,17 +1160,25 @@ dl.reflist dd { .paramtype { white-space: nowrap; + padding: 0px; + padding-bottom: 1px; } .paramname { - color: var(--memdef-param-name-color); white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; } + .paramname em { + color: var(--memdef-param-name-color); font-style: normal; + margin-right: 1px; } -.paramname code { - line-height: 14px; + +.paramname .paramdefval { + font-family: var(--font-family-monospace); } .params, .retval, .exception, .tparams { @@ -1425,7 +1512,6 @@ table.fieldtable { { height:32px; display:block; - text-decoration: none; outline: none; color: var(--nav-text-normal-color); font-family: var(--font-family-nav); @@ -1514,7 +1600,8 @@ dl { padding: 0 0 0 0; } -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +/* + dl.section { margin-left: 0px; padding-left: 0px; @@ -1569,8 +1656,101 @@ dl.bug { border-color: #C08050; } +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + dl.section dd { - margin-bottom: 6px; + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color-bg); + border-left: 8px solid var(--warning-color-hl); + color: var(--warning-color-text); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-hl); +} + +dl.note, dl.remark { + background: var(--note-color-bg); + border-left: 8px solid var(--note-color-hl); + color: var(--note-color-text); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-hl); +} + +dl.todo { + background: var(--todo-color-bg); + border-left: 8px solid var(--todo-color-hl); + color: var(--todo-color-text); +} + +dl.todo dt { + color: var(--todo-color-hl); +} + +dl.test { + background: var(--test-color-bg); + border-left: 8px solid var(--test-color-hl); + color: var(--test-color-text); +} + +dl.test dt { + color: var(--test-color-hl); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.bug { + background: var(--bug-color-bg); + border-left: 8px solid var(--bug-color-hl); + color: var(--bug-color-text); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.deprecated { + background: var(--deprecated-color-bg); + border-left: 8px solid var(--deprecated-color-hl); + color: var(--deprecated-color-text); +} + +dl.deprecated dt a { + color: var(--deprecated-color-hl) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color-bg); + border-left: 8px solid var(--invariant-color-hl); + color: var(--invariant-color-text); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-hl); } @@ -1585,12 +1765,12 @@ dl.section dd { vertical-align: bottom; border-collapse: separate; } - + #projectlogo img -{ +{ border: 0px none; } - + #projectalign { vertical-align: middle; diff --git a/docs/html/doxygen_crawl.html b/docs/html/doxygen_crawl.html new file mode 100644 index 0000000..fbce5c7 --- /dev/null +++ b/docs/html/doxygen_crawl.html @@ -0,0 +1,123 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/dynsections.js b/docs/html/dynsections.js index b73c828..8f49326 100644 --- a/docs/html/dynsections.js +++ b/docs/html/dynsections.js @@ -22,171 +22,173 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); - $('table.directory tr'). - removeClass('odd').filter(':visible:odd').addClass('odd'); -} +let dynsection = { -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l'); - // add vertical lines to other rows - $('span[class=lineno]').not(':eq(0)').append(''); - // add toggle controls to lines with fold divs - $('div[class=foldopen]').each(function() { - // extract specific id to use - var id = $(this).attr('id').replace('foldopen',''); - // extract start and end foldable fragment attributes - var start = $(this).attr('data-start'); - var end = $(this).attr('data-end'); - // replace normal fold span with controls for the first line of a foldable fragment - $(this).find('span[class=fold]:first').replaceWith(''); - // append div for folded (closed) representation - $(this).after(''); - // extract the first line from the "open" section to represent closed content - var line = $(this).children().first().clone(); - // remove any glow that might still be active on the original line - $(line).removeClass('glow'); - if (start) { - // if line already ends with a start marker (e.g. trailing {), remove it - $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); - } - // replace minus with plus symbol - $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); - // append ellipsis - $(line).append(' '+start+''+end); - // insert constructed line into closed div - $('#foldclosed'+id).html(line); - }); -} + this.updateStripes(); + }, + toggleFolder : function(id) { + // the clicked row + const currentRow = $('#row_'+id); + + // all rows after the clicked row + const rows = currentRow.nextAll("tr"); + + const re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub + + // only match elements AFTER this one (can't hide elements before) + const childRows = rows.filter(function() { return this.id.match(re); }); + + // first row is visible we are HIDING + if (childRows.filter(':first').is(':visible')===true) { + // replace down arrow by right arrow for current row + const currentRowSpans = currentRow.find("span"); + currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed"); + currentRowSpans.filter(".arrow").html('►'); + rows.filter("[id^=row_"+id+"]").hide(); // hide all children + } else { // we are SHOWING + // replace right arrow by down arrow for current row + const currentRowSpans = currentRow.find("span"); + currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen"); + currentRowSpans.filter(".arrow").html('▼'); + // replace down arrows by right arrows for child rows + const childRowsSpans = childRows.find("span"); + childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed"); + childRowsSpans.filter(".arrow").html('►'); + childRows.show(); //show all children + } + this.updateStripes(); + }, + + toggleInherit : function(id) { + const rows = $('tr.inherit.'+id); + const img = $('tr.inherit_header.'+id+' img'); + const src = $(img).attr('src'); + if (rows.filter(':first').is(':visible')===true) { + rows.css('display','none'); + $(img).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + rows.css('display','table-row'); // using show() causes jump in firefox + $(img).attr('src',src.substring(0,src.length-10)+'open.png'); + } + }, +}; + +let codefold = { + opened : true, + + // in case HTML_COLORSTYLE is LIGHT or DARK the vars will be replaced, so we write them out explicitly and use double quotes + plusImg: [ "var(--fold-plus-image)", "var(--fold-plus-image-relpath)" ], + minusImg: [ "var(--fold-minus-image)", "var(--fold-minus-image-relpath)" ], + + // toggle all folding blocks + toggle_all : function(relPath) { + if (this.opened) { + $('#fold_all').css('background-image',this.plusImg[relPath]); + $('div[id^=foldopen]').hide(); + $('div[id^=foldclosed]').show(); + } else { + $('#fold_all').css('background-image',this.minusImg[relPath]); + $('div[id^=foldopen]').show(); + $('div[id^=foldclosed]').hide(); + } + this.opened=!this.opened; + }, + + // toggle single folding block + toggle : function(id) { + $('#foldopen'+id).toggle(); + $('#foldclosed'+id).toggle(); + }, + + init : function(relPath) { + $('span[class=lineno]').css({ + 'padding-right':'4px', + 'margin-right':'2px', + 'display':'inline-block', + 'width':'54px', + 'background':'linear-gradient(var(--fold-line-color),var(--fold-line-color)) no-repeat 46px/2px 100%' + }); + // add global toggle to first line + $('span[class=lineno]:first').append(''); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; /* @license-end */ diff --git a/docs/html/enabling_buffer_device_address.html b/docs/html/enabling_buffer_device_address.html index 811b07c..26a0ca2 100644 --- a/docs/html/enabling_buffer_device_address.html +++ b/docs/html/enabling_buffer_device_address.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Enabling buffer device address + + @@ -29,7 +31,7 @@ - + @@ -97,7 +99,7 @@ More information diff --git a/docs/html/files.html b/docs/html/files.html index 301a697..b4b0db0 100644 --- a/docs/html/files.html +++ b/docs/html/files.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: File List + + @@ -29,7 +31,7 @@ - + @@ -73,15 +75,15 @@ $(function() {
        Here is a list of all files with brief descriptions:
        -
        [detail level 12]
        - +
        [detail level 12]
          include
        +
          include
         vk_mem_alloc.h
        diff --git a/docs/html/folderclosed.png b/docs/html/folderclosed.png deleted file mode 100644 index bb8ab35edce8e97554e360005ee9fc5bffb36e66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA diff --git a/docs/html/functions.html b/docs/html/functions.html index 77b0bea..89f2a78 100644 --- a/docs/html/functions.html +++ b/docs/html/functions.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Class Members + + @@ -29,7 +31,7 @@ - + @@ -141,6 +143,7 @@ $(function() {
      • pHeapSizeLimit : VmaAllocatorCreateInfo
      • physicalDevice : VmaAllocatorCreateInfo, VmaAllocatorInfo
      • pMappedData : VmaAllocationInfo
      • +
      • pMemoryAllocateNext : VmaPoolCreateInfo
      • pMoves : VmaDefragmentationPassMoveInfo
      • pName : VmaAllocationInfo
      • pool : VmaAllocationCreateInfo, VmaDefragmentationInfo
      • @@ -193,8 +196,8 @@ $(function() {
      • vkFreeMemory : VmaVulkanFunctions
      • vkGetBufferMemoryRequirements : VmaVulkanFunctions
      • vkGetBufferMemoryRequirements2KHR : VmaVulkanFunctions
      • -
      • vkGetDeviceBufferMemoryRequirements : VmaVulkanFunctions
      • -
      • vkGetDeviceImageMemoryRequirements : VmaVulkanFunctions
      • +
      • vkGetDeviceBufferMemoryRequirements : VmaVulkanFunctions
      • +
      • vkGetDeviceImageMemoryRequirements : VmaVulkanFunctions
      • vkGetDeviceProcAddr : VmaVulkanFunctions
      • vkGetImageMemoryRequirements : VmaVulkanFunctions
      • vkGetImageMemoryRequirements2KHR : VmaVulkanFunctions
      • @@ -205,13 +208,12 @@ $(function() {
      • vkInvalidateMappedMemoryRanges : VmaVulkanFunctions
      • vkMapMemory : VmaVulkanFunctions
      • vkUnmapMemory : VmaVulkanFunctions
      • -
      • VMA_EXTENDS_VK_STRUCT() : VmaPoolCreateInfo
      • vulkanApiVersion : VmaAllocatorCreateInfo
      diff --git a/docs/html/functions_func.html b/docs/html/functions_func.html deleted file mode 100644 index ecc4da4..0000000 --- a/docs/html/functions_func.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -Vulkan Memory Allocator: Class Members - Functions - - - - - - - - - -
      -
      - - - - - - -
      -
      Vulkan Memory Allocator -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all functions with links to the classes they belong to:
      -
      - - - - diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html index 0021814..fd70a92 100644 --- a/docs/html/functions_vars.html +++ b/docs/html/functions_vars.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Class Members - Variables + + @@ -29,7 +31,7 @@ - + @@ -141,6 +143,7 @@ $(function() {
    2. pHeapSizeLimit : VmaAllocatorCreateInfo
    3. physicalDevice : VmaAllocatorCreateInfo, VmaAllocatorInfo
    4. pMappedData : VmaAllocationInfo
    5. +
    6. pMemoryAllocateNext : VmaPoolCreateInfo
    7. pMoves : VmaDefragmentationPassMoveInfo
    8. pName : VmaAllocationInfo
    9. pool : VmaAllocationCreateInfo, VmaDefragmentationInfo
    10. @@ -193,8 +196,8 @@ $(function() {
    11. vkFreeMemory : VmaVulkanFunctions
    12. vkGetBufferMemoryRequirements : VmaVulkanFunctions
    13. vkGetBufferMemoryRequirements2KHR : VmaVulkanFunctions
    14. -
    15. vkGetDeviceBufferMemoryRequirements : VmaVulkanFunctions
    16. -
    17. vkGetDeviceImageMemoryRequirements : VmaVulkanFunctions
    18. +
    19. vkGetDeviceBufferMemoryRequirements : VmaVulkanFunctions
    20. +
    21. vkGetDeviceImageMemoryRequirements : VmaVulkanFunctions
    22. vkGetDeviceProcAddr : VmaVulkanFunctions
    23. vkGetImageMemoryRequirements : VmaVulkanFunctions
    24. vkGetImageMemoryRequirements2KHR : VmaVulkanFunctions
    25. @@ -210,7 +213,7 @@ $(function() { diff --git a/docs/html/general_considerations.html b/docs/html/general_considerations.html index 79a756f..8ada9d3 100644 --- a/docs/html/general_considerations.html +++ b/docs/html/general_considerations.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: General considerations + + @@ -29,7 +31,7 @@ - + @@ -137,7 +139,7 @@ Features not supported diff --git a/docs/html/globals.html b/docs/html/globals.html index c8ec2f4..60a15f9 100644 --- a/docs/html/globals.html +++ b/docs/html/globals.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: File Members + + @@ -29,7 +31,7 @@ - + @@ -79,6 +81,7 @@ $(function() {

      - v -

      diff --git a/docs/html/globals_enum.html b/docs/html/globals_enum.html index 7cc5f8f..5cc7197 100644 --- a/docs/html/globals_enum.html +++ b/docs/html/globals_enum.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: File Members + + @@ -29,7 +31,7 @@ - + @@ -82,7 +84,7 @@ $(function() { diff --git a/docs/html/globals_eval.html b/docs/html/globals_eval.html index 62117d2..65c688f 100644 --- a/docs/html/globals_eval.html +++ b/docs/html/globals_eval.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: File Members + + @@ -29,7 +31,7 @@ - + @@ -98,6 +100,7 @@ $(function() {
    26. VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM : vk_mem_alloc.h
    27. VMA_ALLOCATOR_CREATE_KHR_BIND_MEMORY2_BIT : vk_mem_alloc.h
    28. VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT : vk_mem_alloc.h
    29. +
    30. VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE4_BIT : vk_mem_alloc.h
    31. VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT : vk_mem_alloc.h
    32. VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT : vk_mem_alloc.h
    33. VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT : vk_mem_alloc.h
    34. @@ -135,7 +138,7 @@ $(function() { diff --git a/docs/html/globals_func.html b/docs/html/globals_func.html index 97e8312..57f4bba 100644 --- a/docs/html/globals_func.html +++ b/docs/html/globals_func.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: File Members + + @@ -29,7 +31,7 @@ - + @@ -72,6 +74,7 @@ $(function() {
      Here is a list of all functions with links to the files they belong to:

      - v -

      + + + +

      ◆ vmaCopyAllocationToMemory()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      VkResult vmaCopyAllocationToMemory (VmaAllocator allocator,
      VmaAllocation srcAllocation,
      VkDeviceSize srcAllocationLocalOffset,
      void * pDstHostPointer,
      VkDeviceSize size )
      +
      + +

      Invalidates memory in the host caches if needed, maps the allocation temporarily if needed, and copies data from it to a specified host pointer.

      +
      Parameters
      + + + + + + +
      allocator
      srcAllocationHandle to the allocation that becomes source of the copy.
      srcAllocationLocalOffsetOffset within srcAllocation where to read copied data, in bytes.
      pDstHostPointerPointer to the host memory that become destination of the copy.
      sizeNumber of bytes to copy.
      +
      +
      +

      This is a convenience function that allows to copy data from an allocation to a host pointer easily. Same behavior can be achieved by calling vmaInvalidateAllocation(), vmaMapMemory(), memcpy(), vmaUnmapMemory().

      +

      This function should be called only for allocations created in a memory type that has VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT and VK_MEMORY_PROPERTY_HOST_CACHED_BIT flag. It can be ensured e.g. by using VMA_MEMORY_USAGE_AUTO and VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT. Otherwise, the function may fail and generate a Validation Layers error. It may also work very slowly when reading from an uncached memory.

      +

      srcAllocationLocalOffset is relative to the contents of given srcAllocation. If you mean whole allocation, you should pass 0. Do not pass allocation's offset within device memory block as this parameter!

      + +
      +
      + +

      ◆ vmaCopyMemoryToAllocation()

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      VkResult vmaCopyMemoryToAllocation (VmaAllocator allocator,
      const void * pSrcHostPointer,
      VmaAllocation dstAllocation,
      VkDeviceSize dstAllocationLocalOffset,
      VkDeviceSize size )
      +
      + +

      Maps the allocation temporarily if needed, copies data from specified host pointer to it, and flushes the memory from the host caches if needed.

      +
      Parameters
      + + + + + + +
      allocator
      pSrcHostPointerPointer to the host data that become source of the copy.
      dstAllocationHandle to the allocation that becomes destination of the copy.
      dstAllocationLocalOffsetOffset within dstAllocation where to write copied data, in bytes.
      sizeNumber of bytes to copy.
      +
      +
      +

      This is a convenience function that allows to copy data from a host pointer to an allocation easily. Same behavior can be achieved by calling vmaMapMemory(), memcpy(), vmaUnmapMemory(), vmaFlushAllocation().

      +

      This function can be called only for allocations created in a memory type that has VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT flag. It can be ensured e.g. by using VMA_MEMORY_USAGE_AUTO and VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT or VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT. Otherwise, the function will fail and generate a Validation Layers error.

      +

      dstAllocationLocalOffset is relative to the contents of given dstAllocation. If you mean whole allocation, you should pass 0. Do not pass allocation's offset within device memory block this parameter!

      +
      @@ -1491,31 +1495,22 @@ Functions VkResult vmaCreateAliasingBuffer ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaAllocation  - allocation, + VmaAllocation allocation, - const VkBufferCreateInfo *  - pBufferCreateInfo, + const VkBufferCreateInfo * pBufferCreateInfo, - VkBuffer *  - pBuffer  - - - - ) - + VkBuffer * pBuffer )
      @@ -1536,8 +1531,8 @@ Functions
    35. Binds the buffer with the supplied memory.

    If any of these operations fail, buffer is not created, returned value is negative error code and *pBuffer is null.

    -

    If the function succeeded, you must destroy the buffer when you no longer need it using vkDestroyBuffer(). If you want to also destroy the corresponding allocation you can use convenience function vmaDestroyBuffer().

    -
    Note
    There is a new version of this function augmented with parameter allocationLocalOffset - see vmaCreateAliasingBuffer2().
    +

    If the function succeeded, you must destroy the buffer when you no longer need it using vkDestroyBuffer(). If you want to also destroy the corresponding allocation you can use convenience function vmaDestroyBuffer().

    +
    Note
    There is a new version of this function augmented with parameter allocationLocalOffset - see vmaCreateAliasingBuffer2().
    @@ -1550,37 +1545,27 @@ Functions VkResult vmaCreateAliasingBuffer2 ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaAllocation  - allocation, + VmaAllocation allocation, - VkDeviceSize  - allocationLocalOffset, + VkDeviceSize allocationLocalOffset, - const VkBufferCreateInfo *  - pBufferCreateInfo, + const VkBufferCreateInfo * pBufferCreateInfo, - VkBuffer *  - pBuffer  - - - - ) - + VkBuffer * pBuffer )
    @@ -1602,7 +1587,7 @@ Functions
  • Binds the buffer with the supplied memory.
  • If any of these operations fail, buffer is not created, returned value is negative error code and *pBuffer is null.

    -

    If the function succeeded, you must destroy the buffer when you no longer need it using vkDestroyBuffer(). If you want to also destroy the corresponding allocation you can use convenience function vmaDestroyBuffer().

    +

    If the function succeeded, you must destroy the buffer when you no longer need it using vkDestroyBuffer(). If you want to also destroy the corresponding allocation you can use convenience function vmaDestroyBuffer().

    Note
    This is a new version of the function augmented with parameter allocationLocalOffset.
    @@ -1616,36 +1601,27 @@ Functions VkResult vmaCreateAliasingImage ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaAllocation  - allocation, + VmaAllocation allocation, - const VkImageCreateInfo *  - pImageCreateInfo, + const VkImageCreateInfo * pImageCreateInfo, - VkImage *  - pImage  - - - - ) - + VkImage * pImage )
    -

    Function similar to vmaCreateAliasingBuffer() but for images.

    +

    Function similar to vmaCreateAliasingBuffer() but for images.

    @@ -1658,42 +1634,32 @@ Functions VkResult vmaCreateAliasingImage2 ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaAllocation  - allocation, + VmaAllocation allocation, - VkDeviceSize  - allocationLocalOffset, + VkDeviceSize allocationLocalOffset, - const VkImageCreateInfo *  - pImageCreateInfo, + const VkImageCreateInfo * pImageCreateInfo, - VkImage *  - pImage  - - - - ) - + VkImage * pImage )
    -

    Function similar to vmaCreateAliasingBuffer2() but for images.

    +

    Function similar to vmaCreateAliasingBuffer2() but for images.

    @@ -1706,43 +1672,32 @@ Functions VkResult vmaCreateBuffer ( - VmaAllocator  - allocator, + VmaAllocator allocator, - const VkBufferCreateInfo *  - pBufferCreateInfo, + const VkBufferCreateInfo * pBufferCreateInfo, - const VmaAllocationCreateInfo *  - pAllocationCreateInfo, + const VmaAllocationCreateInfo * pAllocationCreateInfo, - VkBuffer *  - pBuffer, + VkBuffer * pBuffer, - VmaAllocation *  - pAllocation, + VmaAllocation * pAllocation, - VmaAllocationInfo *  - pAllocationInfo  - - - - ) - + VmaAllocationInfo * pAllocationInfo )
    @@ -1755,7 +1710,7 @@ Functions pAllocationCreateInfo [out]pBufferBuffer that was created. [out]pAllocationAllocation that was created. - [out]pAllocationInfoOptional. Information about allocated memory. It can be later fetched using function vmaGetAllocationInfo(). + [out]pAllocationInfoOptional. Information about allocated memory. It can be later fetched using function vmaGetAllocationInfo(). @@ -1766,8 +1721,8 @@ Functions
  • Binds the buffer with the memory.
  • If any of these operations fail, buffer and allocation are not created, returned value is negative error code, *pBuffer and *pAllocation are null.

    -

    If the function succeeded, you must destroy both buffer and allocation when you no longer need them using either convenience function vmaDestroyBuffer() or separately, using vkDestroyBuffer() and vmaFreeMemory().

    -

    If VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT flag was used, VK_KHR_dedicated_allocation extension is used internally to query driver whether it requires or prefers the new buffer to have dedicated allocation. If yes, and if dedicated allocation is possible (VMA_ALLOCATION_CREATE_NEVER_ALLOCATE_BIT is not used), it creates dedicated allocation for this buffer, just like when using VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT.

    +

    If the function succeeded, you must destroy both buffer and allocation when you no longer need them using either convenience function vmaDestroyBuffer() or separately, using vkDestroyBuffer() and vmaFreeMemory().

    +

    If VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT flag was used, VK_KHR_dedicated_allocation extension is used internally to query driver whether it requires or prefers the new buffer to have dedicated allocation. If yes, and if dedicated allocation is possible (VMA_ALLOCATION_CREATE_NEVER_ALLOCATE_BIT is not used), it creates dedicated allocation for this buffer, just like when using VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT.

    Note
    This function creates a new VkBuffer. Sub-allocation of parts of one large buffer, although recommended as a good practice, is out of scope of this library and could be implemented by the user as a higher-level logic on top of VMA.
    @@ -1781,55 +1736,43 @@ Functions VkResult vmaCreateBufferWithAlignment ( - VmaAllocator  - allocator, + VmaAllocator allocator, - const VkBufferCreateInfo *  - pBufferCreateInfo, + const VkBufferCreateInfo * pBufferCreateInfo, - const VmaAllocationCreateInfo *  - pAllocationCreateInfo, + const VmaAllocationCreateInfo * pAllocationCreateInfo, - VkDeviceSize  - minAlignment, + VkDeviceSize minAlignment, - VkBuffer *  - pBuffer, + VkBuffer * pBuffer, - VmaAllocation *  - pAllocation, + VmaAllocation * pAllocation, - VmaAllocationInfo *  - pAllocationInfo  - - - - ) - + VmaAllocationInfo * pAllocationInfo )

    Creates a buffer with additional minimum alignment.

    -

    Similar to vmaCreateBuffer() but provides additional parameter minAlignment which allows to specify custom, minimum alignment to be used when placing the buffer inside a larger memory block, which may be needed e.g. for interop with OpenGL.

    +

    Similar to vmaCreateBuffer() but provides additional parameter minAlignment which allows to specify custom, minimum alignment to be used when placing the buffer inside a larger memory block, which may be needed e.g. for interop with OpenGL.

    @@ -1842,48 +1785,37 @@ Functions VkResult vmaCreateImage ( - VmaAllocator  - allocator, + VmaAllocator allocator, - const VkImageCreateInfo *  - pImageCreateInfo, + const VkImageCreateInfo * pImageCreateInfo, - const VmaAllocationCreateInfo *  - pAllocationCreateInfo, + const VmaAllocationCreateInfo * pAllocationCreateInfo, - VkImage *  - pImage, + VkImage * pImage, - VmaAllocation *  - pAllocation, + VmaAllocation * pAllocation, - VmaAllocationInfo *  - pAllocationInfo  - - - - ) - + VmaAllocationInfo * pAllocationInfo )
    -

    Function similar to vmaCreateBuffer().

    +

    Function similar to vmaCreateBuffer().

    @@ -1896,25 +1828,17 @@ Functions VkResult vmaCreatePool ( - VmaAllocator  - allocator, + VmaAllocator allocator, - const VmaPoolCreateInfo *  - pCreateInfo, + const VmaPoolCreateInfo * pCreateInfo, - VmaPool *  - pPool  - - - - ) - + VmaPool * pPool )
    @@ -1940,25 +1864,17 @@ Functions void vmaDestroyBuffer ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VkBuffer  - buffer, + VkBuffer buffer, - VmaAllocation  - allocation  - - - - ) - + VmaAllocation allocation )
    @@ -1966,8 +1882,8 @@ Functions

    Destroys Vulkan buffer and frees allocated memory.

    This is just a convenience function equivalent to:

    vkDestroyBuffer(device, buffer, allocationCallbacks);
    -
    vmaFreeMemory(allocator, allocation);
    -
    void vmaFreeMemory(VmaAllocator allocator, const VmaAllocation allocation)
    Frees memory previously allocated using vmaAllocateMemory(), vmaAllocateMemoryForBuffer(),...
    +
    vmaFreeMemory(allocator, allocation);
    +
    void vmaFreeMemory(VmaAllocator allocator, const VmaAllocation allocation)
    Frees memory previously allocated using vmaAllocateMemory(), vmaAllocateMemoryForBuffer(),...

    It is safe to pass null as buffer and/or allocation.

    @@ -1981,25 +1897,17 @@ Functions void vmaDestroyImage ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VkImage  - image, + VkImage image, - VmaAllocation  - allocation  - - - - ) - + VmaAllocation allocation )
    @@ -2007,7 +1915,7 @@ Functions

    Destroys Vulkan image and frees allocated memory.

    This is just a convenience function equivalent to:

    vkDestroyImage(device, image, allocationCallbacks);
    -
    vmaFreeMemory(allocator, allocation);
    +
    vmaFreeMemory(allocator, allocation);

    It is safe to pass null as image and/or allocation.

    @@ -2021,19 +1929,12 @@ Functions void vmaDestroyPool ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaPool  - pool  - - - - ) - + VmaPool pool )
    @@ -2051,25 +1952,17 @@ Functions void vmaEndDefragmentation ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaDefragmentationContext  - context, + VmaDefragmentationContext context, - VmaDefragmentationStats *  - pStats  - - - - ) - + VmaDefragmentationStats * pStats )
    @@ -2078,12 +1971,12 @@ Functions
    Parameters
    - +
    allocatorAllocator object.
    contextContext object that has been created by vmaBeginDefragmentation().
    contextContext object that has been created by vmaBeginDefragmentation().
    [out]pStatsOptional stats for the defragmentation. Can be null.
    -

    Use this function to finish defragmentation started by vmaBeginDefragmentation().

    +

    Use this function to finish defragmentation started by vmaBeginDefragmentation().

    @@ -2096,25 +1989,17 @@ Functions VkResult vmaEndDefragmentationPass ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaDefragmentationContext  - context, + VmaDefragmentationContext context, - VmaDefragmentationPassMoveInfo *  - pPassInfo  - - - - ) - + VmaDefragmentationPassMoveInfo * pPassInfo )
    @@ -2123,16 +2008,16 @@ Functions
    Parameters
    - - + +
    allocatorAllocator object.
    contextContext object that has been created by vmaBeginDefragmentation().
    pPassInfoComputed information for current pass filled by vmaBeginDefragmentationPass() and possibly modified by you.
    contextContext object that has been created by vmaBeginDefragmentation().
    pPassInfoComputed information for current pass filled by vmaBeginDefragmentationPass() and possibly modified by you.

    Returns VK_SUCCESS if no more moves are possible or VK_INCOMPLETE if more defragmentations are possible.

    Ends incremental defragmentation pass and commits all defragmentation moves from pPassInfo. After this call:

    If no more moves are possible you can end whole defragmentation.

    @@ -2147,31 +2032,22 @@ Functions VkResult vmaFindMemoryTypeIndex ( - VmaAllocator  - allocator, + VmaAllocator allocator, - uint32_t  - memoryTypeBits, + uint32_t memoryTypeBits, - const VmaAllocationCreateInfo *  - pAllocationCreateInfo, + const VmaAllocationCreateInfo * pAllocationCreateInfo, - uint32_t *  - pMemoryTypeIndex  - - - - ) - + uint32_t * pMemoryTypeIndex )
    @@ -2197,31 +2073,22 @@ Functions VkResult vmaFindMemoryTypeIndexForBufferInfo ( - VmaAllocator  - allocator, + VmaAllocator allocator, - const VkBufferCreateInfo *  - pBufferCreateInfo, + const VkBufferCreateInfo * pBufferCreateInfo, - const VmaAllocationCreateInfo *  - pAllocationCreateInfo, + const VmaAllocationCreateInfo * pAllocationCreateInfo, - uint32_t *  - pMemoryTypeIndex  - - - - ) - + uint32_t * pMemoryTypeIndex )
    @@ -2240,31 +2107,22 @@ Functions VkResult vmaFindMemoryTypeIndexForImageInfo ( - VmaAllocator  - allocator, + VmaAllocator allocator, - const VkImageCreateInfo *  - pImageCreateInfo, + const VkImageCreateInfo * pImageCreateInfo, - const VmaAllocationCreateInfo *  - pAllocationCreateInfo, + const VmaAllocationCreateInfo * pAllocationCreateInfo, - uint32_t *  - pMemoryTypeIndex  - - - - ) - + uint32_t * pMemoryTypeIndex )
    @@ -2283,31 +2141,22 @@ Functions VkResult vmaFlushAllocation ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaAllocation  - allocation, + VmaAllocation allocation, - VkDeviceSize  - offset, + VkDeviceSize offset, - VkDeviceSize  - size  - - - - ) - + VkDeviceSize size )
    @@ -2335,43 +2184,33 @@ Functions VkResult vmaFlushAllocations ( - VmaAllocator  - allocator, + VmaAllocator allocator, - uint32_t  - allocationCount, + uint32_t allocationCount, - const VmaAllocation *  - allocations, + const VmaAllocation * allocations, - const VkDeviceSize *  - offsets, + const VkDeviceSize * offsets, - const VkDeviceSize *  - sizes  - - - - ) - + const VkDeviceSize * sizes )

    Flushes memory of given set of allocations.

    -

    Calls vkFlushMappedMemoryRanges() for memory associated with given ranges of given allocations. For more information, see documentation of vmaFlushAllocation().

    +

    Calls vkFlushMappedMemoryRanges() for memory associated with given ranges of given allocations. For more information, see documentation of vmaFlushAllocation().

    Parameters
    @@ -2395,24 +2234,17 @@ Functions - - + - - - - - - - +
    allocator
    void vmaFreeMemory (VmaAllocator allocator, VmaAllocator allocator,
    const VmaAllocation allocation 
    )const VmaAllocation allocation )
    -

    Frees memory previously allocated using vmaAllocateMemory(), vmaAllocateMemoryForBuffer(), or vmaAllocateMemoryForImage().

    +

    Frees memory previously allocated using vmaAllocateMemory(), vmaAllocateMemoryForBuffer(), or vmaAllocateMemoryForImage().

    Passing VK_NULL_HANDLE as allocation is valid. Such function call is just skipped.

    @@ -2426,31 +2258,23 @@ Functions void vmaFreeMemoryPages ( - VmaAllocator  - allocator, + VmaAllocator allocator, - size_t  - allocationCount, + size_t allocationCount, - const VmaAllocation *  - pAllocations  - - - - ) - + const VmaAllocation * pAllocations )

    Frees memory and destroys multiple allocations.

    -

    Word "pages" is just a suggestion to use this function to free pieces of memory used for sparse binding. It is just a general purpose function to free memory and destroy allocations made using e.g. vmaAllocateMemory(), vmaAllocateMemoryPages() and other functions. It may be internally optimized to be more efficient than calling vmaFreeMemory() allocationCount times.

    +

    Word "pages" is just a suggestion to use this function to free pieces of memory used for sparse binding. It is just a general purpose function to free memory and destroy allocations made using e.g. vmaAllocateMemory(), vmaAllocateMemoryPages() and other functions. It may be internally optimized to be more efficient than calling vmaFreeMemory() allocationCount times.

    Allocations in pAllocations array can come from any memory pools and types. Passing VK_NULL_HANDLE as elements of pAllocations array is valid. Such entries are just skipped.

    @@ -2464,33 +2288,25 @@ Functions void vmaGetAllocationInfo ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaAllocation  - allocation, + VmaAllocation allocation, - VmaAllocationInfo *  - pAllocationInfo  - - - - ) - + VmaAllocationInfo * pAllocationInfo )

    Returns current information about specified allocation.

    Current parameters of given allocation are returned in pAllocationInfo.

    -

    Although this function doesn't lock any mutex, so it should be quite efficient, you should avoid calling it too often. You can retrieve same VmaAllocationInfo structure while creating your resource, from function vmaCreateBuffer(), vmaCreateImage(). You can remember it if you are sure parameters don't change (e.g. due to defragmentation).

    -

    There is also a new function vmaGetAllocationInfo2() that offers extended information about the allocation, returned using new structure VmaAllocationInfo2.

    +

    Although this function doesn't lock any mutex, so it should be quite efficient, you should avoid calling it too often. You can retrieve same VmaAllocationInfo structure while creating your resource, from function vmaCreateBuffer(), vmaCreateImage(). You can remember it if you are sure parameters don't change (e.g. due to defragmentation).

    +

    There is also a new function vmaGetAllocationInfo2() that offers extended information about the allocation, returned using new structure VmaAllocationInfo2.

    @@ -2503,25 +2319,17 @@ Functions void vmaGetAllocationInfo2 ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaAllocation  - allocation, + VmaAllocation allocation, - VmaAllocationInfo2 *  - pAllocationInfo  - - - - ) - + VmaAllocationInfo2 * pAllocationInfo )
    @@ -2540,31 +2348,23 @@ Functions void vmaGetAllocationMemoryProperties ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaAllocation  - allocation, + VmaAllocation allocation, - VkMemoryPropertyFlags *  - pFlags  - - - - ) - + VkMemoryPropertyFlags * pFlags )

    Given an allocation, returns Property Flags of its memory type.

    -

    This is just a convenience function. Same information can be obtained using vmaGetAllocationInfo() + vmaGetMemoryProperties().

    +

    This is just a convenience function. Same information can be obtained using vmaGetAllocationInfo() + vmaGetMemoryProperties().

    @@ -2577,31 +2377,23 @@ Functions void vmaGetPoolName ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaPool  - pool, + VmaPool pool, - const char **  - ppName  - - - - ) - + const char ** ppName )

    Retrieves name of a custom pool.

    -

    After the call ppName is either null or points to an internally-owned null-terminated string containing name of the pool that was previously set. The pointer becomes invalid when the pool is destroyed or its name is changed using vmaSetPoolName().

    +

    After the call ppName is either null or points to an internally-owned null-terminated string containing name of the pool that was previously set. The pointer becomes invalid when the pool is destroyed or its name is changed using vmaSetPoolName().

    @@ -2614,31 +2406,22 @@ Functions VkResult vmaInvalidateAllocation ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaAllocation  - allocation, + VmaAllocation allocation, - VkDeviceSize  - offset, + VkDeviceSize offset, - VkDeviceSize  - size  - - - - ) - + VkDeviceSize size )
    @@ -2666,43 +2449,33 @@ Functions VkResult vmaInvalidateAllocations ( - VmaAllocator  - allocator, + VmaAllocator allocator, - uint32_t  - allocationCount, + uint32_t allocationCount, - const VmaAllocation *  - allocations, + const VmaAllocation * allocations, - const VkDeviceSize *  - offsets, + const VkDeviceSize * offsets, - const VkDeviceSize *  - sizes  - - - - ) - + const VkDeviceSize * sizes )

    Invalidates memory of given set of allocations.

    -

    Calls vkInvalidateMappedMemoryRanges() for memory associated with given ranges of given allocations. For more information, see documentation of vmaInvalidateAllocation().

    +

    Calls vkInvalidateMappedMemoryRanges() for memory associated with given ranges of given allocations. For more information, see documentation of vmaInvalidateAllocation().

    Parameters
    @@ -2726,25 +2499,17 @@ Functions - - + - - + - - - - - - - +
    allocator
    VkResult vmaMapMemory (VmaAllocator allocator, VmaAllocator allocator,
    VmaAllocation allocation, VmaAllocation allocation,
    void ** ppData 
    )void ** ppData )
    @@ -2753,11 +2518,11 @@ Functions

    Maps memory represented by given allocation to make it accessible to CPU code. When succeeded, *ppData contains pointer to first byte of this memory.

    Warning
    If the allocation is part of a bigger VkDeviceMemory block, returned pointer is correctly offsetted to the beginning of region assigned to this particular allocation. Unlike the result of vkMapMemory, it points to the allocation, not to the beginning of the whole block. You should not add VmaAllocationInfo::offset to it!

    Mapping is internally reference-counted and synchronized, so despite raw Vulkan function vkMapMemory() cannot be used to map same block of VkDeviceMemory multiple times simultaneously, it is safe to call this function on allocations assigned to the same memory block. Actual Vulkan memory will be mapped on first mapping and unmapped on last unmapping.

    -

    If the function succeeded, you must call vmaUnmapMemory() to unmap the allocation when mapping is no longer needed or before freeing the allocation, at the latest.

    -

    It also safe to call this function multiple times on the same allocation. You must call vmaUnmapMemory() same number of times as you called vmaMapMemory().

    -

    It is also safe to call this function on allocation created with VMA_ALLOCATION_CREATE_MAPPED_BIT flag. Its memory stays mapped all the time. You must still call vmaUnmapMemory() same number of times as you called vmaMapMemory(). You must not call vmaUnmapMemory() additional time to free the "0-th" mapping made automatically due to VMA_ALLOCATION_CREATE_MAPPED_BIT flag.

    +

    If the function succeeded, you must call vmaUnmapMemory() to unmap the allocation when mapping is no longer needed or before freeing the allocation, at the latest.

    +

    It also safe to call this function multiple times on the same allocation. You must call vmaUnmapMemory() same number of times as you called vmaMapMemory().

    +

    It is also safe to call this function on allocation created with VMA_ALLOCATION_CREATE_MAPPED_BIT flag. Its memory stays mapped all the time. You must still call vmaUnmapMemory() same number of times as you called vmaMapMemory(). You must not call vmaUnmapMemory() additional time to free the "0-th" mapping made automatically due to VMA_ALLOCATION_CREATE_MAPPED_BIT flag.

    This function fails when used on allocation made in memory type that is not HOST_VISIBLE.

    -

    This function doesn't automatically flush or invalidate caches. If the allocation is made from a memory types that is not HOST_COHERENT, you also need to use vmaInvalidateAllocation() / vmaFlushAllocation(), as required by Vulkan specification.

    +

    This function doesn't automatically flush or invalidate caches. If the allocation is made from a memory types that is not HOST_COHERENT, you also need to use vmaInvalidateAllocation() / vmaFlushAllocation(), as required by Vulkan specification.

    @@ -2770,25 +2535,17 @@ Functions void vmaSetAllocationName ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaAllocation  - allocation, + VmaAllocation allocation, - const char *  - pName  - - - - ) - + const char * pName )
    @@ -2807,25 +2564,17 @@ Functions void vmaSetAllocationUserData ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaAllocation  - allocation, + VmaAllocation allocation, - void *  - pUserData  - - - - ) - + void * pUserData )
    @@ -2844,25 +2593,17 @@ Functions void vmaSetPoolName ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaPool  - pool, + VmaPool pool, - const char *  - pName  - - - - ) - + const char * pName )
    @@ -2881,33 +2622,26 @@ Functions void vmaUnmapMemory ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaAllocation  - allocation  - - - - ) - + VmaAllocation allocation )
    -

    Unmaps memory represented by given allocation, mapped previously using vmaMapMemory().

    -

    For details, see description of vmaMapMemory().

    -

    This function doesn't automatically flush or invalidate caches. If the allocation is made from a memory types that is not HOST_COHERENT, you also need to use vmaInvalidateAllocation() / vmaFlushAllocation(), as required by Vulkan specification.

    +

    Unmaps memory represented by given allocation, mapped previously using vmaMapMemory().

    +

    For details, see description of vmaMapMemory().

    +

    This function doesn't automatically flush or invalidate caches. If the allocation is made from a memory types that is not HOST_COHERENT, you also need to use vmaInvalidateAllocation() / vmaFlushAllocation(), as required by Vulkan specification.

    diff --git a/docs/html/group__group__init.html b/docs/html/group__group__init.html index 1df12cc..24bdc12 100644 --- a/docs/html/group__group__init.html +++ b/docs/html/group__group__init.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Library initialization + + @@ -29,7 +31,7 @@ - + @@ -101,67 +103,69 @@ Classes - + - - + + - + - + - + - + - + - +

    Typedefs

    typedef enum VmaAllocatorCreateFlagBits VmaAllocatorCreateFlagBits
    typedef enum VmaAllocatorCreateFlagBits VmaAllocatorCreateFlagBits
     Flags for created VmaAllocator.
     
    typedef VkFlags VmaAllocatorCreateFlags
     See VmaAllocatorCreateFlagBits.
    typedef VkFlags VmaAllocatorCreateFlags
     See VmaAllocatorCreateFlagBits.
     
    typedef void(VKAPI_PTR * PFN_vmaAllocateDeviceMemoryFunction) (VmaAllocator allocator, uint32_t memoryType, VkDeviceMemory memory, VkDeviceSize size, void *pUserData)
    typedef void(VKAPI_PTR * PFN_vmaAllocateDeviceMemoryFunction) (VmaAllocator allocator, uint32_t memoryType, VkDeviceMemory memory, VkDeviceSize size, void *pUserData)
     Callback function called after successful vkAllocateMemory.
     
    typedef void(VKAPI_PTR * PFN_vmaFreeDeviceMemoryFunction) (VmaAllocator allocator, uint32_t memoryType, VkDeviceMemory memory, VkDeviceSize size, void *pUserData)
    typedef void(VKAPI_PTR * PFN_vmaFreeDeviceMemoryFunction) (VmaAllocator allocator, uint32_t memoryType, VkDeviceMemory memory, VkDeviceSize size, void *pUserData)
     Callback function called before vkFreeMemory.
     
    typedef struct VmaDeviceMemoryCallbacks VmaDeviceMemoryCallbacks
    typedef struct VmaDeviceMemoryCallbacks VmaDeviceMemoryCallbacks
     Set of callbacks that the library will call for vkAllocateMemory and vkFreeMemory.
     
    typedef struct VmaVulkanFunctions VmaVulkanFunctions
    typedef struct VmaVulkanFunctions VmaVulkanFunctions
     Pointers to some Vulkan functions - a subset used by the library.
     
    typedef struct VmaAllocatorCreateInfo VmaAllocatorCreateInfo
    typedef struct VmaAllocatorCreateInfo VmaAllocatorCreateInfo
     Description of a Allocator to be created.
     
    typedef struct VmaAllocatorInfo VmaAllocatorInfo
    typedef struct VmaAllocatorInfo VmaAllocatorInfo
     Information about existing VmaAllocator object.
     
    - - +

    Enumerations

    enum  VmaAllocatorCreateFlagBits {
    -  VMA_ALLOCATOR_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 0x00000001 -, VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT = 0x00000002 -, VMA_ALLOCATOR_CREATE_KHR_BIND_MEMORY2_BIT = 0x00000004 -, VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT = 0x00000008 +
    enum  VmaAllocatorCreateFlagBits {
    +  VMA_ALLOCATOR_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 0x00000001 +, VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT = 0x00000002 +, VMA_ALLOCATOR_CREATE_KHR_BIND_MEMORY2_BIT = 0x00000004 +, VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT = 0x00000008 ,
    -  VMA_ALLOCATOR_CREATE_AMD_DEVICE_COHERENT_MEMORY_BIT = 0x00000010 -, VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT = 0x00000020 -, VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT = 0x00000040 -, VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +  VMA_ALLOCATOR_CREATE_AMD_DEVICE_COHERENT_MEMORY_BIT = 0x00000010 +, VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT = 0x00000020 +, VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT = 0x00000040 +, VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE4_BIT = 0x00000080 +,
    +  VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    }
     Flags for created VmaAllocator. More...
     Flags for created VmaAllocator. More...
     
    - + - + - + - + - + - + - +

    Functions

    VkResult vmaCreateAllocator (const VmaAllocatorCreateInfo *pCreateInfo, VmaAllocator *pAllocator)
    VkResult vmaCreateAllocator (const VmaAllocatorCreateInfo *pCreateInfo, VmaAllocator *pAllocator)
     Creates VmaAllocator object.
     
    void vmaDestroyAllocator (VmaAllocator allocator)
    void vmaDestroyAllocator (VmaAllocator allocator)
     Destroys allocator object.
     
    void vmaGetAllocatorInfo (VmaAllocator allocator, VmaAllocatorInfo *pAllocatorInfo)
    void vmaGetAllocatorInfo (VmaAllocator allocator, VmaAllocatorInfo *pAllocatorInfo)
     Returns information about existing VmaAllocator object - handle to Vulkan device etc.
     
    void vmaGetPhysicalDeviceProperties (VmaAllocator allocator, const VkPhysicalDeviceProperties **ppPhysicalDeviceProperties)
    void vmaGetPhysicalDeviceProperties (VmaAllocator allocator, const VkPhysicalDeviceProperties **ppPhysicalDeviceProperties)
     
    void vmaGetMemoryProperties (VmaAllocator allocator, const VkPhysicalDeviceMemoryProperties **ppPhysicalDeviceMemoryProperties)
    void vmaGetMemoryProperties (VmaAllocator allocator, const VkPhysicalDeviceMemoryProperties **ppPhysicalDeviceMemoryProperties)
     
    void vmaGetMemoryTypeProperties (VmaAllocator allocator, uint32_t memoryTypeIndex, VkMemoryPropertyFlags *pFlags)
    void vmaGetMemoryTypeProperties (VmaAllocator allocator, uint32_t memoryTypeIndex, VkMemoryPropertyFlags *pFlags)
     Given Memory Type Index, returns Property Flags of this memory type.
     
    void vmaSetCurrentFrameIndex (VmaAllocator allocator, uint32_t frameIndex)
    void vmaSetCurrentFrameIndex (VmaAllocator allocator, uint32_t frameIndex)
     Sets index of the current frame.
     
    @@ -207,7 +211,7 @@ Functions
    @@ -223,12 +227,12 @@ Functions
    - +
    typedef VkFlags VmaAllocatorCreateFlagstypedef VkFlags VmaAllocatorCreateFlags
    @@ -239,7 +243,7 @@ Functions
    - +
    typedef struct VmaAllocatorCreateInfo VmaAllocatorCreateInfotypedef struct VmaAllocatorCreateInfo VmaAllocatorCreateInfo
    @@ -255,7 +259,7 @@ Functions
    - +
    typedef struct VmaAllocatorInfo VmaAllocatorInfotypedef struct VmaAllocatorInfo VmaAllocatorInfo
    @@ -271,7 +275,7 @@ Functions
    - +
    typedef struct VmaDeviceMemoryCallbacks VmaDeviceMemoryCallbackstypedef struct VmaDeviceMemoryCallbacks VmaDeviceMemoryCallbacks
    @@ -289,7 +293,7 @@ Functions
    - +
    typedef struct VmaVulkanFunctions VmaVulkanFunctionstypedef struct VmaVulkanFunctions VmaVulkanFunctions
    @@ -307,7 +311,7 @@ Functions
    @@ -318,7 +322,7 @@ Functions

    Using this flag may increase performance because internal mutexes are not used.

    VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT 

    Enables usage of VK_KHR_dedicated_allocation extension.

    -

    The flag works only if VmaAllocatorCreateInfo::vulkanApiVersion == VK_API_VERSION_1_0. When it is VK_API_VERSION_1_1, the flag is ignored because the extension has been promoted to Vulkan 1.1.

    +

    The flag works only if VmaAllocatorCreateInfo::vulkanApiVersion == VK_API_VERSION_1_0. When it is VK_API_VERSION_1_1, the flag is ignored because the extension has been promoted to Vulkan 1.1.

    Using this extension will automatically allocate dedicated blocks of memory for some buffers and images instead of suballocating place for them out of bigger memory blocks (as if you explicitly used VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT flag) when it is recommended by the driver. It may improve performance on some GPUs.

    You may set this flag only if you found out that following device extensions are supported, you enabled them while creating Vulkan device passed as VmaAllocatorCreateInfo::device, and you want them to be used internally by this library:

      @@ -331,9 +335,9 @@ Functions VMA_ALLOCATOR_CREATE_KHR_BIND_MEMORY2_BIT 

      Enables usage of VK_KHR_bind_memory2 extension.

      -

      The flag works only if VmaAllocatorCreateInfo::vulkanApiVersion == VK_API_VERSION_1_0. When it is VK_API_VERSION_1_1, the flag is ignored because the extension has been promoted to Vulkan 1.1.

      +

      The flag works only if VmaAllocatorCreateInfo::vulkanApiVersion == VK_API_VERSION_1_0. When it is VK_API_VERSION_1_1, the flag is ignored because the extension has been promoted to Vulkan 1.1.

      You may set this flag only if you found out that this device extension is supported, you enabled it while creating Vulkan device passed as VmaAllocatorCreateInfo::device, and you want it to be used internally by this library.

      -

      The extension provides functions vkBindBufferMemory2KHR and vkBindImageMemory2KHR, which allow to pass a chain of pNext structures while binding. This flag is required if you use pNext parameter in vmaBindBufferMemory2() or vmaBindImageMemory2().

      +

      The extension provides functions vkBindBufferMemory2KHR and vkBindImageMemory2KHR, which allow to pass a chain of pNext structures while binding. This flag is required if you use pNext parameter in vmaBindBufferMemory2() or vmaBindImageMemory2().

      VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT 

      Enables usage of VK_EXT_memory_budget extension.

      You may set this flag only if you found out that this device extension is supported, you enabled it while creating Vulkan device passed as VmaAllocatorCreateInfo::device, and you want it to be used internally by this library, along with another instance extension VK_KHR_get_physical_device_properties2, which is required by it (or Vulkan 1.1, where this extension is promoted).

      @@ -363,6 +367,9 @@ Functions

      When this flag is used, VmaAllocationCreateInfo::priority and VmaPoolCreateInfo::priority are used to set priorities of allocated Vulkan memory. Without it, these variables are ignored.

      A priority must be a floating-point value between 0 and 1, indicating the priority of the allocation relative to other memory allocations. Larger values are higher priority. The granularity of the priorities is implementation-dependent. It is automatically passed to every call to vkAllocateMemory done by the library using structure VkMemoryPriorityAllocateInfoEXT. The value to be used for default priority is 0.5. For more details, see the documentation of the VK_EXT_memory_priority extension.

      +VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE4_BIT 

      Enables usage of VK_KHR_maintenance4 extension in the library.

      +

      You may set this flag only if you found available and enabled this device extension, while creating Vulkan device passed as VmaAllocatorCreateInfo::device.

      + VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM  @@ -378,19 +385,12 @@ Functions VkResult vmaCreateAllocator ( - const VmaAllocatorCreateInfo *  - pCreateInfo, + const VmaAllocatorCreateInfo * pCreateInfo, - VmaAllocator *  - pAllocator  - - - - ) - + VmaAllocator * pAllocator )
    @@ -408,8 +408,7 @@ Functions void vmaDestroyAllocator ( - VmaAllocator  - allocator) + VmaAllocator allocator) @@ -428,19 +427,12 @@ Functions void vmaGetAllocatorInfo ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaAllocatorInfo *  - pAllocatorInfo  - - - - ) - + VmaAllocatorInfo * pAllocatorInfo )
    @@ -459,19 +451,12 @@ Functions void vmaGetMemoryProperties ( - VmaAllocator  - allocator, + VmaAllocator allocator, - const VkPhysicalDeviceMemoryProperties **  - ppPhysicalDeviceMemoryProperties  - - - - ) - + const VkPhysicalDeviceMemoryProperties ** ppPhysicalDeviceMemoryProperties )
    @@ -488,31 +473,23 @@ Functions void vmaGetMemoryTypeProperties ( - VmaAllocator  - allocator, + VmaAllocator allocator, - uint32_t  - memoryTypeIndex, + uint32_t memoryTypeIndex, - VkMemoryPropertyFlags *  - pFlags  - - - - ) - + VkMemoryPropertyFlags * pFlags )

    Given Memory Type Index, returns Property Flags of this memory type.

    -

    This is just a convenience function. Same information can be obtained using vmaGetMemoryProperties().

    +

    This is just a convenience function. Same information can be obtained using vmaGetMemoryProperties().

    @@ -525,19 +502,12 @@ Functions void vmaGetPhysicalDeviceProperties ( - VmaAllocator  - allocator, + VmaAllocator allocator, - const VkPhysicalDeviceProperties **  - ppPhysicalDeviceProperties  - - - - ) - + const VkPhysicalDeviceProperties ** ppPhysicalDeviceProperties )
    @@ -554,19 +524,12 @@ Functions void vmaSetCurrentFrameIndex ( - VmaAllocator  - allocator, + VmaAllocator allocator, - uint32_t  - frameIndex  - - - - ) - + uint32_t frameIndex )
    @@ -578,7 +541,7 @@ Functions
    diff --git a/docs/html/group__group__stats.html b/docs/html/group__group__stats.html index 3599e0f..612d28b 100644 --- a/docs/html/group__group__stats.html +++ b/docs/html/group__group__stats.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Statistics + + @@ -29,7 +31,7 @@
    - + @@ -97,31 +99,31 @@ Classes - + - + - + - +

    Typedefs

    typedef struct VmaStatistics VmaStatistics
    typedef struct VmaStatistics VmaStatistics
     Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool, or total.
     
    typedef struct VmaDetailedStatistics VmaDetailedStatistics
    typedef struct VmaDetailedStatistics VmaDetailedStatistics
     More detailed statistics than VmaStatistics.
     
    typedef struct VmaTotalStatistics VmaTotalStatistics
    typedef struct VmaTotalStatistics VmaTotalStatistics
     General statistics from current state of the Allocator - total memory usage across all memory heaps and types.
     
    typedef struct VmaBudget VmaBudget
    typedef struct VmaBudget VmaBudget
     Statistics of current memory usage and available budget for a specific memory heap.
     
    - + - + - + - +

    Functions

    void vmaCalculateStatistics (VmaAllocator allocator, VmaTotalStatistics *pStats)
    void vmaCalculateStatistics (VmaAllocator allocator, VmaTotalStatistics *pStats)
     Retrieves statistics from current state of the Allocator.
     
    void vmaGetHeapBudgets (VmaAllocator allocator, VmaBudget *pBudgets)
    void vmaGetHeapBudgets (VmaAllocator allocator, VmaBudget *pBudgets)
     Retrieves information about current memory usage and budget for all memory heaps.
     
    void vmaGetPoolStatistics (VmaAllocator allocator, VmaPool pool, VmaStatistics *pPoolStats)
    void vmaGetPoolStatistics (VmaAllocator allocator, VmaPool pool, VmaStatistics *pPoolStats)
     Retrieves statistics of existing VmaPool object.
     
    void vmaCalculatePoolStatistics (VmaAllocator allocator, VmaPool pool, VmaDetailedStatistics *pPoolStats)
    void vmaCalculatePoolStatistics (VmaAllocator allocator, VmaPool pool, VmaDetailedStatistics *pPoolStats)
     Retrieves detailed statistics of existing VmaPool object.
     
    @@ -135,13 +137,13 @@ Functions
    - +
    typedef struct VmaBudget VmaBudgettypedef struct VmaBudget VmaBudget

    Statistics of current memory usage and available budget for a specific memory heap.

    -

    These are fast to calculate. See function vmaGetHeapBudgets().

    +

    These are fast to calculate. See function vmaGetHeapBudgets().

    @@ -152,13 +154,13 @@ Functions
    - +
    typedef struct VmaDetailedStatistics VmaDetailedStatisticstypedef struct VmaDetailedStatistics VmaDetailedStatistics

    More detailed statistics than VmaStatistics.

    -

    These are slower to calculate. Use for debugging purposes. See functions: vmaCalculateStatistics(), vmaCalculatePoolStatistics().

    +

    These are slower to calculate. Use for debugging purposes. See functions: vmaCalculateStatistics(), vmaCalculatePoolStatistics().

    Previous version of the statistics API provided averages, but they have been removed because they can be easily calculated as:

    VkDeviceSize allocationSizeAvg = detailedStats.statistics.allocationBytes / detailedStats.statistics.allocationCount;
    VkDeviceSize unusedBytes = detailedStats.statistics.blockBytes - detailedStats.statistics.allocationBytes;
    @@ -173,13 +175,13 @@ Functions
    - +
    typedef struct VmaStatistics VmaStatisticstypedef struct VmaStatistics VmaStatistics

    Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool, or total.

    -

    These are fast to calculate. See functions: vmaGetHeapBudgets(), vmaGetPoolStatistics().

    +

    These are fast to calculate. See functions: vmaGetHeapBudgets(), vmaGetPoolStatistics().

    @@ -190,13 +192,13 @@ Functions
    - +
    typedef struct VmaTotalStatistics VmaTotalStatisticstypedef struct VmaTotalStatistics VmaTotalStatistics

    General statistics from current state of the Allocator - total memory usage across all memory heaps and types.

    -

    These are slower to calculate. Use for debugging purposes. See function vmaCalculateStatistics().

    +

    These are slower to calculate. Use for debugging purposes. See function vmaCalculateStatistics().

    @@ -210,25 +212,17 @@ Functions void vmaCalculatePoolStatistics ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaPool  - pool, + VmaPool pool, - VmaDetailedStatistics *  - pPoolStats  - - - - ) - + VmaDetailedStatistics * pPoolStats )
    @@ -254,25 +248,18 @@ Functions void vmaCalculateStatistics ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaTotalStatistics *  - pStats  - - - - ) - + VmaTotalStatistics * pStats )

    Retrieves statistics from current state of the Allocator.

    -

    This function is called "calculate" not "get" because it has to traverse all internal data structures, so it may be quite slow. Use it for debugging purposes. For faster but more brief statistics suitable to be called every frame or every allocation, use vmaGetHeapBudgets().

    +

    This function is called "calculate" not "get" because it has to traverse all internal data structures, so it may be quite slow. Use it for debugging purposes. For faster but more brief statistics suitable to be called every frame or every allocation, use vmaGetHeapBudgets().

    Note that when using allocator from multiple threads, returned information may immediately become outdated.

    @@ -286,19 +273,12 @@ Functions void vmaGetHeapBudgets ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaBudget *  - pBudgets  - - - - ) - + VmaBudget * pBudgets )
    @@ -311,7 +291,7 @@ Functions -

    This function is called "get" not "calculate" because it is very fast, suitable to be called every frame or every allocation. For more detailed statistics use vmaCalculateStatistics().

    +

    This function is called "get" not "calculate" because it is very fast, suitable to be called every frame or every allocation. For more detailed statistics use vmaCalculateStatistics().

    Note that when using allocator from multiple threads, returned information may immediately become outdated.

    @@ -325,25 +305,17 @@ Functions void vmaGetPoolStatistics ( - VmaAllocator  - allocator, + VmaAllocator allocator, - VmaPool  - pool, + VmaPool pool, - VmaStatistics *  - pPoolStats  - - - - ) - + VmaStatistics * pPoolStats )
    @@ -363,7 +335,7 @@ Functions
    diff --git a/docs/html/group__group__virtual.html b/docs/html/group__group__virtual.html index 5cc8f30..b8d8964 100644 --- a/docs/html/group__group__virtual.html +++ b/docs/html/group__group__virtual.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Virtual allocator + + @@ -29,7 +31,7 @@ - + @@ -84,13 +86,13 @@ $(function() {

    Classes

    struct  VmaVirtualBlockCreateInfo - Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock(). More...
    + Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock(). More...
      struct  VmaVirtualAllocationCreateInfo - Parameters of created virtual allocation to be passed to vmaVirtualAllocate(). More...
    + Parameters of created virtual allocation to be passed to vmaVirtualAllocate(). More...
      struct  VmaVirtualAllocationInfo - Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo(). More...
    + Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo(). More...
      struct  VmaVirtualAllocation  Represents single memory allocation done inside VmaVirtualBlock. More...
    @@ -101,79 +103,81 @@ Classes - + - - + + - + - - + + - - + + - - + + - - + +

    Typedefs

    typedef enum VmaVirtualBlockCreateFlagBits VmaVirtualBlockCreateFlagBits
    typedef enum VmaVirtualBlockCreateFlagBits VmaVirtualBlockCreateFlagBits
     Flags to be passed as VmaVirtualBlockCreateInfo::flags.
     
    typedef VkFlags VmaVirtualBlockCreateFlags
     Flags to be passed as VmaVirtualBlockCreateInfo::flags. See VmaVirtualBlockCreateFlagBits.
    typedef VkFlags VmaVirtualBlockCreateFlags
     Flags to be passed as VmaVirtualBlockCreateInfo::flags. See VmaVirtualBlockCreateFlagBits.
     
    typedef enum VmaVirtualAllocationCreateFlagBits VmaVirtualAllocationCreateFlagBits
    typedef enum VmaVirtualAllocationCreateFlagBits VmaVirtualAllocationCreateFlagBits
     Flags to be passed as VmaVirtualAllocationCreateInfo::flags.
     
    typedef VkFlags VmaVirtualAllocationCreateFlags
     Flags to be passed as VmaVirtualAllocationCreateInfo::flags. See VmaVirtualAllocationCreateFlagBits.
    typedef VkFlags VmaVirtualAllocationCreateFlags
     Flags to be passed as VmaVirtualAllocationCreateInfo::flags. See VmaVirtualAllocationCreateFlagBits.
     
    typedef struct VmaVirtualBlockCreateInfo VmaVirtualBlockCreateInfo
     Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock().
    typedef struct VmaVirtualBlockCreateInfo VmaVirtualBlockCreateInfo
     Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock().
     
    typedef struct VmaVirtualAllocationCreateInfo VmaVirtualAllocationCreateInfo
     Parameters of created virtual allocation to be passed to vmaVirtualAllocate().
    typedef struct VmaVirtualAllocationCreateInfo VmaVirtualAllocationCreateInfo
     Parameters of created virtual allocation to be passed to vmaVirtualAllocate().
     
    typedef struct VmaVirtualAllocationInfo VmaVirtualAllocationInfo
     Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo().
    typedef struct VmaVirtualAllocationInfo VmaVirtualAllocationInfo
     Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo().
     
    - - + - - +

    Enumerations

    enum  VmaVirtualBlockCreateFlagBits { VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT = 0x00000001 -, VMA_VIRTUAL_BLOCK_CREATE_ALGORITHM_MASK -, VMA_VIRTUAL_BLOCK_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +
    enum  VmaVirtualBlockCreateFlagBits { VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT = 0x00000001 +, VMA_VIRTUAL_BLOCK_CREATE_ALGORITHM_MASK +, VMA_VIRTUAL_BLOCK_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF }
     Flags to be passed as VmaVirtualBlockCreateInfo::flags. More...
     Flags to be passed as VmaVirtualBlockCreateInfo::flags. More...
     
    enum  VmaVirtualAllocationCreateFlagBits {
    -  VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT = VMA_ALLOCATION_CREATE_UPPER_ADDRESS_BIT -, VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT = VMA_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT -, VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT = VMA_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT -, VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT = VMA_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT +
    enum  VmaVirtualAllocationCreateFlagBits {
    +  VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT = VMA_ALLOCATION_CREATE_UPPER_ADDRESS_BIT +, VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT = VMA_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT +, VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT = VMA_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT +, VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT = VMA_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT ,
    -  VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MASK = VMA_ALLOCATION_CREATE_STRATEGY_MASK -, VMA_VIRTUAL_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +  VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MASK = VMA_ALLOCATION_CREATE_STRATEGY_MASK +, VMA_VIRTUAL_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    }
     Flags to be passed as VmaVirtualAllocationCreateInfo::flags. More...
     Flags to be passed as VmaVirtualAllocationCreateInfo::flags. More...
     
    - + + + - + - + - + - + - + - + - + - + - +

    Functions

    VkResult vmaCreateVirtualBlock (const VmaVirtualBlockCreateInfo *pCreateInfo, VmaVirtualBlock *pVirtualBlock)
     VK_DEFINE_NON_DISPATCHABLE_HANDLE (VmaVirtualAllocation)
     
    VkResult vmaCreateVirtualBlock (const VmaVirtualBlockCreateInfo *pCreateInfo, VmaVirtualBlock *pVirtualBlock)
     Creates new VmaVirtualBlock object.
     
    void vmaDestroyVirtualBlock (VmaVirtualBlock virtualBlock)
    void vmaDestroyVirtualBlock (VmaVirtualBlock virtualBlock)
     Destroys VmaVirtualBlock object.
     
    VkBool32 vmaIsVirtualBlockEmpty (VmaVirtualBlock virtualBlock)
    VkBool32 vmaIsVirtualBlockEmpty (VmaVirtualBlock virtualBlock)
     Returns true of the VmaVirtualBlock is empty - contains 0 virtual allocations and has all its space available for new allocations.
     
    void vmaGetVirtualAllocationInfo (VmaVirtualBlock virtualBlock, VmaVirtualAllocation allocation, VmaVirtualAllocationInfo *pVirtualAllocInfo)
    void vmaGetVirtualAllocationInfo (VmaVirtualBlock virtualBlock, VmaVirtualAllocation allocation, VmaVirtualAllocationInfo *pVirtualAllocInfo)
     Returns information about a specific virtual allocation within a virtual block, like its size and pUserData pointer.
     
    VkResult vmaVirtualAllocate (VmaVirtualBlock virtualBlock, const VmaVirtualAllocationCreateInfo *pCreateInfo, VmaVirtualAllocation *pAllocation, VkDeviceSize *pOffset)
    VkResult vmaVirtualAllocate (VmaVirtualBlock virtualBlock, const VmaVirtualAllocationCreateInfo *pCreateInfo, VmaVirtualAllocation *pAllocation, VkDeviceSize *pOffset)
     Allocates new virtual allocation inside given VmaVirtualBlock.
     
    void vmaVirtualFree (VmaVirtualBlock virtualBlock, VmaVirtualAllocation allocation)
    void vmaVirtualFree (VmaVirtualBlock virtualBlock, VmaVirtualAllocation allocation)
     Frees virtual allocation inside given VmaVirtualBlock.
     
    void vmaClearVirtualBlock (VmaVirtualBlock virtualBlock)
    void vmaClearVirtualBlock (VmaVirtualBlock virtualBlock)
     Frees all virtual allocations inside given VmaVirtualBlock.
     
    void vmaSetVirtualAllocationUserData (VmaVirtualBlock virtualBlock, VmaVirtualAllocation allocation, void *pUserData)
    void vmaSetVirtualAllocationUserData (VmaVirtualBlock virtualBlock, VmaVirtualAllocation allocation, void *pUserData)
     Changes custom pointer associated with given virtual allocation.
     
    void vmaGetVirtualBlockStatistics (VmaVirtualBlock virtualBlock, VmaStatistics *pStats)
    void vmaGetVirtualBlockStatistics (VmaVirtualBlock virtualBlock, VmaStatistics *pStats)
     Calculates and returns statistics about virtual allocations and memory usage in given VmaVirtualBlock.
     
    void vmaCalculateVirtualBlockStatistics (VmaVirtualBlock virtualBlock, VmaDetailedStatistics *pStats)
    void vmaCalculateVirtualBlockStatistics (VmaVirtualBlock virtualBlock, VmaDetailedStatistics *pStats)
     Calculates and returns detailed statistics about virtual allocations and memory usage in given VmaVirtualBlock.
     
    @@ -187,7 +191,7 @@ Functions @@ -219,12 +223,12 @@ Functions
    - +
    typedef struct VmaVirtualAllocationCreateInfo VmaVirtualAllocationCreateInfotypedef struct VmaVirtualAllocationCreateInfo VmaVirtualAllocationCreateInfo
    -

    Parameters of created virtual allocation to be passed to vmaVirtualAllocate().

    +

    Parameters of created virtual allocation to be passed to vmaVirtualAllocate().

    @@ -235,12 +239,12 @@ Functions
    - +
    typedef struct VmaVirtualAllocationInfo VmaVirtualAllocationInfotypedef struct VmaVirtualAllocationInfo VmaVirtualAllocationInfo
    -

    Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo().

    +

    Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo().

    @@ -251,7 +255,7 @@ Functions
    @@ -267,12 +271,12 @@ Functions
    - +
    typedef VkFlags VmaVirtualBlockCreateFlagstypedef VkFlags VmaVirtualBlockCreateFlags
    @@ -283,12 +287,12 @@ Functions
    - +
    typedef struct VmaVirtualBlockCreateInfo VmaVirtualBlockCreateInfotypedef struct VmaVirtualBlockCreateInfo VmaVirtualBlockCreateInfo
    -

    Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock().

    +

    Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock().

    @@ -300,7 +304,7 @@ Functions
    @@ -308,7 +312,7 @@ Functions

    Flags to be passed as VmaVirtualAllocationCreateInfo::flags.

    @@ -331,7 +335,7 @@ Functions
    Enumerator
    VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT 

    Allocation will be created from upper stack in a double stack pool.

    -

    This flag is only allowed for virtual blocks created with VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT flag.

    +

    This flag is only allowed for virtual blocks created with VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT flag.

    VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT 

    Allocation strategy that tries to minimize memory usage.

    - +
    enum VmaVirtualBlockCreateFlagBitsenum VmaVirtualBlockCreateFlagBits
    @@ -350,6 +354,23 @@ Functions

    Function Documentation

    + +

    ◆ VK_DEFINE_NON_DISPATCHABLE_HANDLE()

    + +
    +
    + + + + + + + +
    VK_DEFINE_NON_DISPATCHABLE_HANDLE (VmaVirtualAllocation )
    +
    + +
    +

    ◆ vmaCalculateVirtualBlockStatistics()

    @@ -359,25 +380,18 @@ Functions void vmaCalculateVirtualBlockStatistics ( - VmaVirtualBlock  - virtualBlock, + VmaVirtualBlock virtualBlock, - VmaDetailedStatistics *  - pStats  - - - - ) - + VmaDetailedStatistics * pStats )

    Calculates and returns detailed statistics about virtual allocations and memory usage in given VmaVirtualBlock.

    -

    This function is slow to call. Use for debugging purposes. For less detailed statistics, see vmaGetVirtualBlockStatistics().

    +

    This function is slow to call. Use for debugging purposes. For less detailed statistics, see vmaGetVirtualBlockStatistics().

    @@ -390,15 +404,14 @@ Functions void vmaClearVirtualBlock ( - VmaVirtualBlock  - virtualBlock) + VmaVirtualBlock virtualBlock)

    Frees all virtual allocations inside given VmaVirtualBlock.

    -

    You must either call this function or free each virtual allocation individually with vmaVirtualFree() before destroying a virtual block. Otherwise, an assert is called.

    +

    You must either call this function or free each virtual allocation individually with vmaVirtualFree() before destroying a virtual block. Otherwise, an assert is called.

    If you keep pointer to some additional metadata associated with your virtual allocation in its pUserData, don't forget to free it as well.

    @@ -412,19 +425,12 @@ Functions VkResult vmaCreateVirtualBlock ( - const VmaVirtualBlockCreateInfo *  - pCreateInfo, + const VmaVirtualBlockCreateInfo * pCreateInfo, - VmaVirtualBlock *  - pVirtualBlock  - - - - ) - + VmaVirtualBlock * pVirtualBlock )
    @@ -449,15 +455,14 @@ Functions void vmaDestroyVirtualBlock ( - VmaVirtualBlock  - virtualBlock) + VmaVirtualBlock virtualBlock)

    Destroys VmaVirtualBlock object.

    -

    Please note that you should consciously handle virtual allocations that could remain unfreed in the block. You should either free them individually using vmaVirtualFree() or call vmaClearVirtualBlock() if you are sure this is what you want. If you do neither, an assert is called.

    +

    Please note that you should consciously handle virtual allocations that could remain unfreed in the block. You should either free them individually using vmaVirtualFree() or call vmaClearVirtualBlock() if you are sure this is what you want. If you do neither, an assert is called.

    If you keep pointers to some additional metadata associated with your virtual allocations in their pUserData, don't forget to free them.

    @@ -471,25 +476,17 @@ Functions void vmaGetVirtualAllocationInfo ( - VmaVirtualBlock  - virtualBlock, + VmaVirtualBlock virtualBlock, - VmaVirtualAllocation  - allocation, + VmaVirtualAllocation allocation, - VmaVirtualAllocationInfo *  - pVirtualAllocInfo  - - - - ) - + VmaVirtualAllocationInfo * pVirtualAllocInfo )
    @@ -507,25 +504,18 @@ Functions void vmaGetVirtualBlockStatistics ( - VmaVirtualBlock  - virtualBlock, + VmaVirtualBlock virtualBlock, - VmaStatistics *  - pStats  - - - - ) - + VmaStatistics * pStats )

    Calculates and returns statistics about virtual allocations and memory usage in given VmaVirtualBlock.

    -

    This function is fast to call. For more detailed statistics, see vmaCalculateVirtualBlockStatistics().

    +

    This function is fast to call. For more detailed statistics, see vmaCalculateVirtualBlockStatistics().

    @@ -538,8 +528,7 @@ Functions VkBool32 vmaIsVirtualBlockEmpty ( - VmaVirtualBlock  - virtualBlock) + VmaVirtualBlock virtualBlock) @@ -558,25 +547,17 @@ Functions void vmaSetVirtualAllocationUserData ( - VmaVirtualBlock  - virtualBlock, + VmaVirtualBlock virtualBlock, - VmaVirtualAllocation  - allocation, + VmaVirtualAllocation allocation, - void *  - pUserData  - - - - ) - + void * pUserData )
    @@ -594,31 +575,22 @@ Functions VkResult vmaVirtualAllocate ( - VmaVirtualBlock  - virtualBlock, + VmaVirtualBlock virtualBlock, - const VmaVirtualAllocationCreateInfo *  - pCreateInfo, + const VmaVirtualAllocationCreateInfo * pCreateInfo, - VmaVirtualAllocation *  - pAllocation, + VmaVirtualAllocation * pAllocation, - VkDeviceSize *  - pOffset  - - - - ) - + VkDeviceSize * pOffset )
    @@ -646,19 +618,12 @@ Functions void vmaVirtualFree ( - VmaVirtualBlock  - virtualBlock, + VmaVirtualBlock virtualBlock, - VmaVirtualAllocation  - allocation  - - - - ) - + VmaVirtualAllocation allocation )
    @@ -671,7 +636,7 @@ Functions
    diff --git a/docs/html/index.html b/docs/html/index.html index 34e24d3..a0945db 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Vulkan Memory Allocator + + @@ -29,7 +31,7 @@ - + @@ -73,11 +75,11 @@ $(function() {

    Version 3.1.0-development

    -

    Copyright (c) 2017-2022 Advanced Micro Devices, Inc. All rights reserved.
    -License: MIT

    -

    API documentation divided into groups: Modules

    -

    -Table of contents

    +

    Copyright (c) 2017-2024 Advanced Micro Devices, Inc. All rights reserved.
    +License: MIT
    +See also: product page on GPUOpen, repository on GitHub

    +

    API documentation divided into groups: Topics

    +

    General documentation chapters:

    + diff --git a/docs/html/memory_mapping.html b/docs/html/memory_mapping.html index ee30b3c..3ce8e06 100644 --- a/docs/html/memory_mapping.html +++ b/docs/html/memory_mapping.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Memory mapping + + @@ -29,7 +31,7 @@ - + @@ -76,11 +78,43 @@ $(function() {
    Memory mapping
    -

    To "map memory" in Vulkan means to obtain a CPU pointer to VkDeviceMemory, to be able to read from it or write to it in CPU code. Mapping is possible only of memory allocated from a memory type that has VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT flag. Functions vkMapMemory(), vkUnmapMemory() are designed for this purpose. You can use them directly with memory allocated by this library, but it is not recommended because of following issue: Mapping the same VkDeviceMemory block multiple times is illegal - only one mapping at a time is allowed. This includes mapping disjoint regions. Mapping is not reference-counted internally by Vulkan. Because of this, Vulkan Memory Allocator provides following facilities:

    -
    Note
    If you want to be able to map an allocation, you need to specify one of the flags VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT or VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT in VmaAllocationCreateInfo::flags. These flags are required for an allocation to be mappable when using VMA_MEMORY_USAGE_AUTO or other VMA_MEMORY_USAGE_AUTO* enum values. For other usage values they are ignored and every such allocation made in HOST_VISIBLE memory type is mappable, but they can still be used for consistency.
    +

    To "map memory" in Vulkan means to obtain a CPU pointer to VkDeviceMemory, to be able to read from it or write to it in CPU code. Mapping is possible only of memory allocated from a memory type that has VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT flag. Functions vkMapMemory(), vkUnmapMemory() are designed for this purpose. You can use them directly with memory allocated by this library, but it is not recommended because of following issue: Mapping the same VkDeviceMemory block multiple times is illegal - only one mapping at a time is allowed. This includes mapping disjoint regions. Mapping is not reference-counted internally by Vulkan. It is also not thread-safe. Because of this, Vulkan Memory Allocator provides following facilities:

    +
    Note
    If you want to be able to map an allocation, you need to specify one of the flags VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT or VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT in VmaAllocationCreateInfo::flags. These flags are required for an allocation to be mappable when using VMA_MEMORY_USAGE_AUTO or other VMA_MEMORY_USAGE_AUTO* enum values. For other usage values they are ignored and every such allocation made in HOST_VISIBLE memory type is mappable, but these flags can still be used for consistency.
    +

    +Copy functions

    +

    The easiest way to copy data from a host pointer to an allocation is to use convenience function vmaCopyMemoryToAllocation(). It automatically maps the Vulkan memory temporarily (if not already mapped), performs memcpy, and calls vkFlushMappedMemoryRanges (if required - if memory type is not HOST_COHERENT).

    +

    It is also the safest one, because using memcpy avoids a risk of accidentally introducing memory reads (e.g. by doing pMappedVectors[i] += v), which may be very slow on memory types that are not HOST_CACHED.

    +
    struct ConstantBuffer
    +
    {
    +
    ...
    +
    };
    +
    ConstantBuffer constantBufferData = ...
    +
    +
    VkBufferCreateInfo bufCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
    +
    bufCreateInfo.size = sizeof(ConstantBuffer);
    +
    bufCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
    +
    +
    VmaAllocationCreateInfo allocCreateInfo = {};
    +
    allocCreateInfo.usage = VMA_MEMORY_USAGE_AUTO;
    + +
    +
    VkBuffer buf;
    + +
    vmaCreateBuffer(allocator, &bufCreateInfo, &allocCreateInfo, &buf, &alloc, nullptr);
    +
    +
    vmaCopyMemoryToAllocation(allocator, &constantBufferData, alloc, 0, sizeof(ConstantBuffer));
    +
    VkResult vmaCopyMemoryToAllocation(VmaAllocator allocator, const void *pSrcHostPointer, VmaAllocation dstAllocation, VkDeviceSize dstAllocationLocalOffset, VkDeviceSize size)
    Maps the allocation temporarily if needed, copies data from specified host pointer to it,...
    +
    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:510
    +
    @ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT
    Definition vk_mem_alloc.h:619
    +
    Parameters of new VmaAllocation.
    Definition vk_mem_alloc.h:1245
    +
    VmaMemoryUsage usage
    Intended usage of memory.
    Definition vk_mem_alloc.h:1253
    +
    VmaAllocationCreateFlags flags
    Use VmaAllocationCreateFlagBits enum.
    Definition vk_mem_alloc.h:1247
    +
    Represents single memory allocation.
    +

    Copy in the other direction - from an allocation to a host pointer can be performed the same way using function vmaCopyAllocationToMemory().

    Mapping functions

    -

    The library provides following functions for mapping of a specific VmaAllocation: vmaMapMemory(), vmaUnmapMemory(). They are safer and more convenient to use than standard Vulkan functions. You can map an allocation multiple times simultaneously - mapping is reference-counted internally. You can also map different allocations simultaneously regardless of whether they use the same VkDeviceMemory block. The way it is implemented is that the library always maps entire memory block, not just region of the allocation. For further details, see description of vmaMapMemory() function. Example:

    +

    The library provides following functions for mapping of a specific allocation: vmaMapMemory(), vmaUnmapMemory(). They are safer and more convenient to use than standard Vulkan functions. You can map an allocation multiple times simultaneously - mapping is reference-counted internally. You can also map different allocations simultaneously regardless of whether they use the same VkDeviceMemory block. The way it is implemented is that the library always maps entire memory block, not just region of the allocation. For further details, see description of vmaMapMemory() function. Example:

    // Having these objects initialized:
    struct ConstantBuffer
    {
    @@ -122,16 +156,9 @@ Persistently mapped memory
    // Buffer is already mapped. You can access its memory.
    memcpy(allocInfo.pMappedData, &constantBufferData, sizeof(constantBufferData));
    -
    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:493
    -
    @ 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:550
    -
    @ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT
    Definition vk_mem_alloc.h:599
    -
    Parameters of new VmaAllocation.
    Definition vk_mem_alloc.h:1223
    -
    VmaMemoryUsage usage
    Intended usage of memory.
    Definition vk_mem_alloc.h:1231
    -
    VmaAllocationCreateFlags flags
    Use VmaAllocationCreateFlagBits enum.
    Definition vk_mem_alloc.h:1225
    -
    Represents single memory allocation.
    -
    Definition vk_mem_alloc.h:1342
    -
    void * pMappedData
    Pointer to the beginning of this allocation as mapped data.
    Definition vk_mem_alloc.h:1384
    +
    @ 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:570
    +
    Definition vk_mem_alloc.h:1364
    +
    void * pMappedData
    Pointer to the beginning of this allocation as mapped data.
    Definition vk_mem_alloc.h:1406
    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

    @@ -142,7 +169,7 @@ Cache flush and invalidate
    diff --git a/docs/html/menu.js b/docs/html/menu.js index b0b2693..717761d 100644 --- a/docs/html/menu.js +++ b/docs/html/menu.js @@ -24,13 +24,12 @@ */ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { function makeTree(data,relPath) { - var result=''; + let result=''; if ('children' in data) { result+='
      '; - for (var i in data.children) { - var url; - var link; - link = data.children[i].url; + for (let i in data.children) { + let url; + const link = data.children[i].url; if (link.substring(0,1)=='^') { url = link.substring(1); } else { @@ -44,7 +43,7 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { } return result; } - var searchBoxHtml; + let searchBoxHtml; if (searchEnabled) { if (serverSide) { searchBoxHtml='
      '+ @@ -88,29 +87,28 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { if (searchBoxHtml) { $('#main-menu').append('
    • '); } - var $mainMenuState = $('#main-menu-state'); - var prevWidth = 0; + const $mainMenuState = $('#main-menu-state'); + let prevWidth = 0; if ($mainMenuState.length) { - function initResizableIfExists() { + const initResizableIfExists = function() { if (typeof initResizable==='function') initResizable(); } // animate mobile menu - $mainMenuState.change(function(e) { - var $menu = $('#main-menu'); - var options = { duration: 250, step: initResizableIfExists }; + $mainMenuState.change(function() { + const $menu = $('#main-menu'); + let options = { duration: 250, step: initResizableIfExists }; if (this.checked) { - options['complete'] = function() { $menu.css('display', 'block') }; + options['complete'] = () => $menu.css('display', 'block'); $menu.hide().slideDown(options); } else { - options['complete'] = function() { $menu.css('display', 'none') }; + options['complete'] = () => $menu.css('display', 'none'); $menu.show().slideUp(options); } }); // set default menu visibility - function resetState() { - var $menu = $('#main-menu'); - var $mainMenuState = $('#main-menu-state'); - var newWidth = $(window).outerWidth(); + const resetState = function() { + const $menu = $('#main-menu'); + const newWidth = $(window).outerWidth(); if (newWidth!=prevWidth) { if ($(window).outerWidth()<768) { $mainMenuState.prop('checked',false); $menu.hide(); diff --git a/docs/html/menudata.js b/docs/html/menudata.js index aff21bd..9f63f95 100644 --- a/docs/html/menudata.js +++ b/docs/html/menudata.js @@ -44,7 +44,6 @@ var menudata={children:[ {text:"t",url:"functions.html#index_t"}, {text:"u",url:"functions.html#index_u"}, {text:"v",url:"functions.html#index_v"}]}, -{text:"Functions",url:"functions_func.html"}, {text:"Variables",url:"functions_vars.html",children:[ {text:"a",url:"functions_vars.html#index_a"}, {text:"b",url:"functions_vars.html#index_b"}, diff --git a/docs/html/modules.html b/docs/html/modules.html deleted file mode 100644 index 7c4efc1..0000000 --- a/docs/html/modules.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -Vulkan Memory Allocator: Modules - - - - - - - - - -
      -
      - - - - - - -
      -
      Vulkan Memory Allocator -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Modules
      -
      -
      -
      Here is a list of all modules:
      - - - - - -
       Library initializationAPI elements related to the initialization and management of the entire library, especially VmaAllocator object
       Memory allocationAPI elements related to the allocation, deallocation, and management of Vulkan memory, buffers, images. Most basic ones being: vmaCreateBuffer(), vmaCreateImage()
       Virtual allocatorAPI elements related to the mechanism of Virtual allocator - using the core allocation algorithm for user-defined purpose without allocating any real GPU memory
       StatisticsAPI elements that query current status of the allocator, from memory usage, budget, to full dump of the internal state in JSON format. See documentation chapter: Statistics
      -
      -
      - - - - diff --git a/docs/html/opengl_interop.html b/docs/html/other_api_interop.html similarity index 64% rename from docs/html/opengl_interop.html rename to docs/html/other_api_interop.html index 2d558c5..e9b728a 100644 --- a/docs/html/opengl_interop.html +++ b/docs/html/other_api_interop.html @@ -3,12 +3,14 @@ - + -Vulkan Memory Allocator: OpenGL Interop +Vulkan Memory Allocator: Interop with other graphics APIs + + @@ -29,7 +31,7 @@
      - + @@ -73,22 +75,22 @@ $(function() {
    -
    OpenGL Interop
    +
    Interop with other graphics APIs
    -

    VMA provides some features that help with interoperability with OpenGL.

    +

    VMA provides some features that help with interoperability with other graphics APIs, e.g. OpenGL.

    Exporting memory

    -

    If you want to attach VkExportMemoryAllocateInfoKHR structure to pNext chain of memory allocations made by the library:

    -

    It is recommended to create Custom memory pools for such allocations. Define and fill in your VkExportMemoryAllocateInfoKHR structure and attach it to VmaPoolCreateInfo::pMemoryAllocateNext while creating the custom pool. Please note that the structure must remain alive and unchanged for the whole lifetime of the VmaPool, not only while creating it, as no copy of the structure is made, but its original pointer is used for each allocation instead.

    -

    If you want to export all memory allocated by the library from certain memory types, also dedicated allocations or other allocations made from default pools, an alternative solution is to fill in VmaAllocatorCreateInfo::pTypeExternalMemoryHandleTypes. It should point to an array with VkExternalMemoryHandleTypeFlagsKHR to be automatically passed by the library through VkExportMemoryAllocateInfoKHR on each allocation made from a specific memory type. Please note that new versions of the library also support dedicated allocations created in custom pools.

    +

    If you want to attach VkExportMemoryAllocateInfoKHR or other structure to pNext chain of memory allocations made by the library:

    +

    You can create Custom memory pools for such allocations. Define and fill in your VkExportMemoryAllocateInfoKHR structure and attach it to VmaPoolCreateInfo::pMemoryAllocateNext while creating the custom pool. Please note that the structure must remain alive and unchanged for the whole lifetime of the VmaPool, not only while creating it, as no copy of the structure is made, but its original pointer is used for each allocation instead.

    +

    If you want to export all memory allocated by VMA from certain memory types, also dedicated allocations or other allocations made from default pools, an alternative solution is to fill in VmaAllocatorCreateInfo::pTypeExternalMemoryHandleTypes. It should point to an array with VkExternalMemoryHandleTypeFlagsKHR to be automatically passed by the library through VkExportMemoryAllocateInfoKHR on each allocation made from a specific memory type. Please note that new versions of the library also support dedicated allocations created in custom pools.

    You should not mix these two methods in a way that allows to apply both to the same memory type. Otherwise, VkExportMemoryAllocateInfoKHR structure would be attached twice to the pNext chain of VkMemoryAllocateInfo.

    Custom alignment

    Buffers or images exported to a different API like OpenGL may require a different alignment, higher than the one used by the library automatically, queried from functions like vkGetBufferMemoryRequirements. To impose such alignment:

    -

    It is recommended to create Custom memory pools for such allocations. Set VmaPoolCreateInfo::minAllocationAlignment member to the minimum alignment required for each allocation to be made out of this pool. The alignment actually used will be the maximum of this member and the alignment returned for the specific buffer or image from a function like vkGetBufferMemoryRequirements, which is called by VMA automatically.

    +

    You can create Custom memory pools for such allocations. Set VmaPoolCreateInfo::minAllocationAlignment member to the minimum alignment required for each allocation to be made out of this pool. The alignment actually used will be the maximum of this member and the alignment returned for the specific buffer or image from a function like vkGetBufferMemoryRequirements, which is called by VMA automatically.

    If you want to create a buffer with a specific minimum alignment out of default pools, use special function vmaCreateBufferWithAlignment(), which takes additional parameter minAlignment.

    -

    Note the problem of alignment affects only resources placed inside bigger VkDeviceMemory blocks and not dedicated allocations, as these, by definition, always have alignment = 0 because the resource is bound to the beginning of its dedicated block. Contrary to Direct3D 12, Vulkan doesn't have a concept of alignment of the entire memory block passed on its allocation.

    +

    Note the problem of alignment affects only resources placed inside bigger VkDeviceMemory blocks and not dedicated allocations, as these, by definition, always have alignment = 0 because the resource is bound to the beginning of its dedicated block. You can ensure that an allocation is created as dedicated by using VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT. Contrary to Direct3D 12, Vulkan doesn't have a concept of alignment of the entire memory block passed on its allocation.

    Extended allocation information

    If you want to rely on VMA to allocate your buffers and images inside larger memory blocks, but you need to know the size of the entire block and whether the allocation was made with its own dedicated memory, use function vmaGetAllocationInfo2() to retrieve extended allocation information in structure VmaAllocationInfo2.

    @@ -96,7 +98,7 @@ Extended allocation information
    diff --git a/docs/html/pages.html b/docs/html/pages.html index 923aab0..05a3a45 100644 --- a/docs/html/pages.html +++ b/docs/html/pages.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Related Pages + + @@ -29,7 +31,7 @@
    - + @@ -80,7 +82,7 @@ $(function() {
    diff --git a/docs/html/quick_start.html b/docs/html/quick_start.html index 80fd1bb..aa6416f 100644 --- a/docs/html/quick_start.html +++ b/docs/html/quick_start.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Quick start + + @@ -29,7 +31,7 @@
    - + @@ -78,8 +80,8 @@ $(function() {

    Project setup

    -

    Vulkan Memory Allocator comes in form of a "stb-style" single header file. You don't need to build it as a separate library project. You can add this file directly to your project and submit it to code repository next to your other source files.

    -

    "Single header" doesn't mean that everything is contained in C/C++ declarations, like it tends to be in case of inline functions or C++ templates. It means that implementation is bundled with interface in a single file and needs to be extracted using preprocessor macro. If you don't do it properly, you will get linker errors.

    +

    Vulkan Memory Allocator comes in form of a "stb-style" single header file. While you can pull the entire repository e.g. as Git module, there is also Cmake script provided, you don't need to build it as a separate library project. You can add file "vk_mem_alloc.h" directly to your project and submit it to code repository next to your other source files.

    +

    "Single header" doesn't mean that everything is contained in C/C++ declarations, like it tends to be in case of inline functions or C++ templates. It means that implementation is bundled with interface in a single file and needs to be extracted using preprocessor macro. If you don't do it properly, it will result in linker errors.

    To do it properly:

    1. Include "vk_mem_alloc.h" file in each CPP file where you want to use the library. This includes declarations of all members of the library.
    2. @@ -88,24 +90,26 @@ Project setup
      #define VMA_IMPLEMENTATION
      #include "vk_mem_alloc.h"
      -

      It may be a good idea to create dedicated CPP file just for this purpose.

      -

      This library includes header <vulkan/vulkan.h>, which in turn includes <windows.h> on Windows. If you need some specific macros defined before including these headers (like WIN32_LEAN_AND_MEAN or WINVER for Windows, VK_USE_PLATFORM_WIN32_KHR for Vulkan), you must define them before every #include of this library.

      -

      This library is written in C++, but has C-compatible interface. Thus you can include and use vk_mem_alloc.h in C or C++ code, but full implementation with VMA_IMPLEMENTATION macro must be compiled as C++, NOT as C. Some features of C++14 are used. STL containers, RTTI, or C++ exceptions are not used.

      +

    It may be a good idea to create dedicated CPP file just for this purpose, e.g. "VmaUsage.cpp".

    +

    This library includes header <vulkan/vulkan.h>, which in turn includes <windows.h> on Windows. If you need some specific macros defined before including these headers (like WIN32_LEAN_AND_MEAN or WINVER for Windows, VK_USE_PLATFORM_WIN32_KHR for Vulkan), you must define them before every #include of this library. It may be a good idea to create a dedicate header file for this purpose, e.g. "VmaUsage.h", that will be included in other source files instead of VMA header directly.

    +

    This library is written in C++, but has C-compatible interface. Thus, you can include and use "vk_mem_alloc.h" in C or C++ code, but full implementation with VMA_IMPLEMENTATION macro must be compiled as C++, NOT as C. Some features of C++14 are used and required. Features of C++20 are used optionally when available. Some headers of standard C and C++ library are used, but STL containers, RTTI, or C++ exceptions are not used.

    Initialization

    +

    VMA offers library interface in a style similar to Vulkan, with object handles like VmaAllocation, structures describing parameters of objects to be created like VmaAllocationCreateInfo, and errors codes returned from functions using VkResult type.

    +

    The first and the main object that needs to be created is VmaAllocator. It represents the initialization of the entire library. Only one such object should be created per VkDevice. You should create it at program startup, after VkDevice was created, and before any device memory allocator needs to be made. It must be destroyed before VkDevice is destroyed.

    At program startup:

      -
    1. Initialize Vulkan to have VkPhysicalDevice, VkDevice and VkInstance object.
    2. -
    3. Fill VmaAllocatorCreateInfo structure and create VmaAllocator object by calling vmaCreateAllocator().
    4. +
    5. Initialize Vulkan to have VkInstance, VkPhysicalDevice, VkDevice object.
    6. +
    7. Fill VmaAllocatorCreateInfo structure and call vmaCreateAllocator() to create VmaAllocator object.
    -

    Only members physicalDevice, device, instance are required. However, you should inform the library which Vulkan version do you use by setting VmaAllocatorCreateInfo::vulkanApiVersion and which extensions did you enable by setting VmaAllocatorCreateInfo::flags (like VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT for VK_KHR_buffer_device_address). Otherwise, VMA would use only features of Vulkan 1.0 core with no extensions.

    +

    Only members physicalDevice, device, instance are required. However, you should inform the library which Vulkan version do you use by setting VmaAllocatorCreateInfo::vulkanApiVersion and which extensions did you enable by setting VmaAllocatorCreateInfo::flags. Otherwise, VMA would use only features of Vulkan 1.0 core with no extensions. See below for details.

    Selecting Vulkan version

    VMA supports Vulkan version down to 1.0, for backward compatibility. If you want to use higher version, you need to inform the library about it. This is a two-step process.

    Step 1: Compile time. By default, VMA compiles with code supporting the highest Vulkan version found in the included <vulkan/vulkan.h> that is also supported by the library. If this is OK, you don't need to do anything. However, if you want to compile VMA as if only some lower Vulkan version was available, define macro VMA_VULKAN_VERSION before every #include "vk_mem_alloc.h". It should have decimal numeric value in form of ABBBCCC, where A = major, BBB = minor, CCC = patch Vulkan version. For example, to compile against Vulkan 1.2:

    #define VMA_VULKAN_VERSION 1002000 // Vulkan 1.2
    #include "vk_mem_alloc.h"
    -

    Step 2: Runtime. Even when compiled with higher Vulkan version available, VMA can use only features of a lower version, which is configurable during creation of the VmaAllocator object. By default, only Vulkan 1.0 is used. To initialize the allocator with support for higher Vulkan version, you need to set member VmaAllocatorCreateInfo::vulkanApiVersion to an appropriate value, e.g. using constants like VK_API_VERSION_1_2. See code sample below.

    +

    Step 2: Runtime. Even when compiled with higher Vulkan version available, VMA can use only features of a lower version, which is configurable during creation of the VmaAllocator object. By default, only Vulkan 1.0 is used. To initialize the allocator with support for higher Vulkan version, you need to set member VmaAllocatorCreateInfo::vulkanApiVersion to an appropriate value, e.g. using constants like VK_API_VERSION_1_2. See code sample below.

    Importing Vulkan functions

    You may need to configure importing Vulkan functions. There are 3 ways to do this:

    @@ -127,7 +131,26 @@ Importing Vulkan functions -

    Example for case 2:

    +

    +Enabling extensions

    +

    VMA can automatically use following Vulkan extensions. If you found them availeble on the selected physical device and you enabled them while creating VkInstance / VkDevice object, inform VMA about their availability by setting appropriate flags in VmaAllocatorCreateInfo::flags.

    + + + + + + + + + + + + + + + +
    Vulkan extension VMA flag
    VK_KHR_dedicated_allocation VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT
    VK_KHR_bind_memory2 VMA_ALLOCATOR_CREATE_KHR_BIND_MEMORY2_BIT
    VK_KHR_maintenance4 VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE4_BIT
    VK_EXT_memory_budget VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT
    VK_EXT_memory_priority VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT
    VK_AMD_device_coherent_memory VMA_ALLOCATOR_CREATE_AMD_DEVICE_COHERENT_MEMORY_BIT
    +

    Example with fetching pointers to Vulkan functions dynamically:

    #define VMA_STATIC_VULKAN_FUNCTIONS 0
    #define VMA_DYNAMIC_VULKAN_FUNCTIONS 1
    #include "vk_mem_alloc.h"
    @@ -139,6 +162,7 @@ Importing Vulkan functions
    vulkanFunctions.vkGetDeviceProcAddr = &vkGetDeviceProcAddr;
    VmaAllocatorCreateInfo allocatorCreateInfo = {};
    +
    allocatorCreateInfo.vulkanApiVersion = VK_API_VERSION_1_2;
    allocatorCreateInfo.physicalDevice = physicalDevice;
    allocatorCreateInfo.device = device;
    @@ -147,15 +171,26 @@ Importing Vulkan functions
    VmaAllocator allocator;
    vmaCreateAllocator(&allocatorCreateInfo, &allocator);
    +
    +
    // Entire program...
    +
    +
    // At the end, don't forget to:
    +
    VkResult vmaCreateAllocator(const VmaAllocatorCreateInfo *pCreateInfo, VmaAllocator *pAllocator)
    Creates VmaAllocator object.
    -
    Description of a Allocator to be created.
    Definition vk_mem_alloc.h:1002
    -
    VkPhysicalDevice physicalDevice
    Vulkan physical device.
    Definition vk_mem_alloc.h:1007
    -
    const VmaVulkanFunctions * pVulkanFunctions
    Pointers to Vulkan functions. Can be null.
    Definition vk_mem_alloc.h:1050
    -
    VkInstance instance
    Handle to Vulkan instance object.
    Definition vk_mem_alloc.h:1055
    -
    VkDevice device
    Vulkan device.
    Definition vk_mem_alloc.h:1010
    -
    uint32_t vulkanApiVersion
    Optional. The highest version of Vulkan that the application is designed to use.
    Definition vk_mem_alloc.h:1064
    +
    void vmaDestroyAllocator(VmaAllocator allocator)
    Destroys allocator object.
    +
    @ VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT
    Definition vk_mem_alloc.h:383
    +
    Description of a Allocator to be created.
    Definition vk_mem_alloc.h:1022
    +
    VkPhysicalDevice physicalDevice
    Vulkan physical device.
    Definition vk_mem_alloc.h:1027
    +
    VmaAllocatorCreateFlags flags
    Flags for created allocator. Use VmaAllocatorCreateFlagBits enum.
    Definition vk_mem_alloc.h:1024
    +
    const VmaVulkanFunctions * pVulkanFunctions
    Pointers to Vulkan functions. Can be null.
    Definition vk_mem_alloc.h:1070
    +
    VkInstance instance
    Handle to Vulkan instance object.
    Definition vk_mem_alloc.h:1075
    +
    VkDevice device
    Vulkan device.
    Definition vk_mem_alloc.h:1030
    +
    uint32_t vulkanApiVersion
    Optional. Vulkan version that the application uses.
    Definition vk_mem_alloc.h:1086
    Represents main object of this library initialized.
    -

    +

    +Other configuration options

    +

    There are additional configuration options available through preprocessor macros that you can define before including VMA header and through parameters passed in VmaAllocatorCreateInfo. They include a possibility to use your own callbacks for host memory allocations (VkAllocationCallbacks), callbacks for device memory allocations (instead of vkAllocateMemory, vkFreeMemory), or your custom VMA_ASSERT macro, among others. For more information, see: Configuration.

    +

    Resource allocation

    When you want to create a buffer or image:

      @@ -174,20 +209,19 @@ Resource allocation
      VmaAllocation 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:493
      -
      Parameters of new VmaAllocation.
      Definition vk_mem_alloc.h:1223
      -
      VmaMemoryUsage usage
      Intended usage of memory.
      Definition vk_mem_alloc.h:1231
      +
      @ VMA_MEMORY_USAGE_AUTO
      Definition vk_mem_alloc.h:510
      +
      Parameters of new VmaAllocation.
      Definition vk_mem_alloc.h:1245
      +
      VmaMemoryUsage usage
      Intended usage of memory.
      Definition vk_mem_alloc.h:1253
      Represents single memory allocation.
      -

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

      +

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

      vmaDestroyBuffer(allocator, buffer, allocation);
      -
      void vmaDestroyBuffer(VmaAllocator allocator, VkBuffer buffer, VmaAllocation allocation)
      Destroys Vulkan buffer and frees allocated memory.
      -
      void vmaDestroyAllocator(VmaAllocator allocator)
      Destroys allocator object.
      -
      +

      If you need to map the buffer, you must set flag VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT or VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT in VmaAllocationCreateInfo::flags. There are many additional parameters that can control the choice of memory type to be used for the allocation and other features. For more information, see documentation chapters: Choosing memory type, Memory mapping.

      + diff --git a/docs/html/resource_aliasing.html b/docs/html/resource_aliasing.html index 1458cd5..313501e 100644 --- a/docs/html/resource_aliasing.html +++ b/docs/html/resource_aliasing.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Resource aliasing (overlap) + + @@ -29,7 +31,7 @@ - + @@ -147,22 +149,22 @@ $(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:1223
      -
      VkMemoryPropertyFlags preferredFlags
      Flags that preferably should be set in a memory type chosen for an allocation.
      Definition vk_mem_alloc.h:1241
      +
      Parameters of new VmaAllocation.
      Definition vk_mem_alloc.h:1245
      +
      VkMemoryPropertyFlags preferredFlags
      Flags that preferably should be set in a memory type chosen for an allocation.
      Definition vk_mem_alloc.h:1263
      Represents single memory allocation.

      VMA also provides convenience functions that create a buffer or image and bind it to memory represented by an existing VmaAllocation: vmaCreateAliasingBuffer(), vmaCreateAliasingBuffer2(), vmaCreateAliasingImage(), vmaCreateAliasingImage2(). Versions with "2" offer additional parameter allocationLocalOffset.

      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:

      • Vulkan also allows to interpret contents of memory between aliasing resources consistently in some cases. See chapter 11.8. "Memory Aliasing" of Vulkan specification or VK_IMAGE_CREATE_ALIAS_BIT flag.
      • -
      • You can create more complex layout where different images and buffers are bound at different offsets inside one large allocation. For example, one can imagine a big texture used in some render passes, aliasing with a set of many small buffers used between in some further passes. To bind a resource at non-zero offset in an allocation, use vmaBindBufferMemory2() / vmaBindImageMemory2().
      • +
      • You can create more complex layout where different images and buffers are bound at different offsets inside one large allocation. For example, one can imagine a big texture used in some render passes, aliasing with a set of many small buffers used between in some further passes. To bind a resource at non-zero offset in an allocation, use vmaBindBufferMemory2() / vmaBindImageMemory2().
      • Before allocating memory for the resources you want to alias, check memoryTypeBits returned in memory requirements of each resource to make sure the bits overlap. Some GPUs may expose multiple memory types suitable e.g. only for buffers or images with COLOR_ATTACHMENT usage, so the sets of memory types supported by your resources may be disjoint. Aliasing them is not possible in that case.
      diff --git a/docs/html/search/all_0.html b/docs/html/search/all_0.html deleted file mode 100644 index bb9e364..0000000 --- a/docs/html/search/all_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_0.js b/docs/html/search/all_0.js index 7777224..d6d01c1 100644 --- a/docs/html/search/all_0.js +++ b/docs/html/search/all_0.js @@ -3,31 +3,35 @@ var searchData= ['additional_20considerations_0',['Additional considerations',['../virtual_allocator.html#virtual_allocator_additional_considerations',1,'']]], ['address_1',['Enabling buffer device address',['../enabling_buffer_device_address.html',1,'index']]], ['advanced_20data_20uploading_2',['Advanced data uploading',['../usage_patterns.html#usage_patterns_advanced_data_uploading',1,'']]], - ['algorithm_3',['algorithm',['../general_considerations.html#general_considerations_allocation_algorithm',1,'Allocation algorithm'],['../custom_memory_pools.html#linear_algorithm',1,'Linear allocation algorithm']]], + ['algorithm_3',['Algorithm',['../general_considerations.html#general_considerations_allocation_algorithm',1,'Allocation algorithm'],['../custom_memory_pools.html#linear_algorithm',1,'Linear allocation algorithm']]], ['aliasing_20overlap_4',['Resource aliasing (overlap)',['../resource_aliasing.html',1,'index']]], - ['alignment_5',['alignment',['../struct_vma_virtual_allocation_create_info.html#a9d19709872fc1904a105079e1c885821',1,'VmaVirtualAllocationCreateInfo::alignment'],['../opengl_interop.html#opengl_interop_custom_alignment',1,'Custom alignment']]], - ['alignment_20and_20units_6',['Alignment and units',['../virtual_allocator.html#virtual_allocator_alignment_and_units',1,'']]], - ['allocation_7',['allocation',['../group__group__alloc.html',1,'Memory allocation'],['../quick_start.html#quick_start_resource_allocation',1,'Resource allocation']]], - ['allocation_20algorithm_8',['allocation algorithm',['../general_considerations.html#general_considerations_allocation_algorithm',1,'Allocation algorithm'],['../custom_memory_pools.html#linear_algorithm',1,'Linear allocation algorithm']]], - ['allocation_20callbacks_9',['Device memory allocation callbacks',['../configuration.html#allocation_callbacks',1,'']]], - ['allocation_20information_10',['Extended allocation information',['../opengl_interop.html#opengl_interop_extended_allocation_information',1,'']]], - ['allocation_20names_11',['Allocation names',['../allocation_annotation.html#allocation_names',1,'']]], - ['allocation_20names_20and_20user_20data_12',['Allocation names and user data',['../allocation_annotation.html',1,'index']]], - ['allocation_20parameters_13',['Allocation parameters',['../virtual_allocator.html#virtual_allocator_allocation_parameters',1,'']]], - ['allocation_20user_20data_14',['Allocation user data',['../allocation_annotation.html#allocation_user_data',1,'']]], - ['allocationbytes_15',['allocationBytes',['../struct_vma_statistics.html#a21db06eba3422f87a2b4b4703d879c16',1,'VmaStatistics']]], - ['allocationcount_16',['allocationCount',['../struct_vma_statistics.html#ab0ff76e50f58f9f54b6f265e5bf5dde2',1,'VmaStatistics']]], - ['allocationinfo_17',['allocationInfo',['../struct_vma_allocation_info2.html#a315218ac1206a05026c95e06a8bbd6d5',1,'VmaAllocationInfo2']]], - ['allocations_18',['allocations',['../choosing_memory_type.html#choosing_memory_type_dedicated_allocations',1,'Dedicated allocations'],['../virtual_allocator.html#virtual_allocator_making_virtual_allocations',1,'Making virtual allocations']]], - ['allocationsizemax_19',['allocationSizeMax',['../struct_vma_detailed_statistics.html#a06b2add24eed3449a66ff151979a0201',1,'VmaDetailedStatistics']]], - ['allocationsizemin_20',['allocationSizeMin',['../struct_vma_detailed_statistics.html#a6fb397e7487e10f2a52e241577d2a2b8',1,'VmaDetailedStatistics']]], - ['allocationsmoved_21',['allocationsMoved',['../struct_vma_defragmentation_stats.html#aefeabf130022008eadd75999478af3f9',1,'VmaDefragmentationStats']]], - ['allocator_22',['allocator',['../configuration.html#custom_memory_allocator',1,'Custom host memory allocator'],['../group__group__virtual.html',1,'Virtual allocator'],['../virtual_allocator.html',1,'Virtual allocator'],['../index.html',1,'Vulkan Memory Allocator']]], - ['also_23',['See also',['../index.html#main_see_also',1,'']]], - ['and_20compatibility_24',['Versioning and compatibility',['../general_considerations.html#general_considerations_versioning_and_compatibility',1,'']]], - ['and_20invalidate_25',['Cache flush and invalidate',['../memory_mapping.html#memory_mapping_cache_control',1,'']]], - ['and_20preferred_20flags_26',['Required and preferred flags',['../choosing_memory_type.html#choosing_memory_type_required_preferred_flags',1,'']]], - ['and_20units_27',['Alignment and units',['../virtual_allocator.html#virtual_allocator_alignment_and_units',1,'']]], - ['and_20user_20data_28',['Allocation names and user data',['../allocation_annotation.html',1,'index']]], - ['at_20once_29',['Free-at-once',['../custom_memory_pools.html#linear_algorithm_free_at_once',1,'']]] + ['alignment_5',['alignment',['../struct_vma_virtual_allocation_create_info.html#a9d19709872fc1904a105079e1c885821',1,'VmaVirtualAllocationCreateInfo']]], + ['alignment_6',['Custom alignment',['../other_api_interop.html#opengl_interop_custom_alignment',1,'']]], + ['alignment_20and_20units_7',['Alignment and units',['../virtual_allocator.html#virtual_allocator_alignment_and_units',1,'']]], + ['allocation_8',['Memory allocation',['../group__group__alloc.html',1,'']]], + ['allocation_9',['Resource allocation',['../quick_start.html#quick_start_resource_allocation',1,'']]], + ['allocation_20algorithm_10',['Allocation algorithm',['../general_considerations.html#general_considerations_allocation_algorithm',1,'Allocation algorithm'],['../custom_memory_pools.html#linear_algorithm',1,'Linear allocation algorithm']]], + ['allocation_20callbacks_11',['Device memory allocation callbacks',['../configuration.html#allocation_callbacks',1,'']]], + ['allocation_20information_12',['Extended allocation information',['../other_api_interop.html#opengl_interop_extended_allocation_information',1,'']]], + ['allocation_20names_13',['Allocation names',['../allocation_annotation.html#allocation_names',1,'']]], + ['allocation_20names_20and_20user_20data_14',['Allocation names and user data',['../allocation_annotation.html',1,'index']]], + ['allocation_20parameters_15',['Allocation parameters',['../virtual_allocator.html#virtual_allocator_allocation_parameters',1,'']]], + ['allocation_20user_20data_16',['Allocation user data',['../allocation_annotation.html#allocation_user_data',1,'']]], + ['allocationbytes_17',['allocationBytes',['../struct_vma_statistics.html#a21db06eba3422f87a2b4b4703d879c16',1,'VmaStatistics']]], + ['allocationcount_18',['allocationCount',['../struct_vma_statistics.html#ab0ff76e50f58f9f54b6f265e5bf5dde2',1,'VmaStatistics']]], + ['allocationinfo_19',['allocationInfo',['../struct_vma_allocation_info2.html#a315218ac1206a05026c95e06a8bbd6d5',1,'VmaAllocationInfo2']]], + ['allocations_20',['Allocations',['../choosing_memory_type.html#choosing_memory_type_dedicated_allocations',1,'Dedicated allocations'],['../virtual_allocator.html#virtual_allocator_making_virtual_allocations',1,'Making virtual allocations']]], + ['allocationsizemax_21',['allocationSizeMax',['../struct_vma_detailed_statistics.html#a06b2add24eed3449a66ff151979a0201',1,'VmaDetailedStatistics']]], + ['allocationsizemin_22',['allocationSizeMin',['../struct_vma_detailed_statistics.html#a6fb397e7487e10f2a52e241577d2a2b8',1,'VmaDetailedStatistics']]], + ['allocationsmoved_23',['allocationsMoved',['../struct_vma_defragmentation_stats.html#aefeabf130022008eadd75999478af3f9',1,'VmaDefragmentationStats']]], + ['allocator_24',['Custom host memory allocator',['../configuration.html#custom_memory_allocator',1,'']]], + ['allocator_25',['allocator',['../group__group__virtual.html',1,'Virtual allocator'],['../virtual_allocator.html',1,'Virtual allocator']]], + ['allocator_26',['Vulkan Memory Allocator',['../index.html',1,'']]], + ['and_20compatibility_27',['Versioning and compatibility',['../general_considerations.html#general_considerations_versioning_and_compatibility',1,'']]], + ['and_20invalidate_28',['Cache flush and invalidate',['../memory_mapping.html#memory_mapping_cache_control',1,'']]], + ['and_20preferred_20flags_29',['Required and preferred flags',['../choosing_memory_type.html#choosing_memory_type_required_preferred_flags',1,'']]], + ['and_20units_30',['Alignment and units',['../virtual_allocator.html#virtual_allocator_alignment_and_units',1,'']]], + ['and_20user_20data_31',['Allocation names and user data',['../allocation_annotation.html',1,'index']]], + ['apis_32',['Interop with other graphics APIs',['../other_api_interop.html',1,'index']]], + ['at_20once_33',['Free-at-once',['../custom_memory_pools.html#linear_algorithm_free_at_once',1,'']]] ]; diff --git a/docs/html/search/all_1.html b/docs/html/search/all_1.html deleted file mode 100644 index 8989416..0000000 --- a/docs/html/search/all_1.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_1.js b/docs/html/search/all_1.js index 24d38a5..bdc116e 100644 --- a/docs/html/search/all_1.js +++ b/docs/html/search/all_1.js @@ -3,10 +3,12 @@ var searchData= ['block_0',['Creating virtual block',['../virtual_allocator.html#virtual_allocator_creating_virtual_block',1,'']]], ['blockbytes_1',['blockBytes',['../struct_vma_statistics.html#a2afbc1c7aa8ad7bbb8de06215ba7e5c4',1,'VmaStatistics']]], ['blockcount_2',['blockCount',['../struct_vma_statistics.html#a309179d5853a6a7cd534df497ee43957',1,'VmaStatistics']]], - ['blocksize_3',['blocksize',['../struct_vma_pool_create_info.html#aa4265160536cdb9be821b7686c16c676',1,'VmaPoolCreateInfo::blockSize'],['../struct_vma_allocation_info2.html#aae839de16b3a62cc42c69df378e8e3a2',1,'VmaAllocationInfo2::blockSize']]], - ['budget_4',['budget',['../struct_vma_budget.html#ab82e1d1754c2d210d0bdf90220bc6cdd',1,'VmaBudget::budget'],['../staying_within_budget.html#staying_within_budget_querying_for_budget',1,'Querying for budget'],['../staying_within_budget.html',1,'Staying within budget']]], - ['buffer_5',['Ring buffer',['../custom_memory_pools.html#linear_algorithm_ring_buffer',1,'']]], - ['buffer_20device_20address_6',['Enabling buffer device address',['../enabling_buffer_device_address.html',1,'index']]], - ['bytesfreed_7',['bytesFreed',['../struct_vma_defragmentation_stats.html#ab0cb9ac0dbc106c77e384ea676422f28',1,'VmaDefragmentationStats']]], - ['bytesmoved_8',['bytesMoved',['../struct_vma_defragmentation_stats.html#a36f9d5df2a10ba2a36b16e126d60572d',1,'VmaDefragmentationStats']]] + ['blocksize_3',['blockSize',['../struct_vma_pool_create_info.html#aa4265160536cdb9be821b7686c16c676',1,'VmaPoolCreateInfo::blockSize'],['../struct_vma_allocation_info2.html#aae839de16b3a62cc42c69df378e8e3a2',1,'VmaAllocationInfo2::blockSize']]], + ['budget_4',['budget',['../struct_vma_budget.html#ab82e1d1754c2d210d0bdf90220bc6cdd',1,'VmaBudget']]], + ['budget_5',['Querying for budget',['../staying_within_budget.html#staying_within_budget_querying_for_budget',1,'']]], + ['budget_6',['Staying within budget',['../staying_within_budget.html',1,'index']]], + ['buffer_7',['Ring buffer',['../custom_memory_pools.html#linear_algorithm_ring_buffer',1,'']]], + ['buffer_20device_20address_8',['Enabling buffer device address',['../enabling_buffer_device_address.html',1,'index']]], + ['bytesfreed_9',['bytesFreed',['../struct_vma_defragmentation_stats.html#ab0cb9ac0dbc106c77e384ea676422f28',1,'VmaDefragmentationStats']]], + ['bytesmoved_10',['bytesMoved',['../struct_vma_defragmentation_stats.html#a36f9d5df2a10ba2a36b16e126d60572d',1,'VmaDefragmentationStats']]] ]; diff --git a/docs/html/search/all_10.html b/docs/html/search/all_10.html deleted file mode 100644 index a7c1f9c..0000000 --- a/docs/html/search/all_10.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_11.html b/docs/html/search/all_11.html deleted file mode 100644 index 8f86146..0000000 --- a/docs/html/search/all_11.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_11.js b/docs/html/search/all_11.js index 7cd0826..9b7390a 100644 --- a/docs/html/search/all_11.js +++ b/docs/html/search/all_11.js @@ -1,15 +1,16 @@ var searchData= [ ['safety_0',['Thread safety',['../general_considerations.html#general_considerations_thread_safety',1,'']]], - ['see_20also_1',['See also',['../index.html#main_see_also',1,'']]], - ['selecting_20vulkan_20version_2',['Selecting Vulkan version',['../quick_start.html#quick_start_initialization_selecting_vulkan_version',1,'']]], - ['setup_3',['Project setup',['../quick_start.html#quick_start_project_setup',1,'']]], - ['size_4',['size',['../struct_vma_allocation_info.html#aac76d113a6a5ccbb09fea00fb25fd18f',1,'VmaAllocationInfo::size'],['../struct_vma_virtual_block_create_info.html#a670ab8c6a6e822f3c36781d79e8824e9',1,'VmaVirtualBlockCreateInfo::size'],['../struct_vma_virtual_allocation_create_info.html#aae08752b86817abd0d944c6025dc603e',1,'VmaVirtualAllocationCreateInfo::size'],['../struct_vma_virtual_allocation_info.html#afb6d6bd0a6813869ea0842048d40aa2b',1,'VmaVirtualAllocationInfo::size']]], - ['srcallocation_5',['srcAllocation',['../struct_vma_defragmentation_move.html#a25aa1bb64efc507a49c6cbc50689f862',1,'VmaDefragmentationMove']]], - ['stack_6',['stack',['../custom_memory_pools.html#linear_algorithm_double_stack',1,'Double stack'],['../custom_memory_pools.html#linear_algorithm_stack',1,'Stack']]], - ['staging_20copy_20for_20upload_7',['Staging copy for upload',['../usage_patterns.html#usage_patterns_staging_copy_upload',1,'']]], - ['start_8',['Quick start',['../quick_start.html',1,'index']]], - ['statistics_9',['statistics',['../statistics.html#statistics_numeric_statistics',1,'Numeric statistics'],['../struct_vma_detailed_statistics.html#a13efbdb35bd1291191d275f43e96d360',1,'VmaDetailedStatistics::statistics'],['../struct_vma_budget.html#a6d15ab3a798fd62d9efa3a1e1f83bf54',1,'VmaBudget::statistics'],['../group__group__stats.html',1,'Statistics'],['../statistics.html',1,'Statistics'],['../virtual_allocator.html#virtual_allocator_statistics',1,'Statistics']]], - ['staying_20within_20budget_10',['Staying within budget',['../staying_within_budget.html',1,'index']]], - ['supported_11',['Features not supported',['../general_considerations.html#general_considerations_features_not_supported',1,'']]] + ['selecting_20vulkan_20version_1',['Selecting Vulkan version',['../quick_start.html#quick_start_initialization_selecting_vulkan_version',1,'']]], + ['setup_2',['Project setup',['../quick_start.html#quick_start_project_setup',1,'']]], + ['size_3',['size',['../struct_vma_allocation_info.html#aac76d113a6a5ccbb09fea00fb25fd18f',1,'VmaAllocationInfo::size'],['../struct_vma_virtual_block_create_info.html#a670ab8c6a6e822f3c36781d79e8824e9',1,'VmaVirtualBlockCreateInfo::size'],['../struct_vma_virtual_allocation_create_info.html#aae08752b86817abd0d944c6025dc603e',1,'VmaVirtualAllocationCreateInfo::size'],['../struct_vma_virtual_allocation_info.html#afb6d6bd0a6813869ea0842048d40aa2b',1,'VmaVirtualAllocationInfo::size']]], + ['srcallocation_4',['srcAllocation',['../struct_vma_defragmentation_move.html#a25aa1bb64efc507a49c6cbc50689f862',1,'VmaDefragmentationMove']]], + ['stack_5',['Stack',['../custom_memory_pools.html#linear_algorithm_double_stack',1,'Double stack'],['../custom_memory_pools.html#linear_algorithm_stack',1,'Stack']]], + ['staging_20copy_20for_20upload_6',['Staging copy for upload',['../usage_patterns.html#usage_patterns_staging_copy_upload',1,'']]], + ['start_7',['Quick start',['../quick_start.html',1,'index']]], + ['statistics_8',['Numeric statistics',['../statistics.html#statistics_numeric_statistics',1,'']]], + ['statistics_9',['statistics',['../struct_vma_detailed_statistics.html#a13efbdb35bd1291191d275f43e96d360',1,'VmaDetailedStatistics::statistics'],['../struct_vma_budget.html#a6d15ab3a798fd62d9efa3a1e1f83bf54',1,'VmaBudget::statistics']]], + ['statistics_10',['Statistics',['../group__group__stats.html',1,'Statistics'],['../statistics.html',1,'Statistics'],['../virtual_allocator.html#virtual_allocator_statistics',1,'Statistics']]], + ['staying_20within_20budget_11',['Staying within budget',['../staying_within_budget.html',1,'index']]], + ['supported_12',['Features not supported',['../general_considerations.html#general_considerations_features_not_supported',1,'']]] ]; diff --git a/docs/html/search/all_12.js b/docs/html/search/all_12.js index 1ccf7a2..afa2019 100644 --- a/docs/html/search/all_12.js +++ b/docs/html/search/all_12.js @@ -1,7 +1,7 @@ var searchData= [ - ['table_20of_20contents_0',['Table of contents',['../index.html#main_table_of_contents',1,'']]], - ['thread_20safety_1',['Thread safety',['../general_considerations.html#general_considerations_thread_safety',1,'']]], + ['thread_20safety_0',['Thread safety',['../general_considerations.html#general_considerations_thread_safety',1,'']]], + ['to_20use_20custom_20pools_1',['When not to use custom pools',['../custom_memory_pools.html#custom_memory_pools_when_not_use',1,'']]], ['to_20vulkan_20functions_2',['Pointers to Vulkan functions',['../configuration.html#config_Vulkan_functions',1,'']]], ['total_3',['total',['../struct_vma_total_statistics.html#a76f1935f7101883f5bb2a03b6c5649d2',1,'VmaTotalStatistics']]], ['type_4',['Choosing memory type',['../choosing_memory_type.html',1,'index']]], diff --git a/docs/html/search/all_13.js b/docs/html/search/all_13.js index 2f6b4bf..0281382 100644 --- a/docs/html/search/all_13.js +++ b/docs/html/search/all_13.js @@ -6,8 +6,12 @@ var searchData= ['unusedrangesizemin_3',['unusedRangeSizeMin',['../struct_vma_detailed_statistics.html#a830eda847ed735d0e91da25cfcf797a4',1,'VmaDetailedStatistics']]], ['upload_4',['Staging copy for upload',['../usage_patterns.html#usage_patterns_staging_copy_upload',1,'']]], ['uploading_5',['Advanced data uploading',['../usage_patterns.html#usage_patterns_advanced_data_uploading',1,'']]], - ['usage_6',['usage',['../staying_within_budget.html#staying_within_budget_controlling_memory_usage',1,'Controlling memory usage'],['../debugging_memory_usage.html',1,'Debugging incorrect memory usage'],['../struct_vma_budget.html#a84dd1ecca8b0110259eb206dbadb11f6',1,'VmaBudget::usage'],['../struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910',1,'VmaAllocationCreateInfo::usage'],['../choosing_memory_type.html#choosing_memory_type_usage',1,'Usage'],['../vk_ext_memory_priority.html#vk_ext_memory_priority_usage',1,'Usage'],['../vk_amd_device_coherent_memory.html#vk_amd_device_coherent_memory_usage',1,'Usage'],['../enabling_buffer_device_address.html#enabling_buffer_device_address_usage',1,'Usage']]], - ['usage_20patterns_7',['Recommended usage patterns',['../usage_patterns.html',1,'index']]], - ['use_20cases_8',['Other use cases',['../usage_patterns.html#usage_patterns_other_use_cases',1,'']]], - ['user_20data_9',['user data',['../allocation_annotation.html',1,'Allocation names and user data'],['../allocation_annotation.html#allocation_user_data',1,'Allocation user data']]] + ['usage_6',['Controlling memory usage',['../staying_within_budget.html#staying_within_budget_controlling_memory_usage',1,'']]], + ['usage_7',['usage',['../debugging_memory_usage.html',1,'Debugging incorrect memory usage'],['../struct_vma_budget.html#a84dd1ecca8b0110259eb206dbadb11f6',1,'VmaBudget::usage'],['../struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910',1,'VmaAllocationCreateInfo::usage']]], + ['usage_8',['Usage',['../choosing_memory_type.html#choosing_memory_type_usage',1,'Usage'],['../vk_ext_memory_priority.html#vk_ext_memory_priority_usage',1,'Usage'],['../vk_amd_device_coherent_memory.html#vk_amd_device_coherent_memory_usage',1,'Usage'],['../enabling_buffer_device_address.html#enabling_buffer_device_address_usage',1,'Usage']]], + ['usage_20patterns_9',['Recommended usage patterns',['../usage_patterns.html',1,'index']]], + ['use_20cases_10',['Other use cases',['../usage_patterns.html#usage_patterns_other_use_cases',1,'']]], + ['use_20custom_20pools_11',['When not to use custom pools',['../custom_memory_pools.html#custom_memory_pools_when_not_use',1,'']]], + ['user_20data_12',['Allocation names and user data',['../allocation_annotation.html',1,'index']]], + ['user_20data_13',['Allocation user data',['../allocation_annotation.html#allocation_user_data',1,'']]] ]; diff --git a/docs/html/search/all_14.js b/docs/html/search/all_14.js index 0cfc292..f88bc8f 100644 --- a/docs/html/search/all_14.js +++ b/docs/html/search/all_14.js @@ -4,208 +4,212 @@ var searchData= ['version_1',['Selecting Vulkan version',['../quick_start.html#quick_start_initialization_selecting_vulkan_version',1,'']]], ['versioning_20and_20compatibility_2',['Versioning and compatibility',['../general_considerations.html#general_considerations_versioning_and_compatibility',1,'']]], ['virtual_20allocations_3',['Making virtual allocations',['../virtual_allocator.html#virtual_allocator_making_virtual_allocations',1,'']]], - ['virtual_20allocator_4',['virtual allocator',['../virtual_allocator.html',1,'Virtual allocator'],['../group__group__virtual.html',1,'Virtual allocator']]], + ['virtual_20allocator_4',['Virtual allocator',['../group__group__virtual.html',1,'Virtual allocator'],['../virtual_allocator.html',1,'Virtual allocator']]], ['virtual_20block_5',['Creating virtual block',['../virtual_allocator.html#virtual_allocator_creating_virtual_block',1,'']]], ['vk_5famd_5fdevice_5fcoherent_5fmemory_6',['VK_AMD_device_coherent_memory',['../vk_amd_device_coherent_memory.html',1,'index']]], - ['vk_5fext_5fmemory_5fpriority_7',['VK_EXT_memory_priority',['../vk_ext_memory_priority.html',1,'index']]], - ['vk_5fkhr_5fdedicated_5fallocation_8',['VK_KHR_dedicated_allocation',['../vk_khr_dedicated_allocation.html',1,'index']]], - ['vk_5fmem_5falloc_2eh_9',['vk_mem_alloc.h',['../vk__mem__alloc_8h.html',1,'']]], - ['vkallocatememory_10',['vkAllocateMemory',['../struct_vma_vulkan_functions.html#a2943bf99dfd784a0e8f599d987e22e6c',1,'VmaVulkanFunctions']]], - ['vkbindbuffermemory_11',['vkBindBufferMemory',['../struct_vma_vulkan_functions.html#a94fc4f3a605d9880bb3c0ba2c2fc80b2',1,'VmaVulkanFunctions']]], - ['vkbindbuffermemory2khr_12',['vkBindBufferMemory2KHR',['../struct_vma_vulkan_functions.html#a0c4907235aab9df2767b79836afa2dc9',1,'VmaVulkanFunctions']]], - ['vkbindimagememory_13',['vkBindImageMemory',['../struct_vma_vulkan_functions.html#a1338d96a128a5ade648b8d934907c637',1,'VmaVulkanFunctions']]], - ['vkbindimagememory2khr_14',['vkBindImageMemory2KHR',['../struct_vma_vulkan_functions.html#ab95aaa73ab8a3fe9fd3daaaec4e0b2bf',1,'VmaVulkanFunctions']]], - ['vkcmdcopybuffer_15',['vkCmdCopyBuffer',['../struct_vma_vulkan_functions.html#ae5c0db8c89a3b82593dc16aa6a49fa3a',1,'VmaVulkanFunctions']]], - ['vkcreatebuffer_16',['vkCreateBuffer',['../struct_vma_vulkan_functions.html#ae8084315a25006271a2edfc3a447519f',1,'VmaVulkanFunctions']]], - ['vkcreateimage_17',['vkCreateImage',['../struct_vma_vulkan_functions.html#a23ebe70be515b9b5010a1d691200e325',1,'VmaVulkanFunctions']]], - ['vkdestroybuffer_18',['vkDestroyBuffer',['../struct_vma_vulkan_functions.html#a7e054606faddb07f0e8556f3ed317d45',1,'VmaVulkanFunctions']]], - ['vkdestroyimage_19',['vkDestroyImage',['../struct_vma_vulkan_functions.html#a90b898227039b1dcb3520f6e91f09ffa',1,'VmaVulkanFunctions']]], - ['vkflushmappedmemoryranges_20',['vkFlushMappedMemoryRanges',['../struct_vma_vulkan_functions.html#a33c322f4c4ad2810f8a9c97a277572f9',1,'VmaVulkanFunctions']]], - ['vkfreememory_21',['vkFreeMemory',['../struct_vma_vulkan_functions.html#a4c658701778564d62034255b5dda91b4',1,'VmaVulkanFunctions']]], - ['vkgetbuffermemoryrequirements_22',['vkGetBufferMemoryRequirements',['../struct_vma_vulkan_functions.html#a5b92901df89a4194b0d12f6071d4d143',1,'VmaVulkanFunctions']]], - ['vkgetbuffermemoryrequirements2khr_23',['vkGetBufferMemoryRequirements2KHR',['../struct_vma_vulkan_functions.html#a9d8d1b05d2b1e7e1d9b27f6f585acf9c',1,'VmaVulkanFunctions']]], - ['vkgetdevicebuffermemoryrequirements_24',['vkGetDeviceBufferMemoryRequirements',['../struct_vma_vulkan_functions.html#a3d6cc5633bdbfec728213d6dfae7d413',1,'VmaVulkanFunctions']]], - ['vkgetdeviceimagememoryrequirements_25',['vkGetDeviceImageMemoryRequirements',['../struct_vma_vulkan_functions.html#afd4780c565028cd15498528883f51fc6',1,'VmaVulkanFunctions']]], - ['vkgetdeviceprocaddr_26',['vkGetDeviceProcAddr',['../struct_vma_vulkan_functions.html#ac383ab9af127e5e136622fa4ebea9e57',1,'VmaVulkanFunctions']]], - ['vkgetimagememoryrequirements_27',['vkGetImageMemoryRequirements',['../struct_vma_vulkan_functions.html#a475f6f49f8debe4d10800592606d53f4',1,'VmaVulkanFunctions']]], - ['vkgetimagememoryrequirements2khr_28',['vkGetImageMemoryRequirements2KHR',['../struct_vma_vulkan_functions.html#a9cdcdc1e2b2ea7c571f7d27e30ba6875',1,'VmaVulkanFunctions']]], - ['vkgetinstanceprocaddr_29',['vkGetInstanceProcAddr',['../struct_vma_vulkan_functions.html#a3eafa102f5f8915f093f40675636b849',1,'VmaVulkanFunctions']]], - ['vkgetphysicaldevicememoryproperties_30',['vkGetPhysicalDeviceMemoryProperties',['../struct_vma_vulkan_functions.html#a60d25c33bba06bb8592e6875cbaa9830',1,'VmaVulkanFunctions']]], - ['vkgetphysicaldevicememoryproperties2khr_31',['vkGetPhysicalDeviceMemoryProperties2KHR',['../struct_vma_vulkan_functions.html#a0d992896e6ffcf92b9d7ea049fa5c445',1,'VmaVulkanFunctions']]], - ['vkgetphysicaldeviceproperties_32',['vkGetPhysicalDeviceProperties',['../struct_vma_vulkan_functions.html#a77b7a74082823e865dd6546623468f96',1,'VmaVulkanFunctions']]], - ['vkinvalidatemappedmemoryranges_33',['vkInvalidateMappedMemoryRanges',['../struct_vma_vulkan_functions.html#a5c1093bc32386a8060c37c9f282078a1',1,'VmaVulkanFunctions']]], - ['vkmapmemory_34',['vkMapMemory',['../struct_vma_vulkan_functions.html#ab5c1f38dea3a2cf00dc9eb4f57218c49',1,'VmaVulkanFunctions']]], - ['vkunmapmemory_35',['vkUnmapMemory',['../struct_vma_vulkan_functions.html#acc798589736f0becb317fc2196c1d8b9',1,'VmaVulkanFunctions']]], - ['vma_5fallocation_5fcreate_5fcan_5falias_5fbit_36',['VMA_ALLOCATION_CREATE_CAN_ALIAS_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597afb0ee060cd733aaa5e249704ff589ad6',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fdedicated_5fmemory_5fbit_37',['VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a3fc311d855c2ff53f1090ef5c722b38f',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fdont_5fbind_5fbit_38',['VMA_ALLOCATION_CREATE_DONT_BIND_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a2310568c62208af432724305fe29ccea',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum_39',['VMA_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597ae5633ec569f4899cf8f29e7385b2f882',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fhost_5faccess_5fallow_5ftransfer_5finstead_5fbit_40',['VMA_ALLOCATION_CREATE_HOST_ACCESS_ALLOW_TRANSFER_INSTEAD_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a11337f96eacf34c1016c339eac165cad',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fhost_5faccess_5frandom_5fbit_41',['VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597add61238d98e20917b9a06c617763f492',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fhost_5faccess_5fsequential_5fwrite_5fbit_42',['VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a9be224df3bfc1cfa06203aed689a30c5',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fmapped_5fbit_43',['VMA_ALLOCATION_CREATE_MAPPED_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a11da372cc3a82931c5e5d6146cd9dd1f',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fnever_5fallocate_5fbit_44',['VMA_ALLOCATION_CREATE_NEVER_ALLOCATE_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a89759603401014eb325eb22a3839f2ff',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fstrategy_5fbest_5ffit_5fbit_45',['VMA_ALLOCATION_CREATE_STRATEGY_BEST_FIT_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a839826775c62319466441f86496f036d',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fstrategy_5ffirst_5ffit_5fbit_46',['VMA_ALLOCATION_CREATE_STRATEGY_FIRST_FIT_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a33eb2052674f3ad92386c714a65fb777',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fstrategy_5fmask_47',['VMA_ALLOCATION_CREATE_STRATEGY_MASK',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a8e16845d81ae3d27c47106d4770d5c7e',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_48',['VMA_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a8af1210cf591784afa026d94998f735d',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_49',['VMA_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a8099acedc0d04cdccaaddcfe37fd227d',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_50',['VMA_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a0729e932b7ea170e3a128cad96c5cf6d',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fupper_5faddress_5fbit_51',['VMA_ALLOCATION_CREATE_UPPER_ADDRESS_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a42ba3a2d2c7117953210b7c3ef8da0df',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fuser_5fdata_5fcopy_5fstring_5fbit_52',['VMA_ALLOCATION_CREATE_USER_DATA_COPY_STRING_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597aa6f24f821cd6a7c5e4a443f7bf59c520',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fwithin_5fbudget_5fbit_53',['VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597ab8b1764f3e9022368e440c057783b92d',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5famd_5fdevice_5fcoherent_5fmemory_5fbit_54',['VMA_ALLOCATOR_CREATE_AMD_DEVICE_COHERENT_MEMORY_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca2acce4886d8078552efa38878413970f',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fbuffer_5fdevice_5faddress_5fbit_55',['VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca5f1b28b0414319d1687e1f2b30ab0089',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fext_5fmemory_5fbudget_5fbit_56',['VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca4d4687863f7bd4b418c6006dc04400b0',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fext_5fmemory_5fpriority_5fbit_57',['VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7caffdd7a5169be3dbd7cbf6b3619e4f78a',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fexternally_5fsynchronized_5fbit_58',['VMA_ALLOCATOR_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca4816ddaed324ba110172ca608a20f29d',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fflag_5fbits_5fmax_5fenum_59',['VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7cae4d5ad929caba5f23eb502b13bd5286c',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fkhr_5fbind_5fmemory2_5fbit_60',['VMA_ALLOCATOR_CREATE_KHR_BIND_MEMORY2_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca8fb75bf07cd184ab903596295e863dee',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fkhr_5fdedicated_5fallocation_5fbit_61',['VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7cace7da7cc6e71a625dfa763c55a597878',1,'vk_mem_alloc.h']]], - ['vma_5fbind_5fmemory2_62',['VMA_BIND_MEMORY2',['../vk__mem__alloc_8h.html#a88bef97f86d70a34a4c0746e09a2680d',1,'vk_mem_alloc.h']]], - ['vma_5fbuffer_5fdevice_5faddress_63',['VMA_BUFFER_DEVICE_ADDRESS',['../vk__mem__alloc_8h.html#a7f9d5e71b70dd1a137c303a8a8262c10',1,'vk_mem_alloc.h']]], - ['vma_5fdedicated_5fallocation_64',['VMA_DEDICATED_ALLOCATION',['../vk__mem__alloc_8h.html#af7b860e63b96d11e44ae8587ba06bbf4',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5fbalanced_5fbit_65',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50caec35a4138111605a6ff32ca61aa871b6',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5fextensive_5fbit_66',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cae45a9469e5337731627758671741e412',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5ffast_5fbit_67',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5ffull_5fbit_68',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cafa162eac5be800bcdd4011427a71156d',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5fmask_69',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cabcbbdb3bfd53c4c3ab4eaeb5fd4894e9',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5fbits_5fmax_5fenum_70',['VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cab87ec33154803bfeb5ac2b379f1d6a97',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fmove_5foperation_5fcopy_71',['VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad4a06ac46c4cb1c67b0ebc1edfab9f18',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fmove_5foperation_5fdestroy_72',['VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257a9786f8492a9be2c03bd26395e352ab85',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fmove_5foperation_5fignore_73',['VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad25bc6f816b226b4fd5170e845f218d2',1,'vk_mem_alloc.h']]], - ['vma_5fextends_5fvk_5fstruct_74',['vma_extends_vk_struct',['../struct_vma_pool_create_info.html#abf71afe846790f72d1860e0afb12b883',1,'VmaPoolCreateInfo::VMA_EXTENDS_VK_STRUCT()'],['../vk__mem__alloc_8h.html#a254293260c1bd97d15ee5987bb694b21',1,'VMA_EXTENDS_VK_STRUCT: vk_mem_alloc.h']]], - ['vma_5fmemory_5fbudget_75',['VMA_MEMORY_BUDGET',['../vk__mem__alloc_8h.html#a05decf1cf4ebf767beba7acca6c1ec3a',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fauto_76',['VMA_MEMORY_USAGE_AUTO',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fauto_5fprefer_5fdevice_77',['VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccae2adb696d6a73c18bb20c23666661327',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fauto_5fprefer_5fhost_78',['VMA_MEMORY_USAGE_AUTO_PREFER_HOST',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9b422585242160b8ed3418310ee6664d',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fcpu_5fcopy_79',['VMA_MEMORY_USAGE_CPU_COPY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca416a444d4d0fc20067c3f76f32ff2500',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fcpu_5fonly_80',['VMA_MEMORY_USAGE_CPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca40bdf4cddeffeb12f43d45ca1286e0a5',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fcpu_5fto_5fgpu_81',['VMA_MEMORY_USAGE_CPU_TO_GPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9066b52c5a7079bb74a69aaf8b92ff67',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fgpu_5flazily_5fallocated_82',['VMA_MEMORY_USAGE_GPU_LAZILY_ALLOCATED',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca835333d9072db63a653818030e17614d',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fgpu_5fonly_83',['VMA_MEMORY_USAGE_GPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccac6b5dc1432d88647aa4cd456246eadf7',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fgpu_5fto_5fcpu_84',['VMA_MEMORY_USAGE_GPU_TO_CPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca7b586d2fdaf82a463b58f581ed72be27',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fmax_5fenum_85',['VMA_MEMORY_USAGE_MAX_ENUM',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca091e69437ef693e8d0d287f1c719ba6e',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5funknown_86',['VMA_MEMORY_USAGE_UNKNOWN',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccaf50d27e34e0925cf3a63db8c839121dd',1,'vk_mem_alloc.h']]], - ['vma_5fpool_5fcreate_5falgorithm_5fmask_87',['VMA_POOL_CREATE_ALGORITHM_MASK',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7af4d270f8f42517a0f70037ceb6ac1d9c',1,'vk_mem_alloc.h']]], - ['vma_5fpool_5fcreate_5fflag_5fbits_5fmax_5fenum_88',['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_89',['VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a9f1a499508a8edb4e8ba40aa0290a3d2',1,'vk_mem_alloc.h']]], - ['vma_5fpool_5fcreate_5flinear_5falgorithm_5fbit_90',['VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a13c8a444197c67866be9cb05599fc726',1,'vk_mem_alloc.h']]], - ['vma_5fstats_5fstring_5fenabled_91',['VMA_STATS_STRING_ENABLED',['../vk__mem__alloc_8h.html#ae25f0d55fd91cb166f002b63244800e1',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum_92',['VMA_VIRTUAL_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac1163c03ea837fa663462dc286d6a1a9',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmask_93',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MASK',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac5b5e45c335368d18df59c9f27df17e3',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_94',['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_95',['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_96',['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_97',['VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a9524a329a55b5ec390d57d90b67ad78e',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fblock_5fcreate_5falgorithm_5fmask_98',['VMA_VIRTUAL_BLOCK_CREATE_ALGORITHM_MASK',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaaf9487467136e1a9e371894dc3a7c4844',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fblock_5fcreate_5fflag_5fbits_5fmax_5fenum_99',['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_100',['VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaae6423e2fa2f3c9211b21c819e3f10f96',1,'vk_mem_alloc.h']]], - ['vmaallocatememory_101',['vmaAllocateMemory',['../group__group__alloc.html#gabf28077dbf82d0908b8acbe8ee8dd9b8',1,'vk_mem_alloc.h']]], - ['vmaallocatememoryforbuffer_102',['vmaAllocateMemoryForBuffer',['../group__group__alloc.html#ga7fdf64415b6c3d83c454f28d2c53df7b',1,'vk_mem_alloc.h']]], - ['vmaallocatememoryforimage_103',['vmaAllocateMemoryForImage',['../group__group__alloc.html#ga0faa3f9e5fb233d29d1e00390650febb',1,'vk_mem_alloc.h']]], - ['vmaallocatememorypages_104',['vmaAllocateMemoryPages',['../group__group__alloc.html#gad37e82e492b3de38fc3f4cffd9ad0ae1',1,'vk_mem_alloc.h']]], - ['vmaallocation_105',['VmaAllocation',['../struct_vma_allocation.html',1,'']]], - ['vmaallocationcreateflagbits_106',['vmaallocationcreateflagbits',['../group__group__alloc.html#gad9889c10c798b040d59c92f257cae597',1,'VmaAllocationCreateFlagBits: vk_mem_alloc.h'],['../group__group__alloc.html#ga4fceecc301f4064dc808d3cd6c038941',1,'VmaAllocationCreateFlagBits: vk_mem_alloc.h']]], - ['vmaallocationcreateflags_107',['VmaAllocationCreateFlags',['../group__group__alloc.html#ga5225e5e11f8376f6a31a1791f3d6e817',1,'vk_mem_alloc.h']]], - ['vmaallocationcreateinfo_108',['vmaallocationcreateinfo',['../struct_vma_allocation_create_info.html',1,'VmaAllocationCreateInfo'],['../group__group__alloc.html#ga3bf110892ea2fb4649fedb68488d026a',1,'VmaAllocationCreateInfo: vk_mem_alloc.h']]], - ['vmaallocationinfo_109',['vmaallocationinfo',['../struct_vma_allocation_info.html',1,'VmaAllocationInfo'],['../group__group__alloc.html#ga1cf7774606721026a68aabe3af2e5b50',1,'VmaAllocationInfo: vk_mem_alloc.h']]], - ['vmaallocationinfo2_110',['vmaallocationinfo2',['../struct_vma_allocation_info2.html',1,'VmaAllocationInfo2'],['../group__group__alloc.html#ga25ede29f830f326b8572a18ce879bf64',1,'VmaAllocationInfo2: vk_mem_alloc.h']]], - ['vmaallocator_111',['VmaAllocator',['../struct_vma_allocator.html',1,'']]], - ['vmaallocatorcreateflagbits_112',['vmaallocatorcreateflagbits',['../group__group__init.html#ga4f87c9100d154a65a4ad495f7763cf7c',1,'VmaAllocatorCreateFlagBits: vk_mem_alloc.h'],['../group__group__init.html#gafd73b95e737ee7e76f827cb5472f559f',1,'VmaAllocatorCreateFlagBits: vk_mem_alloc.h']]], - ['vmaallocatorcreateflags_113',['VmaAllocatorCreateFlags',['../group__group__init.html#gacfe6863e160722c2c1bbcf7573fddc4d',1,'vk_mem_alloc.h']]], - ['vmaallocatorcreateinfo_114',['vmaallocatorcreateinfo',['../struct_vma_allocator_create_info.html',1,'VmaAllocatorCreateInfo'],['../group__group__init.html#gaad9652301d33759b83e52d4f3605a14a',1,'VmaAllocatorCreateInfo: vk_mem_alloc.h']]], - ['vmaallocatorinfo_115',['vmaallocatorinfo',['../struct_vma_allocator_info.html',1,'VmaAllocatorInfo'],['../group__group__init.html#ga1988031b0223fdbd564250fa1edd942c',1,'VmaAllocatorInfo: vk_mem_alloc.h']]], - ['vmabegindefragmentation_116',['vmaBeginDefragmentation',['../group__group__alloc.html#gac3335566858b45541fa9c0d7a6bbb57e',1,'vk_mem_alloc.h']]], - ['vmabegindefragmentationpass_117',['vmaBeginDefragmentationPass',['../group__group__alloc.html#ga980d7da2ce3b1fd5c8b8476bc362cc00',1,'vk_mem_alloc.h']]], - ['vmabindbuffermemory_118',['vmaBindBufferMemory',['../group__group__alloc.html#ga6b0929b914b60cf2d45cac4bf3547470',1,'vk_mem_alloc.h']]], - ['vmabindbuffermemory2_119',['vmaBindBufferMemory2',['../group__group__alloc.html#ga2e8f3e97eaf16b2fc0f8db1ece5fa52c',1,'vk_mem_alloc.h']]], - ['vmabindimagememory_120',['vmaBindImageMemory',['../group__group__alloc.html#ga3d3ca45799923aa5d138e9e5f9eb2da5',1,'vk_mem_alloc.h']]], - ['vmabindimagememory2_121',['vmaBindImageMemory2',['../group__group__alloc.html#ga71890c538a738b4ee70a93a4f29fede2',1,'vk_mem_alloc.h']]], - ['vmabudget_122',['vmabudget',['../struct_vma_budget.html',1,'VmaBudget'],['../group__group__stats.html#gaa078667e71b1ef24e87a6a30d128381d',1,'VmaBudget: vk_mem_alloc.h']]], - ['vmacalculatepoolstatistics_123',['vmaCalculatePoolStatistics',['../group__group__stats.html#ga50ba0eb25d2b363b792be4645ca7a380',1,'vk_mem_alloc.h']]], - ['vmacalculatestatistics_124',['vmaCalculateStatistics',['../group__group__stats.html#ga36f3484de7aa6cd6edc4de9edfa0ff59',1,'vk_mem_alloc.h']]], - ['vmacalculatevirtualblockstatistics_125',['vmaCalculateVirtualBlockStatistics',['../group__group__virtual.html#ga93c5741bca44b43e5b849cacbd616098',1,'vk_mem_alloc.h']]], - ['vmacheckcorruption_126',['vmaCheckCorruption',['../group__group__alloc.html#ga49329a7f030dafcf82f7b73334c22e98',1,'vk_mem_alloc.h']]], - ['vmacheckpoolcorruption_127',['vmaCheckPoolCorruption',['../group__group__alloc.html#gad535935619c7a549bf837e1bb0068f89',1,'vk_mem_alloc.h']]], - ['vmaclearvirtualblock_128',['vmaClearVirtualBlock',['../group__group__virtual.html#ga5eda6f55919fb05bd2f56a112590c571',1,'vk_mem_alloc.h']]], - ['vmacreatealiasingbuffer_129',['vmaCreateAliasingBuffer',['../group__group__alloc.html#ga60d5d4803e3c82505a2bfddb929adb03',1,'vk_mem_alloc.h']]], - ['vmacreatealiasingbuffer2_130',['vmaCreateAliasingBuffer2',['../group__group__alloc.html#gaf0cf014344213e117bd9f9cf5f928122',1,'vk_mem_alloc.h']]], - ['vmacreatealiasingimage_131',['vmaCreateAliasingImage',['../group__group__alloc.html#gaebc4db1f94b53dba2338b4c0fd80d0dc',1,'vk_mem_alloc.h']]], - ['vmacreatealiasingimage2_132',['vmaCreateAliasingImage2',['../group__group__alloc.html#ga69ac829f5bb0737449fa92c2d971f1bb',1,'vk_mem_alloc.h']]], - ['vmacreateallocator_133',['vmaCreateAllocator',['../group__group__init.html#ga200692051ddb34240248234f5f4c17bb',1,'vk_mem_alloc.h']]], - ['vmacreatebuffer_134',['vmaCreateBuffer',['../group__group__alloc.html#gac72ee55598617e8eecca384e746bab51',1,'vk_mem_alloc.h']]], - ['vmacreatebufferwithalignment_135',['vmaCreateBufferWithAlignment',['../group__group__alloc.html#gaa06a690013a0d01e60894ac378083834',1,'vk_mem_alloc.h']]], - ['vmacreateimage_136',['vmaCreateImage',['../group__group__alloc.html#ga02a94f25679275851a53e82eacbcfc73',1,'vk_mem_alloc.h']]], - ['vmacreatepool_137',['vmaCreatePool',['../group__group__alloc.html#ga5c8770ded7c59c8caac6de0c2cb00b50',1,'vk_mem_alloc.h']]], - ['vmacreatevirtualblock_138',['vmaCreateVirtualBlock',['../group__group__virtual.html#gab585754076877265fdae33e5c40ef13b',1,'vk_mem_alloc.h']]], - ['vmadefragmentationcontext_139',['VmaDefragmentationContext',['../struct_vma_defragmentation_context.html',1,'']]], - ['vmadefragmentationflagbits_140',['vmadefragmentationflagbits',['../group__group__alloc.html#ga6552a65b71d16f378c6994b3ceaef50c',1,'VmaDefragmentationFlagBits: vk_mem_alloc.h'],['../group__group__alloc.html#ga13415cc0b443353a7b5abda300b833fc',1,'VmaDefragmentationFlagBits: vk_mem_alloc.h']]], - ['vmadefragmentationflags_141',['VmaDefragmentationFlags',['../group__group__alloc.html#ga88a77cef37e5d3c4fc9eb328885d048d',1,'vk_mem_alloc.h']]], - ['vmadefragmentationinfo_142',['vmadefragmentationinfo',['../struct_vma_defragmentation_info.html',1,'VmaDefragmentationInfo'],['../group__group__alloc.html#ga2bf47f96bf92bed2a49461bd9af3acfa',1,'VmaDefragmentationInfo: vk_mem_alloc.h']]], - ['vmadefragmentationmove_143',['vmadefragmentationmove',['../struct_vma_defragmentation_move.html',1,'VmaDefragmentationMove'],['../group__group__alloc.html#ga563f4b43d3e31ed603d80cacc9ba8589',1,'VmaDefragmentationMove: vk_mem_alloc.h']]], - ['vmadefragmentationmoveoperation_144',['vmadefragmentationmoveoperation',['../group__group__alloc.html#gada9e3861caf96f08894b0bcc160ec257',1,'VmaDefragmentationMoveOperation: vk_mem_alloc.h'],['../group__group__alloc.html#ga2ea666deeb3c2c74806a097e27cdb4a1',1,'VmaDefragmentationMoveOperation: vk_mem_alloc.h']]], - ['vmadefragmentationpassmoveinfo_145',['vmadefragmentationpassmoveinfo',['../struct_vma_defragmentation_pass_move_info.html',1,'VmaDefragmentationPassMoveInfo'],['../group__group__alloc.html#gad6799e8e2b1527abfc84d33bc44aeaf5',1,'VmaDefragmentationPassMoveInfo: vk_mem_alloc.h']]], - ['vmadefragmentationstats_146',['vmadefragmentationstats',['../struct_vma_defragmentation_stats.html',1,'VmaDefragmentationStats'],['../group__group__alloc.html#gad94034192259c2e34a4d1c5e27810403',1,'VmaDefragmentationStats: vk_mem_alloc.h']]], - ['vmadestroyallocator_147',['vmaDestroyAllocator',['../group__group__init.html#gaa8d164061c88f22fb1fd3c8f3534bc1d',1,'vk_mem_alloc.h']]], - ['vmadestroybuffer_148',['vmaDestroyBuffer',['../group__group__alloc.html#ga0d9f4e4ba5bf9aab1f1c746387753d77',1,'vk_mem_alloc.h']]], - ['vmadestroyimage_149',['vmaDestroyImage',['../group__group__alloc.html#gae50d2cb3b4a3bfd4dd40987234e50e7e',1,'vk_mem_alloc.h']]], - ['vmadestroypool_150',['vmaDestroyPool',['../group__group__alloc.html#ga5485779c8f1948238fc4e92232fa65e1',1,'vk_mem_alloc.h']]], - ['vmadestroyvirtualblock_151',['vmaDestroyVirtualBlock',['../group__group__virtual.html#ga3795f7783ae2c182cede067d656f66a5',1,'vk_mem_alloc.h']]], - ['vmadetailedstatistics_152',['vmadetailedstatistics',['../struct_vma_detailed_statistics.html',1,'VmaDetailedStatistics'],['../group__group__stats.html#ga9ab0c535a6ca655dc63b8609ab4b8394',1,'VmaDetailedStatistics: vk_mem_alloc.h']]], - ['vmadevicememorycallbacks_153',['vmadevicememorycallbacks',['../struct_vma_device_memory_callbacks.html',1,'VmaDeviceMemoryCallbacks'],['../group__group__init.html#ga77692d3c8770ea8882d573206bd27b2b',1,'VmaDeviceMemoryCallbacks: vk_mem_alloc.h']]], - ['vmaenddefragmentation_154',['vmaEndDefragmentation',['../group__group__alloc.html#ga59f01ca3d53d50b7cca9b442b77a3e87',1,'vk_mem_alloc.h']]], - ['vmaenddefragmentationpass_155',['vmaEndDefragmentationPass',['../group__group__alloc.html#gaded05a445742a00718ee766144c5c226',1,'vk_mem_alloc.h']]], - ['vmafindmemorytypeindex_156',['vmaFindMemoryTypeIndex',['../group__group__alloc.html#gaef15a94b58fbcb0fe706d5720e84a74a',1,'vk_mem_alloc.h']]], - ['vmafindmemorytypeindexforbufferinfo_157',['vmaFindMemoryTypeIndexForBufferInfo',['../group__group__alloc.html#gae790ab9ffaf7667fb8f62523e6897888',1,'vk_mem_alloc.h']]], - ['vmafindmemorytypeindexforimageinfo_158',['vmaFindMemoryTypeIndexForImageInfo',['../group__group__alloc.html#ga088da83d8eaf3ce9056d9ea0b981d472',1,'vk_mem_alloc.h']]], - ['vmaflushallocation_159',['vmaFlushAllocation',['../group__group__alloc.html#ga30c37c1eec6025f397be41644f48490f',1,'vk_mem_alloc.h']]], - ['vmaflushallocations_160',['vmaFlushAllocations',['../group__group__alloc.html#gac3dd00da721875ed99fa8a881922bdfc',1,'vk_mem_alloc.h']]], - ['vmafreememory_161',['vmaFreeMemory',['../group__group__alloc.html#ga5fea5518972ae9094b1526cbcb19b05f',1,'vk_mem_alloc.h']]], - ['vmafreememorypages_162',['vmaFreeMemoryPages',['../group__group__alloc.html#ga834b1e4aef395c0a1d56a28e69a4a17e',1,'vk_mem_alloc.h']]], - ['vmagetallocationinfo_163',['vmaGetAllocationInfo',['../group__group__alloc.html#ga86dd08aba8633bfa4ad0df2e76481d8b',1,'vk_mem_alloc.h']]], - ['vmagetallocationinfo2_164',['vmaGetAllocationInfo2',['../group__group__alloc.html#ga1405cf3eae2fd1305d645879173031a0',1,'vk_mem_alloc.h']]], - ['vmagetallocationmemoryproperties_165',['vmaGetAllocationMemoryProperties',['../group__group__alloc.html#ga571e87dd38e552249b56b1b0b982fad1',1,'vk_mem_alloc.h']]], - ['vmagetallocatorinfo_166',['vmaGetAllocatorInfo',['../group__group__init.html#gafa02231a791b37255720d566a52683e7',1,'vk_mem_alloc.h']]], - ['vmagetheapbudgets_167',['vmaGetHeapBudgets',['../group__group__stats.html#ga9f88db9d46a432c0ad7278cecbc5eaa7',1,'vk_mem_alloc.h']]], - ['vmagetmemoryproperties_168',['vmaGetMemoryProperties',['../group__group__init.html#gab88db292a17974f911182543fda52d19',1,'vk_mem_alloc.h']]], - ['vmagetmemorytypeproperties_169',['vmaGetMemoryTypeProperties',['../group__group__init.html#ga8701444752eb5de4464adb5a2b514bca',1,'vk_mem_alloc.h']]], - ['vmagetphysicaldeviceproperties_170',['vmaGetPhysicalDeviceProperties',['../group__group__init.html#gaecabf7b6e91ea87d0316fa0a9e014fe0',1,'vk_mem_alloc.h']]], - ['vmagetpoolname_171',['vmaGetPoolName',['../group__group__alloc.html#gaf09b4e4eafdbee812e8d73ddf960f030',1,'vk_mem_alloc.h']]], - ['vmagetpoolstatistics_172',['vmaGetPoolStatistics',['../group__group__stats.html#ga34d8e7d83774eed0caee5c5ae88e217d',1,'vk_mem_alloc.h']]], - ['vmagetvirtualallocationinfo_173',['vmaGetVirtualAllocationInfo',['../group__group__virtual.html#ga8ee14ceb1fe033ec84d8aa29e1f75afa',1,'vk_mem_alloc.h']]], - ['vmagetvirtualblockstatistics_174',['vmaGetVirtualBlockStatistics',['../group__group__virtual.html#ga2902aa3130866afcc64bb5f984113db3',1,'vk_mem_alloc.h']]], - ['vmainvalidateallocation_175',['vmaInvalidateAllocation',['../group__group__alloc.html#gaaa8412919139ef413a4215ac6a290fae',1,'vk_mem_alloc.h']]], - ['vmainvalidateallocations_176',['vmaInvalidateAllocations',['../group__group__alloc.html#gab25b558d75f7378ec944a1522fdcc3c5',1,'vk_mem_alloc.h']]], - ['vmaisvirtualblockempty_177',['vmaIsVirtualBlockEmpty',['../group__group__virtual.html#gacd53b5b1d23f8fcbad692ccfdc1811f1',1,'vk_mem_alloc.h']]], - ['vmamapmemory_178',['vmaMapMemory',['../group__group__alloc.html#gad5bd1243512d099706de88168992f069',1,'vk_mem_alloc.h']]], - ['vmamemoryusage_179',['vmamemoryusage',['../group__group__alloc.html#gaa5846affa1e9da3800e3e78fae2305cc',1,'VmaMemoryUsage: vk_mem_alloc.h'],['../group__group__alloc.html#ga806e8499dde802e59eb72a1dc811c35f',1,'VmaMemoryUsage: vk_mem_alloc.h']]], - ['vmapool_180',['VmaPool',['../struct_vma_pool.html',1,'']]], - ['vmapoolcreateflagbits_181',['vmapoolcreateflagbits',['../group__group__alloc.html#ga9a7c45f9c863695d98c83fa5ac940fe7',1,'VmaPoolCreateFlagBits: vk_mem_alloc.h'],['../group__group__alloc.html#ga4d4f2efc2509157a9e4ecd4fd7942303',1,'VmaPoolCreateFlagBits: vk_mem_alloc.h']]], - ['vmapoolcreateflags_182',['VmaPoolCreateFlags',['../group__group__alloc.html#ga2770e325ea42e087c1b91fdf46d0292a',1,'vk_mem_alloc.h']]], - ['vmapoolcreateinfo_183',['vmapoolcreateinfo',['../struct_vma_pool_create_info.html',1,'VmaPoolCreateInfo'],['../group__group__alloc.html#ga1017aa83489c0eee8d2163d2bf253f67',1,'VmaPoolCreateInfo: vk_mem_alloc.h']]], - ['vmasetallocationname_184',['vmaSetAllocationName',['../group__group__alloc.html#gabe02cbb0cd913b3f125958179f2020fc',1,'vk_mem_alloc.h']]], - ['vmasetallocationuserdata_185',['vmaSetAllocationUserData',['../group__group__alloc.html#gaf9147d31ffc11d62fc187bde283ed14f',1,'vk_mem_alloc.h']]], - ['vmasetcurrentframeindex_186',['vmaSetCurrentFrameIndex',['../group__group__init.html#gade56bf8dc9f5a5eaddf5f119ed525236',1,'vk_mem_alloc.h']]], - ['vmasetpoolname_187',['vmaSetPoolName',['../group__group__alloc.html#gadbae3a0b4ab078024462fc85c37f3b58',1,'vk_mem_alloc.h']]], - ['vmasetvirtualallocationuserdata_188',['vmaSetVirtualAllocationUserData',['../group__group__virtual.html#ga001ea1850458a4062b829e09c303fca2',1,'vk_mem_alloc.h']]], - ['vmastatistics_189',['vmastatistics',['../group__group__stats.html#gac94bd1a382a3922ddc8de3af4d3ddd06',1,'VmaStatistics: vk_mem_alloc.h'],['../struct_vma_statistics.html',1,'VmaStatistics']]], - ['vmatotalstatistics_190',['vmatotalstatistics',['../group__group__stats.html#ga68916e729e55d513f88ffafbadddb770',1,'VmaTotalStatistics: vk_mem_alloc.h'],['../struct_vma_total_statistics.html',1,'VmaTotalStatistics']]], - ['vmaunmapmemory_191',['vmaUnmapMemory',['../group__group__alloc.html#ga9bc268595cb33f6ec4d519cfce81ff45',1,'vk_mem_alloc.h']]], - ['vmavirtualallocate_192',['vmaVirtualAllocate',['../group__group__virtual.html#ga6b7cdcc1c3e5103c323fedc4e1319e01',1,'vk_mem_alloc.h']]], - ['vmavirtualallocation_193',['VmaVirtualAllocation',['../struct_vma_virtual_allocation.html',1,'']]], - ['vmavirtualallocationcreateflagbits_194',['vmavirtualallocationcreateflagbits',['../group__group__virtual.html#ga2e9c64d405b14156fea7e10c4ad06cb6',1,'VmaVirtualAllocationCreateFlagBits: vk_mem_alloc.h'],['../group__group__virtual.html#ga936815e64946a6b6d812d08d10184c23',1,'VmaVirtualAllocationCreateFlagBits: vk_mem_alloc.h']]], - ['vmavirtualallocationcreateflags_195',['VmaVirtualAllocationCreateFlags',['../group__group__virtual.html#gae96ffc099bf898257fb19e9410ed08a7',1,'vk_mem_alloc.h']]], - ['vmavirtualallocationcreateinfo_196',['vmavirtualallocationcreateinfo',['../group__group__virtual.html#gac3c90d80bedc6847a41b82d0e2158c9e',1,'VmaVirtualAllocationCreateInfo: vk_mem_alloc.h'],['../struct_vma_virtual_allocation_create_info.html',1,'VmaVirtualAllocationCreateInfo']]], - ['vmavirtualallocationinfo_197',['vmavirtualallocationinfo',['../group__group__virtual.html#ga75bc33ff7cf18c98e101f570dc2a5ebc',1,'VmaVirtualAllocationInfo: vk_mem_alloc.h'],['../struct_vma_virtual_allocation_info.html',1,'VmaVirtualAllocationInfo']]], - ['vmavirtualblock_198',['VmaVirtualBlock',['../struct_vma_virtual_block.html',1,'']]], - ['vmavirtualblockcreateflagbits_199',['vmavirtualblockcreateflagbits',['../group__group__virtual.html#ga88bcf8c1cd3bb1610ff7343811c65bca',1,'VmaVirtualBlockCreateFlagBits: vk_mem_alloc.h'],['../group__group__virtual.html#ga0860ba1c0a67178fae4aecb63a78573e',1,'VmaVirtualBlockCreateFlagBits: vk_mem_alloc.h']]], - ['vmavirtualblockcreateflags_200',['VmaVirtualBlockCreateFlags',['../group__group__virtual.html#ga4e49c2f0ab7f6b4868833e5bac78d91e',1,'vk_mem_alloc.h']]], - ['vmavirtualblockcreateinfo_201',['vmavirtualblockcreateinfo',['../struct_vma_virtual_block_create_info.html',1,'VmaVirtualBlockCreateInfo'],['../group__group__virtual.html#ga4753d42d40217a3a652a3cdf253ad773',1,'VmaVirtualBlockCreateInfo: vk_mem_alloc.h']]], - ['vmavirtualfree_202',['vmaVirtualFree',['../group__group__virtual.html#ga09fc688c0c3653ff23723b037e5d5033',1,'vk_mem_alloc.h']]], - ['vmavulkanfunctions_203',['vmavulkanfunctions',['../group__group__init.html#gabb0a8e3b5040d847571cca6c7f9a8074',1,'VmaVulkanFunctions: vk_mem_alloc.h'],['../struct_vma_vulkan_functions.html',1,'VmaVulkanFunctions']]], - ['vulkan_20functions_204',['vulkan functions',['../quick_start.html#quick_start_initialization_importing_vulkan_functions',1,'Importing Vulkan functions'],['../configuration.html#config_Vulkan_functions',1,'Pointers to Vulkan functions']]], - ['vulkan_20memory_20allocator_205',['Vulkan Memory Allocator',['../index.html',1,'']]], - ['vulkan_20version_206',['Selecting Vulkan version',['../quick_start.html#quick_start_initialization_selecting_vulkan_version',1,'']]], - ['vulkanapiversion_207',['vulkanApiVersion',['../struct_vma_allocator_create_info.html#ae0ffc55139b54520a6bb704b29ffc285',1,'VmaAllocatorCreateInfo']]] + ['vk_5fdefine_5fnon_5fdispatchable_5fhandle_7',['VK_DEFINE_NON_DISPATCHABLE_HANDLE',['../group__group__virtual.html#ga565936f8d98d225b536a2d9703bc7676',1,'vk_mem_alloc.h']]], + ['vk_5fext_5fmemory_5fpriority_8',['VK_EXT_memory_priority',['../vk_ext_memory_priority.html',1,'index']]], + ['vk_5fkhr_5fdedicated_5fallocation_9',['VK_KHR_dedicated_allocation',['../vk_khr_dedicated_allocation.html',1,'index']]], + ['vk_5fmem_5falloc_2eh_10',['vk_mem_alloc.h',['../vk__mem__alloc_8h.html',1,'']]], + ['vkallocatememory_11',['vkAllocateMemory',['../struct_vma_vulkan_functions.html#a2943bf99dfd784a0e8f599d987e22e6c',1,'VmaVulkanFunctions']]], + ['vkbindbuffermemory_12',['vkBindBufferMemory',['../struct_vma_vulkan_functions.html#a94fc4f3a605d9880bb3c0ba2c2fc80b2',1,'VmaVulkanFunctions']]], + ['vkbindbuffermemory2khr_13',['vkBindBufferMemory2KHR',['../struct_vma_vulkan_functions.html#a0c4907235aab9df2767b79836afa2dc9',1,'VmaVulkanFunctions']]], + ['vkbindimagememory_14',['vkBindImageMemory',['../struct_vma_vulkan_functions.html#a1338d96a128a5ade648b8d934907c637',1,'VmaVulkanFunctions']]], + ['vkbindimagememory2khr_15',['vkBindImageMemory2KHR',['../struct_vma_vulkan_functions.html#ab95aaa73ab8a3fe9fd3daaaec4e0b2bf',1,'VmaVulkanFunctions']]], + ['vkcmdcopybuffer_16',['vkCmdCopyBuffer',['../struct_vma_vulkan_functions.html#ae5c0db8c89a3b82593dc16aa6a49fa3a',1,'VmaVulkanFunctions']]], + ['vkcreatebuffer_17',['vkCreateBuffer',['../struct_vma_vulkan_functions.html#ae8084315a25006271a2edfc3a447519f',1,'VmaVulkanFunctions']]], + ['vkcreateimage_18',['vkCreateImage',['../struct_vma_vulkan_functions.html#a23ebe70be515b9b5010a1d691200e325',1,'VmaVulkanFunctions']]], + ['vkdestroybuffer_19',['vkDestroyBuffer',['../struct_vma_vulkan_functions.html#a7e054606faddb07f0e8556f3ed317d45',1,'VmaVulkanFunctions']]], + ['vkdestroyimage_20',['vkDestroyImage',['../struct_vma_vulkan_functions.html#a90b898227039b1dcb3520f6e91f09ffa',1,'VmaVulkanFunctions']]], + ['vkflushmappedmemoryranges_21',['vkFlushMappedMemoryRanges',['../struct_vma_vulkan_functions.html#a33c322f4c4ad2810f8a9c97a277572f9',1,'VmaVulkanFunctions']]], + ['vkfreememory_22',['vkFreeMemory',['../struct_vma_vulkan_functions.html#a4c658701778564d62034255b5dda91b4',1,'VmaVulkanFunctions']]], + ['vkgetbuffermemoryrequirements_23',['vkGetBufferMemoryRequirements',['../struct_vma_vulkan_functions.html#a5b92901df89a4194b0d12f6071d4d143',1,'VmaVulkanFunctions']]], + ['vkgetbuffermemoryrequirements2khr_24',['vkGetBufferMemoryRequirements2KHR',['../struct_vma_vulkan_functions.html#a9d8d1b05d2b1e7e1d9b27f6f585acf9c',1,'VmaVulkanFunctions']]], + ['vkgetdevicebuffermemoryrequirements_25',['vkGetDeviceBufferMemoryRequirements',['../struct_vma_vulkan_functions.html#ab25228053223e8a4dcd062574beed88d',1,'VmaVulkanFunctions']]], + ['vkgetdeviceimagememoryrequirements_26',['vkGetDeviceImageMemoryRequirements',['../struct_vma_vulkan_functions.html#a10a9bf098a46640fa0a75f1c5fd80b9a',1,'VmaVulkanFunctions']]], + ['vkgetdeviceprocaddr_27',['vkGetDeviceProcAddr',['../struct_vma_vulkan_functions.html#ac383ab9af127e5e136622fa4ebea9e57',1,'VmaVulkanFunctions']]], + ['vkgetimagememoryrequirements_28',['vkGetImageMemoryRequirements',['../struct_vma_vulkan_functions.html#a475f6f49f8debe4d10800592606d53f4',1,'VmaVulkanFunctions']]], + ['vkgetimagememoryrequirements2khr_29',['vkGetImageMemoryRequirements2KHR',['../struct_vma_vulkan_functions.html#a9cdcdc1e2b2ea7c571f7d27e30ba6875',1,'VmaVulkanFunctions']]], + ['vkgetinstanceprocaddr_30',['vkGetInstanceProcAddr',['../struct_vma_vulkan_functions.html#a3eafa102f5f8915f093f40675636b849',1,'VmaVulkanFunctions']]], + ['vkgetphysicaldevicememoryproperties_31',['vkGetPhysicalDeviceMemoryProperties',['../struct_vma_vulkan_functions.html#a60d25c33bba06bb8592e6875cbaa9830',1,'VmaVulkanFunctions']]], + ['vkgetphysicaldevicememoryproperties2khr_32',['vkGetPhysicalDeviceMemoryProperties2KHR',['../struct_vma_vulkan_functions.html#a0d992896e6ffcf92b9d7ea049fa5c445',1,'VmaVulkanFunctions']]], + ['vkgetphysicaldeviceproperties_33',['vkGetPhysicalDeviceProperties',['../struct_vma_vulkan_functions.html#a77b7a74082823e865dd6546623468f96',1,'VmaVulkanFunctions']]], + ['vkinvalidatemappedmemoryranges_34',['vkInvalidateMappedMemoryRanges',['../struct_vma_vulkan_functions.html#a5c1093bc32386a8060c37c9f282078a1',1,'VmaVulkanFunctions']]], + ['vkmapmemory_35',['vkMapMemory',['../struct_vma_vulkan_functions.html#ab5c1f38dea3a2cf00dc9eb4f57218c49',1,'VmaVulkanFunctions']]], + ['vkunmapmemory_36',['vkUnmapMemory',['../struct_vma_vulkan_functions.html#acc798589736f0becb317fc2196c1d8b9',1,'VmaVulkanFunctions']]], + ['vma_5fallocation_5fcreate_5fcan_5falias_5fbit_37',['VMA_ALLOCATION_CREATE_CAN_ALIAS_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597afb0ee060cd733aaa5e249704ff589ad6',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fdedicated_5fmemory_5fbit_38',['VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a3fc311d855c2ff53f1090ef5c722b38f',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fdont_5fbind_5fbit_39',['VMA_ALLOCATION_CREATE_DONT_BIND_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a2310568c62208af432724305fe29ccea',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum_40',['VMA_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597ae5633ec569f4899cf8f29e7385b2f882',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fhost_5faccess_5fallow_5ftransfer_5finstead_5fbit_41',['VMA_ALLOCATION_CREATE_HOST_ACCESS_ALLOW_TRANSFER_INSTEAD_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a11337f96eacf34c1016c339eac165cad',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fhost_5faccess_5frandom_5fbit_42',['VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597add61238d98e20917b9a06c617763f492',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fhost_5faccess_5fsequential_5fwrite_5fbit_43',['VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a9be224df3bfc1cfa06203aed689a30c5',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fmapped_5fbit_44',['VMA_ALLOCATION_CREATE_MAPPED_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a11da372cc3a82931c5e5d6146cd9dd1f',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fnever_5fallocate_5fbit_45',['VMA_ALLOCATION_CREATE_NEVER_ALLOCATE_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a89759603401014eb325eb22a3839f2ff',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fstrategy_5fbest_5ffit_5fbit_46',['VMA_ALLOCATION_CREATE_STRATEGY_BEST_FIT_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a839826775c62319466441f86496f036d',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fstrategy_5ffirst_5ffit_5fbit_47',['VMA_ALLOCATION_CREATE_STRATEGY_FIRST_FIT_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a33eb2052674f3ad92386c714a65fb777',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fstrategy_5fmask_48',['VMA_ALLOCATION_CREATE_STRATEGY_MASK',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a8e16845d81ae3d27c47106d4770d5c7e',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_49',['VMA_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a8af1210cf591784afa026d94998f735d',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_50',['VMA_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a8099acedc0d04cdccaaddcfe37fd227d',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_51',['VMA_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a0729e932b7ea170e3a128cad96c5cf6d',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fupper_5faddress_5fbit_52',['VMA_ALLOCATION_CREATE_UPPER_ADDRESS_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a42ba3a2d2c7117953210b7c3ef8da0df',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fuser_5fdata_5fcopy_5fstring_5fbit_53',['VMA_ALLOCATION_CREATE_USER_DATA_COPY_STRING_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597aa6f24f821cd6a7c5e4a443f7bf59c520',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fwithin_5fbudget_5fbit_54',['VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597ab8b1764f3e9022368e440c057783b92d',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5famd_5fdevice_5fcoherent_5fmemory_5fbit_55',['VMA_ALLOCATOR_CREATE_AMD_DEVICE_COHERENT_MEMORY_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca2acce4886d8078552efa38878413970f',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fbuffer_5fdevice_5faddress_5fbit_56',['VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca5f1b28b0414319d1687e1f2b30ab0089',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fext_5fmemory_5fbudget_5fbit_57',['VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca4d4687863f7bd4b418c6006dc04400b0',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fext_5fmemory_5fpriority_5fbit_58',['VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7caffdd7a5169be3dbd7cbf6b3619e4f78a',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fexternally_5fsynchronized_5fbit_59',['VMA_ALLOCATOR_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca4816ddaed324ba110172ca608a20f29d',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fflag_5fbits_5fmax_5fenum_60',['VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7cae4d5ad929caba5f23eb502b13bd5286c',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fkhr_5fbind_5fmemory2_5fbit_61',['VMA_ALLOCATOR_CREATE_KHR_BIND_MEMORY2_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca8fb75bf07cd184ab903596295e863dee',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fkhr_5fdedicated_5fallocation_5fbit_62',['VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7cace7da7cc6e71a625dfa763c55a597878',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fkhr_5fmaintenance4_5fbit_63',['VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE4_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7caa2566e7f75e19ae7ec9c4fa509fea5fb',1,'vk_mem_alloc.h']]], + ['vma_5fbind_5fmemory2_64',['VMA_BIND_MEMORY2',['../vk__mem__alloc_8h.html#a88bef97f86d70a34a4c0746e09a2680d',1,'vk_mem_alloc.h']]], + ['vma_5fbuffer_5fdevice_5faddress_65',['VMA_BUFFER_DEVICE_ADDRESS',['../vk__mem__alloc_8h.html#a7f9d5e71b70dd1a137c303a8a8262c10',1,'vk_mem_alloc.h']]], + ['vma_5fdedicated_5fallocation_66',['VMA_DEDICATED_ALLOCATION',['../vk__mem__alloc_8h.html#af7b860e63b96d11e44ae8587ba06bbf4',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5fbalanced_5fbit_67',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50caec35a4138111605a6ff32ca61aa871b6',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5fextensive_5fbit_68',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cae45a9469e5337731627758671741e412',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5ffast_5fbit_69',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5ffull_5fbit_70',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cafa162eac5be800bcdd4011427a71156d',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5fmask_71',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cabcbbdb3bfd53c4c3ab4eaeb5fd4894e9',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5fbits_5fmax_5fenum_72',['VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cab87ec33154803bfeb5ac2b379f1d6a97',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fmove_5foperation_5fcopy_73',['VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad4a06ac46c4cb1c67b0ebc1edfab9f18',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fmove_5foperation_5fdestroy_74',['VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257a9786f8492a9be2c03bd26395e352ab85',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fmove_5foperation_5fignore_75',['VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad25bc6f816b226b4fd5170e845f218d2',1,'vk_mem_alloc.h']]], + ['vma_5fkhr_5fmaintenance4_76',['VMA_KHR_MAINTENANCE4',['../vk__mem__alloc_8h.html#abc635c70b154cb54aa4a15cd5da55498',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fbudget_77',['VMA_MEMORY_BUDGET',['../vk__mem__alloc_8h.html#a05decf1cf4ebf767beba7acca6c1ec3a',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fauto_78',['VMA_MEMORY_USAGE_AUTO',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fauto_5fprefer_5fdevice_79',['VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccae2adb696d6a73c18bb20c23666661327',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fauto_5fprefer_5fhost_80',['VMA_MEMORY_USAGE_AUTO_PREFER_HOST',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9b422585242160b8ed3418310ee6664d',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fcpu_5fcopy_81',['VMA_MEMORY_USAGE_CPU_COPY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca416a444d4d0fc20067c3f76f32ff2500',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fcpu_5fonly_82',['VMA_MEMORY_USAGE_CPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca40bdf4cddeffeb12f43d45ca1286e0a5',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fcpu_5fto_5fgpu_83',['VMA_MEMORY_USAGE_CPU_TO_GPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9066b52c5a7079bb74a69aaf8b92ff67',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fgpu_5flazily_5fallocated_84',['VMA_MEMORY_USAGE_GPU_LAZILY_ALLOCATED',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca835333d9072db63a653818030e17614d',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fgpu_5fonly_85',['VMA_MEMORY_USAGE_GPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccac6b5dc1432d88647aa4cd456246eadf7',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fgpu_5fto_5fcpu_86',['VMA_MEMORY_USAGE_GPU_TO_CPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca7b586d2fdaf82a463b58f581ed72be27',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fmax_5fenum_87',['VMA_MEMORY_USAGE_MAX_ENUM',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca091e69437ef693e8d0d287f1c719ba6e',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5funknown_88',['VMA_MEMORY_USAGE_UNKNOWN',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccaf50d27e34e0925cf3a63db8c839121dd',1,'vk_mem_alloc.h']]], + ['vma_5fpool_5fcreate_5falgorithm_5fmask_89',['VMA_POOL_CREATE_ALGORITHM_MASK',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7af4d270f8f42517a0f70037ceb6ac1d9c',1,'vk_mem_alloc.h']]], + ['vma_5fpool_5fcreate_5fflag_5fbits_5fmax_5fenum_90',['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_91',['VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a9f1a499508a8edb4e8ba40aa0290a3d2',1,'vk_mem_alloc.h']]], + ['vma_5fpool_5fcreate_5flinear_5falgorithm_5fbit_92',['VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a13c8a444197c67866be9cb05599fc726',1,'vk_mem_alloc.h']]], + ['vma_5fstats_5fstring_5fenabled_93',['VMA_STATS_STRING_ENABLED',['../vk__mem__alloc_8h.html#ae25f0d55fd91cb166f002b63244800e1',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum_94',['VMA_VIRTUAL_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac1163c03ea837fa663462dc286d6a1a9',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmask_95',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MASK',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac5b5e45c335368d18df59c9f27df17e3',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_96',['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_97',['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_98',['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_99',['VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a9524a329a55b5ec390d57d90b67ad78e',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fblock_5fcreate_5falgorithm_5fmask_100',['VMA_VIRTUAL_BLOCK_CREATE_ALGORITHM_MASK',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaaf9487467136e1a9e371894dc3a7c4844',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fblock_5fcreate_5fflag_5fbits_5fmax_5fenum_101',['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_102',['VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaae6423e2fa2f3c9211b21c819e3f10f96',1,'vk_mem_alloc.h']]], + ['vmaallocatememory_103',['vmaAllocateMemory',['../group__group__alloc.html#gabf28077dbf82d0908b8acbe8ee8dd9b8',1,'vk_mem_alloc.h']]], + ['vmaallocatememoryforbuffer_104',['vmaAllocateMemoryForBuffer',['../group__group__alloc.html#ga7fdf64415b6c3d83c454f28d2c53df7b',1,'vk_mem_alloc.h']]], + ['vmaallocatememoryforimage_105',['vmaAllocateMemoryForImage',['../group__group__alloc.html#ga0faa3f9e5fb233d29d1e00390650febb',1,'vk_mem_alloc.h']]], + ['vmaallocatememorypages_106',['vmaAllocateMemoryPages',['../group__group__alloc.html#gad37e82e492b3de38fc3f4cffd9ad0ae1',1,'vk_mem_alloc.h']]], + ['vmaallocation_107',['VmaAllocation',['../struct_vma_allocation.html',1,'']]], + ['vmaallocationcreateflagbits_108',['VmaAllocationCreateFlagBits',['../group__group__alloc.html#gad9889c10c798b040d59c92f257cae597',1,'VmaAllocationCreateFlagBits: vk_mem_alloc.h'],['../group__group__alloc.html#ga4fceecc301f4064dc808d3cd6c038941',1,'VmaAllocationCreateFlagBits: vk_mem_alloc.h']]], + ['vmaallocationcreateflags_109',['VmaAllocationCreateFlags',['../group__group__alloc.html#ga5225e5e11f8376f6a31a1791f3d6e817',1,'vk_mem_alloc.h']]], + ['vmaallocationcreateinfo_110',['VmaAllocationCreateInfo',['../struct_vma_allocation_create_info.html',1,'VmaAllocationCreateInfo'],['../group__group__alloc.html#ga3bf110892ea2fb4649fedb68488d026a',1,'VmaAllocationCreateInfo: vk_mem_alloc.h']]], + ['vmaallocationinfo_111',['VmaAllocationInfo',['../struct_vma_allocation_info.html',1,'VmaAllocationInfo'],['../group__group__alloc.html#ga1cf7774606721026a68aabe3af2e5b50',1,'VmaAllocationInfo: vk_mem_alloc.h']]], + ['vmaallocationinfo2_112',['VmaAllocationInfo2',['../struct_vma_allocation_info2.html',1,'VmaAllocationInfo2'],['../group__group__alloc.html#ga25ede29f830f326b8572a18ce879bf64',1,'VmaAllocationInfo2: vk_mem_alloc.h']]], + ['vmaallocator_113',['VmaAllocator',['../struct_vma_allocator.html',1,'']]], + ['vmaallocatorcreateflagbits_114',['VmaAllocatorCreateFlagBits',['../group__group__init.html#ga4f87c9100d154a65a4ad495f7763cf7c',1,'VmaAllocatorCreateFlagBits: vk_mem_alloc.h'],['../group__group__init.html#gafd73b95e737ee7e76f827cb5472f559f',1,'VmaAllocatorCreateFlagBits: vk_mem_alloc.h']]], + ['vmaallocatorcreateflags_115',['VmaAllocatorCreateFlags',['../group__group__init.html#gacfe6863e160722c2c1bbcf7573fddc4d',1,'vk_mem_alloc.h']]], + ['vmaallocatorcreateinfo_116',['VmaAllocatorCreateInfo',['../struct_vma_allocator_create_info.html',1,'VmaAllocatorCreateInfo'],['../group__group__init.html#gaad9652301d33759b83e52d4f3605a14a',1,'VmaAllocatorCreateInfo: vk_mem_alloc.h']]], + ['vmaallocatorinfo_117',['VmaAllocatorInfo',['../struct_vma_allocator_info.html',1,'VmaAllocatorInfo'],['../group__group__init.html#ga1988031b0223fdbd564250fa1edd942c',1,'VmaAllocatorInfo: vk_mem_alloc.h']]], + ['vmabegindefragmentation_118',['vmaBeginDefragmentation',['../group__group__alloc.html#gac3335566858b45541fa9c0d7a6bbb57e',1,'vk_mem_alloc.h']]], + ['vmabegindefragmentationpass_119',['vmaBeginDefragmentationPass',['../group__group__alloc.html#ga980d7da2ce3b1fd5c8b8476bc362cc00',1,'vk_mem_alloc.h']]], + ['vmabindbuffermemory_120',['vmaBindBufferMemory',['../group__group__alloc.html#ga6b0929b914b60cf2d45cac4bf3547470',1,'vk_mem_alloc.h']]], + ['vmabindbuffermemory2_121',['vmaBindBufferMemory2',['../group__group__alloc.html#ga861f4f27189a7d11ab9d9eedc825cb6b',1,'vk_mem_alloc.h']]], + ['vmabindimagememory_122',['vmaBindImageMemory',['../group__group__alloc.html#ga3d3ca45799923aa5d138e9e5f9eb2da5',1,'vk_mem_alloc.h']]], + ['vmabindimagememory2_123',['vmaBindImageMemory2',['../group__group__alloc.html#ga5f3502dd7d38b53fb1533ea3921d038d',1,'vk_mem_alloc.h']]], + ['vmabudget_124',['VmaBudget',['../struct_vma_budget.html',1,'VmaBudget'],['../group__group__stats.html#gaa078667e71b1ef24e87a6a30d128381d',1,'VmaBudget: vk_mem_alloc.h']]], + ['vmacalculatepoolstatistics_125',['vmaCalculatePoolStatistics',['../group__group__stats.html#ga50ba0eb25d2b363b792be4645ca7a380',1,'vk_mem_alloc.h']]], + ['vmacalculatestatistics_126',['vmaCalculateStatistics',['../group__group__stats.html#ga36f3484de7aa6cd6edc4de9edfa0ff59',1,'vk_mem_alloc.h']]], + ['vmacalculatevirtualblockstatistics_127',['vmaCalculateVirtualBlockStatistics',['../group__group__virtual.html#ga93c5741bca44b43e5b849cacbd616098',1,'vk_mem_alloc.h']]], + ['vmacheckcorruption_128',['vmaCheckCorruption',['../group__group__alloc.html#ga49329a7f030dafcf82f7b73334c22e98',1,'vk_mem_alloc.h']]], + ['vmacheckpoolcorruption_129',['vmaCheckPoolCorruption',['../group__group__alloc.html#gad535935619c7a549bf837e1bb0068f89',1,'vk_mem_alloc.h']]], + ['vmaclearvirtualblock_130',['vmaClearVirtualBlock',['../group__group__virtual.html#ga5eda6f55919fb05bd2f56a112590c571',1,'vk_mem_alloc.h']]], + ['vmacopyallocationtomemory_131',['vmaCopyAllocationToMemory',['../group__group__alloc.html#gaac883dd38863944335071213b9ae8477',1,'vk_mem_alloc.h']]], + ['vmacopymemorytoallocation_132',['vmaCopyMemoryToAllocation',['../group__group__alloc.html#ga11731ec58a3a43a22bb925e0780ef405',1,'vk_mem_alloc.h']]], + ['vmacreatealiasingbuffer_133',['vmaCreateAliasingBuffer',['../group__group__alloc.html#ga60d5d4803e3c82505a2bfddb929adb03',1,'vk_mem_alloc.h']]], + ['vmacreatealiasingbuffer2_134',['vmaCreateAliasingBuffer2',['../group__group__alloc.html#gaf0cf014344213e117bd9f9cf5f928122',1,'vk_mem_alloc.h']]], + ['vmacreatealiasingimage_135',['vmaCreateAliasingImage',['../group__group__alloc.html#gaebc4db1f94b53dba2338b4c0fd80d0dc',1,'vk_mem_alloc.h']]], + ['vmacreatealiasingimage2_136',['vmaCreateAliasingImage2',['../group__group__alloc.html#ga69ac829f5bb0737449fa92c2d971f1bb',1,'vk_mem_alloc.h']]], + ['vmacreateallocator_137',['vmaCreateAllocator',['../group__group__init.html#ga200692051ddb34240248234f5f4c17bb',1,'vk_mem_alloc.h']]], + ['vmacreatebuffer_138',['vmaCreateBuffer',['../group__group__alloc.html#gac72ee55598617e8eecca384e746bab51',1,'vk_mem_alloc.h']]], + ['vmacreatebufferwithalignment_139',['vmaCreateBufferWithAlignment',['../group__group__alloc.html#gaa06a690013a0d01e60894ac378083834',1,'vk_mem_alloc.h']]], + ['vmacreateimage_140',['vmaCreateImage',['../group__group__alloc.html#ga02a94f25679275851a53e82eacbcfc73',1,'vk_mem_alloc.h']]], + ['vmacreatepool_141',['vmaCreatePool',['../group__group__alloc.html#ga5c8770ded7c59c8caac6de0c2cb00b50',1,'vk_mem_alloc.h']]], + ['vmacreatevirtualblock_142',['vmaCreateVirtualBlock',['../group__group__virtual.html#gab585754076877265fdae33e5c40ef13b',1,'vk_mem_alloc.h']]], + ['vmadefragmentationcontext_143',['VmaDefragmentationContext',['../struct_vma_defragmentation_context.html',1,'']]], + ['vmadefragmentationflagbits_144',['VmaDefragmentationFlagBits',['../group__group__alloc.html#ga6552a65b71d16f378c6994b3ceaef50c',1,'VmaDefragmentationFlagBits: vk_mem_alloc.h'],['../group__group__alloc.html#ga13415cc0b443353a7b5abda300b833fc',1,'VmaDefragmentationFlagBits: vk_mem_alloc.h']]], + ['vmadefragmentationflags_145',['VmaDefragmentationFlags',['../group__group__alloc.html#ga88a77cef37e5d3c4fc9eb328885d048d',1,'vk_mem_alloc.h']]], + ['vmadefragmentationinfo_146',['VmaDefragmentationInfo',['../struct_vma_defragmentation_info.html',1,'VmaDefragmentationInfo'],['../group__group__alloc.html#ga2bf47f96bf92bed2a49461bd9af3acfa',1,'VmaDefragmentationInfo: vk_mem_alloc.h']]], + ['vmadefragmentationmove_147',['VmaDefragmentationMove',['../struct_vma_defragmentation_move.html',1,'VmaDefragmentationMove'],['../group__group__alloc.html#ga563f4b43d3e31ed603d80cacc9ba8589',1,'VmaDefragmentationMove: vk_mem_alloc.h']]], + ['vmadefragmentationmoveoperation_148',['VmaDefragmentationMoveOperation',['../group__group__alloc.html#gada9e3861caf96f08894b0bcc160ec257',1,'VmaDefragmentationMoveOperation: vk_mem_alloc.h'],['../group__group__alloc.html#ga2ea666deeb3c2c74806a097e27cdb4a1',1,'VmaDefragmentationMoveOperation: vk_mem_alloc.h']]], + ['vmadefragmentationpassmoveinfo_149',['VmaDefragmentationPassMoveInfo',['../struct_vma_defragmentation_pass_move_info.html',1,'VmaDefragmentationPassMoveInfo'],['../group__group__alloc.html#gad6799e8e2b1527abfc84d33bc44aeaf5',1,'VmaDefragmentationPassMoveInfo: vk_mem_alloc.h']]], + ['vmadefragmentationstats_150',['VmaDefragmentationStats',['../struct_vma_defragmentation_stats.html',1,'VmaDefragmentationStats'],['../group__group__alloc.html#gad94034192259c2e34a4d1c5e27810403',1,'VmaDefragmentationStats: vk_mem_alloc.h']]], + ['vmadestroyallocator_151',['vmaDestroyAllocator',['../group__group__init.html#gaa8d164061c88f22fb1fd3c8f3534bc1d',1,'vk_mem_alloc.h']]], + ['vmadestroybuffer_152',['vmaDestroyBuffer',['../group__group__alloc.html#ga0d9f4e4ba5bf9aab1f1c746387753d77',1,'vk_mem_alloc.h']]], + ['vmadestroyimage_153',['vmaDestroyImage',['../group__group__alloc.html#gae50d2cb3b4a3bfd4dd40987234e50e7e',1,'vk_mem_alloc.h']]], + ['vmadestroypool_154',['vmaDestroyPool',['../group__group__alloc.html#ga5485779c8f1948238fc4e92232fa65e1',1,'vk_mem_alloc.h']]], + ['vmadestroyvirtualblock_155',['vmaDestroyVirtualBlock',['../group__group__virtual.html#ga3795f7783ae2c182cede067d656f66a5',1,'vk_mem_alloc.h']]], + ['vmadetailedstatistics_156',['VmaDetailedStatistics',['../struct_vma_detailed_statistics.html',1,'VmaDetailedStatistics'],['../group__group__stats.html#ga9ab0c535a6ca655dc63b8609ab4b8394',1,'VmaDetailedStatistics: vk_mem_alloc.h']]], + ['vmadevicememorycallbacks_157',['VmaDeviceMemoryCallbacks',['../struct_vma_device_memory_callbacks.html',1,'VmaDeviceMemoryCallbacks'],['../group__group__init.html#ga77692d3c8770ea8882d573206bd27b2b',1,'VmaDeviceMemoryCallbacks: vk_mem_alloc.h']]], + ['vmaenddefragmentation_158',['vmaEndDefragmentation',['../group__group__alloc.html#ga59f01ca3d53d50b7cca9b442b77a3e87',1,'vk_mem_alloc.h']]], + ['vmaenddefragmentationpass_159',['vmaEndDefragmentationPass',['../group__group__alloc.html#gaded05a445742a00718ee766144c5c226',1,'vk_mem_alloc.h']]], + ['vmafindmemorytypeindex_160',['vmaFindMemoryTypeIndex',['../group__group__alloc.html#gaef15a94b58fbcb0fe706d5720e84a74a',1,'vk_mem_alloc.h']]], + ['vmafindmemorytypeindexforbufferinfo_161',['vmaFindMemoryTypeIndexForBufferInfo',['../group__group__alloc.html#gae790ab9ffaf7667fb8f62523e6897888',1,'vk_mem_alloc.h']]], + ['vmafindmemorytypeindexforimageinfo_162',['vmaFindMemoryTypeIndexForImageInfo',['../group__group__alloc.html#ga088da83d8eaf3ce9056d9ea0b981d472',1,'vk_mem_alloc.h']]], + ['vmaflushallocation_163',['vmaFlushAllocation',['../group__group__alloc.html#ga30c37c1eec6025f397be41644f48490f',1,'vk_mem_alloc.h']]], + ['vmaflushallocations_164',['vmaFlushAllocations',['../group__group__alloc.html#gac3dd00da721875ed99fa8a881922bdfc',1,'vk_mem_alloc.h']]], + ['vmafreememory_165',['vmaFreeMemory',['../group__group__alloc.html#ga5fea5518972ae9094b1526cbcb19b05f',1,'vk_mem_alloc.h']]], + ['vmafreememorypages_166',['vmaFreeMemoryPages',['../group__group__alloc.html#ga834b1e4aef395c0a1d56a28e69a4a17e',1,'vk_mem_alloc.h']]], + ['vmagetallocationinfo_167',['vmaGetAllocationInfo',['../group__group__alloc.html#ga86dd08aba8633bfa4ad0df2e76481d8b',1,'vk_mem_alloc.h']]], + ['vmagetallocationinfo2_168',['vmaGetAllocationInfo2',['../group__group__alloc.html#ga1405cf3eae2fd1305d645879173031a0',1,'vk_mem_alloc.h']]], + ['vmagetallocationmemoryproperties_169',['vmaGetAllocationMemoryProperties',['../group__group__alloc.html#ga571e87dd38e552249b56b1b0b982fad1',1,'vk_mem_alloc.h']]], + ['vmagetallocatorinfo_170',['vmaGetAllocatorInfo',['../group__group__init.html#gafa02231a791b37255720d566a52683e7',1,'vk_mem_alloc.h']]], + ['vmagetheapbudgets_171',['vmaGetHeapBudgets',['../group__group__stats.html#ga9f88db9d46a432c0ad7278cecbc5eaa7',1,'vk_mem_alloc.h']]], + ['vmagetmemoryproperties_172',['vmaGetMemoryProperties',['../group__group__init.html#gab88db292a17974f911182543fda52d19',1,'vk_mem_alloc.h']]], + ['vmagetmemorytypeproperties_173',['vmaGetMemoryTypeProperties',['../group__group__init.html#ga8701444752eb5de4464adb5a2b514bca',1,'vk_mem_alloc.h']]], + ['vmagetphysicaldeviceproperties_174',['vmaGetPhysicalDeviceProperties',['../group__group__init.html#gaecabf7b6e91ea87d0316fa0a9e014fe0',1,'vk_mem_alloc.h']]], + ['vmagetpoolname_175',['vmaGetPoolName',['../group__group__alloc.html#gaf09b4e4eafdbee812e8d73ddf960f030',1,'vk_mem_alloc.h']]], + ['vmagetpoolstatistics_176',['vmaGetPoolStatistics',['../group__group__stats.html#ga34d8e7d83774eed0caee5c5ae88e217d',1,'vk_mem_alloc.h']]], + ['vmagetvirtualallocationinfo_177',['vmaGetVirtualAllocationInfo',['../group__group__virtual.html#ga8ee14ceb1fe033ec84d8aa29e1f75afa',1,'vk_mem_alloc.h']]], + ['vmagetvirtualblockstatistics_178',['vmaGetVirtualBlockStatistics',['../group__group__virtual.html#ga2902aa3130866afcc64bb5f984113db3',1,'vk_mem_alloc.h']]], + ['vmainvalidateallocation_179',['vmaInvalidateAllocation',['../group__group__alloc.html#gaaa8412919139ef413a4215ac6a290fae',1,'vk_mem_alloc.h']]], + ['vmainvalidateallocations_180',['vmaInvalidateAllocations',['../group__group__alloc.html#gab25b558d75f7378ec944a1522fdcc3c5',1,'vk_mem_alloc.h']]], + ['vmaisvirtualblockempty_181',['vmaIsVirtualBlockEmpty',['../group__group__virtual.html#gacd53b5b1d23f8fcbad692ccfdc1811f1',1,'vk_mem_alloc.h']]], + ['vmamapmemory_182',['vmaMapMemory',['../group__group__alloc.html#gad5bd1243512d099706de88168992f069',1,'vk_mem_alloc.h']]], + ['vmamemoryusage_183',['VmaMemoryUsage',['../group__group__alloc.html#gaa5846affa1e9da3800e3e78fae2305cc',1,'VmaMemoryUsage: vk_mem_alloc.h'],['../group__group__alloc.html#ga806e8499dde802e59eb72a1dc811c35f',1,'VmaMemoryUsage: vk_mem_alloc.h']]], + ['vmapool_184',['VmaPool',['../struct_vma_pool.html',1,'']]], + ['vmapoolcreateflagbits_185',['VmaPoolCreateFlagBits',['../group__group__alloc.html#ga9a7c45f9c863695d98c83fa5ac940fe7',1,'VmaPoolCreateFlagBits: vk_mem_alloc.h'],['../group__group__alloc.html#ga4d4f2efc2509157a9e4ecd4fd7942303',1,'VmaPoolCreateFlagBits: vk_mem_alloc.h']]], + ['vmapoolcreateflags_186',['VmaPoolCreateFlags',['../group__group__alloc.html#ga2770e325ea42e087c1b91fdf46d0292a',1,'vk_mem_alloc.h']]], + ['vmapoolcreateinfo_187',['VmaPoolCreateInfo',['../struct_vma_pool_create_info.html',1,'VmaPoolCreateInfo'],['../group__group__alloc.html#ga1017aa83489c0eee8d2163d2bf253f67',1,'VmaPoolCreateInfo: vk_mem_alloc.h']]], + ['vmasetallocationname_188',['vmaSetAllocationName',['../group__group__alloc.html#gabe02cbb0cd913b3f125958179f2020fc',1,'vk_mem_alloc.h']]], + ['vmasetallocationuserdata_189',['vmaSetAllocationUserData',['../group__group__alloc.html#gaf9147d31ffc11d62fc187bde283ed14f',1,'vk_mem_alloc.h']]], + ['vmasetcurrentframeindex_190',['vmaSetCurrentFrameIndex',['../group__group__init.html#gade56bf8dc9f5a5eaddf5f119ed525236',1,'vk_mem_alloc.h']]], + ['vmasetpoolname_191',['vmaSetPoolName',['../group__group__alloc.html#gadbae3a0b4ab078024462fc85c37f3b58',1,'vk_mem_alloc.h']]], + ['vmasetvirtualallocationuserdata_192',['vmaSetVirtualAllocationUserData',['../group__group__virtual.html#ga001ea1850458a4062b829e09c303fca2',1,'vk_mem_alloc.h']]], + ['vmastatistics_193',['VmaStatistics',['../struct_vma_statistics.html',1,'VmaStatistics'],['../group__group__stats.html#gac94bd1a382a3922ddc8de3af4d3ddd06',1,'VmaStatistics: vk_mem_alloc.h']]], + ['vmatotalstatistics_194',['VmaTotalStatistics',['../struct_vma_total_statistics.html',1,'VmaTotalStatistics'],['../group__group__stats.html#ga68916e729e55d513f88ffafbadddb770',1,'VmaTotalStatistics: vk_mem_alloc.h']]], + ['vmaunmapmemory_195',['vmaUnmapMemory',['../group__group__alloc.html#ga9bc268595cb33f6ec4d519cfce81ff45',1,'vk_mem_alloc.h']]], + ['vmavirtualallocate_196',['vmaVirtualAllocate',['../group__group__virtual.html#ga6b7cdcc1c3e5103c323fedc4e1319e01',1,'vk_mem_alloc.h']]], + ['vmavirtualallocation_197',['VmaVirtualAllocation',['../struct_vma_virtual_allocation.html',1,'']]], + ['vmavirtualallocationcreateflagbits_198',['VmaVirtualAllocationCreateFlagBits',['../group__group__virtual.html#ga2e9c64d405b14156fea7e10c4ad06cb6',1,'VmaVirtualAllocationCreateFlagBits: vk_mem_alloc.h'],['../group__group__virtual.html#ga936815e64946a6b6d812d08d10184c23',1,'VmaVirtualAllocationCreateFlagBits: vk_mem_alloc.h']]], + ['vmavirtualallocationcreateflags_199',['VmaVirtualAllocationCreateFlags',['../group__group__virtual.html#gae96ffc099bf898257fb19e9410ed08a7',1,'vk_mem_alloc.h']]], + ['vmavirtualallocationcreateinfo_200',['VmaVirtualAllocationCreateInfo',['../struct_vma_virtual_allocation_create_info.html',1,'VmaVirtualAllocationCreateInfo'],['../group__group__virtual.html#gac3c90d80bedc6847a41b82d0e2158c9e',1,'VmaVirtualAllocationCreateInfo: vk_mem_alloc.h']]], + ['vmavirtualallocationinfo_201',['VmaVirtualAllocationInfo',['../struct_vma_virtual_allocation_info.html',1,'VmaVirtualAllocationInfo'],['../group__group__virtual.html#ga75bc33ff7cf18c98e101f570dc2a5ebc',1,'VmaVirtualAllocationInfo: vk_mem_alloc.h']]], + ['vmavirtualblock_202',['VmaVirtualBlock',['../struct_vma_virtual_block.html',1,'']]], + ['vmavirtualblockcreateflagbits_203',['VmaVirtualBlockCreateFlagBits',['../group__group__virtual.html#ga88bcf8c1cd3bb1610ff7343811c65bca',1,'VmaVirtualBlockCreateFlagBits: vk_mem_alloc.h'],['../group__group__virtual.html#ga0860ba1c0a67178fae4aecb63a78573e',1,'VmaVirtualBlockCreateFlagBits: vk_mem_alloc.h']]], + ['vmavirtualblockcreateflags_204',['VmaVirtualBlockCreateFlags',['../group__group__virtual.html#ga4e49c2f0ab7f6b4868833e5bac78d91e',1,'vk_mem_alloc.h']]], + ['vmavirtualblockcreateinfo_205',['VmaVirtualBlockCreateInfo',['../struct_vma_virtual_block_create_info.html',1,'VmaVirtualBlockCreateInfo'],['../group__group__virtual.html#ga4753d42d40217a3a652a3cdf253ad773',1,'VmaVirtualBlockCreateInfo: vk_mem_alloc.h']]], + ['vmavirtualfree_206',['vmaVirtualFree',['../group__group__virtual.html#ga09fc688c0c3653ff23723b037e5d5033',1,'vk_mem_alloc.h']]], + ['vmavulkanfunctions_207',['VmaVulkanFunctions',['../struct_vma_vulkan_functions.html',1,'VmaVulkanFunctions'],['../group__group__init.html#gabb0a8e3b5040d847571cca6c7f9a8074',1,'VmaVulkanFunctions: vk_mem_alloc.h']]], + ['vulkan_20functions_208',['Vulkan functions',['../quick_start.html#quick_start_initialization_importing_vulkan_functions',1,'Importing Vulkan functions'],['../configuration.html#config_Vulkan_functions',1,'Pointers to Vulkan functions']]], + ['vulkan_20memory_20allocator_209',['Vulkan Memory Allocator',['../index.html',1,'']]], + ['vulkan_20version_210',['Selecting Vulkan version',['../quick_start.html#quick_start_initialization_selecting_vulkan_version',1,'']]], + ['vulkanapiversion_211',['vulkanApiVersion',['../struct_vma_allocator_create_info.html#ae0ffc55139b54520a6bb704b29ffc285',1,'VmaAllocatorCreateInfo']]] ]; diff --git a/docs/html/search/all_15.js b/docs/html/search/all_15.js index b071f7a..abb4d81 100644 --- a/docs/html/search/all_15.js +++ b/docs/html/search/all_15.js @@ -1,5 +1,7 @@ var searchData= [ ['warnings_0',['Validation layer warnings',['../general_considerations.html#general_considerations_validation_layer_warnings',1,'']]], - ['within_20budget_1',['Staying within budget',['../staying_within_budget.html',1,'index']]] + ['when_20not_20to_20use_20custom_20pools_1',['When not to use custom pools',['../custom_memory_pools.html#custom_memory_pools_when_not_use',1,'']]], + ['with_20other_20graphics_20apis_2',['Interop with other graphics APIs',['../other_api_interop.html',1,'index']]], + ['within_20budget_3',['Staying within budget',['../staying_within_budget.html',1,'index']]] ]; diff --git a/docs/html/search/all_2.html b/docs/html/search/all_2.html deleted file mode 100644 index 98e648c..0000000 --- a/docs/html/search/all_2.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_2.js b/docs/html/search/all_2.js index 86e8177..b7bfc59 100644 --- a/docs/html/search/all_2.js +++ b/docs/html/search/all_2.js @@ -7,13 +7,16 @@ var searchData= ['choosing_20memory_20type_20index_4',['Choosing memory type index',['../custom_memory_pools.html#custom_memory_pools_MemTypeIndex',1,'']]], ['compatibility_5',['Versioning and compatibility',['../general_considerations.html#general_considerations_versioning_and_compatibility',1,'']]], ['configuration_6',['Configuration',['../configuration.html',1,'index']]], - ['considerations_7',['considerations',['../virtual_allocator.html#virtual_allocator_additional_considerations',1,'Additional considerations'],['../general_considerations.html',1,'General considerations']]], - ['contents_8',['Table of contents',['../index.html#main_table_of_contents',1,'']]], - ['controlling_20memory_20usage_9',['Controlling memory usage',['../staying_within_budget.html#staying_within_budget_controlling_memory_usage',1,'']]], - ['copy_20for_20upload_10',['Staging copy for upload',['../usage_patterns.html#usage_patterns_staging_copy_upload',1,'']]], - ['corruption_20detection_11',['Corruption detection',['../debugging_memory_usage.html#debugging_memory_usage_corruption_detection',1,'']]], - ['creating_20virtual_20block_12',['Creating virtual block',['../virtual_allocator.html#virtual_allocator_creating_virtual_block',1,'']]], - ['custom_20alignment_13',['Custom alignment',['../opengl_interop.html#opengl_interop_custom_alignment',1,'']]], - ['custom_20host_20memory_20allocator_14',['Custom host memory allocator',['../configuration.html#custom_memory_allocator',1,'']]], - ['custom_20memory_20pools_15',['custom memory pools',['../custom_memory_pools.html',1,'Custom memory pools'],['../choosing_memory_type.html#choosing_memory_type_custom_memory_pools',1,'Custom memory pools']]] + ['configuration_20options_7',['Other configuration options',['../quick_start.html#quick_start_initialization_other_config',1,'']]], + ['considerations_8',['Additional considerations',['../virtual_allocator.html#virtual_allocator_additional_considerations',1,'']]], + ['considerations_9',['General considerations',['../general_considerations.html',1,'index']]], + ['controlling_20memory_20usage_10',['Controlling memory usage',['../staying_within_budget.html#staying_within_budget_controlling_memory_usage',1,'']]], + ['copy_20for_20upload_11',['Staging copy for upload',['../usage_patterns.html#usage_patterns_staging_copy_upload',1,'']]], + ['copy_20functions_12',['Copy functions',['../memory_mapping.html#memory_mapping_copy_functions',1,'']]], + ['corruption_20detection_13',['Corruption detection',['../debugging_memory_usage.html#debugging_memory_usage_corruption_detection',1,'']]], + ['creating_20virtual_20block_14',['Creating virtual block',['../virtual_allocator.html#virtual_allocator_creating_virtual_block',1,'']]], + ['custom_20alignment_15',['Custom alignment',['../other_api_interop.html#opengl_interop_custom_alignment',1,'']]], + ['custom_20host_20memory_20allocator_16',['Custom host memory allocator',['../configuration.html#custom_memory_allocator',1,'']]], + ['custom_20memory_20pools_17',['Custom memory pools',['../custom_memory_pools.html',1,'Custom memory pools'],['../choosing_memory_type.html#choosing_memory_type_custom_memory_pools',1,'Custom memory pools']]], + ['custom_20pools_18',['When not to use custom pools',['../custom_memory_pools.html#custom_memory_pools_when_not_use',1,'']]] ]; diff --git a/docs/html/search/all_3.html b/docs/html/search/all_3.html deleted file mode 100644 index f4e8da7..0000000 --- a/docs/html/search/all_3.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_3.js b/docs/html/search/all_3.js index d506324..359bbf5 100644 --- a/docs/html/search/all_3.js +++ b/docs/html/search/all_3.js @@ -1,21 +1,22 @@ var searchData= [ - ['data_0',['data',['../allocation_annotation.html',1,'Allocation names and user data'],['../allocation_annotation.html#allocation_user_data',1,'Allocation user data']]], - ['data_20uploading_1',['Advanced data uploading',['../usage_patterns.html#usage_patterns_advanced_data_uploading',1,'']]], - ['deallocation_2',['Deallocation',['../virtual_allocator.html#virtual_allocator_deallocation',1,'']]], - ['debugging_20incorrect_20memory_20usage_3',['Debugging incorrect memory usage',['../debugging_memory_usage.html',1,'index']]], - ['dedicated_20allocations_4',['Dedicated allocations',['../choosing_memory_type.html#choosing_memory_type_dedicated_allocations',1,'']]], - ['dedicatedmemory_5',['dedicatedMemory',['../struct_vma_allocation_info2.html#a7cf87251bd155d00ac6c6aaf4fc10448',1,'VmaAllocationInfo2']]], - ['defragmentation_6',['Defragmentation',['../defragmentation.html',1,'index']]], - ['deprecated_20list_7',['Deprecated List',['../deprecated.html',1,'']]], - ['detection_8',['Corruption detection',['../debugging_memory_usage.html#debugging_memory_usage_corruption_detection',1,'']]], - ['device_9',['device',['../struct_vma_allocator_create_info.html#ad924ddd77b04039c88d0c09b0ffcd500',1,'VmaAllocatorCreateInfo::device'],['../struct_vma_allocator_info.html#a012b4c485bf3b0ea8921352c5ee0c357',1,'VmaAllocatorInfo::device']]], - ['device_20address_10',['Enabling buffer device address',['../enabling_buffer_device_address.html',1,'index']]], - ['device_20heap_20memory_20limit_11',['Device heap memory limit',['../configuration.html#heap_memory_limit',1,'']]], - ['device_20memory_20allocation_20callbacks_12',['Device memory allocation callbacks',['../configuration.html#allocation_callbacks',1,'']]], - ['devicememory_13',['deviceMemory',['../struct_vma_allocation_info.html#ae0bfb7dfdf79a76ffefc9a94677a2f67',1,'VmaAllocationInfo']]], - ['devicememoryblocksfreed_14',['deviceMemoryBlocksFreed',['../struct_vma_defragmentation_stats.html#a0113f1877904a5d1ee8f409216ff276b',1,'VmaDefragmentationStats']]], - ['double_20stack_15',['Double stack',['../custom_memory_pools.html#linear_algorithm_double_stack',1,'']]], - ['dsttmpallocation_16',['dstTmpAllocation',['../struct_vma_defragmentation_move.html#ab65b106adf209acd7313296d1075300e',1,'VmaDefragmentationMove']]], - ['dump_17',['JSON dump',['../statistics.html#statistics_json_dump',1,'']]] + ['data_0',['Allocation names and user data',['../allocation_annotation.html',1,'index']]], + ['data_1',['Allocation user data',['../allocation_annotation.html#allocation_user_data',1,'']]], + ['data_20uploading_2',['Advanced data uploading',['../usage_patterns.html#usage_patterns_advanced_data_uploading',1,'']]], + ['deallocation_3',['Deallocation',['../virtual_allocator.html#virtual_allocator_deallocation',1,'']]], + ['debugging_20incorrect_20memory_20usage_4',['Debugging incorrect memory usage',['../debugging_memory_usage.html',1,'index']]], + ['dedicated_20allocations_5',['Dedicated allocations',['../choosing_memory_type.html#choosing_memory_type_dedicated_allocations',1,'']]], + ['dedicatedmemory_6',['dedicatedMemory',['../struct_vma_allocation_info2.html#a7cf87251bd155d00ac6c6aaf4fc10448',1,'VmaAllocationInfo2']]], + ['defragmentation_7',['Defragmentation',['../defragmentation.html',1,'index']]], + ['deprecated_20list_8',['Deprecated List',['../deprecated.html',1,'']]], + ['detection_9',['Corruption detection',['../debugging_memory_usage.html#debugging_memory_usage_corruption_detection',1,'']]], + ['device_10',['device',['../struct_vma_allocator_create_info.html#ad924ddd77b04039c88d0c09b0ffcd500',1,'VmaAllocatorCreateInfo::device'],['../struct_vma_allocator_info.html#a012b4c485bf3b0ea8921352c5ee0c357',1,'VmaAllocatorInfo::device']]], + ['device_20address_11',['Enabling buffer device address',['../enabling_buffer_device_address.html',1,'index']]], + ['device_20heap_20memory_20limit_12',['Device heap memory limit',['../configuration.html#heap_memory_limit',1,'']]], + ['device_20memory_20allocation_20callbacks_13',['Device memory allocation callbacks',['../configuration.html#allocation_callbacks',1,'']]], + ['devicememory_14',['deviceMemory',['../struct_vma_allocation_info.html#ae0bfb7dfdf79a76ffefc9a94677a2f67',1,'VmaAllocationInfo']]], + ['devicememoryblocksfreed_15',['deviceMemoryBlocksFreed',['../struct_vma_defragmentation_stats.html#a0113f1877904a5d1ee8f409216ff276b',1,'VmaDefragmentationStats']]], + ['double_20stack_16',['Double stack',['../custom_memory_pools.html#linear_algorithm_double_stack',1,'']]], + ['dsttmpallocation_17',['dstTmpAllocation',['../struct_vma_defragmentation_move.html#ab65b106adf209acd7313296d1075300e',1,'VmaDefragmentationMove']]], + ['dump_18',['JSON dump',['../statistics.html#statistics_json_dump',1,'']]] ]; diff --git a/docs/html/search/all_4.html b/docs/html/search/all_4.html deleted file mode 100644 index 678d3a2..0000000 --- a/docs/html/search/all_4.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_4.js b/docs/html/search/all_4.js index acd6edb..d62f021 100644 --- a/docs/html/search/all_4.js +++ b/docs/html/search/all_4.js @@ -1,7 +1,9 @@ var searchData= [ ['enabling_20buffer_20device_20address_0',['Enabling buffer device address',['../enabling_buffer_device_address.html',1,'index']]], - ['explicit_20memory_20types_1',['Explicit memory types',['../choosing_memory_type.html#choosing_memory_type_explicit_memory_types',1,'']]], - ['exporting_20memory_2',['Exporting memory',['../opengl_interop.html#opengl_interop_exporting_memory',1,'']]], - ['extended_20allocation_20information_3',['Extended allocation information',['../opengl_interop.html#opengl_interop_extended_allocation_information',1,'']]] + ['enabling_20extensions_1',['Enabling extensions',['../quick_start.html#quick_start_initialization_enabling_extensions',1,'']]], + ['explicit_20memory_20types_2',['Explicit memory types',['../choosing_memory_type.html#choosing_memory_type_explicit_memory_types',1,'']]], + ['exporting_20memory_3',['Exporting memory',['../other_api_interop.html#opengl_interop_exporting_memory',1,'']]], + ['extended_20allocation_20information_4',['Extended allocation information',['../other_api_interop.html#opengl_interop_extended_allocation_information',1,'']]], + ['extensions_5',['Enabling extensions',['../quick_start.html#quick_start_initialization_enabling_extensions',1,'']]] ]; diff --git a/docs/html/search/all_5.html b/docs/html/search/all_5.html deleted file mode 100644 index aa9af78..0000000 --- a/docs/html/search/all_5.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_5.js b/docs/html/search/all_5.js index 8ad7dfc..c8ed4c5 100644 --- a/docs/html/search/all_5.js +++ b/docs/html/search/all_5.js @@ -1,10 +1,11 @@ var searchData= [ ['features_20not_20supported_0',['Features not supported',['../general_considerations.html#general_considerations_features_not_supported',1,'']]], - ['flags_1',['flags',['../struct_vma_allocator_create_info.html#a392ea2ecbaff93f91a7c49f735ad4346',1,'VmaAllocatorCreateInfo::flags'],['../struct_vma_allocation_create_info.html#add09658ac14fe290ace25470ddd6d41b',1,'VmaAllocationCreateInfo::flags'],['../struct_vma_pool_create_info.html#a8405139f63d078340ae74513a59f5446',1,'VmaPoolCreateInfo::flags'],['../struct_vma_defragmentation_info.html#a3e23080c978ecf3abb3180f5b2069da7',1,'VmaDefragmentationInfo::flags'],['../struct_vma_virtual_block_create_info.html#aaab9bf7e2d228c02ab6d90a72a6e6912',1,'VmaVirtualBlockCreateInfo::flags'],['../struct_vma_virtual_allocation_create_info.html#ab10e16956cc4bf20ced9de77d1129ea4',1,'VmaVirtualAllocationCreateInfo::flags'],['../choosing_memory_type.html#choosing_memory_type_required_preferred_flags',1,'Required and preferred flags']]], - ['flush_20and_20invalidate_2',['Cache flush and invalidate',['../memory_mapping.html#memory_mapping_cache_control',1,'']]], - ['for_20budget_3',['Querying for budget',['../staying_within_budget.html#staying_within_budget_querying_for_budget',1,'']]], - ['for_20upload_4',['Staging copy for upload',['../usage_patterns.html#usage_patterns_staging_copy_upload',1,'']]], - ['free_20at_20once_5',['Free-at-once',['../custom_memory_pools.html#linear_algorithm_free_at_once',1,'']]], - ['functions_6',['functions',['../quick_start.html#quick_start_initialization_importing_vulkan_functions',1,'Importing Vulkan functions'],['../memory_mapping.html#memory_mapping_mapping_functions',1,'Mapping functions'],['../configuration.html#config_Vulkan_functions',1,'Pointers to Vulkan functions']]] + ['flags_1',['flags',['../struct_vma_allocator_create_info.html#a392ea2ecbaff93f91a7c49f735ad4346',1,'VmaAllocatorCreateInfo::flags'],['../struct_vma_allocation_create_info.html#add09658ac14fe290ace25470ddd6d41b',1,'VmaAllocationCreateInfo::flags'],['../struct_vma_pool_create_info.html#a8405139f63d078340ae74513a59f5446',1,'VmaPoolCreateInfo::flags'],['../struct_vma_defragmentation_info.html#a3e23080c978ecf3abb3180f5b2069da7',1,'VmaDefragmentationInfo::flags'],['../struct_vma_virtual_block_create_info.html#aaab9bf7e2d228c02ab6d90a72a6e6912',1,'VmaVirtualBlockCreateInfo::flags'],['../struct_vma_virtual_allocation_create_info.html#ab10e16956cc4bf20ced9de77d1129ea4',1,'VmaVirtualAllocationCreateInfo::flags']]], + ['flags_2',['Required and preferred flags',['../choosing_memory_type.html#choosing_memory_type_required_preferred_flags',1,'']]], + ['flush_20and_20invalidate_3',['Cache flush and invalidate',['../memory_mapping.html#memory_mapping_cache_control',1,'']]], + ['for_20budget_4',['Querying for budget',['../staying_within_budget.html#staying_within_budget_querying_for_budget',1,'']]], + ['for_20upload_5',['Staging copy for upload',['../usage_patterns.html#usage_patterns_staging_copy_upload',1,'']]], + ['free_20at_20once_6',['Free-at-once',['../custom_memory_pools.html#linear_algorithm_free_at_once',1,'']]], + ['functions_7',['Functions',['../memory_mapping.html#memory_mapping_copy_functions',1,'Copy functions'],['../quick_start.html#quick_start_initialization_importing_vulkan_functions',1,'Importing Vulkan functions'],['../memory_mapping.html#memory_mapping_mapping_functions',1,'Mapping functions'],['../configuration.html#config_Vulkan_functions',1,'Pointers to Vulkan functions']]] ]; diff --git a/docs/html/search/all_6.html b/docs/html/search/all_6.html deleted file mode 100644 index d3026a7..0000000 --- a/docs/html/search/all_6.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_6.js b/docs/html/search/all_6.js index d78e9fb..0a3d83e 100644 --- a/docs/html/search/all_6.js +++ b/docs/html/search/all_6.js @@ -1,5 +1,6 @@ var searchData= [ ['general_20considerations_0',['General considerations',['../general_considerations.html',1,'index']]], - ['gpu_20only_20resource_1',['GPU-only resource',['../usage_patterns.html#usage_patterns_gpu_only',1,'']]] + ['gpu_20only_20resource_1',['GPU-only resource',['../usage_patterns.html#usage_patterns_gpu_only',1,'']]], + ['graphics_20apis_2',['Interop with other graphics APIs',['../other_api_interop.html',1,'index']]] ]; diff --git a/docs/html/search/all_7.html b/docs/html/search/all_7.html deleted file mode 100644 index b2ee042..0000000 --- a/docs/html/search/all_7.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_8.html b/docs/html/search/all_8.html deleted file mode 100644 index 40a0b3f..0000000 --- a/docs/html/search/all_8.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_8.js b/docs/html/search/all_8.js index f889ed0..3374292 100644 --- a/docs/html/search/all_8.js +++ b/docs/html/search/all_8.js @@ -3,9 +3,11 @@ var searchData= ['importing_20vulkan_20functions_0',['Importing Vulkan functions',['../quick_start.html#quick_start_initialization_importing_vulkan_functions',1,'']]], ['incorrect_20memory_20usage_1',['Debugging incorrect memory usage',['../debugging_memory_usage.html',1,'index']]], ['index_2',['Choosing memory type index',['../custom_memory_pools.html#custom_memory_pools_MemTypeIndex',1,'']]], - ['information_3',['information',['../opengl_interop.html#opengl_interop_extended_allocation_information',1,'Extended allocation information'],['../vk_amd_device_coherent_memory.html#vk_amd_device_coherent_memory_more_information',1,'More information'],['../enabling_buffer_device_address.html#enabling_buffer_device_address_more_information',1,'More information']]], - ['initialization_4',['initialization',['../quick_start.html#quick_start_initialization',1,'Initialization'],['../vk_ext_memory_priority.html#vk_ext_memory_priority_initialization',1,'Initialization'],['../vk_amd_device_coherent_memory.html#vk_amd_device_coherent_memory_initialization',1,'Initialization'],['../enabling_buffer_device_address.html#enabling_buffer_device_address_initialization',1,'Initialization'],['../group__group__init.html',1,'Library initialization'],['../debugging_memory_usage.html#debugging_memory_usage_initialization',1,'Memory initialization']]], - ['instance_5',['instance',['../struct_vma_allocator_create_info.html#a70dd42e29b1df1d1b9b61532ae0b370b',1,'VmaAllocatorCreateInfo::instance'],['../struct_vma_allocator_info.html#a2ed6a4d2d3fea039d66a13f15d0ce5fe',1,'VmaAllocatorInfo::instance']]], - ['interop_6',['OpenGL Interop',['../opengl_interop.html',1,'index']]], - ['invalidate_7',['Cache flush and invalidate',['../memory_mapping.html#memory_mapping_cache_control',1,'']]] + ['information_3',['Information',['../other_api_interop.html#opengl_interop_extended_allocation_information',1,'Extended allocation information'],['../vk_amd_device_coherent_memory.html#vk_amd_device_coherent_memory_more_information',1,'More information'],['../enabling_buffer_device_address.html#enabling_buffer_device_address_more_information',1,'More information']]], + ['initialization_4',['Initialization',['../quick_start.html#quick_start_initialization',1,'Initialization'],['../vk_ext_memory_priority.html#vk_ext_memory_priority_initialization',1,'Initialization'],['../vk_amd_device_coherent_memory.html#vk_amd_device_coherent_memory_initialization',1,'Initialization'],['../enabling_buffer_device_address.html#enabling_buffer_device_address_initialization',1,'Initialization']]], + ['initialization_5',['Library initialization',['../group__group__init.html',1,'']]], + ['initialization_6',['Memory initialization',['../debugging_memory_usage.html#debugging_memory_usage_initialization',1,'']]], + ['instance_7',['instance',['../struct_vma_allocator_create_info.html#a70dd42e29b1df1d1b9b61532ae0b370b',1,'VmaAllocatorCreateInfo::instance'],['../struct_vma_allocator_info.html#a2ed6a4d2d3fea039d66a13f15d0ce5fe',1,'VmaAllocatorInfo::instance']]], + ['interop_20with_20other_20graphics_20apis_8',['Interop with other graphics APIs',['../other_api_interop.html',1,'index']]], + ['invalidate_9',['Cache flush and invalidate',['../memory_mapping.html#memory_mapping_cache_control',1,'']]] ]; diff --git a/docs/html/search/all_9.html b/docs/html/search/all_9.html deleted file mode 100644 index 7c49144..0000000 --- a/docs/html/search/all_9.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_a.html b/docs/html/search/all_a.html deleted file mode 100644 index fc9d79c..0000000 --- a/docs/html/search/all_a.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_b.html b/docs/html/search/all_b.html deleted file mode 100644 index dafb1fa..0000000 --- a/docs/html/search/all_b.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_b.js b/docs/html/search/all_b.js index 08959c7..ba3db5f 100644 --- a/docs/html/search/all_b.js +++ b/docs/html/search/all_b.js @@ -8,24 +8,27 @@ var searchData= ['maxallocationsperpass_5',['maxAllocationsPerPass',['../struct_vma_defragmentation_info.html#ac2db29d309bebc4f7d55041416e9694b',1,'VmaDefragmentationInfo']]], ['maxblockcount_6',['maxBlockCount',['../struct_vma_pool_create_info.html#ae41142f2834fcdc82baa4883c187b75c',1,'VmaPoolCreateInfo']]], ['maxbytesperpass_7',['maxBytesPerPass',['../struct_vma_defragmentation_info.html#a637ada77b02179a27fa92290000afac4',1,'VmaDefragmentationInfo']]], - ['memory_8',['memory',['../opengl_interop.html#opengl_interop_exporting_memory',1,'Exporting memory'],['../memory_mapping.html#memory_mapping_persistently_mapped_memory',1,'Persistently mapped memory']]], + ['memory_8',['Memory',['../other_api_interop.html#opengl_interop_exporting_memory',1,'Exporting memory'],['../memory_mapping.html#memory_mapping_persistently_mapped_memory',1,'Persistently mapped memory']]], ['memory_20allocation_9',['Memory allocation',['../group__group__alloc.html',1,'']]], ['memory_20allocation_20callbacks_10',['Device memory allocation callbacks',['../configuration.html#allocation_callbacks',1,'']]], - ['memory_20allocator_11',['memory allocator',['../configuration.html#custom_memory_allocator',1,'Custom host memory allocator'],['../index.html',1,'Vulkan Memory Allocator']]], - ['memory_20initialization_12',['Memory initialization',['../debugging_memory_usage.html#debugging_memory_usage_initialization',1,'']]], - ['memory_20limit_13',['Device heap memory limit',['../configuration.html#heap_memory_limit',1,'']]], - ['memory_20mapping_14',['Memory mapping',['../memory_mapping.html',1,'index']]], - ['memory_20pools_15',['memory pools',['../choosing_memory_type.html#choosing_memory_type_custom_memory_pools',1,'Custom memory pools'],['../custom_memory_pools.html',1,'Custom memory pools']]], - ['memory_20type_16',['Choosing memory type',['../choosing_memory_type.html',1,'index']]], - ['memory_20type_20index_17',['Choosing memory type index',['../custom_memory_pools.html#custom_memory_pools_MemTypeIndex',1,'']]], - ['memory_20types_18',['Explicit memory types',['../choosing_memory_type.html#choosing_memory_type_explicit_memory_types',1,'']]], - ['memory_20usage_19',['memory usage',['../staying_within_budget.html#staying_within_budget_controlling_memory_usage',1,'Controlling memory usage'],['../debugging_memory_usage.html',1,'Debugging incorrect memory usage']]], - ['memoryheap_20',['memoryHeap',['../struct_vma_total_statistics.html#a39beeba5b3a2e7cfe5f5e2331a2705ce',1,'VmaTotalStatistics']]], - ['memorytype_21',['memorytype',['../struct_vma_total_statistics.html#acb70e5b7fe543813ed8ba9282640969d',1,'VmaTotalStatistics::memoryType'],['../struct_vma_allocation_info.html#a7f6b0aa58c135e488e6b40a388dad9d5',1,'VmaAllocationInfo::memoryType']]], - ['memorytypebits_22',['memoryTypeBits',['../struct_vma_allocation_create_info.html#a3bf940c0271d85d6ba32a4d820075055',1,'VmaAllocationCreateInfo']]], - ['memorytypeindex_23',['memoryTypeIndex',['../struct_vma_pool_create_info.html#a596fa76b685d3f1f688f84a709a5b319',1,'VmaPoolCreateInfo']]], - ['minallocationalignment_24',['minAllocationAlignment',['../struct_vma_pool_create_info.html#ade3eca546f0c6ab4e8fbf20eb6d854cb',1,'VmaPoolCreateInfo']]], - ['minblockcount_25',['minBlockCount',['../struct_vma_pool_create_info.html#ad8006fb803185c0a699d30f3e9a865ae',1,'VmaPoolCreateInfo']]], - ['more_20information_26',['more information',['../vk_amd_device_coherent_memory.html#vk_amd_device_coherent_memory_more_information',1,'More information'],['../enabling_buffer_device_address.html#enabling_buffer_device_address_more_information',1,'More information']]], - ['movecount_27',['moveCount',['../struct_vma_defragmentation_pass_move_info.html#a1b3e18c23f9691f35baf183e615c4408',1,'VmaDefragmentationPassMoveInfo']]] + ['memory_20allocator_11',['Custom host memory allocator',['../configuration.html#custom_memory_allocator',1,'']]], + ['memory_20allocator_12',['Vulkan Memory Allocator',['../index.html',1,'']]], + ['memory_20initialization_13',['Memory initialization',['../debugging_memory_usage.html#debugging_memory_usage_initialization',1,'']]], + ['memory_20limit_14',['Device heap memory limit',['../configuration.html#heap_memory_limit',1,'']]], + ['memory_20mapping_15',['Memory mapping',['../memory_mapping.html',1,'index']]], + ['memory_20pools_16',['Custom memory pools',['../custom_memory_pools.html',1,'index']]], + ['memory_20pools_17',['Custom memory pools',['../choosing_memory_type.html#choosing_memory_type_custom_memory_pools',1,'']]], + ['memory_20type_18',['Choosing memory type',['../choosing_memory_type.html',1,'index']]], + ['memory_20type_20index_19',['Choosing memory type index',['../custom_memory_pools.html#custom_memory_pools_MemTypeIndex',1,'']]], + ['memory_20types_20',['Explicit memory types',['../choosing_memory_type.html#choosing_memory_type_explicit_memory_types',1,'']]], + ['memory_20usage_21',['Controlling memory usage',['../staying_within_budget.html#staying_within_budget_controlling_memory_usage',1,'']]], + ['memory_20usage_22',['Debugging incorrect memory usage',['../debugging_memory_usage.html',1,'index']]], + ['memoryheap_23',['memoryHeap',['../struct_vma_total_statistics.html#a39beeba5b3a2e7cfe5f5e2331a2705ce',1,'VmaTotalStatistics']]], + ['memorytype_24',['memoryType',['../struct_vma_total_statistics.html#acb70e5b7fe543813ed8ba9282640969d',1,'VmaTotalStatistics::memoryType'],['../struct_vma_allocation_info.html#a7f6b0aa58c135e488e6b40a388dad9d5',1,'VmaAllocationInfo::memoryType']]], + ['memorytypebits_25',['memoryTypeBits',['../struct_vma_allocation_create_info.html#a3bf940c0271d85d6ba32a4d820075055',1,'VmaAllocationCreateInfo']]], + ['memorytypeindex_26',['memoryTypeIndex',['../struct_vma_pool_create_info.html#a596fa76b685d3f1f688f84a709a5b319',1,'VmaPoolCreateInfo']]], + ['minallocationalignment_27',['minAllocationAlignment',['../struct_vma_pool_create_info.html#ade3eca546f0c6ab4e8fbf20eb6d854cb',1,'VmaPoolCreateInfo']]], + ['minblockcount_28',['minBlockCount',['../struct_vma_pool_create_info.html#ad8006fb803185c0a699d30f3e9a865ae',1,'VmaPoolCreateInfo']]], + ['more_20information_29',['More information',['../vk_amd_device_coherent_memory.html#vk_amd_device_coherent_memory_more_information',1,'More information'],['../enabling_buffer_device_address.html#enabling_buffer_device_address_more_information',1,'More information']]], + ['movecount_30',['moveCount',['../struct_vma_defragmentation_pass_move_info.html#a1b3e18c23f9691f35baf183e615c4408',1,'VmaDefragmentationPassMoveInfo']]] ]; diff --git a/docs/html/search/all_c.html b/docs/html/search/all_c.html deleted file mode 100644 index 9df619d..0000000 --- a/docs/html/search/all_c.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_c.js b/docs/html/search/all_c.js index e6195a8..588c3ac 100644 --- a/docs/html/search/all_c.js +++ b/docs/html/search/all_c.js @@ -3,5 +3,6 @@ var searchData= ['names_0',['Allocation names',['../allocation_annotation.html#allocation_names',1,'']]], ['names_20and_20user_20data_1',['Allocation names and user data',['../allocation_annotation.html',1,'index']]], ['not_20supported_2',['Features not supported',['../general_considerations.html#general_considerations_features_not_supported',1,'']]], - ['numeric_20statistics_3',['Numeric statistics',['../statistics.html#statistics_numeric_statistics',1,'']]] + ['not_20to_20use_20custom_20pools_3',['When not to use custom pools',['../custom_memory_pools.html#custom_memory_pools_when_not_use',1,'']]], + ['numeric_20statistics_4',['Numeric statistics',['../statistics.html#statistics_numeric_statistics',1,'']]] ]; diff --git a/docs/html/search/all_d.html b/docs/html/search/all_d.html deleted file mode 100644 index 95d8eec..0000000 --- a/docs/html/search/all_d.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_d.js b/docs/html/search/all_d.js index fea3713..7eaa660 100644 --- a/docs/html/search/all_d.js +++ b/docs/html/search/all_d.js @@ -1,11 +1,12 @@ var searchData= [ - ['of_20contents_0',['Table of contents',['../index.html#main_table_of_contents',1,'']]], - ['offset_1',['offset',['../struct_vma_allocation_info.html#a4a3c732388dbdc7a23f9365b00825268',1,'VmaAllocationInfo::offset'],['../struct_vma_virtual_allocation_info.html#accb40a8205f49ccca3de975da7d1a2b5',1,'VmaVirtualAllocationInfo::offset']]], - ['once_2',['Free-at-once',['../custom_memory_pools.html#linear_algorithm_free_at_once',1,'']]], - ['only_20resource_3',['GPU-only resource',['../usage_patterns.html#usage_patterns_gpu_only',1,'']]], - ['opengl_20interop_4',['OpenGL Interop',['../opengl_interop.html',1,'index']]], - ['operation_5',['operation',['../struct_vma_defragmentation_move.html#a20996a4686c9246dff77b375ac4a91e2',1,'VmaDefragmentationMove']]], - ['other_20use_20cases_6',['Other use cases',['../usage_patterns.html#usage_patterns_other_use_cases',1,'']]], - ['overlap_7',['Resource aliasing (overlap)',['../resource_aliasing.html',1,'index']]] + ['offset_0',['offset',['../struct_vma_allocation_info.html#a4a3c732388dbdc7a23f9365b00825268',1,'VmaAllocationInfo::offset'],['../struct_vma_virtual_allocation_info.html#accb40a8205f49ccca3de975da7d1a2b5',1,'VmaVirtualAllocationInfo::offset']]], + ['once_1',['Free-at-once',['../custom_memory_pools.html#linear_algorithm_free_at_once',1,'']]], + ['only_20resource_2',['GPU-only resource',['../usage_patterns.html#usage_patterns_gpu_only',1,'']]], + ['operation_3',['operation',['../struct_vma_defragmentation_move.html#a20996a4686c9246dff77b375ac4a91e2',1,'VmaDefragmentationMove']]], + ['options_4',['Other configuration options',['../quick_start.html#quick_start_initialization_other_config',1,'']]], + ['other_20configuration_20options_5',['Other configuration options',['../quick_start.html#quick_start_initialization_other_config',1,'']]], + ['other_20graphics_20apis_6',['Interop with other graphics APIs',['../other_api_interop.html',1,'index']]], + ['other_20use_20cases_7',['Other use cases',['../usage_patterns.html#usage_patterns_other_use_cases',1,'']]], + ['overlap_8',['Resource aliasing (overlap)',['../resource_aliasing.html',1,'index']]] ]; diff --git a/docs/html/search/all_e.html b/docs/html/search/all_e.html deleted file mode 100644 index a54e120..0000000 --- a/docs/html/search/all_e.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/all_e.js b/docs/html/search/all_e.js index e3b1576..bb520a2 100644 --- a/docs/html/search/all_e.js +++ b/docs/html/search/all_e.js @@ -1,6 +1,6 @@ var searchData= [ - ['pallocationcallbacks_0',['pallocationcallbacks',['../struct_vma_allocator_create_info.html#a6e409087e3be55400d0e4ccbe43c608d',1,'VmaAllocatorCreateInfo::pAllocationCallbacks'],['../struct_vma_virtual_block_create_info.html#a290283bf915c257d24584872d793ad30',1,'VmaVirtualBlockCreateInfo::pAllocationCallbacks']]], + ['pallocationcallbacks_0',['pAllocationCallbacks',['../struct_vma_allocator_create_info.html#a6e409087e3be55400d0e4ccbe43c608d',1,'VmaAllocatorCreateInfo::pAllocationCallbacks'],['../struct_vma_virtual_block_create_info.html#a290283bf915c257d24584872d793ad30',1,'VmaVirtualBlockCreateInfo::pAllocationCallbacks']]], ['parameters_1',['Allocation parameters',['../virtual_allocator.html#virtual_allocator_allocation_parameters',1,'']]], ['patterns_2',['Recommended usage patterns',['../usage_patterns.html',1,'index']]], ['pbreakcallbackuserdata_3',['pBreakCallbackUserData',['../struct_vma_defragmentation_info.html#ab08ed4a96a671ca176d926ccc31b203f',1,'VmaDefragmentationInfo']]], @@ -13,19 +13,21 @@ var searchData= ['pfnbreakcallback_10',['pfnBreakCallback',['../struct_vma_defragmentation_info.html#a9f189976b5b605345f84b5b5217acc0f',1,'VmaDefragmentationInfo']]], ['pfnfree_11',['pfnFree',['../struct_vma_device_memory_callbacks.html#abe8a3328bbc916f6f712fdb6b299444c',1,'VmaDeviceMemoryCallbacks']]], ['pheapsizelimit_12',['pHeapSizeLimit',['../struct_vma_allocator_create_info.html#a31c192aa6cbffa33279f6d9f0c47c44b',1,'VmaAllocatorCreateInfo']]], - ['physicaldevice_13',['physicaldevice',['../struct_vma_allocator_create_info.html#a08230f04ae6ccf8a78150a9e829a7156',1,'VmaAllocatorCreateInfo::physicalDevice'],['../struct_vma_allocator_info.html#aba2b703f96e51d567717e1fb2935b47a',1,'VmaAllocatorInfo::physicalDevice']]], + ['physicaldevice_13',['physicalDevice',['../struct_vma_allocator_create_info.html#a08230f04ae6ccf8a78150a9e829a7156',1,'VmaAllocatorCreateInfo::physicalDevice'],['../struct_vma_allocator_info.html#aba2b703f96e51d567717e1fb2935b47a',1,'VmaAllocatorInfo::physicalDevice']]], ['pmappeddata_14',['pMappedData',['../struct_vma_allocation_info.html#a5eeffbe2d2f30f53370ff14aefbadbe2',1,'VmaAllocationInfo']]], - ['pmoves_15',['pMoves',['../struct_vma_defragmentation_pass_move_info.html#adfa7a4994afd9b940e7f1dfaf436a725',1,'VmaDefragmentationPassMoveInfo']]], - ['pname_16',['pName',['../struct_vma_allocation_info.html#a28612f3e897e5b268254a3c63413d759',1,'VmaAllocationInfo']]], - ['pointers_20to_20vulkan_20functions_17',['Pointers to Vulkan functions',['../configuration.html#config_Vulkan_functions',1,'']]], - ['pool_18',['pool',['../struct_vma_defragmentation_info.html#a18dd2097d8ab2976cdc7dd3e7b978bd4',1,'VmaDefragmentationInfo::pool'],['../struct_vma_allocation_create_info.html#a6272c0555cfd1fe28bff1afeb6190150',1,'VmaAllocationCreateInfo::pool']]], - ['pools_19',['pools',['../custom_memory_pools.html',1,'Custom memory pools'],['../choosing_memory_type.html#choosing_memory_type_custom_memory_pools',1,'Custom memory pools']]], - ['preferred_20flags_20',['Required and preferred flags',['../choosing_memory_type.html#choosing_memory_type_required_preferred_flags',1,'']]], - ['preferredflags_21',['preferredFlags',['../struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d',1,'VmaAllocationCreateInfo']]], - ['preferredlargeheapblocksize_22',['preferredLargeHeapBlockSize',['../struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a',1,'VmaAllocatorCreateInfo']]], - ['priority_23',['priority',['../struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7',1,'VmaAllocationCreateInfo::priority'],['../struct_vma_pool_create_info.html#a16e686c688f6725f119ebf6e24ab5274',1,'VmaPoolCreateInfo::priority']]], - ['project_20setup_24',['Project setup',['../quick_start.html#quick_start_project_setup',1,'']]], - ['ptypeexternalmemoryhandletypes_25',['pTypeExternalMemoryHandleTypes',['../struct_vma_allocator_create_info.html#ae8f0db05e5cb4c43d7713bf4a49a736b',1,'VmaAllocatorCreateInfo']]], - ['puserdata_26',['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']]], - ['pvulkanfunctions_27',['pVulkanFunctions',['../struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd',1,'VmaAllocatorCreateInfo']]] + ['pmemoryallocatenext_15',['pMemoryAllocateNext',['../struct_vma_pool_create_info.html#ab6f2e52c47bfe1f4b44920b8bfc27b41',1,'VmaPoolCreateInfo']]], + ['pmoves_16',['pMoves',['../struct_vma_defragmentation_pass_move_info.html#adfa7a4994afd9b940e7f1dfaf436a725',1,'VmaDefragmentationPassMoveInfo']]], + ['pname_17',['pName',['../struct_vma_allocation_info.html#a28612f3e897e5b268254a3c63413d759',1,'VmaAllocationInfo']]], + ['pointers_20to_20vulkan_20functions_18',['Pointers to Vulkan functions',['../configuration.html#config_Vulkan_functions',1,'']]], + ['pool_19',['pool',['../struct_vma_allocation_create_info.html#a6272c0555cfd1fe28bff1afeb6190150',1,'VmaAllocationCreateInfo::pool'],['../struct_vma_defragmentation_info.html#a18dd2097d8ab2976cdc7dd3e7b978bd4',1,'VmaDefragmentationInfo::pool']]], + ['pools_20',['Custom memory pools',['../custom_memory_pools.html',1,'index']]], + ['pools_21',['Pools',['../choosing_memory_type.html#choosing_memory_type_custom_memory_pools',1,'Custom memory pools'],['../custom_memory_pools.html#custom_memory_pools_when_not_use',1,'When not to use custom pools']]], + ['preferred_20flags_22',['Required and preferred flags',['../choosing_memory_type.html#choosing_memory_type_required_preferred_flags',1,'']]], + ['preferredflags_23',['preferredFlags',['../struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d',1,'VmaAllocationCreateInfo']]], + ['preferredlargeheapblocksize_24',['preferredLargeHeapBlockSize',['../struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a',1,'VmaAllocatorCreateInfo']]], + ['priority_25',['priority',['../struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7',1,'VmaAllocationCreateInfo::priority'],['../struct_vma_pool_create_info.html#a16e686c688f6725f119ebf6e24ab5274',1,'VmaPoolCreateInfo::priority']]], + ['project_20setup_26',['Project setup',['../quick_start.html#quick_start_project_setup',1,'']]], + ['ptypeexternalmemoryhandletypes_27',['pTypeExternalMemoryHandleTypes',['../struct_vma_allocator_create_info.html#ae8f0db05e5cb4c43d7713bf4a49a736b',1,'VmaAllocatorCreateInfo']]], + ['puserdata_28',['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']]], + ['pvulkanfunctions_29',['pVulkanFunctions',['../struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd',1,'VmaAllocatorCreateInfo']]] ]; diff --git a/docs/html/search/all_f.html b/docs/html/search/all_f.html deleted file mode 100644 index 8d0aed3..0000000 --- a/docs/html/search/all_f.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/classes_0.html b/docs/html/search/classes_0.html deleted file mode 100644 index 9d4f871..0000000 --- a/docs/html/search/classes_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/defines_0.html b/docs/html/search/defines_0.html deleted file mode 100644 index d0cf633..0000000 --- a/docs/html/search/defines_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/defines_0.js b/docs/html/search/defines_0.js index dc66e75..86e8e4b 100644 --- a/docs/html/search/defines_0.js +++ b/docs/html/search/defines_0.js @@ -3,7 +3,7 @@ var searchData= ['vma_5fbind_5fmemory2_0',['VMA_BIND_MEMORY2',['../vk__mem__alloc_8h.html#a88bef97f86d70a34a4c0746e09a2680d',1,'vk_mem_alloc.h']]], ['vma_5fbuffer_5fdevice_5faddress_1',['VMA_BUFFER_DEVICE_ADDRESS',['../vk__mem__alloc_8h.html#a7f9d5e71b70dd1a137c303a8a8262c10',1,'vk_mem_alloc.h']]], ['vma_5fdedicated_5fallocation_2',['VMA_DEDICATED_ALLOCATION',['../vk__mem__alloc_8h.html#af7b860e63b96d11e44ae8587ba06bbf4',1,'vk_mem_alloc.h']]], - ['vma_5fextends_5fvk_5fstruct_3',['VMA_EXTENDS_VK_STRUCT',['../vk__mem__alloc_8h.html#a254293260c1bd97d15ee5987bb694b21',1,'vk_mem_alloc.h']]], + ['vma_5fkhr_5fmaintenance4_3',['VMA_KHR_MAINTENANCE4',['../vk__mem__alloc_8h.html#abc635c70b154cb54aa4a15cd5da55498',1,'vk_mem_alloc.h']]], ['vma_5fmemory_5fbudget_4',['VMA_MEMORY_BUDGET',['../vk__mem__alloc_8h.html#a05decf1cf4ebf767beba7acca6c1ec3a',1,'vk_mem_alloc.h']]], ['vma_5fstats_5fstring_5fenabled_5',['VMA_STATS_STRING_ENABLED',['../vk__mem__alloc_8h.html#ae25f0d55fd91cb166f002b63244800e1',1,'vk_mem_alloc.h']]] ]; diff --git a/docs/html/search/enums_0.html b/docs/html/search/enums_0.html deleted file mode 100644 index ec25efd..0000000 --- a/docs/html/search/enums_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/enumvalues_0.html b/docs/html/search/enumvalues_0.html deleted file mode 100644 index 71e9b7c..0000000 --- a/docs/html/search/enumvalues_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/enumvalues_0.js b/docs/html/search/enumvalues_0.js index d235465..58c7adb 100644 --- a/docs/html/search/enumvalues_0.js +++ b/docs/html/search/enumvalues_0.js @@ -26,37 +26,38 @@ var searchData= ['vma_5fallocator_5fcreate_5fflag_5fbits_5fmax_5fenum_23',['VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7cae4d5ad929caba5f23eb502b13bd5286c',1,'vk_mem_alloc.h']]], ['vma_5fallocator_5fcreate_5fkhr_5fbind_5fmemory2_5fbit_24',['VMA_ALLOCATOR_CREATE_KHR_BIND_MEMORY2_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca8fb75bf07cd184ab903596295e863dee',1,'vk_mem_alloc.h']]], ['vma_5fallocator_5fcreate_5fkhr_5fdedicated_5fallocation_5fbit_25',['VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7cace7da7cc6e71a625dfa763c55a597878',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5fbalanced_5fbit_26',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50caec35a4138111605a6ff32ca61aa871b6',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5fextensive_5fbit_27',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cae45a9469e5337731627758671741e412',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5ffast_5fbit_28',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5ffull_5fbit_29',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cafa162eac5be800bcdd4011427a71156d',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5fmask_30',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cabcbbdb3bfd53c4c3ab4eaeb5fd4894e9',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5fbits_5fmax_5fenum_31',['VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cab87ec33154803bfeb5ac2b379f1d6a97',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fmove_5foperation_5fcopy_32',['VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad4a06ac46c4cb1c67b0ebc1edfab9f18',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fmove_5foperation_5fdestroy_33',['VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257a9786f8492a9be2c03bd26395e352ab85',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fmove_5foperation_5fignore_34',['VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad25bc6f816b226b4fd5170e845f218d2',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fauto_35',['VMA_MEMORY_USAGE_AUTO',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fauto_5fprefer_5fdevice_36',['VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccae2adb696d6a73c18bb20c23666661327',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fauto_5fprefer_5fhost_37',['VMA_MEMORY_USAGE_AUTO_PREFER_HOST',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9b422585242160b8ed3418310ee6664d',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fcpu_5fcopy_38',['VMA_MEMORY_USAGE_CPU_COPY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca416a444d4d0fc20067c3f76f32ff2500',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fcpu_5fonly_39',['VMA_MEMORY_USAGE_CPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca40bdf4cddeffeb12f43d45ca1286e0a5',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fcpu_5fto_5fgpu_40',['VMA_MEMORY_USAGE_CPU_TO_GPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9066b52c5a7079bb74a69aaf8b92ff67',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fgpu_5flazily_5fallocated_41',['VMA_MEMORY_USAGE_GPU_LAZILY_ALLOCATED',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca835333d9072db63a653818030e17614d',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fgpu_5fonly_42',['VMA_MEMORY_USAGE_GPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccac6b5dc1432d88647aa4cd456246eadf7',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fgpu_5fto_5fcpu_43',['VMA_MEMORY_USAGE_GPU_TO_CPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca7b586d2fdaf82a463b58f581ed72be27',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5fmax_5fenum_44',['VMA_MEMORY_USAGE_MAX_ENUM',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca091e69437ef693e8d0d287f1c719ba6e',1,'vk_mem_alloc.h']]], - ['vma_5fmemory_5fusage_5funknown_45',['VMA_MEMORY_USAGE_UNKNOWN',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccaf50d27e34e0925cf3a63db8c839121dd',1,'vk_mem_alloc.h']]], - ['vma_5fpool_5fcreate_5falgorithm_5fmask_46',['VMA_POOL_CREATE_ALGORITHM_MASK',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7af4d270f8f42517a0f70037ceb6ac1d9c',1,'vk_mem_alloc.h']]], - ['vma_5fpool_5fcreate_5fflag_5fbits_5fmax_5fenum_47',['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_48',['VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a9f1a499508a8edb4e8ba40aa0290a3d2',1,'vk_mem_alloc.h']]], - ['vma_5fpool_5fcreate_5flinear_5falgorithm_5fbit_49',['VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a13c8a444197c67866be9cb05599fc726',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum_50',['VMA_VIRTUAL_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac1163c03ea837fa663462dc286d6a1a9',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmask_51',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MASK',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac5b5e45c335368d18df59c9f27df17e3',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_52',['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_53',['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_54',['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_55',['VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a9524a329a55b5ec390d57d90b67ad78e',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fblock_5fcreate_5falgorithm_5fmask_56',['VMA_VIRTUAL_BLOCK_CREATE_ALGORITHM_MASK',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaaf9487467136e1a9e371894dc3a7c4844',1,'vk_mem_alloc.h']]], - ['vma_5fvirtual_5fblock_5fcreate_5fflag_5fbits_5fmax_5fenum_57',['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_58',['VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaae6423e2fa2f3c9211b21c819e3f10f96',1,'vk_mem_alloc.h']]] + ['vma_5fallocator_5fcreate_5fkhr_5fmaintenance4_5fbit_26',['VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE4_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7caa2566e7f75e19ae7ec9c4fa509fea5fb',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5fbalanced_5fbit_27',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50caec35a4138111605a6ff32ca61aa871b6',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5fextensive_5fbit_28',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cae45a9469e5337731627758671741e412',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5ffast_5fbit_29',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5ffull_5fbit_30',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cafa162eac5be800bcdd4011427a71156d',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5fmask_31',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cabcbbdb3bfd53c4c3ab4eaeb5fd4894e9',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5fbits_5fmax_5fenum_32',['VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cab87ec33154803bfeb5ac2b379f1d6a97',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fmove_5foperation_5fcopy_33',['VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad4a06ac46c4cb1c67b0ebc1edfab9f18',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fmove_5foperation_5fdestroy_34',['VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257a9786f8492a9be2c03bd26395e352ab85',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fmove_5foperation_5fignore_35',['VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad25bc6f816b226b4fd5170e845f218d2',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fauto_36',['VMA_MEMORY_USAGE_AUTO',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fauto_5fprefer_5fdevice_37',['VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccae2adb696d6a73c18bb20c23666661327',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fauto_5fprefer_5fhost_38',['VMA_MEMORY_USAGE_AUTO_PREFER_HOST',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9b422585242160b8ed3418310ee6664d',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fcpu_5fcopy_39',['VMA_MEMORY_USAGE_CPU_COPY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca416a444d4d0fc20067c3f76f32ff2500',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fcpu_5fonly_40',['VMA_MEMORY_USAGE_CPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca40bdf4cddeffeb12f43d45ca1286e0a5',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fcpu_5fto_5fgpu_41',['VMA_MEMORY_USAGE_CPU_TO_GPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9066b52c5a7079bb74a69aaf8b92ff67',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fgpu_5flazily_5fallocated_42',['VMA_MEMORY_USAGE_GPU_LAZILY_ALLOCATED',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca835333d9072db63a653818030e17614d',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fgpu_5fonly_43',['VMA_MEMORY_USAGE_GPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccac6b5dc1432d88647aa4cd456246eadf7',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fgpu_5fto_5fcpu_44',['VMA_MEMORY_USAGE_GPU_TO_CPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca7b586d2fdaf82a463b58f581ed72be27',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5fmax_5fenum_45',['VMA_MEMORY_USAGE_MAX_ENUM',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca091e69437ef693e8d0d287f1c719ba6e',1,'vk_mem_alloc.h']]], + ['vma_5fmemory_5fusage_5funknown_46',['VMA_MEMORY_USAGE_UNKNOWN',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccaf50d27e34e0925cf3a63db8c839121dd',1,'vk_mem_alloc.h']]], + ['vma_5fpool_5fcreate_5falgorithm_5fmask_47',['VMA_POOL_CREATE_ALGORITHM_MASK',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7af4d270f8f42517a0f70037ceb6ac1d9c',1,'vk_mem_alloc.h']]], + ['vma_5fpool_5fcreate_5fflag_5fbits_5fmax_5fenum_48',['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_49',['VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a9f1a499508a8edb4e8ba40aa0290a3d2',1,'vk_mem_alloc.h']]], + ['vma_5fpool_5fcreate_5flinear_5falgorithm_5fbit_50',['VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a13c8a444197c67866be9cb05599fc726',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum_51',['VMA_VIRTUAL_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac1163c03ea837fa663462dc286d6a1a9',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmask_52',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MASK',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac5b5e45c335368d18df59c9f27df17e3',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_53',['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_54',['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_55',['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_56',['VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a9524a329a55b5ec390d57d90b67ad78e',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fblock_5fcreate_5falgorithm_5fmask_57',['VMA_VIRTUAL_BLOCK_CREATE_ALGORITHM_MASK',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaaf9487467136e1a9e371894dc3a7c4844',1,'vk_mem_alloc.h']]], + ['vma_5fvirtual_5fblock_5fcreate_5fflag_5fbits_5fmax_5fenum_58',['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_59',['VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaae6423e2fa2f3c9211b21c819e3f10f96',1,'vk_mem_alloc.h']]] ]; diff --git a/docs/html/search/files_0.html b/docs/html/search/files_0.html deleted file mode 100644 index 2dbb4c2..0000000 --- a/docs/html/search/files_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/functions_0.html b/docs/html/search/functions_0.html deleted file mode 100644 index 3b739c7..0000000 --- a/docs/html/search/functions_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/functions_0.js b/docs/html/search/functions_0.js index 1f14c73..62ad9bf 100644 --- a/docs/html/search/functions_0.js +++ b/docs/html/search/functions_0.js @@ -1,6 +1,6 @@ var searchData= [ - ['vma_5fextends_5fvk_5fstruct_0',['VMA_EXTENDS_VK_STRUCT',['../struct_vma_pool_create_info.html#abf71afe846790f72d1860e0afb12b883',1,'VmaPoolCreateInfo']]], + ['vk_5fdefine_5fnon_5fdispatchable_5fhandle_0',['VK_DEFINE_NON_DISPATCHABLE_HANDLE',['../group__group__virtual.html#ga565936f8d98d225b536a2d9703bc7676',1,'vk_mem_alloc.h']]], ['vmaallocatememory_1',['vmaAllocateMemory',['../group__group__alloc.html#gabf28077dbf82d0908b8acbe8ee8dd9b8',1,'vk_mem_alloc.h']]], ['vmaallocatememoryforbuffer_2',['vmaAllocateMemoryForBuffer',['../group__group__alloc.html#ga7fdf64415b6c3d83c454f28d2c53df7b',1,'vk_mem_alloc.h']]], ['vmaallocatememoryforimage_3',['vmaAllocateMemoryForImage',['../group__group__alloc.html#ga0faa3f9e5fb233d29d1e00390650febb',1,'vk_mem_alloc.h']]], @@ -8,61 +8,63 @@ var searchData= ['vmabegindefragmentation_5',['vmaBeginDefragmentation',['../group__group__alloc.html#gac3335566858b45541fa9c0d7a6bbb57e',1,'vk_mem_alloc.h']]], ['vmabegindefragmentationpass_6',['vmaBeginDefragmentationPass',['../group__group__alloc.html#ga980d7da2ce3b1fd5c8b8476bc362cc00',1,'vk_mem_alloc.h']]], ['vmabindbuffermemory_7',['vmaBindBufferMemory',['../group__group__alloc.html#ga6b0929b914b60cf2d45cac4bf3547470',1,'vk_mem_alloc.h']]], - ['vmabindbuffermemory2_8',['vmaBindBufferMemory2',['../group__group__alloc.html#ga2e8f3e97eaf16b2fc0f8db1ece5fa52c',1,'vk_mem_alloc.h']]], + ['vmabindbuffermemory2_8',['vmaBindBufferMemory2',['../group__group__alloc.html#ga861f4f27189a7d11ab9d9eedc825cb6b',1,'vk_mem_alloc.h']]], ['vmabindimagememory_9',['vmaBindImageMemory',['../group__group__alloc.html#ga3d3ca45799923aa5d138e9e5f9eb2da5',1,'vk_mem_alloc.h']]], - ['vmabindimagememory2_10',['vmaBindImageMemory2',['../group__group__alloc.html#ga71890c538a738b4ee70a93a4f29fede2',1,'vk_mem_alloc.h']]], + ['vmabindimagememory2_10',['vmaBindImageMemory2',['../group__group__alloc.html#ga5f3502dd7d38b53fb1533ea3921d038d',1,'vk_mem_alloc.h']]], ['vmacalculatepoolstatistics_11',['vmaCalculatePoolStatistics',['../group__group__stats.html#ga50ba0eb25d2b363b792be4645ca7a380',1,'vk_mem_alloc.h']]], ['vmacalculatestatistics_12',['vmaCalculateStatistics',['../group__group__stats.html#ga36f3484de7aa6cd6edc4de9edfa0ff59',1,'vk_mem_alloc.h']]], ['vmacalculatevirtualblockstatistics_13',['vmaCalculateVirtualBlockStatistics',['../group__group__virtual.html#ga93c5741bca44b43e5b849cacbd616098',1,'vk_mem_alloc.h']]], ['vmacheckcorruption_14',['vmaCheckCorruption',['../group__group__alloc.html#ga49329a7f030dafcf82f7b73334c22e98',1,'vk_mem_alloc.h']]], ['vmacheckpoolcorruption_15',['vmaCheckPoolCorruption',['../group__group__alloc.html#gad535935619c7a549bf837e1bb0068f89',1,'vk_mem_alloc.h']]], ['vmaclearvirtualblock_16',['vmaClearVirtualBlock',['../group__group__virtual.html#ga5eda6f55919fb05bd2f56a112590c571',1,'vk_mem_alloc.h']]], - ['vmacreatealiasingbuffer_17',['vmaCreateAliasingBuffer',['../group__group__alloc.html#ga60d5d4803e3c82505a2bfddb929adb03',1,'vk_mem_alloc.h']]], - ['vmacreatealiasingbuffer2_18',['vmaCreateAliasingBuffer2',['../group__group__alloc.html#gaf0cf014344213e117bd9f9cf5f928122',1,'vk_mem_alloc.h']]], - ['vmacreatealiasingimage_19',['vmaCreateAliasingImage',['../group__group__alloc.html#gaebc4db1f94b53dba2338b4c0fd80d0dc',1,'vk_mem_alloc.h']]], - ['vmacreatealiasingimage2_20',['vmaCreateAliasingImage2',['../group__group__alloc.html#ga69ac829f5bb0737449fa92c2d971f1bb',1,'vk_mem_alloc.h']]], - ['vmacreateallocator_21',['vmaCreateAllocator',['../group__group__init.html#ga200692051ddb34240248234f5f4c17bb',1,'vk_mem_alloc.h']]], - ['vmacreatebuffer_22',['vmaCreateBuffer',['../group__group__alloc.html#gac72ee55598617e8eecca384e746bab51',1,'vk_mem_alloc.h']]], - ['vmacreatebufferwithalignment_23',['vmaCreateBufferWithAlignment',['../group__group__alloc.html#gaa06a690013a0d01e60894ac378083834',1,'vk_mem_alloc.h']]], - ['vmacreateimage_24',['vmaCreateImage',['../group__group__alloc.html#ga02a94f25679275851a53e82eacbcfc73',1,'vk_mem_alloc.h']]], - ['vmacreatepool_25',['vmaCreatePool',['../group__group__alloc.html#ga5c8770ded7c59c8caac6de0c2cb00b50',1,'vk_mem_alloc.h']]], - ['vmacreatevirtualblock_26',['vmaCreateVirtualBlock',['../group__group__virtual.html#gab585754076877265fdae33e5c40ef13b',1,'vk_mem_alloc.h']]], - ['vmadestroyallocator_27',['vmaDestroyAllocator',['../group__group__init.html#gaa8d164061c88f22fb1fd3c8f3534bc1d',1,'vk_mem_alloc.h']]], - ['vmadestroybuffer_28',['vmaDestroyBuffer',['../group__group__alloc.html#ga0d9f4e4ba5bf9aab1f1c746387753d77',1,'vk_mem_alloc.h']]], - ['vmadestroyimage_29',['vmaDestroyImage',['../group__group__alloc.html#gae50d2cb3b4a3bfd4dd40987234e50e7e',1,'vk_mem_alloc.h']]], - ['vmadestroypool_30',['vmaDestroyPool',['../group__group__alloc.html#ga5485779c8f1948238fc4e92232fa65e1',1,'vk_mem_alloc.h']]], - ['vmadestroyvirtualblock_31',['vmaDestroyVirtualBlock',['../group__group__virtual.html#ga3795f7783ae2c182cede067d656f66a5',1,'vk_mem_alloc.h']]], - ['vmaenddefragmentation_32',['vmaEndDefragmentation',['../group__group__alloc.html#ga59f01ca3d53d50b7cca9b442b77a3e87',1,'vk_mem_alloc.h']]], - ['vmaenddefragmentationpass_33',['vmaEndDefragmentationPass',['../group__group__alloc.html#gaded05a445742a00718ee766144c5c226',1,'vk_mem_alloc.h']]], - ['vmafindmemorytypeindex_34',['vmaFindMemoryTypeIndex',['../group__group__alloc.html#gaef15a94b58fbcb0fe706d5720e84a74a',1,'vk_mem_alloc.h']]], - ['vmafindmemorytypeindexforbufferinfo_35',['vmaFindMemoryTypeIndexForBufferInfo',['../group__group__alloc.html#gae790ab9ffaf7667fb8f62523e6897888',1,'vk_mem_alloc.h']]], - ['vmafindmemorytypeindexforimageinfo_36',['vmaFindMemoryTypeIndexForImageInfo',['../group__group__alloc.html#ga088da83d8eaf3ce9056d9ea0b981d472',1,'vk_mem_alloc.h']]], - ['vmaflushallocation_37',['vmaFlushAllocation',['../group__group__alloc.html#ga30c37c1eec6025f397be41644f48490f',1,'vk_mem_alloc.h']]], - ['vmaflushallocations_38',['vmaFlushAllocations',['../group__group__alloc.html#gac3dd00da721875ed99fa8a881922bdfc',1,'vk_mem_alloc.h']]], - ['vmafreememory_39',['vmaFreeMemory',['../group__group__alloc.html#ga5fea5518972ae9094b1526cbcb19b05f',1,'vk_mem_alloc.h']]], - ['vmafreememorypages_40',['vmaFreeMemoryPages',['../group__group__alloc.html#ga834b1e4aef395c0a1d56a28e69a4a17e',1,'vk_mem_alloc.h']]], - ['vmagetallocationinfo_41',['vmaGetAllocationInfo',['../group__group__alloc.html#ga86dd08aba8633bfa4ad0df2e76481d8b',1,'vk_mem_alloc.h']]], - ['vmagetallocationinfo2_42',['vmaGetAllocationInfo2',['../group__group__alloc.html#ga1405cf3eae2fd1305d645879173031a0',1,'vk_mem_alloc.h']]], - ['vmagetallocationmemoryproperties_43',['vmaGetAllocationMemoryProperties',['../group__group__alloc.html#ga571e87dd38e552249b56b1b0b982fad1',1,'vk_mem_alloc.h']]], - ['vmagetallocatorinfo_44',['vmaGetAllocatorInfo',['../group__group__init.html#gafa02231a791b37255720d566a52683e7',1,'vk_mem_alloc.h']]], - ['vmagetheapbudgets_45',['vmaGetHeapBudgets',['../group__group__stats.html#ga9f88db9d46a432c0ad7278cecbc5eaa7',1,'vk_mem_alloc.h']]], - ['vmagetmemoryproperties_46',['vmaGetMemoryProperties',['../group__group__init.html#gab88db292a17974f911182543fda52d19',1,'vk_mem_alloc.h']]], - ['vmagetmemorytypeproperties_47',['vmaGetMemoryTypeProperties',['../group__group__init.html#ga8701444752eb5de4464adb5a2b514bca',1,'vk_mem_alloc.h']]], - ['vmagetphysicaldeviceproperties_48',['vmaGetPhysicalDeviceProperties',['../group__group__init.html#gaecabf7b6e91ea87d0316fa0a9e014fe0',1,'vk_mem_alloc.h']]], - ['vmagetpoolname_49',['vmaGetPoolName',['../group__group__alloc.html#gaf09b4e4eafdbee812e8d73ddf960f030',1,'vk_mem_alloc.h']]], - ['vmagetpoolstatistics_50',['vmaGetPoolStatistics',['../group__group__stats.html#ga34d8e7d83774eed0caee5c5ae88e217d',1,'vk_mem_alloc.h']]], - ['vmagetvirtualallocationinfo_51',['vmaGetVirtualAllocationInfo',['../group__group__virtual.html#ga8ee14ceb1fe033ec84d8aa29e1f75afa',1,'vk_mem_alloc.h']]], - ['vmagetvirtualblockstatistics_52',['vmaGetVirtualBlockStatistics',['../group__group__virtual.html#ga2902aa3130866afcc64bb5f984113db3',1,'vk_mem_alloc.h']]], - ['vmainvalidateallocation_53',['vmaInvalidateAllocation',['../group__group__alloc.html#gaaa8412919139ef413a4215ac6a290fae',1,'vk_mem_alloc.h']]], - ['vmainvalidateallocations_54',['vmaInvalidateAllocations',['../group__group__alloc.html#gab25b558d75f7378ec944a1522fdcc3c5',1,'vk_mem_alloc.h']]], - ['vmaisvirtualblockempty_55',['vmaIsVirtualBlockEmpty',['../group__group__virtual.html#gacd53b5b1d23f8fcbad692ccfdc1811f1',1,'vk_mem_alloc.h']]], - ['vmamapmemory_56',['vmaMapMemory',['../group__group__alloc.html#gad5bd1243512d099706de88168992f069',1,'vk_mem_alloc.h']]], - ['vmasetallocationname_57',['vmaSetAllocationName',['../group__group__alloc.html#gabe02cbb0cd913b3f125958179f2020fc',1,'vk_mem_alloc.h']]], - ['vmasetallocationuserdata_58',['vmaSetAllocationUserData',['../group__group__alloc.html#gaf9147d31ffc11d62fc187bde283ed14f',1,'vk_mem_alloc.h']]], - ['vmasetcurrentframeindex_59',['vmaSetCurrentFrameIndex',['../group__group__init.html#gade56bf8dc9f5a5eaddf5f119ed525236',1,'vk_mem_alloc.h']]], - ['vmasetpoolname_60',['vmaSetPoolName',['../group__group__alloc.html#gadbae3a0b4ab078024462fc85c37f3b58',1,'vk_mem_alloc.h']]], - ['vmasetvirtualallocationuserdata_61',['vmaSetVirtualAllocationUserData',['../group__group__virtual.html#ga001ea1850458a4062b829e09c303fca2',1,'vk_mem_alloc.h']]], - ['vmaunmapmemory_62',['vmaUnmapMemory',['../group__group__alloc.html#ga9bc268595cb33f6ec4d519cfce81ff45',1,'vk_mem_alloc.h']]], - ['vmavirtualallocate_63',['vmaVirtualAllocate',['../group__group__virtual.html#ga6b7cdcc1c3e5103c323fedc4e1319e01',1,'vk_mem_alloc.h']]], - ['vmavirtualfree_64',['vmaVirtualFree',['../group__group__virtual.html#ga09fc688c0c3653ff23723b037e5d5033',1,'vk_mem_alloc.h']]] + ['vmacopyallocationtomemory_17',['vmaCopyAllocationToMemory',['../group__group__alloc.html#gaac883dd38863944335071213b9ae8477',1,'vk_mem_alloc.h']]], + ['vmacopymemorytoallocation_18',['vmaCopyMemoryToAllocation',['../group__group__alloc.html#ga11731ec58a3a43a22bb925e0780ef405',1,'vk_mem_alloc.h']]], + ['vmacreatealiasingbuffer_19',['vmaCreateAliasingBuffer',['../group__group__alloc.html#ga60d5d4803e3c82505a2bfddb929adb03',1,'vk_mem_alloc.h']]], + ['vmacreatealiasingbuffer2_20',['vmaCreateAliasingBuffer2',['../group__group__alloc.html#gaf0cf014344213e117bd9f9cf5f928122',1,'vk_mem_alloc.h']]], + ['vmacreatealiasingimage_21',['vmaCreateAliasingImage',['../group__group__alloc.html#gaebc4db1f94b53dba2338b4c0fd80d0dc',1,'vk_mem_alloc.h']]], + ['vmacreatealiasingimage2_22',['vmaCreateAliasingImage2',['../group__group__alloc.html#ga69ac829f5bb0737449fa92c2d971f1bb',1,'vk_mem_alloc.h']]], + ['vmacreateallocator_23',['vmaCreateAllocator',['../group__group__init.html#ga200692051ddb34240248234f5f4c17bb',1,'vk_mem_alloc.h']]], + ['vmacreatebuffer_24',['vmaCreateBuffer',['../group__group__alloc.html#gac72ee55598617e8eecca384e746bab51',1,'vk_mem_alloc.h']]], + ['vmacreatebufferwithalignment_25',['vmaCreateBufferWithAlignment',['../group__group__alloc.html#gaa06a690013a0d01e60894ac378083834',1,'vk_mem_alloc.h']]], + ['vmacreateimage_26',['vmaCreateImage',['../group__group__alloc.html#ga02a94f25679275851a53e82eacbcfc73',1,'vk_mem_alloc.h']]], + ['vmacreatepool_27',['vmaCreatePool',['../group__group__alloc.html#ga5c8770ded7c59c8caac6de0c2cb00b50',1,'vk_mem_alloc.h']]], + ['vmacreatevirtualblock_28',['vmaCreateVirtualBlock',['../group__group__virtual.html#gab585754076877265fdae33e5c40ef13b',1,'vk_mem_alloc.h']]], + ['vmadestroyallocator_29',['vmaDestroyAllocator',['../group__group__init.html#gaa8d164061c88f22fb1fd3c8f3534bc1d',1,'vk_mem_alloc.h']]], + ['vmadestroybuffer_30',['vmaDestroyBuffer',['../group__group__alloc.html#ga0d9f4e4ba5bf9aab1f1c746387753d77',1,'vk_mem_alloc.h']]], + ['vmadestroyimage_31',['vmaDestroyImage',['../group__group__alloc.html#gae50d2cb3b4a3bfd4dd40987234e50e7e',1,'vk_mem_alloc.h']]], + ['vmadestroypool_32',['vmaDestroyPool',['../group__group__alloc.html#ga5485779c8f1948238fc4e92232fa65e1',1,'vk_mem_alloc.h']]], + ['vmadestroyvirtualblock_33',['vmaDestroyVirtualBlock',['../group__group__virtual.html#ga3795f7783ae2c182cede067d656f66a5',1,'vk_mem_alloc.h']]], + ['vmaenddefragmentation_34',['vmaEndDefragmentation',['../group__group__alloc.html#ga59f01ca3d53d50b7cca9b442b77a3e87',1,'vk_mem_alloc.h']]], + ['vmaenddefragmentationpass_35',['vmaEndDefragmentationPass',['../group__group__alloc.html#gaded05a445742a00718ee766144c5c226',1,'vk_mem_alloc.h']]], + ['vmafindmemorytypeindex_36',['vmaFindMemoryTypeIndex',['../group__group__alloc.html#gaef15a94b58fbcb0fe706d5720e84a74a',1,'vk_mem_alloc.h']]], + ['vmafindmemorytypeindexforbufferinfo_37',['vmaFindMemoryTypeIndexForBufferInfo',['../group__group__alloc.html#gae790ab9ffaf7667fb8f62523e6897888',1,'vk_mem_alloc.h']]], + ['vmafindmemorytypeindexforimageinfo_38',['vmaFindMemoryTypeIndexForImageInfo',['../group__group__alloc.html#ga088da83d8eaf3ce9056d9ea0b981d472',1,'vk_mem_alloc.h']]], + ['vmaflushallocation_39',['vmaFlushAllocation',['../group__group__alloc.html#ga30c37c1eec6025f397be41644f48490f',1,'vk_mem_alloc.h']]], + ['vmaflushallocations_40',['vmaFlushAllocations',['../group__group__alloc.html#gac3dd00da721875ed99fa8a881922bdfc',1,'vk_mem_alloc.h']]], + ['vmafreememory_41',['vmaFreeMemory',['../group__group__alloc.html#ga5fea5518972ae9094b1526cbcb19b05f',1,'vk_mem_alloc.h']]], + ['vmafreememorypages_42',['vmaFreeMemoryPages',['../group__group__alloc.html#ga834b1e4aef395c0a1d56a28e69a4a17e',1,'vk_mem_alloc.h']]], + ['vmagetallocationinfo_43',['vmaGetAllocationInfo',['../group__group__alloc.html#ga86dd08aba8633bfa4ad0df2e76481d8b',1,'vk_mem_alloc.h']]], + ['vmagetallocationinfo2_44',['vmaGetAllocationInfo2',['../group__group__alloc.html#ga1405cf3eae2fd1305d645879173031a0',1,'vk_mem_alloc.h']]], + ['vmagetallocationmemoryproperties_45',['vmaGetAllocationMemoryProperties',['../group__group__alloc.html#ga571e87dd38e552249b56b1b0b982fad1',1,'vk_mem_alloc.h']]], + ['vmagetallocatorinfo_46',['vmaGetAllocatorInfo',['../group__group__init.html#gafa02231a791b37255720d566a52683e7',1,'vk_mem_alloc.h']]], + ['vmagetheapbudgets_47',['vmaGetHeapBudgets',['../group__group__stats.html#ga9f88db9d46a432c0ad7278cecbc5eaa7',1,'vk_mem_alloc.h']]], + ['vmagetmemoryproperties_48',['vmaGetMemoryProperties',['../group__group__init.html#gab88db292a17974f911182543fda52d19',1,'vk_mem_alloc.h']]], + ['vmagetmemorytypeproperties_49',['vmaGetMemoryTypeProperties',['../group__group__init.html#ga8701444752eb5de4464adb5a2b514bca',1,'vk_mem_alloc.h']]], + ['vmagetphysicaldeviceproperties_50',['vmaGetPhysicalDeviceProperties',['../group__group__init.html#gaecabf7b6e91ea87d0316fa0a9e014fe0',1,'vk_mem_alloc.h']]], + ['vmagetpoolname_51',['vmaGetPoolName',['../group__group__alloc.html#gaf09b4e4eafdbee812e8d73ddf960f030',1,'vk_mem_alloc.h']]], + ['vmagetpoolstatistics_52',['vmaGetPoolStatistics',['../group__group__stats.html#ga34d8e7d83774eed0caee5c5ae88e217d',1,'vk_mem_alloc.h']]], + ['vmagetvirtualallocationinfo_53',['vmaGetVirtualAllocationInfo',['../group__group__virtual.html#ga8ee14ceb1fe033ec84d8aa29e1f75afa',1,'vk_mem_alloc.h']]], + ['vmagetvirtualblockstatistics_54',['vmaGetVirtualBlockStatistics',['../group__group__virtual.html#ga2902aa3130866afcc64bb5f984113db3',1,'vk_mem_alloc.h']]], + ['vmainvalidateallocation_55',['vmaInvalidateAllocation',['../group__group__alloc.html#gaaa8412919139ef413a4215ac6a290fae',1,'vk_mem_alloc.h']]], + ['vmainvalidateallocations_56',['vmaInvalidateAllocations',['../group__group__alloc.html#gab25b558d75f7378ec944a1522fdcc3c5',1,'vk_mem_alloc.h']]], + ['vmaisvirtualblockempty_57',['vmaIsVirtualBlockEmpty',['../group__group__virtual.html#gacd53b5b1d23f8fcbad692ccfdc1811f1',1,'vk_mem_alloc.h']]], + ['vmamapmemory_58',['vmaMapMemory',['../group__group__alloc.html#gad5bd1243512d099706de88168992f069',1,'vk_mem_alloc.h']]], + ['vmasetallocationname_59',['vmaSetAllocationName',['../group__group__alloc.html#gabe02cbb0cd913b3f125958179f2020fc',1,'vk_mem_alloc.h']]], + ['vmasetallocationuserdata_60',['vmaSetAllocationUserData',['../group__group__alloc.html#gaf9147d31ffc11d62fc187bde283ed14f',1,'vk_mem_alloc.h']]], + ['vmasetcurrentframeindex_61',['vmaSetCurrentFrameIndex',['../group__group__init.html#gade56bf8dc9f5a5eaddf5f119ed525236',1,'vk_mem_alloc.h']]], + ['vmasetpoolname_62',['vmaSetPoolName',['../group__group__alloc.html#gadbae3a0b4ab078024462fc85c37f3b58',1,'vk_mem_alloc.h']]], + ['vmasetvirtualallocationuserdata_63',['vmaSetVirtualAllocationUserData',['../group__group__virtual.html#ga001ea1850458a4062b829e09c303fca2',1,'vk_mem_alloc.h']]], + ['vmaunmapmemory_64',['vmaUnmapMemory',['../group__group__alloc.html#ga9bc268595cb33f6ec4d519cfce81ff45',1,'vk_mem_alloc.h']]], + ['vmavirtualallocate_65',['vmaVirtualAllocate',['../group__group__virtual.html#ga6b7cdcc1c3e5103c323fedc4e1319e01',1,'vk_mem_alloc.h']]], + ['vmavirtualfree_66',['vmaVirtualFree',['../group__group__virtual.html#ga09fc688c0c3653ff23723b037e5d5033',1,'vk_mem_alloc.h']]] ]; diff --git a/docs/html/search/groups_0.html b/docs/html/search/groups_0.html deleted file mode 100644 index 76e992a..0000000 --- a/docs/html/search/groups_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/groups_1.html b/docs/html/search/groups_1.html deleted file mode 100644 index 38ad74b..0000000 --- a/docs/html/search/groups_1.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/groups_2.html b/docs/html/search/groups_2.html deleted file mode 100644 index 8152426..0000000 --- a/docs/html/search/groups_2.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/groups_3.html b/docs/html/search/groups_3.html deleted file mode 100644 index c73a37c..0000000 --- a/docs/html/search/groups_3.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/nomatches.html b/docs/html/search/nomatches.html deleted file mode 100644 index 2b9360b..0000000 --- a/docs/html/search/nomatches.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - -
      -
      No Matches
      -
      - - diff --git a/docs/html/search/pages_0.html b/docs/html/search/pages_0.html deleted file mode 100644 index 1981712..0000000 --- a/docs/html/search/pages_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/pages_0.js b/docs/html/search/pages_0.js index 46baaa2..d519f94 100644 --- a/docs/html/search/pages_0.js +++ b/docs/html/search/pages_0.js @@ -3,6 +3,8 @@ var searchData= ['address_0',['Enabling buffer device address',['../enabling_buffer_device_address.html',1,'index']]], ['aliasing_20overlap_1',['Resource aliasing (overlap)',['../resource_aliasing.html',1,'index']]], ['allocation_20names_20and_20user_20data_2',['Allocation names and user data',['../allocation_annotation.html',1,'index']]], - ['allocator_3',['allocator',['../virtual_allocator.html',1,'Virtual allocator'],['../index.html',1,'Vulkan Memory Allocator']]], - ['and_20user_20data_4',['Allocation names and user data',['../allocation_annotation.html',1,'index']]] + ['allocator_3',['Virtual allocator',['../virtual_allocator.html',1,'index']]], + ['allocator_4',['Vulkan Memory Allocator',['../index.html',1,'']]], + ['and_20user_20data_5',['Allocation names and user data',['../allocation_annotation.html',1,'index']]], + ['apis_6',['Interop with other graphics APIs',['../other_api_interop.html',1,'index']]] ]; diff --git a/docs/html/search/pages_1.html b/docs/html/search/pages_1.html deleted file mode 100644 index 320e4a4..0000000 --- a/docs/html/search/pages_1.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/pages_12.js b/docs/html/search/pages_12.js index 5002268..8873ed2 100644 --- a/docs/html/search/pages_12.js +++ b/docs/html/search/pages_12.js @@ -1,4 +1,5 @@ var searchData= [ - ['within_20budget_0',['Staying within budget',['../staying_within_budget.html',1,'index']]] + ['with_20other_20graphics_20apis_0',['Interop with other graphics APIs',['../other_api_interop.html',1,'index']]], + ['within_20budget_1',['Staying within budget',['../staying_within_budget.html',1,'index']]] ]; diff --git a/docs/html/search/pages_2.html b/docs/html/search/pages_2.html deleted file mode 100644 index 396bc18..0000000 --- a/docs/html/search/pages_2.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/pages_3.html b/docs/html/search/pages_3.html deleted file mode 100644 index 7a70856..0000000 --- a/docs/html/search/pages_3.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/pages_4.html b/docs/html/search/pages_4.html deleted file mode 100644 index b43cefb..0000000 --- a/docs/html/search/pages_4.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/pages_5.html b/docs/html/search/pages_5.html deleted file mode 100644 index 6a95553..0000000 --- a/docs/html/search/pages_5.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/pages_5.js b/docs/html/search/pages_5.js index 1aed57d..82e869f 100644 --- a/docs/html/search/pages_5.js +++ b/docs/html/search/pages_5.js @@ -1,4 +1,5 @@ var searchData= [ - ['general_20considerations_0',['General considerations',['../general_considerations.html',1,'index']]] + ['general_20considerations_0',['General considerations',['../general_considerations.html',1,'index']]], + ['graphics_20apis_1',['Interop with other graphics APIs',['../other_api_interop.html',1,'index']]] ]; diff --git a/docs/html/search/pages_6.html b/docs/html/search/pages_6.html deleted file mode 100644 index 6432c81..0000000 --- a/docs/html/search/pages_6.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/pages_6.js b/docs/html/search/pages_6.js index a7e8549..37e2f5d 100644 --- a/docs/html/search/pages_6.js +++ b/docs/html/search/pages_6.js @@ -1,5 +1,5 @@ var searchData= [ ['incorrect_20memory_20usage_0',['Debugging incorrect memory usage',['../debugging_memory_usage.html',1,'index']]], - ['interop_1',['OpenGL Interop',['../opengl_interop.html',1,'index']]] + ['interop_20with_20other_20graphics_20apis_1',['Interop with other graphics APIs',['../other_api_interop.html',1,'index']]] ]; diff --git a/docs/html/search/pages_7.html b/docs/html/search/pages_7.html deleted file mode 100644 index 33d7d8b..0000000 --- a/docs/html/search/pages_7.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/pages_8.html b/docs/html/search/pages_8.html deleted file mode 100644 index c634607..0000000 --- a/docs/html/search/pages_8.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/pages_9.html b/docs/html/search/pages_9.html deleted file mode 100644 index 3473073..0000000 --- a/docs/html/search/pages_9.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/pages_a.html b/docs/html/search/pages_a.html deleted file mode 100644 index acc508a..0000000 --- a/docs/html/search/pages_a.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/pages_a.js b/docs/html/search/pages_a.js index debde5f..8e59d08 100644 --- a/docs/html/search/pages_a.js +++ b/docs/html/search/pages_a.js @@ -1,5 +1,5 @@ var searchData= [ - ['opengl_20interop_0',['OpenGL Interop',['../opengl_interop.html',1,'index']]], + ['other_20graphics_20apis_0',['Interop with other graphics APIs',['../other_api_interop.html',1,'index']]], ['overlap_1',['Resource aliasing (overlap)',['../resource_aliasing.html',1,'index']]] ]; diff --git a/docs/html/search/search.js b/docs/html/search/search.js index 6fd40c6..666af01 100644 --- a/docs/html/search/search.js +++ b/docs/html/search/search.js @@ -22,58 +22,9 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -function convertToId(search) -{ - var result = ''; - for (i=0;i document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); // ------------ Event Handlers // Called when focus is added or removed from the search field. - this.OnSearchFieldFocus = function(isActive) - { + this.OnSearchFieldFocus = function(isActive) { this.Activate(isActive); } - this.OnSearchSelectShow = function() - { - var searchSelectWindow = this.DOMSearchSelectWindow(); - var searchField = this.DOMSearchSelect(); + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); - var left = getXPos(searchField); - var top = getYPos(searchField); - top += searchField.offsetHeight; + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; // show search selection popup searchSelectWindow.style.display='block'; @@ -146,55 +102,43 @@ function SearchBox(name, resultsPath, extension) searchSelectWindow.style.top = top + 'px'; // stop selection hide timer - if (this.hideTimeout) - { + if (this.hideTimeout) { clearTimeout(this.hideTimeout); this.hideTimeout=0; } return false; // to avoid "image drag" default event } - this.OnSearchSelectHide = function() - { + this.OnSearchSelectHide = function() { this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), this.closeSelectionTimeout); } // Called when the content of the search field is changed. - this.OnSearchFieldChange = function(evt) - { - if (this.keyTimeout) // kill running timer - { + this.OnSearchFieldChange = function(evt) { + if (this.keyTimeout) { // kill running timer clearTimeout(this.keyTimeout); this.keyTimeout = 0; } - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 || e.keyCode==13) - { - if (e.shiftKey==1) - { + const e = evt ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) { + if (e.shiftKey==1) { this.OnSearchSelectShow(); - var win=this.DOMSearchSelectWindow(); - for (i=0;i do a search - { + const searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + if (searchValue!="" && this.searchActive) { // something was found -> do a search this.Search(); } } - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { + } else if (e.keyCode==38 && this.searchIndex>0) { // Up this.searchIndex--; this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { + } else if (e.keyCode==13 || e.keyCode==27) { e.stopPropagation(); this.OnSelectItem(this.searchIndex); this.CloseSelectionWindow(); @@ -301,82 +239,75 @@ function SearchBox(name, resultsPath, extension) // --------- Actions // Closes the results window. - this.CloseResultsWindow = function() - { + this.CloseResultsWindow = function() { this.DOMPopupSearchResultsWindow().style.display = 'none'; this.DOMSearchClose().style.display = 'none'; this.Activate(false); } - this.CloseSelectionWindow = function() - { + this.CloseSelectionWindow = function() { this.DOMSearchSelectWindow().style.display = 'none'; } // Performs a search. - this.Search = function() - { + this.Search = function() { this.keyTimeout = 0; // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair idxChar = searchValue.substr(0, 2); } - var jsFile; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; } - var loadJS = function(url, impl, loc){ - var scriptTag = document.createElement('script'); + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); scriptTag.src = url; scriptTag.onload = impl; scriptTag.onreadystatechange = impl; loc.appendChild(scriptTag); } - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - var domSearchBox = this.DOMSearchBox(); - var domPopupSearchResults = this.DOMPopupSearchResults(); - var domSearchClose = this.DOMSearchClose(); - var resultsPath = this.resultsPath; + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; - var handleResults = function() { + const handleResults = function() { document.getElementById("Loading").style.display="none"; if (typeof searchData !== 'undefined') { createResults(resultsPath); document.getElementById("NoMatches").style.display="none"; } - + if (idx!=-1) { searchResults.Search(searchValue); } else { // no file with search results => force empty search results searchResults.Search('===='); } - if (domPopupSearchResultsWindow.style.display!='block') - { + if (domPopupSearchResultsWindow.style.display!='block') { domSearchClose.style.display = 'inline-block'; - var left = getXPos(domSearchBox) + 150; - var top = getYPos(domSearchBox) + 20; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; domPopupSearchResultsWindow.style.display = 'block'; left -= domPopupSearchResults.offsetWidth; - var maxWidth = document.body.clientWidth; - var maxHeight = document.body.clientHeight; - var width = 300; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; if (left<10) left=10; if (width+left+8>maxWidth) width=maxWidth-left-8; - var height = 400; + let height = 400; if (height+top+8>maxHeight) height=maxHeight-top-8; domPopupSearchResultsWindow.style.top = top + 'px'; domPopupSearchResultsWindow.style.left = left + 'px'; @@ -398,17 +329,13 @@ function SearchBox(name, resultsPath, extension) // Activates or deactivates the search panel, resetting things to // their default values if necessary. - this.Activate = function(isActive) - { + this.Activate = function(isActive) { if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) { this.DOMSearchBox().className = 'MSearchBoxActive'; this.searchActive = true; - } - else if (!isActive) // directly remove the panel - { + } else if (!isActive) { // directly remove the panel this.DOMSearchBox().className = 'MSearchBoxInactive'; this.searchActive = false; this.lastSearchValue = '' @@ -421,409 +348,333 @@ function SearchBox(name, resultsPath, extension) // ----------------------------------------------------------------------- // The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; +function SearchResults() { - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let element = parentElement.firstChild; + + while (element && element!=parentElement) { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { + element = element.firstChild; + } else if (element.nextSibling) { + element = element.nextSibling; + } else { + do { + element = element.parentNode; } + while (element && element!=parentElement && !element.nextSibling); - if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } + if (element && element!=parentElement) { + element = element.nextSibling; } } } + } - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } + this.Toggle = function(id) { + const element = this.FindChildElement(id); + if (element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; } } + } - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) { + if (!search) { // get search word from URL + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) { + row.style.display = 'block'; + matches++; + } else { + row.style.display = 'none'; + } } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) { // no results + document.getElementById("NoMatches").style.display='block'; + } else { // at least one result + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); + // return the first item with index index or higher that is visible + this.NavNext = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index++; + } + return focusItem; + } - var resultRows = document.getElementsByTagName("div"); - var matches = 0; + this.NavPrev = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index--; + } + return focusItem; + } - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + this.ProcessKeys = function(e) { + if (e.type == "keydown") { + this.repeatOn = false; + this.lastKey = e.keyCode; + } else if (e.type == "keypress") { + if (!this.repeatOn) { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } else if (e.type == "keyup") { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; + this.Nav = function(evt,itemIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // search for last child + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) { + focusItem = tmpElem; + } else { // found it! + break; + } + n++; } } - i++; } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; + if (focusItem) { + focusItem.focus(); + } else { // return focus to search field + document.getElementById("MSearchField").focus(); } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') { // children visible + focusItem = document.getElementById('Item'+itemIndex+'_c0'); } - this.lastMatchCount = matches; + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } else if (this.lastKey==39) { // Right + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter return true; } + return false; + } - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; + this.NavChild = function(evt,itemIndex,childIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + if (childIndex>0) { + const newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } else { // already at first child, jump to parent + document.getElementById('Item'+itemIndex).focus(); } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - e.stopPropagation(); - searchBox.CloseResultsWindow(); - document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - e.stopPropagation(); - searchBox.CloseResultsWindow(); - document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; + } else if (this.lastKey==40) { // Down + const newIndex = childIndex+1; + let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) { // last child, jump to parent next parent + elem = this.NavNext(itemIndex+1); + } + if (elem) { + elem.focus(); + } + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; } + return false; + } } -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} +function createResults(resultsPath) { -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} + function setKeyActions(elem,action) { + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); + } -function createResults(resultsPath) -{ - var results = document.getElementById("SRResults"); + function setClassAttr(elem,attr) { + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); + } + + const results = document.getElementById("SRResults"); results.innerHTML = ''; - for (var e=0; e { + const id = elem[0]; + const srResult = document.createElement('div'); srResult.setAttribute('id','SR_'+id); setClassAttr(srResult,'SRResult'); - var srEntry = document.createElement('div'); + const srEntry = document.createElement('div'); setClassAttr(srEntry,'SREntry'); - var srLink = document.createElement('a'); - srLink.setAttribute('id','Item'+e); - setKeyActions(srLink,'return searchResults.Nav(event,'+e+')'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); setClassAttr(srLink,'SRSymbol'); - srLink.innerHTML = searchData[e][1][0]; + srLink.innerHTML = elem[1][0]; srEntry.appendChild(srLink); - if (searchData[e][1].length==2) // single result - { - srLink.setAttribute('href',resultsPath+searchData[e][1][1][0]); + if (elem[1].length==2) { // single result + srLink.setAttribute('href',resultsPath+elem[1][1][0]); srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); - if (searchData[e][1][1][1]) - { + if (elem[1][1][1]) { srLink.setAttribute('target','_parent'); - } - else - { + } else { srLink.setAttribute('target','_blank'); } - var srScope = document.createElement('span'); + const srScope = document.createElement('span'); setClassAttr(srScope,'SRScope'); - srScope.innerHTML = searchData[e][1][1][2]; + srScope.innerHTML = elem[1][1][2]; srEntry.appendChild(srScope); - } - else // multiple results - { + } else { // multiple results srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); - var srChildren = document.createElement('div'); + const srChildren = document.createElement('div'); setClassAttr(srChildren,'SRChildren'); - for (var c=0; c(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W diff --git a/docs/html/search/search_r.png b/docs/html/search/search_r.png deleted file mode 100644 index 1af5d21ee13e070d7600f1c4657fde843b953a69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD diff --git a/docs/html/search/typedefs_0.html b/docs/html/search/typedefs_0.html deleted file mode 100644 index ee21dad..0000000 --- a/docs/html/search/typedefs_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/typedefs_1.html b/docs/html/search/typedefs_1.html deleted file mode 100644 index 9837c68..0000000 --- a/docs/html/search/typedefs_1.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/variables_0.html b/docs/html/search/variables_0.html deleted file mode 100644 index fd893a6..0000000 --- a/docs/html/search/variables_0.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/variables_1.html b/docs/html/search/variables_1.html deleted file mode 100644 index 5f8e440..0000000 --- a/docs/html/search/variables_1.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/variables_1.js b/docs/html/search/variables_1.js index 6d3d175..066e4e2 100644 --- a/docs/html/search/variables_1.js +++ b/docs/html/search/variables_1.js @@ -2,7 +2,7 @@ var searchData= [ ['blockbytes_0',['blockBytes',['../struct_vma_statistics.html#a2afbc1c7aa8ad7bbb8de06215ba7e5c4',1,'VmaStatistics']]], ['blockcount_1',['blockCount',['../struct_vma_statistics.html#a309179d5853a6a7cd534df497ee43957',1,'VmaStatistics']]], - ['blocksize_2',['blocksize',['../struct_vma_pool_create_info.html#aa4265160536cdb9be821b7686c16c676',1,'VmaPoolCreateInfo::blockSize'],['../struct_vma_allocation_info2.html#aae839de16b3a62cc42c69df378e8e3a2',1,'VmaAllocationInfo2::blockSize']]], + ['blocksize_2',['blockSize',['../struct_vma_pool_create_info.html#aa4265160536cdb9be821b7686c16c676',1,'VmaPoolCreateInfo::blockSize'],['../struct_vma_allocation_info2.html#aae839de16b3a62cc42c69df378e8e3a2',1,'VmaAllocationInfo2::blockSize']]], ['budget_3',['budget',['../struct_vma_budget.html#ab82e1d1754c2d210d0bdf90220bc6cdd',1,'VmaBudget']]], ['bytesfreed_4',['bytesFreed',['../struct_vma_defragmentation_stats.html#ab0cb9ac0dbc106c77e384ea676422f28',1,'VmaDefragmentationStats']]], ['bytesmoved_5',['bytesMoved',['../struct_vma_defragmentation_stats.html#a36f9d5df2a10ba2a36b16e126d60572d',1,'VmaDefragmentationStats']]] diff --git a/docs/html/search/variables_2.html b/docs/html/search/variables_2.html deleted file mode 100644 index 77a7f48..0000000 --- a/docs/html/search/variables_2.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/variables_3.html b/docs/html/search/variables_3.html deleted file mode 100644 index 3ee62ba..0000000 --- a/docs/html/search/variables_3.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/variables_4.html b/docs/html/search/variables_4.html deleted file mode 100644 index 640713f..0000000 --- a/docs/html/search/variables_4.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/variables_5.html b/docs/html/search/variables_5.html deleted file mode 100644 index 7b2ba97..0000000 --- a/docs/html/search/variables_5.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/variables_5.js b/docs/html/search/variables_5.js index 816d1a8..a9e9f97 100644 --- a/docs/html/search/variables_5.js +++ b/docs/html/search/variables_5.js @@ -4,7 +4,7 @@ var searchData= ['maxblockcount_1',['maxBlockCount',['../struct_vma_pool_create_info.html#ae41142f2834fcdc82baa4883c187b75c',1,'VmaPoolCreateInfo']]], ['maxbytesperpass_2',['maxBytesPerPass',['../struct_vma_defragmentation_info.html#a637ada77b02179a27fa92290000afac4',1,'VmaDefragmentationInfo']]], ['memoryheap_3',['memoryHeap',['../struct_vma_total_statistics.html#a39beeba5b3a2e7cfe5f5e2331a2705ce',1,'VmaTotalStatistics']]], - ['memorytype_4',['memorytype',['../struct_vma_total_statistics.html#acb70e5b7fe543813ed8ba9282640969d',1,'VmaTotalStatistics::memoryType'],['../struct_vma_allocation_info.html#a7f6b0aa58c135e488e6b40a388dad9d5',1,'VmaAllocationInfo::memoryType']]], + ['memorytype_4',['memoryType',['../struct_vma_total_statistics.html#acb70e5b7fe543813ed8ba9282640969d',1,'VmaTotalStatistics::memoryType'],['../struct_vma_allocation_info.html#a7f6b0aa58c135e488e6b40a388dad9d5',1,'VmaAllocationInfo::memoryType']]], ['memorytypebits_5',['memoryTypeBits',['../struct_vma_allocation_create_info.html#a3bf940c0271d85d6ba32a4d820075055',1,'VmaAllocationCreateInfo']]], ['memorytypeindex_6',['memoryTypeIndex',['../struct_vma_pool_create_info.html#a596fa76b685d3f1f688f84a709a5b319',1,'VmaPoolCreateInfo']]], ['minallocationalignment_7',['minAllocationAlignment',['../struct_vma_pool_create_info.html#ade3eca546f0c6ab4e8fbf20eb6d854cb',1,'VmaPoolCreateInfo']]], diff --git a/docs/html/search/variables_6.html b/docs/html/search/variables_6.html deleted file mode 100644 index fb1de8f..0000000 --- a/docs/html/search/variables_6.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/variables_7.html b/docs/html/search/variables_7.html deleted file mode 100644 index cf8dcf4..0000000 --- a/docs/html/search/variables_7.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/variables_7.js b/docs/html/search/variables_7.js index cbe5df5..da1e520 100644 --- a/docs/html/search/variables_7.js +++ b/docs/html/search/variables_7.js @@ -1,21 +1,22 @@ var searchData= [ - ['pallocationcallbacks_0',['pallocationcallbacks',['../struct_vma_allocator_create_info.html#a6e409087e3be55400d0e4ccbe43c608d',1,'VmaAllocatorCreateInfo::pAllocationCallbacks'],['../struct_vma_virtual_block_create_info.html#a290283bf915c257d24584872d793ad30',1,'VmaVirtualBlockCreateInfo::pAllocationCallbacks']]], + ['pallocationcallbacks_0',['pAllocationCallbacks',['../struct_vma_allocator_create_info.html#a6e409087e3be55400d0e4ccbe43c608d',1,'VmaAllocatorCreateInfo::pAllocationCallbacks'],['../struct_vma_virtual_block_create_info.html#a290283bf915c257d24584872d793ad30',1,'VmaVirtualBlockCreateInfo::pAllocationCallbacks']]], ['pbreakcallbackuserdata_1',['pBreakCallbackUserData',['../struct_vma_defragmentation_info.html#ab08ed4a96a671ca176d926ccc31b203f',1,'VmaDefragmentationInfo']]], ['pdevicememorycallbacks_2',['pDeviceMemoryCallbacks',['../struct_vma_allocator_create_info.html#af1380969b5e1ea4c3184a877892d260e',1,'VmaAllocatorCreateInfo']]], ['pfnallocate_3',['pfnAllocate',['../struct_vma_device_memory_callbacks.html#a4f17f7b255101e733b44d5633aceabfb',1,'VmaDeviceMemoryCallbacks']]], ['pfnbreakcallback_4',['pfnBreakCallback',['../struct_vma_defragmentation_info.html#a9f189976b5b605345f84b5b5217acc0f',1,'VmaDefragmentationInfo']]], ['pfnfree_5',['pfnFree',['../struct_vma_device_memory_callbacks.html#abe8a3328bbc916f6f712fdb6b299444c',1,'VmaDeviceMemoryCallbacks']]], ['pheapsizelimit_6',['pHeapSizeLimit',['../struct_vma_allocator_create_info.html#a31c192aa6cbffa33279f6d9f0c47c44b',1,'VmaAllocatorCreateInfo']]], - ['physicaldevice_7',['physicaldevice',['../struct_vma_allocator_create_info.html#a08230f04ae6ccf8a78150a9e829a7156',1,'VmaAllocatorCreateInfo::physicalDevice'],['../struct_vma_allocator_info.html#aba2b703f96e51d567717e1fb2935b47a',1,'VmaAllocatorInfo::physicalDevice']]], + ['physicaldevice_7',['physicalDevice',['../struct_vma_allocator_create_info.html#a08230f04ae6ccf8a78150a9e829a7156',1,'VmaAllocatorCreateInfo::physicalDevice'],['../struct_vma_allocator_info.html#aba2b703f96e51d567717e1fb2935b47a',1,'VmaAllocatorInfo::physicalDevice']]], ['pmappeddata_8',['pMappedData',['../struct_vma_allocation_info.html#a5eeffbe2d2f30f53370ff14aefbadbe2',1,'VmaAllocationInfo']]], - ['pmoves_9',['pMoves',['../struct_vma_defragmentation_pass_move_info.html#adfa7a4994afd9b940e7f1dfaf436a725',1,'VmaDefragmentationPassMoveInfo']]], - ['pname_10',['pName',['../struct_vma_allocation_info.html#a28612f3e897e5b268254a3c63413d759',1,'VmaAllocationInfo']]], - ['pool_11',['pool',['../struct_vma_allocation_create_info.html#a6272c0555cfd1fe28bff1afeb6190150',1,'VmaAllocationCreateInfo::pool'],['../struct_vma_defragmentation_info.html#a18dd2097d8ab2976cdc7dd3e7b978bd4',1,'VmaDefragmentationInfo::pool']]], - ['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']]], - ['pvulkanfunctions_17',['pVulkanFunctions',['../struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd',1,'VmaAllocatorCreateInfo']]] + ['pmemoryallocatenext_9',['pMemoryAllocateNext',['../struct_vma_pool_create_info.html#ab6f2e52c47bfe1f4b44920b8bfc27b41',1,'VmaPoolCreateInfo']]], + ['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']]], + ['pvulkanfunctions_18',['pVulkanFunctions',['../struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd',1,'VmaAllocatorCreateInfo']]] ]; diff --git a/docs/html/search/variables_8.html b/docs/html/search/variables_8.html deleted file mode 100644 index 88cbb01..0000000 --- a/docs/html/search/variables_8.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/variables_9.html b/docs/html/search/variables_9.html deleted file mode 100644 index 36c49bd..0000000 --- a/docs/html/search/variables_9.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/variables_a.html b/docs/html/search/variables_a.html deleted file mode 100644 index 0005c6a..0000000 --- a/docs/html/search/variables_a.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/variables_b.html b/docs/html/search/variables_b.html deleted file mode 100644 index 757c068..0000000 --- a/docs/html/search/variables_b.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/variables_c.html b/docs/html/search/variables_c.html deleted file mode 100644 index 451a136..0000000 --- a/docs/html/search/variables_c.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - -
      -
      Loading...
      -
      - -
      Searching...
      -
      No Matches
      - -
      - - diff --git a/docs/html/search/variables_c.js b/docs/html/search/variables_c.js index 896216d..9ad016e 100644 --- a/docs/html/search/variables_c.js +++ b/docs/html/search/variables_c.js @@ -14,8 +14,8 @@ var searchData= ['vkfreememory_11',['vkFreeMemory',['../struct_vma_vulkan_functions.html#a4c658701778564d62034255b5dda91b4',1,'VmaVulkanFunctions']]], ['vkgetbuffermemoryrequirements_12',['vkGetBufferMemoryRequirements',['../struct_vma_vulkan_functions.html#a5b92901df89a4194b0d12f6071d4d143',1,'VmaVulkanFunctions']]], ['vkgetbuffermemoryrequirements2khr_13',['vkGetBufferMemoryRequirements2KHR',['../struct_vma_vulkan_functions.html#a9d8d1b05d2b1e7e1d9b27f6f585acf9c',1,'VmaVulkanFunctions']]], - ['vkgetdevicebuffermemoryrequirements_14',['vkGetDeviceBufferMemoryRequirements',['../struct_vma_vulkan_functions.html#a3d6cc5633bdbfec728213d6dfae7d413',1,'VmaVulkanFunctions']]], - ['vkgetdeviceimagememoryrequirements_15',['vkGetDeviceImageMemoryRequirements',['../struct_vma_vulkan_functions.html#afd4780c565028cd15498528883f51fc6',1,'VmaVulkanFunctions']]], + ['vkgetdevicebuffermemoryrequirements_14',['vkGetDeviceBufferMemoryRequirements',['../struct_vma_vulkan_functions.html#ab25228053223e8a4dcd062574beed88d',1,'VmaVulkanFunctions']]], + ['vkgetdeviceimagememoryrequirements_15',['vkGetDeviceImageMemoryRequirements',['../struct_vma_vulkan_functions.html#a10a9bf098a46640fa0a75f1c5fd80b9a',1,'VmaVulkanFunctions']]], ['vkgetdeviceprocaddr_16',['vkGetDeviceProcAddr',['../struct_vma_vulkan_functions.html#ac383ab9af127e5e136622fa4ebea9e57',1,'VmaVulkanFunctions']]], ['vkgetimagememoryrequirements_17',['vkGetImageMemoryRequirements',['../struct_vma_vulkan_functions.html#a475f6f49f8debe4d10800592606d53f4',1,'VmaVulkanFunctions']]], ['vkgetimagememoryrequirements2khr_18',['vkGetImageMemoryRequirements2KHR',['../struct_vma_vulkan_functions.html#a9cdcdc1e2b2ea7c571f7d27e30ba6875',1,'VmaVulkanFunctions']]], diff --git a/docs/html/statistics.html b/docs/html/statistics.html index 18d13c2..1625ff2 100644 --- a/docs/html/statistics.html +++ b/docs/html/statistics.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Statistics + + @@ -29,7 +31,7 @@ - + @@ -107,7 +109,7 @@ JSON dump diff --git a/docs/html/staying_within_budget.html b/docs/html/staying_within_budget.html index 88a7c4c..148e452 100644 --- a/docs/html/staying_within_budget.html +++ b/docs/html/staying_within_budget.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Staying within budget + + @@ -29,7 +31,7 @@ - + @@ -106,7 +108,7 @@ Controlling memory usage diff --git a/docs/html/struct_vma_allocation.html b/docs/html/struct_vma_allocation.html index c600ae3..8c24032 100644 --- a/docs/html/struct_vma_allocation.html +++ b/docs/html/struct_vma_allocation.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaAllocation Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -74,7 +76,7 @@ $(function() {

      Represents single memory allocation. - More...

      + More...

      Detailed Description

      Represents single memory allocation.

      It may be either dedicated block of VkDeviceMemory or a specific region of a bigger block of this type plus unique offset.

      @@ -87,7 +89,7 @@ $(function() {
      diff --git a/docs/html/struct_vma_allocation_create_info-members.html b/docs/html/struct_vma_allocation_create_info-members.html index c9f1fd5..9d50ce4 100644 --- a/docs/html/struct_vma_allocation_create_info-members.html +++ b/docs/html/struct_vma_allocation_create_info-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@
      - + @@ -86,7 +88,7 @@ $(function() { diff --git a/docs/html/struct_vma_allocation_create_info.html b/docs/html/struct_vma_allocation_create_info.html index ad3dc79..2d9a7e6 100644 --- a/docs/html/struct_vma_allocation_create_info.html +++ b/docs/html/struct_vma_allocation_create_info.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaAllocationCreateInfo Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,32 +79,32 @@ $(function() {

      Parameters of new VmaAllocation. - More...

      + More...

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

      Public Attributes

      VmaAllocationCreateFlags flags
      VmaAllocationCreateFlags flags
       Use VmaAllocationCreateFlagBits enum.
       
      VmaMemoryUsage usage
      VmaMemoryUsage usage
       Intended usage of memory.
       
      VkMemoryPropertyFlags requiredFlags
      VkMemoryPropertyFlags requiredFlags
       Flags that must be set in a Memory Type chosen for an allocation.
       
      VkMemoryPropertyFlags preferredFlags
      VkMemoryPropertyFlags preferredFlags
       Flags that preferably should be set in a memory type chosen for an allocation.
       
      uint32_t memoryTypeBits
      uint32_t memoryTypeBits
       Bitmask containing one bit set for every memory type acceptable for this allocation.
       
      VmaPool pool
      VmaPool pool
       Pool that this allocation should be created in.
       
      void * pUserData
      void * pUserData
       Custom general-purpose pointer that will be stored in VmaAllocation, can be read as VmaAllocationInfo::pUserData and changed using vmaSetAllocationUserData().
       
      float priority
      float priority
       A floating-point value between 0 and 1, indicating the priority of the allocation relative to other memory allocations.
       
      @@ -255,7 +257,7 @@ If pool is not null, this member is ignored.

      diff --git a/docs/html/struct_vma_allocation_info-members.html b/docs/html/struct_vma_allocation_info-members.html index dec3f96..e5f07b3 100644 --- a/docs/html/struct_vma_allocation_info-members.html +++ b/docs/html/struct_vma_allocation_info-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@ - + @@ -85,7 +87,7 @@ $(function() { diff --git a/docs/html/struct_vma_allocation_info.html b/docs/html/struct_vma_allocation_info.html index 2e560c0..6f23921 100644 --- a/docs/html/struct_vma_allocation_info.html +++ b/docs/html/struct_vma_allocation_info.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaAllocationInfo Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -78,25 +80,25 @@ $(function() { - + - + - + - + - + - + - +

      Public Attributes

      uint32_t memoryType
      uint32_t memoryType
       Memory type index that this allocation was allocated from.
       
      VkDeviceMemory deviceMemory
      VkDeviceMemory deviceMemory
       Handle to Vulkan memory object.
       
      VkDeviceSize offset
      VkDeviceSize offset
       Offset in VkDeviceMemory object to the beginning of this allocation, in bytes. (deviceMemory, offset) pair is unique to this allocation.
       
      VkDeviceSize size
      VkDeviceSize size
       Size of this allocation, in bytes.
       
      void * pMappedData
      void * pMappedData
       Pointer to the beginning of this allocation as mapped data.
       
      void * pUserData
      void * pUserData
       Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vmaSetAllocationUserData().
       
      const char * pName
      const char * pName
       Custom allocation name that was set with vmaSetAllocationName().
       
      @@ -234,7 +236,7 @@ Public Attributes diff --git a/docs/html/struct_vma_allocation_info2-members.html b/docs/html/struct_vma_allocation_info2-members.html index 44791cf..19c83a1 100644 --- a/docs/html/struct_vma_allocation_info2-members.html +++ b/docs/html/struct_vma_allocation_info2-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@ - + @@ -81,7 +83,7 @@ $(function() { diff --git a/docs/html/struct_vma_allocation_info2.html b/docs/html/struct_vma_allocation_info2.html index 550b452..0c745e3 100644 --- a/docs/html/struct_vma_allocation_info2.html +++ b/docs/html/struct_vma_allocation_info2.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaAllocationInfo2 Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,17 +79,17 @@ $(function() {

      Extended parameters of a VmaAllocation object that can be retrieved using function vmaGetAllocationInfo2(). - More...

      + More...

      - + - + - +

      Public Attributes

      VmaAllocationInfo allocationInfo
      VmaAllocationInfo allocationInfo
       Basic parameters of the allocation.
       
      VkDeviceSize blockSize
      VkDeviceSize blockSize
       Size of the VkDeviceMemory block that the allocation belongs to.
       
      VkBool32 dedicatedMemory
      VkBool32 dedicatedMemory
       VK_TRUE if the allocation has dedicated memory, VK_FALSE if it was placed as part of a larger memory block.
       
      @@ -151,7 +153,7 @@ Public Attributes
      diff --git a/docs/html/struct_vma_allocator.html b/docs/html/struct_vma_allocator.html index ba18282..7e6e256 100644 --- a/docs/html/struct_vma_allocator.html +++ b/docs/html/struct_vma_allocator.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaAllocator Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -74,7 +76,7 @@ $(function() {

      Represents main object of this library initialized. - More...

      + More...

      Detailed Description

      Represents main object of this library initialized.

      Fill structure VmaAllocatorCreateInfo and call function vmaCreateAllocator() to create it. Call function vmaDestroyAllocator() to destroy it.

      @@ -85,7 +87,7 @@ $(function() {
      diff --git a/docs/html/struct_vma_allocator_create_info-members.html b/docs/html/struct_vma_allocator_create_info-members.html index d9da6a4..4ad3a0c 100644 --- a/docs/html/struct_vma_allocator_create_info-members.html +++ b/docs/html/struct_vma_allocator_create_info-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@
      - + @@ -89,7 +91,7 @@ $(function() { diff --git a/docs/html/struct_vma_allocator_create_info.html b/docs/html/struct_vma_allocator_create_info.html index a3056a8..69171aa 100644 --- a/docs/html/struct_vma_allocator_create_info.html +++ b/docs/html/struct_vma_allocator_create_info.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaAllocatorCreateInfo Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,41 +79,41 @@ $(function() {

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

      + More...

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

      Public Attributes

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

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

      -

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

      +

      Optional. Vulkan version that the application uses.

      +

      It must be a value in the format as created by macro VK_MAKE_VERSION or a constant like: VK_API_VERSION_1_1, VK_API_VERSION_1_0. The patch version number specified is ignored. Only the major and minor versions are considered. Only versions 1.0, 1.1, 1.2, 1.3 are supported by the current implementation. Leaving it initialized to zero is equivalent to VK_API_VERSION_1_0. It must match the Vulkan version used by the application and supported on the selected physical device, so it must be no higher than VkApplicationInfo::apiVersion passed to vkCreateInstance and no higher than VkPhysicalDeviceProperties::apiVersion found on the physical device used.

      @@ -318,7 +320,7 @@ Public Attributes diff --git a/docs/html/struct_vma_allocator_info-members.html b/docs/html/struct_vma_allocator_info-members.html index 311e8db..6ea228d 100644 --- a/docs/html/struct_vma_allocator_info-members.html +++ b/docs/html/struct_vma_allocator_info-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@ - + @@ -81,7 +83,7 @@ $(function() { diff --git a/docs/html/struct_vma_allocator_info.html b/docs/html/struct_vma_allocator_info.html index dff4b65..a097ca3 100644 --- a/docs/html/struct_vma_allocator_info.html +++ b/docs/html/struct_vma_allocator_info.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaAllocatorInfo Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,17 +79,17 @@ $(function() {

      Information about existing VmaAllocator object. - More...

      + More...

      - + - + - +

      Public Attributes

      VkInstance instance
      VkInstance instance
       Handle to Vulkan instance object.
       
      VkPhysicalDevice physicalDevice
      VkPhysicalDevice physicalDevice
       Handle to Vulkan physical device object.
       
      VkDevice device
      VkDevice device
       Handle to Vulkan device object.
       
      @@ -151,7 +153,7 @@ Public Attributes
      diff --git a/docs/html/struct_vma_budget-members.html b/docs/html/struct_vma_budget-members.html index 9e8f32a..02b1530 100644 --- a/docs/html/struct_vma_budget-members.html +++ b/docs/html/struct_vma_budget-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@ - + @@ -81,7 +83,7 @@ $(function() { diff --git a/docs/html/struct_vma_budget.html b/docs/html/struct_vma_budget.html index 92726d3..c967407 100644 --- a/docs/html/struct_vma_budget.html +++ b/docs/html/struct_vma_budget.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaBudget Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,17 +79,17 @@ $(function() {

      Statistics of current memory usage and available budget for a specific memory heap. - More...

      + More...

      - + - + - +

      Public Attributes

      VmaStatistics statistics
      VmaStatistics statistics
       Statistics fetched from the library.
       
      VkDeviceSize usage
      VkDeviceSize usage
       Estimated current memory usage of the program, in bytes.
       
      VkDeviceSize budget
      VkDeviceSize budget
       Estimated amount of memory available to the program, in bytes.
       
      @@ -153,7 +155,7 @@ Public Attributes
      diff --git a/docs/html/struct_vma_defragmentation_context.html b/docs/html/struct_vma_defragmentation_context.html index adfaf50..a59604d 100644 --- a/docs/html/struct_vma_defragmentation_context.html +++ b/docs/html/struct_vma_defragmentation_context.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaDefragmentationContext Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -74,7 +76,7 @@ $(function() {

      An opaque object that represents started defragmentation process. - More...

      + More...

      Detailed Description

      An opaque object that represents started defragmentation process.

      Fill structure VmaDefragmentationInfo and call function vmaBeginDefragmentation() to create it. Call function vmaEndDefragmentation() to destroy it.

      @@ -84,7 +86,7 @@ $(function() {
      diff --git a/docs/html/struct_vma_defragmentation_info-members.html b/docs/html/struct_vma_defragmentation_info-members.html index 4fe60d8..0b9aea4 100644 --- a/docs/html/struct_vma_defragmentation_info-members.html +++ b/docs/html/struct_vma_defragmentation_info-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@
      - + @@ -84,7 +86,7 @@ $(function() { diff --git a/docs/html/struct_vma_defragmentation_info.html b/docs/html/struct_vma_defragmentation_info.html index de77392..998846a 100644 --- a/docs/html/struct_vma_defragmentation_info.html +++ b/docs/html/struct_vma_defragmentation_info.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaDefragmentationInfo Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,26 +79,26 @@ $(function() {

      Parameters for defragmentation. - More...

      + More...

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

      Public Attributes

      VmaDefragmentationFlags flags
      VmaDefragmentationFlags flags
       Use combination of VmaDefragmentationFlagBits.
       
      VmaPool pool
      VmaPool pool
       Custom pool to be defragmented.
       
      VkDeviceSize maxBytesPerPass
      VkDeviceSize maxBytesPerPass
       Maximum numbers of bytes that can be copied during single pass, while moving allocations to different places.
       
      uint32_t maxAllocationsPerPass
      uint32_t maxAllocationsPerPass
       Maximum number of allocations that can be moved during single pass to a different place.
       
      PFN_vmaCheckDefragmentationBreakFunction pfnBreakCallback
      PFN_vmaCheckDefragmentationBreakFunction pfnBreakCallback
       Optional custom callback for stopping vmaBeginDefragmentation().
       
      void * pBreakCallbackUserData
      void * pBreakCallbackUserData
       Optional data to pass to custom callback for stopping pass of defragmentation.
       
      @@ -210,7 +212,7 @@ Public Attributes
      diff --git a/docs/html/struct_vma_defragmentation_move-members.html b/docs/html/struct_vma_defragmentation_move-members.html index e70786f..3d1f649 100644 --- a/docs/html/struct_vma_defragmentation_move-members.html +++ b/docs/html/struct_vma_defragmentation_move-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@ - + @@ -81,7 +83,7 @@ $(function() { diff --git a/docs/html/struct_vma_defragmentation_move.html b/docs/html/struct_vma_defragmentation_move.html index 4588779..801d946 100644 --- a/docs/html/struct_vma_defragmentation_move.html +++ b/docs/html/struct_vma_defragmentation_move.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaDefragmentationMove Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,17 +79,17 @@ $(function() {

      Single move of an allocation to be done for defragmentation. - More...

      + More...

      - + - + - +

      Public Attributes

      VmaDefragmentationMoveOperation operation
      VmaDefragmentationMoveOperation operation
       Operation to be performed on the allocation by vmaEndDefragmentationPass(). Default value is VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY. You can modify it.
       
      VmaAllocation srcAllocation
      VmaAllocation srcAllocation
       Allocation that should be moved.
       
      VmaAllocation dstTmpAllocation
      VmaAllocation dstTmpAllocation
       Temporary allocation pointing to destination memory that will replace srcAllocation.
       
      @@ -149,7 +151,7 @@ Public Attributes
      diff --git a/docs/html/struct_vma_defragmentation_pass_move_info-members.html b/docs/html/struct_vma_defragmentation_pass_move_info-members.html index f695650..eaeb162 100644 --- a/docs/html/struct_vma_defragmentation_pass_move_info-members.html +++ b/docs/html/struct_vma_defragmentation_pass_move_info-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@ - + @@ -80,7 +82,7 @@ $(function() { diff --git a/docs/html/struct_vma_defragmentation_pass_move_info.html b/docs/html/struct_vma_defragmentation_pass_move_info.html index d8d34ff..385f3da 100644 --- a/docs/html/struct_vma_defragmentation_pass_move_info.html +++ b/docs/html/struct_vma_defragmentation_pass_move_info.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaDefragmentationPassMoveInfo Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,14 +79,14 @@ $(function() {

      Parameters for incremental defragmentation steps. - More...

      + More...

      - + - +

      Public Attributes

      uint32_t moveCount
      uint32_t moveCount
       Number of elements in the pMoves array.
       
      VmaDefragmentationMovepMoves
      VmaDefragmentationMovepMoves
       Array of moves to be performed by the user in the current defragmentation pass.
       
      @@ -146,7 +148,7 @@ Public Attributes
      diff --git a/docs/html/struct_vma_defragmentation_stats-members.html b/docs/html/struct_vma_defragmentation_stats-members.html index 437bbed..ae11ef0 100644 --- a/docs/html/struct_vma_defragmentation_stats-members.html +++ b/docs/html/struct_vma_defragmentation_stats-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@ - + @@ -82,7 +84,7 @@ $(function() { diff --git a/docs/html/struct_vma_defragmentation_stats.html b/docs/html/struct_vma_defragmentation_stats.html index 6d33ac5..ef79ba8 100644 --- a/docs/html/struct_vma_defragmentation_stats.html +++ b/docs/html/struct_vma_defragmentation_stats.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaDefragmentationStats Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,20 +79,20 @@ $(function() {

      Statistics returned for defragmentation process in function vmaEndDefragmentation(). - More...

      + More...

      - + - + - + - +

      Public Attributes

      VkDeviceSize bytesMoved
      VkDeviceSize bytesMoved
       Total number of bytes that have been copied while moving allocations to different places.
       
      VkDeviceSize bytesFreed
      VkDeviceSize bytesFreed
       Total number of bytes that have been released to the system by freeing empty VkDeviceMemory objects.
       
      uint32_t allocationsMoved
      uint32_t allocationsMoved
       Number of allocations that have been moved to different places.
       
      uint32_t deviceMemoryBlocksFreed
      uint32_t deviceMemoryBlocksFreed
       Number of empty VkDeviceMemory objects that have been released to the system.
       
      @@ -167,7 +169,7 @@ Public Attributes
      diff --git a/docs/html/struct_vma_detailed_statistics-members.html b/docs/html/struct_vma_detailed_statistics-members.html index 1adfcd6..feeeeda 100644 --- a/docs/html/struct_vma_detailed_statistics-members.html +++ b/docs/html/struct_vma_detailed_statistics-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@ - + @@ -84,7 +86,7 @@ $(function() { diff --git a/docs/html/struct_vma_detailed_statistics.html b/docs/html/struct_vma_detailed_statistics.html index a584802..d92c4e6 100644 --- a/docs/html/struct_vma_detailed_statistics.html +++ b/docs/html/struct_vma_detailed_statistics.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaDetailedStatistics Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,26 +79,26 @@ $(function() {

      More detailed statistics than VmaStatistics. - More...

      + More...

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

      Public Attributes

      VmaStatistics statistics
      VmaStatistics statistics
       Basic statistics.
       
      uint32_t unusedRangeCount
      uint32_t unusedRangeCount
       Number of free ranges of memory between allocations.
       
      VkDeviceSize allocationSizeMin
      VkDeviceSize allocationSizeMin
       Smallest allocation size. VK_WHOLE_SIZE if there are 0 allocations.
       
      VkDeviceSize allocationSizeMax
      VkDeviceSize allocationSizeMax
       Largest allocation size. 0 if there are 0 allocations.
       
      VkDeviceSize unusedRangeSizeMin
      VkDeviceSize unusedRangeSizeMin
       Smallest empty range size. VK_WHOLE_SIZE if there are 0 empty ranges.
       
      VkDeviceSize unusedRangeSizeMax
      VkDeviceSize unusedRangeSizeMax
       Largest empty range size. 0 if there are 0 empty ranges.
       
      @@ -210,7 +212,7 @@ Public Attributes
      diff --git a/docs/html/struct_vma_device_memory_callbacks-members.html b/docs/html/struct_vma_device_memory_callbacks-members.html index 414501f..f117548 100644 --- a/docs/html/struct_vma_device_memory_callbacks-members.html +++ b/docs/html/struct_vma_device_memory_callbacks-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@ - + @@ -81,7 +83,7 @@ $(function() { diff --git a/docs/html/struct_vma_device_memory_callbacks.html b/docs/html/struct_vma_device_memory_callbacks.html index a49455f..feda366 100644 --- a/docs/html/struct_vma_device_memory_callbacks.html +++ b/docs/html/struct_vma_device_memory_callbacks.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaDeviceMemoryCallbacks Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,17 +79,17 @@ $(function() {

      Set of callbacks that the library will call for vkAllocateMemory and vkFreeMemory. - More...

      + More...

      - + - + - +

      Public Attributes

      PFN_vmaAllocateDeviceMemoryFunction pfnAllocate
      PFN_vmaAllocateDeviceMemoryFunction pfnAllocate
       Optional, can be null.
       
      PFN_vmaFreeDeviceMemoryFunction pfnFree
      PFN_vmaFreeDeviceMemoryFunction pfnFree
       Optional, can be null.
       
      void * pUserData
      void * pUserData
       Optional, can be null.
       
      @@ -150,7 +152,7 @@ Public Attributes
      diff --git a/docs/html/struct_vma_pool.html b/docs/html/struct_vma_pool.html index e1b11e9..787e994 100644 --- a/docs/html/struct_vma_pool.html +++ b/docs/html/struct_vma_pool.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaPool Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -74,7 +76,7 @@ $(function() {

      Represents custom memory pool. - More...

      + More...

      Detailed Description

      Represents custom memory pool.

      Fill structure VmaPoolCreateInfo and call function vmaCreatePool() to create it. Call function vmaDestroyPool() to destroy it.

      @@ -85,7 +87,7 @@ $(function() {
      diff --git a/docs/html/struct_vma_pool_create_info-members.html b/docs/html/struct_vma_pool_create_info-members.html index 22dcb59..dfbe520 100644 --- a/docs/html/struct_vma_pool_create_info-members.html +++ b/docs/html/struct_vma_pool_create_info-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@
      - + @@ -81,12 +83,12 @@ $(function() { memoryTypeIndexVmaPoolCreateInfo minAllocationAlignmentVmaPoolCreateInfo minBlockCountVmaPoolCreateInfo - priorityVmaPoolCreateInfo - VMA_EXTENDS_VK_STRUCT(VkMemoryAllocateInfo) pMemoryAllocateNextVmaPoolCreateInfo + pMemoryAllocateNextVmaPoolCreateInfo + priorityVmaPoolCreateInfo diff --git a/docs/html/struct_vma_pool_create_info.html b/docs/html/struct_vma_pool_create_info.html index 1aca364..9756a50 100644 --- a/docs/html/struct_vma_pool_create_info.html +++ b/docs/html/struct_vma_pool_create_info.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaPoolCreateInfo Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -70,7 +72,6 @@ $(function() {
      VmaPoolCreateInfo Struct Reference
      @@ -78,64 +79,38 @@ $(function() {

      Describes parameter of created VmaPool. - More...

      + More...

      - - - - -

      -Public Member Functions

      void * VMA_EXTENDS_VK_STRUCT (VkMemoryAllocateInfo) pMemoryAllocateNext
       Additional pNext chain to be attached to VkMemoryAllocateInfo used for every allocation made by this pool. Optional.
       
      - + - + - + - + - + - + - + + + +

      Public Attributes

      uint32_t memoryTypeIndex
      uint32_t memoryTypeIndex
       Vulkan memory type index to allocate this pool from.
       
      VmaPoolCreateFlags flags
      VmaPoolCreateFlags flags
       Use combination of VmaPoolCreateFlagBits.
       
      VkDeviceSize blockSize
      VkDeviceSize blockSize
       Size of a single VkDeviceMemory block to be allocated as part of this pool, in bytes. Optional.
       
      size_t minBlockCount
      size_t minBlockCount
       Minimum number of blocks to be always allocated in this pool, even if they stay empty.
       
      size_t maxBlockCount
      size_t maxBlockCount
       Maximum number of blocks that can be allocated in this pool. Optional.
       
      float priority
      float priority
       A floating-point value between 0 and 1, indicating the priority of the allocations in this pool relative to other memory allocations.
       
      VkDeviceSize minAllocationAlignment
      VkDeviceSize minAllocationAlignment
       Additional minimum alignment to be used for all allocations created from this pool. Can be 0.
       
      void *VkMemoryAllocateInfo pMemoryAllocateNext
       Additional pNext chain to be attached to VkMemoryAllocateInfo used for every allocation made by this pool. Optional.
       

      Detailed Description

      Describes parameter of created VmaPool.

      -

      Member Function Documentation

      - -

      ◆ VMA_EXTENDS_VK_STRUCT()

      - -
      -
      - - - - - - - - -
      void * VmaPoolCreateInfo::VMA_EXTENDS_VK_STRUCT (VkMemoryAllocateInfo )
      -
      - -

      Additional pNext chain to be attached to VkMemoryAllocateInfo used for every allocation made by this pool. Optional.

      -

      Optional, can be null. If not null, it must point to a pNext chain of structures that can be attached to VkMemoryAllocateInfo. It can be useful for special needs such as adding VkExportMemoryAllocateInfoKHR. Structures pointed by this member must remain alive and unchanged for the whole lifetime of the custom pool.

      -

      Please note that some structures, e.g. VkMemoryPriorityAllocateInfoEXT, VkMemoryDedicatedAllocateInfoKHR, can be attached automatically by this library when using other, more convenient of its features.

      - -
      -
      -

      Member Data Documentation

      +

      Member Data Documentation

      ◆ blockSize

      @@ -184,7 +159,7 @@ Public Attributes

      Maximum number of blocks that can be allocated in this pool. Optional.

      Set to 0 to use default, which is SIZE_MAX, which means no limit.

      -

      Set to same value as VmaPoolCreateInfo::minBlockCount to have fixed amount of memory allocated throughout whole lifetime of this pool.

      +

      Set to same value as VmaPoolCreateInfo::minBlockCount to have fixed amount of memory allocated throughout whole lifetime of this pool.

      @@ -236,6 +211,24 @@ Public Attributes

      Minimum number of blocks to be always allocated in this pool, even if they stay empty.

      Set to 0 to have no preallocated blocks and allow the pool be completely empty.

      + + + +

      ◆ pMemoryAllocateNext

      + +
      +
      + + + + +
      void* VkMemoryAllocateInfo VmaPoolCreateInfo::pMemoryAllocateNext
      +
      + +

      Additional pNext chain to be attached to VkMemoryAllocateInfo used for every allocation made by this pool. Optional.

      +

      Optional, can be null. If not null, it must point to a pNext chain of structures that can be attached to VkMemoryAllocateInfo. It can be useful for special needs such as adding VkExportMemoryAllocateInfoKHR. Structures pointed by this member must remain alive and unchanged for the whole lifetime of the custom pool.

      +

      Please note that some structures, e.g. VkMemoryPriorityAllocateInfoEXT, VkMemoryDedicatedAllocateInfoKHR, can be attached automatically by this library when using other, more convenient of its features.

      +
      @@ -261,7 +254,7 @@ Public Attributes diff --git a/docs/html/struct_vma_statistics-members.html b/docs/html/struct_vma_statistics-members.html index 74044fe..d95e595 100644 --- a/docs/html/struct_vma_statistics-members.html +++ b/docs/html/struct_vma_statistics-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@ - + @@ -82,7 +84,7 @@ $(function() { diff --git a/docs/html/struct_vma_statistics.html b/docs/html/struct_vma_statistics.html index b649918..6134cf1 100644 --- a/docs/html/struct_vma_statistics.html +++ b/docs/html/struct_vma_statistics.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaStatistics Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,20 +79,20 @@ $(function() {

      Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool, or total. - More...

      + More...

      - + - + - + - +

      Public Attributes

      uint32_t blockCount
      uint32_t blockCount
       Number of VkDeviceMemory objects - Vulkan memory blocks allocated.
       
      uint32_t allocationCount
      uint32_t allocationCount
       Number of VmaAllocation objects allocated.
       
      VkDeviceSize blockBytes
      VkDeviceSize blockBytes
       Number of bytes allocated in VkDeviceMemory blocks.
       
      VkDeviceSize allocationBytes
      VkDeviceSize allocationBytes
       Total number of bytes occupied by all VmaAllocation objects.
       
      @@ -171,7 +173,7 @@ Public Attributes
      diff --git a/docs/html/struct_vma_total_statistics-members.html b/docs/html/struct_vma_total_statistics-members.html index 0122fe7..9b213d2 100644 --- a/docs/html/struct_vma_total_statistics-members.html +++ b/docs/html/struct_vma_total_statistics-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@ - + @@ -81,7 +83,7 @@ $(function() { diff --git a/docs/html/struct_vma_total_statistics.html b/docs/html/struct_vma_total_statistics.html index e26ef41..5ccc304 100644 --- a/docs/html/struct_vma_total_statistics.html +++ b/docs/html/struct_vma_total_statistics.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaTotalStatistics Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,15 +79,15 @@ $(function() {

      General statistics from current state of the Allocator - total memory usage across all memory heaps and types. - More...

      + More...

      - + - + - +

      Public Attributes

      VmaDetailedStatistics memoryType [VK_MAX_MEMORY_TYPES]
      VmaDetailedStatistics memoryType [VK_MAX_MEMORY_TYPES]
       
      VmaDetailedStatistics memoryHeap [VK_MAX_MEMORY_HEAPS]
      VmaDetailedStatistics memoryHeap [VK_MAX_MEMORY_HEAPS]
       
      VmaDetailedStatistics total
      VmaDetailedStatistics total
       

      Detailed Description

      @@ -140,7 +142,7 @@ Public Attributes
      diff --git a/docs/html/struct_vma_virtual_allocation.html b/docs/html/struct_vma_virtual_allocation.html index 0be6fa7..ab728fb 100644 --- a/docs/html/struct_vma_virtual_allocation.html +++ b/docs/html/struct_vma_virtual_allocation.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaVirtualAllocation Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -74,7 +76,7 @@ $(function() {

      Represents single memory allocation done inside VmaVirtualBlock. - More...

      + More...

      Detailed Description

      Represents single memory allocation done inside VmaVirtualBlock.

      Use it as a unique identifier to virtual allocation within the single block.

      @@ -85,7 +87,7 @@ $(function() {
      diff --git a/docs/html/struct_vma_virtual_allocation_create_info-members.html b/docs/html/struct_vma_virtual_allocation_create_info-members.html index 6d58df8..1aa70fa 100644 --- a/docs/html/struct_vma_virtual_allocation_create_info-members.html +++ b/docs/html/struct_vma_virtual_allocation_create_info-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@
      - + @@ -82,7 +84,7 @@ $(function() { diff --git a/docs/html/struct_vma_virtual_allocation_create_info.html b/docs/html/struct_vma_virtual_allocation_create_info.html index 091b2e3..46fc6d6 100644 --- a/docs/html/struct_vma_virtual_allocation_create_info.html +++ b/docs/html/struct_vma_virtual_allocation_create_info.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaVirtualAllocationCreateInfo Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,20 +79,20 @@ $(function() {

      Parameters of created virtual allocation to be passed to vmaVirtualAllocate(). - More...

      + More...

      - + - + - + - +

      Public Attributes

      VkDeviceSize size
      VkDeviceSize size
       Size of the allocation.
       
      VkDeviceSize alignment
      VkDeviceSize alignment
       Required alignment of the allocation. Optional.
       
      VmaVirtualAllocationCreateFlags flags
      VmaVirtualAllocationCreateFlags flags
       Use combination of VmaVirtualAllocationCreateFlagBits.
       
      void * pUserData
      void * pUserData
       Custom pointer to be associated with the allocation. Optional.
       
      @@ -170,7 +172,7 @@ Public Attributes
      diff --git a/docs/html/struct_vma_virtual_allocation_info-members.html b/docs/html/struct_vma_virtual_allocation_info-members.html index 1cd90c8..a85163b 100644 --- a/docs/html/struct_vma_virtual_allocation_info-members.html +++ b/docs/html/struct_vma_virtual_allocation_info-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@ - + @@ -81,7 +83,7 @@ $(function() { diff --git a/docs/html/struct_vma_virtual_allocation_info.html b/docs/html/struct_vma_virtual_allocation_info.html index 14cef4a..d408865 100644 --- a/docs/html/struct_vma_virtual_allocation_info.html +++ b/docs/html/struct_vma_virtual_allocation_info.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaVirtualAllocationInfo Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,17 +79,17 @@ $(function() {

      Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo(). - More...

      + More...

      - + - + - +

      Public Attributes

      VkDeviceSize offset
      VkDeviceSize offset
       Offset of the allocation.
       
      VkDeviceSize size
      VkDeviceSize size
       Size of the allocation.
       
      void * pUserData
      void * pUserData
       Custom pointer associated with the allocation.
       
      @@ -151,7 +153,7 @@ Public Attributes
      diff --git a/docs/html/struct_vma_virtual_block.html b/docs/html/struct_vma_virtual_block.html index 317314a..0d7a3e7 100644 --- a/docs/html/struct_vma_virtual_block.html +++ b/docs/html/struct_vma_virtual_block.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaVirtualBlock Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -74,7 +76,7 @@ $(function() {

      Handle to a virtual block object that allows to use core allocation algorithm without allocating any real GPU memory. - More...

      + More...

      Detailed Description

      Handle to a virtual block object that allows to use core allocation algorithm without allocating any real GPU memory.

      Fill in VmaVirtualBlockCreateInfo structure and use vmaCreateVirtualBlock() to create it. Use vmaDestroyVirtualBlock() to destroy it. For more information, see documentation chapter Virtual allocator.

      @@ -85,7 +87,7 @@ $(function() {
      diff --git a/docs/html/struct_vma_virtual_block_create_info-members.html b/docs/html/struct_vma_virtual_block_create_info-members.html index b1e64db..0254210 100644 --- a/docs/html/struct_vma_virtual_block_create_info-members.html +++ b/docs/html/struct_vma_virtual_block_create_info-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@
      - + @@ -81,7 +83,7 @@ $(function() { diff --git a/docs/html/struct_vma_virtual_block_create_info.html b/docs/html/struct_vma_virtual_block_create_info.html index 5bb5b0b..378e9b4 100644 --- a/docs/html/struct_vma_virtual_block_create_info.html +++ b/docs/html/struct_vma_virtual_block_create_info.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaVirtualBlockCreateInfo Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,17 +79,17 @@ $(function() {

      Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock(). - More...

      + More...

      - + - + - +

      Public Attributes

      VkDeviceSize size
      VkDeviceSize size
       Total size of the virtual block.
       
      VmaVirtualBlockCreateFlags flags
      VmaVirtualBlockCreateFlags flags
       Use combination of VmaVirtualBlockCreateFlagBits.
       
      const VkAllocationCallbacks * pAllocationCallbacks
      const VkAllocationCallbacks * pAllocationCallbacks
       Custom CPU memory allocation callbacks. Optional.
       
      @@ -150,7 +152,7 @@ Public Attributes
      diff --git a/docs/html/struct_vma_vulkan_functions-members.html b/docs/html/struct_vma_vulkan_functions-members.html index 8db9679..2d39f27 100644 --- a/docs/html/struct_vma_vulkan_functions-members.html +++ b/docs/html/struct_vma_vulkan_functions-members.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Member List + + @@ -29,7 +31,7 @@ - + @@ -89,8 +91,8 @@ $(function() { vkFreeMemoryVmaVulkanFunctions vkGetBufferMemoryRequirementsVmaVulkanFunctions vkGetBufferMemoryRequirements2KHRVmaVulkanFunctions - vkGetDeviceBufferMemoryRequirementsVmaVulkanFunctions - vkGetDeviceImageMemoryRequirementsVmaVulkanFunctions + vkGetDeviceBufferMemoryRequirementsVmaVulkanFunctions + vkGetDeviceImageMemoryRequirementsVmaVulkanFunctions vkGetDeviceProcAddrVmaVulkanFunctions vkGetImageMemoryRequirementsVmaVulkanFunctions vkGetImageMemoryRequirements2KHRVmaVulkanFunctions @@ -104,7 +106,7 @@ $(function() { diff --git a/docs/html/struct_vma_vulkan_functions.html b/docs/html/struct_vma_vulkan_functions.html index 978ac50..1b716e3 100644 --- a/docs/html/struct_vma_vulkan_functions.html +++ b/docs/html/struct_vma_vulkan_functions.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VmaVulkanFunctions Struct Reference + + @@ -29,7 +31,7 @@ - + @@ -77,70 +79,70 @@ $(function() {

      Pointers to some Vulkan functions - a subset used by the library. - More...

      + More...

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

      Public Attributes

      PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr
      PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr
       Required when using VMA_DYNAMIC_VULKAN_FUNCTIONS.
       
      PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr
      PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr
       Required when using VMA_DYNAMIC_VULKAN_FUNCTIONS.
       
      PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties
      PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties
       
      PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties
      PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties
       
      PFN_vkAllocateMemory vkAllocateMemory
      PFN_vkAllocateMemory vkAllocateMemory
       
      PFN_vkFreeMemory vkFreeMemory
      PFN_vkFreeMemory vkFreeMemory
       
      PFN_vkMapMemory vkMapMemory
      PFN_vkMapMemory vkMapMemory
       
      PFN_vkUnmapMemory vkUnmapMemory
      PFN_vkUnmapMemory vkUnmapMemory
       
      PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges
      PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges
       
      PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges
      PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges
       
      PFN_vkBindBufferMemory vkBindBufferMemory
      PFN_vkBindBufferMemory vkBindBufferMemory
       
      PFN_vkBindImageMemory vkBindImageMemory
      PFN_vkBindImageMemory vkBindImageMemory
       
      PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements
      PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements
       
      PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements
      PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements
       
      PFN_vkCreateBuffer vkCreateBuffer
      PFN_vkCreateBuffer vkCreateBuffer
       
      PFN_vkDestroyBuffer vkDestroyBuffer
      PFN_vkDestroyBuffer vkDestroyBuffer
       
      PFN_vkCreateImage vkCreateImage
      PFN_vkCreateImage vkCreateImage
       
      PFN_vkDestroyImage vkDestroyImage
      PFN_vkDestroyImage vkDestroyImage
       
      PFN_vkCmdCopyBuffer vkCmdCopyBuffer
      PFN_vkCmdCopyBuffer vkCmdCopyBuffer
       
      PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR
      PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR
       Fetch "vkGetBufferMemoryRequirements2" on Vulkan >= 1.1, fetch "vkGetBufferMemoryRequirements2KHR" when using VK_KHR_dedicated_allocation extension.
       
      PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR
      PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR
       Fetch "vkGetImageMemoryRequirements2" on Vulkan >= 1.1, fetch "vkGetImageMemoryRequirements2KHR" when using VK_KHR_dedicated_allocation extension.
       
      PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR
      PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR
       Fetch "vkBindBufferMemory2" on Vulkan >= 1.1, fetch "vkBindBufferMemory2KHR" when using VK_KHR_bind_memory2 extension.
       
      PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR
      PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR
       Fetch "vkBindImageMemory2" on Vulkan >= 1.1, fetch "vkBindImageMemory2KHR" when using VK_KHR_bind_memory2 extension.
       
      PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR
      PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR
       
      PFN_vkGetDeviceBufferMemoryRequirements vkGetDeviceBufferMemoryRequirements
       Fetch from "vkGetDeviceBufferMemoryRequirements" on Vulkan >= 1.3, but you can also fetch it from "vkGetDeviceBufferMemoryRequirementsKHR" if you enabled extension VK_KHR_maintenance4.
       
      PFN_vkGetDeviceImageMemoryRequirements vkGetDeviceImageMemoryRequirements
       Fetch from "vkGetDeviceImageMemoryRequirements" on Vulkan >= 1.3, but you can also fetch it from "vkGetDeviceImageMemoryRequirementsKHR" if you enabled extension VK_KHR_maintenance4.
       
      PFN_vkGetDeviceBufferMemoryRequirementsKHR vkGetDeviceBufferMemoryRequirements
       Fetch from "vkGetDeviceBufferMemoryRequirements" on Vulkan >= 1.3, but you can also fetch it from "vkGetDeviceBufferMemoryRequirementsKHR" if you enabled extension VK_KHR_maintenance4.
       
      PFN_vkGetDeviceImageMemoryRequirementsKHR vkGetDeviceImageMemoryRequirements
       Fetch from "vkGetDeviceImageMemoryRequirements" on Vulkan >= 1.3, but you can also fetch it from "vkGetDeviceImageMemoryRequirementsKHR" if you enabled extension VK_KHR_maintenance4.
       

      Detailed Description

      Pointers to some Vulkan functions - a subset used by the library.

      @@ -348,14 +350,14 @@ Public Attributes
      - -

      ◆ vkGetDeviceBufferMemoryRequirements

      + +

      ◆ vkGetDeviceBufferMemoryRequirements

      - +
      PFN_vkGetDeviceBufferMemoryRequirements VmaVulkanFunctions::vkGetDeviceBufferMemoryRequirementsPFN_vkGetDeviceBufferMemoryRequirementsKHR VmaVulkanFunctions::vkGetDeviceBufferMemoryRequirements
      @@ -364,14 +366,14 @@ Public Attributes
      - -

      ◆ vkGetDeviceImageMemoryRequirements

      + +

      ◆ vkGetDeviceImageMemoryRequirements

      - +
      PFN_vkGetDeviceImageMemoryRequirements VmaVulkanFunctions::vkGetDeviceImageMemoryRequirementsPFN_vkGetDeviceImageMemoryRequirementsKHR VmaVulkanFunctions::vkGetDeviceImageMemoryRequirements
      @@ -532,7 +534,7 @@ Public Attributes
      diff --git a/docs/html/tabs.css b/docs/html/tabs.css index 71c8a47..fe4854a 100644 --- a/docs/html/tabs.css +++ b/docs/html/tabs.css @@ -1 +1 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/docs/html/topics.html b/docs/html/topics.html index 0469a6b..22cc38f 100644 --- a/docs/html/topics.html +++ b/docs/html/topics.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Topics + + @@ -29,7 +31,7 @@
      - + @@ -83,7 +85,7 @@ $(function() { diff --git a/docs/html/usage_patterns.html b/docs/html/usage_patterns.html index ba5eac5..4f2106b 100644 --- a/docs/html/usage_patterns.html +++ b/docs/html/usage_patterns.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Recommended usage patterns + + @@ -29,7 +31,7 @@ - + @@ -104,12 +106,12 @@ GPU-only resource
      vmaCreateImage(allocator, &imgCreateInfo, &allocCreateInfo, &img, &alloc, nullptr);
      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:493
      -
      @ VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT
      Set this flag if the allocation should have its own memory block.
      Definition vk_mem_alloc.h:529
      -
      Parameters of new VmaAllocation.
      Definition vk_mem_alloc.h:1223
      -
      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:1269
      -
      VmaMemoryUsage usage
      Intended usage of memory.
      Definition vk_mem_alloc.h:1231
      -
      VmaAllocationCreateFlags flags
      Use VmaAllocationCreateFlagBits enum.
      Definition vk_mem_alloc.h:1225
      +
      @ VMA_MEMORY_USAGE_AUTO
      Definition vk_mem_alloc.h:510
      +
      @ VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT
      Set this flag if the allocation should have its own memory block.
      Definition vk_mem_alloc.h:549
      +
      Parameters of new VmaAllocation.
      Definition vk_mem_alloc.h:1245
      +
      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:1291
      +
      VmaMemoryUsage usage
      Intended usage of memory.
      Definition vk_mem_alloc.h:1253
      +
      VmaAllocationCreateFlags flags
      Use VmaAllocationCreateFlagBits enum.
      Definition vk_mem_alloc.h:1247
      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.

      @@ -134,10 +136,10 @@ Staging copy for upload

      memcpy(allocInfo.pMappedData, myData, myDataSize);
      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:550
      -
      @ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT
      Definition vk_mem_alloc.h:599
      -
      Definition vk_mem_alloc.h:1342
      -
      void * pMappedData
      Pointer to the beginning of this allocation as mapped data.
      Definition vk_mem_alloc.h:1384
      +
      @ 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:570
      +
      @ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT
      Definition vk_mem_alloc.h:619
      +
      Definition vk_mem_alloc.h:1364
      +
      void * pMappedData
      Pointer to the beginning of this allocation as mapped data.
      Definition vk_mem_alloc.h:1406

      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

      @@ -160,7 +162,7 @@ Readback
      ...
      const float* downloadedData = (const float*)allocInfo.pMappedData;
      -
      @ VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT
      Definition vk_mem_alloc.h:611
      +
      @ VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT
      Definition vk_mem_alloc.h:631

      Advanced data uploading

      For resources that you frequently write on CPU via mapped pointer and frequently read on GPU e.g. as a uniform buffer (also called "dynamic"), multiple options are possible:

      @@ -232,7 +234,7 @@ Advanced data uploading
      }
      VkResult vmaFlushAllocation(VmaAllocator allocator, VmaAllocation allocation, VkDeviceSize offset, VkDeviceSize size)
      Flushes memory of given allocation.
      void vmaGetAllocationMemoryProperties(VmaAllocator allocator, VmaAllocation allocation, VkMemoryPropertyFlags *pFlags)
      Given an allocation, returns Property Flags of its memory type.
      -
      @ VMA_ALLOCATION_CREATE_HOST_ACCESS_ALLOW_TRANSFER_INSTEAD_BIT
      Definition vk_mem_alloc.h:623
      +
      @ VMA_ALLOCATION_CREATE_HOST_ACCESS_ALLOW_TRANSFER_INSTEAD_BIT
      Definition vk_mem_alloc.h:643

      Other use cases

      Here are some other, less obvious use cases and their recommended settings:

      @@ -258,7 +260,7 @@ Other use cases diff --git a/docs/html/virtual_allocator.html b/docs/html/virtual_allocator.html index 924e7d4..b7c398e 100644 --- a/docs/html/virtual_allocator.html +++ b/docs/html/virtual_allocator.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: Virtual allocator + + @@ -29,7 +31,7 @@ - + @@ -91,8 +93,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:1531
      -
      VkDeviceSize size
      Total size of the virtual block.
      Definition vk_mem_alloc.h:1537
      +
      Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock().
      Definition vk_mem_alloc.h:1553
      +
      VkDeviceSize size
      Total size of the virtual block.
      Definition vk_mem_alloc.h:1559
      Handle to a virtual block object that allows to use core allocation algorithm without allocating any ...

      Making virtual allocations

      @@ -118,8 +120,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:1552
      -
      VkDeviceSize size
      Size of the allocation.
      Definition vk_mem_alloc.h:1557
      +
      Parameters of created virtual allocation to be passed to vmaVirtualAllocate().
      Definition vk_mem_alloc.h:1574
      +
      VkDeviceSize size
      Size of the allocation.
      Definition vk_mem_alloc.h:1579
      Represents single memory allocation done inside VmaVirtualBlock.

      Deallocation

      @@ -147,8 +149,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:1575
      -
      void * pUserData
      Custom pointer associated with the allocation.
      Definition vk_mem_alloc.h:1590
      +
      Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo().
      Definition vk_mem_alloc.h:1597
      +
      void * pUserData
      Custom pointer associated with the allocation.
      Definition vk_mem_alloc.h:1612

      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 +160,7 @@ Alignment and units
      res = vmaVirtualAllocate(block, &allocCreateInfo, &alloc, nullptr);
      -
      VkDeviceSize alignment
      Required alignment of the allocation. Optional.
      Definition vk_mem_alloc.h:1562
      +
      VkDeviceSize alignment
      Required alignment of the allocation. Optional.
      Definition vk_mem_alloc.h:1584

      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 +175,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:1112
        -
        VkDeviceSize allocationBytes
        Total number of bytes occupied by all VmaAllocation objects.
        Definition vk_mem_alloc.h:1134
        -
        uint32_t allocationCount
        Number of VmaAllocation objects allocated.
        Definition vk_mem_alloc.h:1120
        +
        Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool,...
        Definition vk_mem_alloc.h:1134
        +
        VkDeviceSize allocationBytes
        Total number of bytes occupied by all VmaAllocation objects.
        Definition vk_mem_alloc.h:1156
        +
        uint32_t allocationCount
        Number of VmaAllocation objects allocated.
        Definition vk_mem_alloc.h:1142

        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

        @@ -186,7 +188,7 @@ Additional considerations diff --git a/docs/html/vk__mem__alloc_8h.html b/docs/html/vk__mem__alloc_8h.html index 0674f97..8bb6e0b 100644 --- a/docs/html/vk__mem__alloc_8h.html +++ b/docs/html/vk__mem__alloc_8h.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: D:/PROJECTS/Vulkan Memory Allocator/REPO/include/vk_mem_alloc.h File Reference + + @@ -29,7 +31,7 @@ - + @@ -145,17 +147,17 @@ Classes - + - + - + - + - - - + + +

        Macros

        #define VMA_DEDICATED_ALLOCATION   0
        #define VMA_DEDICATED_ALLOCATION   0
         
        #define VMA_BIND_MEMORY2   0
        #define VMA_BIND_MEMORY2   0
         
        #define VMA_MEMORY_BUDGET   0
        #define VMA_MEMORY_BUDGET   0
         
        #define VMA_BUFFER_DEVICE_ADDRESS   1
        #define VMA_BUFFER_DEVICE_ADDRESS   1
         
        #define VMA_EXTENDS_VK_STRUCT(vkStruct)
         
        #define VMA_STATS_STRING_ENABLED   1
        #define VMA_KHR_MAINTENANCE4   0
         
        #define VMA_STATS_STRING_ENABLED   1
         
        - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

        @@ -208,62 +210,62 @@ Typedefs

        typedef void(VKAPI_PTR * PFN_vmaFreeDeviceMemoryFunction) (VmaAllocator allocator, uint32_t memoryType, VkDeviceMemory memory, VkDeviceSize size, void *pUserData)
         Callback function called before vkFreeMemory.
         
        typedef struct VmaDeviceMemoryCallbacks VmaDeviceMemoryCallbacks
        typedef struct VmaDeviceMemoryCallbacks VmaDeviceMemoryCallbacks
         Set of callbacks that the library will call for vkAllocateMemory and vkFreeMemory.
         
        typedef struct VmaVulkanFunctions VmaVulkanFunctions
        typedef struct VmaVulkanFunctions VmaVulkanFunctions
         Pointers to some Vulkan functions - a subset used by the library.
         
        typedef struct VmaAllocatorCreateInfo VmaAllocatorCreateInfo
        typedef struct VmaAllocatorCreateInfo VmaAllocatorCreateInfo
         Description of a Allocator to be created.
         
        typedef struct VmaAllocatorInfo VmaAllocatorInfo
        typedef struct VmaAllocatorInfo VmaAllocatorInfo
         Information about existing VmaAllocator object.
         
        typedef struct VmaStatistics VmaStatistics
        typedef struct VmaStatistics VmaStatistics
         Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool, or total.
         
        typedef struct VmaDetailedStatistics VmaDetailedStatistics
        typedef struct VmaDetailedStatistics VmaDetailedStatistics
         More detailed statistics than VmaStatistics.
         
        typedef struct VmaTotalStatistics VmaTotalStatistics
        typedef struct VmaTotalStatistics VmaTotalStatistics
         General statistics from current state of the Allocator - total memory usage across all memory heaps and types.
         
        typedef struct VmaBudget VmaBudget
        typedef struct VmaBudget VmaBudget
         Statistics of current memory usage and available budget for a specific memory heap.
         
        typedef struct VmaAllocationCreateInfo VmaAllocationCreateInfo
        typedef struct VmaAllocationCreateInfo VmaAllocationCreateInfo
         Parameters of new VmaAllocation.
         
        typedef struct VmaPoolCreateInfo VmaPoolCreateInfo
        typedef struct VmaPoolCreateInfo VmaPoolCreateInfo
         Describes parameter of created VmaPool.
         
        typedef struct VmaAllocationInfo VmaAllocationInfo
        typedef struct VmaAllocationInfo VmaAllocationInfo
         
        typedef struct VmaAllocationInfo2 VmaAllocationInfo2
        typedef struct VmaAllocationInfo2 VmaAllocationInfo2
         Extended parameters of a VmaAllocation object that can be retrieved using function vmaGetAllocationInfo2().
         
        typedef VkBool32(VKAPI_PTR * PFN_vmaCheckDefragmentationBreakFunction) (void *pUserData)
         
        typedef struct VmaDefragmentationInfo VmaDefragmentationInfo
        typedef struct VmaDefragmentationInfo VmaDefragmentationInfo
         Parameters for defragmentation.
         
        typedef struct VmaDefragmentationMove VmaDefragmentationMove
        typedef struct VmaDefragmentationMove VmaDefragmentationMove
         Single move of an allocation to be done for defragmentation.
         
        typedef struct VmaDefragmentationPassMoveInfo VmaDefragmentationPassMoveInfo
        typedef struct VmaDefragmentationPassMoveInfo VmaDefragmentationPassMoveInfo
         Parameters for incremental defragmentation steps.
         
        typedef struct VmaDefragmentationStats VmaDefragmentationStats
        typedef struct VmaDefragmentationStats VmaDefragmentationStats
         Statistics returned for defragmentation process in function vmaEndDefragmentation().
         
        typedef struct VmaVirtualBlockCreateInfo VmaVirtualBlockCreateInfo
        typedef struct VmaVirtualBlockCreateInfo VmaVirtualBlockCreateInfo
         Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock().
         
        typedef struct VmaVirtualAllocationCreateInfo VmaVirtualAllocationCreateInfo
        typedef struct VmaVirtualAllocationCreateInfo VmaVirtualAllocationCreateInfo
         Parameters of created virtual allocation to be passed to vmaVirtualAllocate().
         
        typedef struct VmaVirtualAllocationInfo VmaVirtualAllocationInfo
        typedef struct VmaVirtualAllocationInfo VmaVirtualAllocationInfo
         Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo().
         
        @@ -278,7 +280,9 @@ Enumerations   VMA_ALLOCATOR_CREATE_AMD_DEVICE_COHERENT_MEMORY_BIT = 0x00000010 , VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT = 0x00000020 , VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT = 0x00000040 -, VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +, VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE4_BIT = 0x00000080 +,
        +  VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
        } @@ -374,6 +378,8 @@ Enumerations
         Flags for created VmaAllocator. More...
        + + @@ -480,6 +486,12 @@ Functions + + + + + + @@ -498,15 +510,15 @@ Functions - - - + + + - - - + + + @@ -608,18 +620,14 @@ Functions - -

        ◆ VMA_EXTENDS_VK_STRUCT

        + +

        ◆ VMA_KHR_MAINTENANCE4

        Functions

         VK_DEFINE_NON_DISPATCHABLE_HANDLE (VmaVirtualAllocation)
         
        VkResult vmaCreateAllocator (const VmaAllocatorCreateInfo *pCreateInfo, VmaAllocator *pAllocator)
         Creates VmaAllocator object.
         
        VkResult vmaInvalidateAllocations (VmaAllocator allocator, uint32_t allocationCount, const VmaAllocation *allocations, const VkDeviceSize *offsets, const VkDeviceSize *sizes)
         Invalidates memory of given set of allocations.
         
        VkResult vmaCopyMemoryToAllocation (VmaAllocator allocator, const void *pSrcHostPointer, VmaAllocation dstAllocation, VkDeviceSize dstAllocationLocalOffset, VkDeviceSize size)
         Maps the allocation temporarily if needed, copies data from specified host pointer to it, and flushes the memory from the host caches if needed.
         
        VkResult vmaCopyAllocationToMemory (VmaAllocator allocator, VmaAllocation srcAllocation, VkDeviceSize srcAllocationLocalOffset, void *pDstHostPointer, VkDeviceSize size)
         Invalidates memory in the host caches if needed, maps the allocation temporarily if needed, and copies data from it to a specified host pointer.
         
        VkResult vmaCheckCorruption (VmaAllocator allocator, uint32_t memoryTypeBits)
         Checks magic number in margins around all allocations in given memory types (in both default and custom pools) in search for corruptions.
         
        VkResult vmaBindBufferMemory (VmaAllocator allocator, VmaAllocation allocation, VkBuffer buffer)
         Binds buffer to allocation.
         
        VkResult vmaBindBufferMemory2 (VmaAllocator allocator, VmaAllocation allocation, VkDeviceSize allocationLocalOffset, VkBuffer buffer, const void *VMA_EXTENDS_VK_STRUCT(VkBindBufferMemoryInfoKHR) pNext)
         Binds buffer to allocation with additional parameters.
         
        VkResult vmaBindBufferMemory2 (VmaAllocator allocator, VmaAllocation allocation, VkDeviceSize allocationLocalOffset, VkBuffer buffer, const void *(VkBindBufferMemoryInfoKHR) pNext)
         Binds buffer to allocation with additional parameters.
         
        VkResult vmaBindImageMemory (VmaAllocator allocator, VmaAllocation allocation, VkImage image)
         Binds image to allocation.
         
        VkResult vmaBindImageMemory2 (VmaAllocator allocator, VmaAllocation allocation, VkDeviceSize allocationLocalOffset, VkImage image, const void *VMA_EXTENDS_VK_STRUCT(VkBindImageMemoryInfoKHR) pNext)
         Binds image to allocation with additional parameters.
         
        VkResult vmaBindImageMemory2 (VmaAllocator allocator, VmaAllocation allocation, VkDeviceSize allocationLocalOffset, VkImage image, const void *(VkBindImageMemoryInfoKHR) pNext)
         Binds image to allocation with additional parameters.
         
        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.
         
        - - - - - +
        #define VMA_EXTENDS_VK_STRUCT( vkStruct)#define VMA_KHR_MAINTENANCE4   0
        @@ -657,7 +665,7 @@ Functions
        diff --git a/docs/html/vk_amd_device_coherent_memory.html b/docs/html/vk_amd_device_coherent_memory.html index 45f9f54..acbc111 100644 --- a/docs/html/vk_amd_device_coherent_memory.html +++ b/docs/html/vk_amd_device_coherent_memory.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VK_AMD_device_coherent_memory + + @@ -29,7 +31,7 @@ - + @@ -101,7 +103,7 @@ More information diff --git a/docs/html/vk_ext_memory_priority.html b/docs/html/vk_ext_memory_priority.html index 01e5173..112aa3f 100644 --- a/docs/html/vk_ext_memory_priority.html +++ b/docs/html/vk_ext_memory_priority.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VK_EXT_memory_priority + + @@ -29,7 +31,7 @@ - + @@ -117,12 +119,12 @@ Usage
        vmaCreateImage(allocator, &imgCreateInfo, &allocCreateInfo, &img, &alloc, nullptr);
        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:493
        -
        @ VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT
        Set this flag if the allocation should have its own memory block.
        Definition vk_mem_alloc.h:529
        -
        Parameters of new VmaAllocation.
        Definition vk_mem_alloc.h:1223
        -
        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:1269
        -
        VmaMemoryUsage usage
        Intended usage of memory.
        Definition vk_mem_alloc.h:1231
        -
        VmaAllocationCreateFlags flags
        Use VmaAllocationCreateFlagBits enum.
        Definition vk_mem_alloc.h:1225
        +
        @ VMA_MEMORY_USAGE_AUTO
        Definition vk_mem_alloc.h:510
        +
        @ VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT
        Set this flag if the allocation should have its own memory block.
        Definition vk_mem_alloc.h:549
        +
        Parameters of new VmaAllocation.
        Definition vk_mem_alloc.h:1245
        +
        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:1291
        +
        VmaMemoryUsage usage
        Intended usage of memory.
        Definition vk_mem_alloc.h:1253
        +
        VmaAllocationCreateFlags flags
        Use VmaAllocationCreateFlagBits enum.
        Definition vk_mem_alloc.h:1247
        Represents single memory allocation.

        priority member is ignored in the following situations:

          @@ -133,7 +135,7 @@ Usage diff --git a/docs/html/vk_khr_dedicated_allocation.html b/docs/html/vk_khr_dedicated_allocation.html index ec97d73..9af5475 100644 --- a/docs/html/vk_khr_dedicated_allocation.html +++ b/docs/html/vk_khr_dedicated_allocation.html @@ -3,12 +3,14 @@ - + Vulkan Memory Allocator: VK_KHR_dedicated_allocation + + @@ -29,7 +31,7 @@ - + @@ -77,7 +79,7 @@ $(function() {

          VK_KHR_dedicated_allocation is a Vulkan extension which can be used to improve performance on some GPUs. It augments Vulkan API with possibility to query driver whether it prefers particular buffer or image to have its own, dedicated allocation (separate VkDeviceMemory block) for better efficiency - to be able to do some internal optimizations. The extension is supported by this library. It will be used automatically when enabled.

          -

          It has been promoted to core Vulkan 1.1, so if you use eligible Vulkan version and inform VMA about it by setting VmaAllocatorCreateInfo::vulkanApiVersion, you are all set.

          +

          It has been promoted to core Vulkan 1.1, so if you use eligible Vulkan version and inform VMA about it by setting VmaAllocatorCreateInfo::vulkanApiVersion, you are all set.

          Otherwise, if you want to use it as an extension:

          1 . When creating Vulkan device, check if following 2 device extensions are supported (call vkEnumerateDeviceExtensionProperties()). If yes, enable them (fill VkDeviceCreateInfo::ppEnabledExtensionNames).

          That is all. The extension will be automatically used whenever you create a buffer using vmaCreateBuffer() or image using vmaCreateImage().

          When using the extension together with Vulkan Validation Layer, you will receive warnings like this:

          vkBindBufferMemory(): Binding memory to buffer 0x33 but vkGetBufferMemoryRequirements() has not been called on that buffer.

          @@ -104,7 +106,7 @@ $(function() {
          diff --git a/include/vk_mem_alloc.h b/include/vk_mem_alloc.h index 81aabef..c56277c 100644 --- a/include/vk_mem_alloc.h +++ b/include/vk_mem_alloc.h @@ -49,6 +49,7 @@ See also: [product page on GPUOpen](https://gpuopen.com/gaming-product/vulkan-me - [Custom memory pools](@ref choosing_memory_type_custom_memory_pools) - [Dedicated allocations](@ref choosing_memory_type_dedicated_allocations) - \subpage memory_mapping + - [Copy functions](@ref memory_mapping_copy_functions) - [Mapping functions](@ref memory_mapping_mapping_functions) - [Persistently mapped memory](@ref memory_mapping_persistently_mapped_memory) - [Cache flush and invalidate](@ref memory_mapping_cache_control) @@ -2181,6 +2182,61 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaInvalidateAllocations( const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(allocationCount) offsets, const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(allocationCount) sizes); +/** \brief Maps the allocation temporarily if needed, copies data from specified host pointer to it, and flushes the memory from the host caches if needed. + +\param allocator +\param pSrcHostPointer Pointer to the host data that become source of the copy. +\param dstAllocation Handle to the allocation that becomes destination of the copy. +\param dstAllocationLocalOffset Offset within `dstAllocation` where to write copied data, in bytes. +\param size Number of bytes to copy. + +This is a convenience function that allows to copy data from a host pointer to an allocation easily. +Same behavior can be achieved by calling vmaMapMemory(), `memcpy()`, vmaUnmapMemory(), vmaFlushAllocation(). + +This function can be called only for allocations created in a memory type that has `VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT` flag. +It can be ensured e.g. by using #VMA_MEMORY_USAGE_AUTO and #VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT or +#VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT. +Otherwise, the function will fail and generate a Validation Layers error. + +`dstAllocationLocalOffset` is relative to the contents of given `dstAllocation`. +If you mean whole allocation, you should pass 0. +Do not pass allocation's offset within device memory block this parameter! +*/ +VMA_CALL_PRE VkResult VMA_CALL_POST vmaCopyMemoryToAllocation( + VmaAllocator VMA_NOT_NULL allocator, + const void* VMA_NOT_NULL pSrcHostPointer, + VmaAllocation VMA_NOT_NULL dstAllocation, + VkDeviceSize dstAllocationLocalOffset, + VkDeviceSize size); + +/** \brief Invalidates memory in the host caches if needed, maps the allocation temporarily if needed, and copies data from it to a specified host pointer. + +\param allocator +\param srcAllocation Handle to the allocation that becomes source of the copy. +\param srcAllocationLocalOffset Offset within `srcAllocation` where to read copied data, in bytes. +\param pDstHostPointer Pointer to the host memory that become destination of the copy. +\param size Number of bytes to copy. + +This is a convenience function that allows to copy data from an allocation to a host pointer easily. +Same behavior can be achieved by calling vmaInvalidateAllocation(), vmaMapMemory(), `memcpy()`, vmaUnmapMemory(). + +This function should be called only for allocations created in a memory type that has `VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT` +and `VK_MEMORY_PROPERTY_HOST_CACHED_BIT` flag. +It can be ensured e.g. by using #VMA_MEMORY_USAGE_AUTO and #VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT. +Otherwise, the function may fail and generate a Validation Layers error. +It may also work very slowly when reading from an uncached memory. + +`srcAllocationLocalOffset` is relative to the contents of given `srcAllocation`. +If you mean whole allocation, you should pass 0. +Do not pass allocation's offset within device memory block as this parameter! +*/ +VMA_CALL_PRE VkResult VMA_CALL_POST vmaCopyAllocationToMemory( + VmaAllocator VMA_NOT_NULL allocator, + VmaAllocation VMA_NOT_NULL srcAllocation, + VkDeviceSize srcAllocationLocalOffset, + void* VMA_NOT_NULL pDstHostPointer, + VkDeviceSize size); + /** \brief Checks magic number in margins around all allocations in given memory types (in both default and custom pools) in search for corruptions. \param allocator @@ -4136,7 +4192,7 @@ public: --(*m_Atomic); } - void Commit() { m_Atomic = nullptr; } + void Commit() { m_Atomic = VMA_NULL; } T Increment(AtomicT* atomic) { m_Atomic = atomic; @@ -4144,7 +4200,7 @@ public: } private: - AtomicT* m_Atomic = nullptr; + AtomicT* m_Atomic = VMA_NULL; }; #endif // _VMA_ATOMIC_TRANSACTIONAL_INCREMENT @@ -6210,7 +6266,7 @@ bool VmaDedicatedAllocationList::Validate() void VmaDedicatedAllocationList::AddDetailedStatistics(VmaDetailedStatistics& inoutStats) { - for(auto* item = m_AllocationList.Front(); item != nullptr; item = DedicatedAllocationLinkedList::GetNext(item)) + for(auto* item = m_AllocationList.Front(); item != VMA_NULL; item = DedicatedAllocationLinkedList::GetNext(item)) { const VkDeviceSize size = item->GetSize(); inoutStats.statistics.blockCount++; @@ -6227,7 +6283,7 @@ void VmaDedicatedAllocationList::AddStatistics(VmaStatistics& inoutStats) inoutStats.blockCount += allocCount; inoutStats.allocationCount += allocCount; - for(auto* item = m_AllocationList.Front(); item != nullptr; item = DedicatedAllocationLinkedList::GetNext(item)) + for(auto* item = m_AllocationList.Front(); item != VMA_NULL; item = DedicatedAllocationLinkedList::GetNext(item)) { const VkDeviceSize size = item->GetSize(); inoutStats.blockBytes += size; @@ -10078,6 +10134,17 @@ public: const VkDeviceSize* offsets, const VkDeviceSize* sizes, VMA_CACHE_OPERATION op); + VkResult CopyMemoryToAllocation( + const void* pSrcHostPointer, + VmaAllocation dstAllocation, + VkDeviceSize dstAllocationLocalOffset, + VkDeviceSize size); + VkResult CopyAllocationToMemory( + VmaAllocation srcAllocation, + VkDeviceSize srcAllocationLocalOffset, + void* pDstHostPointer, + VkDeviceSize size); + void FillAllocation(const VmaAllocation hAllocation, uint8_t pattern); /* @@ -10177,7 +10244,7 @@ private: VkFlags dedicatedBufferImageUsage, size_t allocationCount, VmaAllocation* pAllocations, - const void* pNextChain = nullptr); + const void* pNextChain = VMA_NULL); void FreeDedicatedMemory(const VmaAllocation allocation); @@ -10352,7 +10419,7 @@ bool VmaDeviceMemoryBlock::Validate() const VkResult VmaDeviceMemoryBlock::CheckCorruption(VmaAllocator hAllocator) { - void* pData = nullptr; + void* pData = VMA_NULL; VkResult res = Map(hAllocator, 1, &pData); if (res != VK_SUCCESS) { @@ -14304,6 +14371,43 @@ VkResult VmaAllocator_T::FlushOrInvalidateAllocations( return res; } +VkResult VmaAllocator_T::CopyMemoryToAllocation( + const void* pSrcHostPointer, + VmaAllocation dstAllocation, + VkDeviceSize dstAllocationLocalOffset, + VkDeviceSize size) +{ + void* dstMappedData = VMA_NULL; + VkResult res = Map(dstAllocation, &dstMappedData); + if(res == VK_SUCCESS) + { + memcpy((char*)dstMappedData + dstAllocationLocalOffset, pSrcHostPointer, (size_t)size); + Unmap(dstAllocation); + res = FlushOrInvalidateAllocation(dstAllocation, dstAllocationLocalOffset, size, VMA_CACHE_FLUSH); + } + return res; +} + +VkResult VmaAllocator_T::CopyAllocationToMemory( + VmaAllocation srcAllocation, + VkDeviceSize srcAllocationLocalOffset, + void* pDstHostPointer, + VkDeviceSize size) +{ + void* srcMappedData = VMA_NULL; + VkResult res = Map(srcAllocation, &srcMappedData); + if(res == VK_SUCCESS) + { + res = FlushOrInvalidateAllocation(srcAllocation, srcAllocationLocalOffset, size, VMA_CACHE_INVALIDATE); + if(res == VK_SUCCESS) + { + memcpy(pDstHostPointer, (const char*)srcMappedData + srcAllocationLocalOffset, (size_t)size); + Unmap(srcAllocation); + } + } + return res; +} + void VmaAllocator_T::FreeDedicatedMemory(const VmaAllocation allocation) { VMA_ASSERT(allocation && allocation->GetType() == VmaAllocation_T::ALLOCATION_TYPE_DEDICATED); @@ -15405,9 +15509,7 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaFlushAllocation( VMA_DEBUG_GLOBAL_MUTEX_LOCK - const VkResult res = allocator->FlushOrInvalidateAllocation(allocation, offset, size, VMA_CACHE_FLUSH); - - return res; + return allocator->FlushOrInvalidateAllocation(allocation, offset, size, VMA_CACHE_FLUSH); } VMA_CALL_PRE VkResult VMA_CALL_POST vmaInvalidateAllocation( @@ -15422,9 +15524,7 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaInvalidateAllocation( VMA_DEBUG_GLOBAL_MUTEX_LOCK - const VkResult res = allocator->FlushOrInvalidateAllocation(allocation, offset, size, VMA_CACHE_INVALIDATE); - - return res; + return allocator->FlushOrInvalidateAllocation(allocation, offset, size, VMA_CACHE_INVALIDATE); } VMA_CALL_PRE VkResult VMA_CALL_POST vmaFlushAllocations( @@ -15447,9 +15547,7 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaFlushAllocations( VMA_DEBUG_GLOBAL_MUTEX_LOCK - const VkResult res = allocator->FlushOrInvalidateAllocations(allocationCount, allocations, offsets, sizes, VMA_CACHE_FLUSH); - - return res; + return allocator->FlushOrInvalidateAllocations(allocationCount, allocations, offsets, sizes, VMA_CACHE_FLUSH); } VMA_CALL_PRE VkResult VMA_CALL_POST vmaInvalidateAllocations( @@ -15472,9 +15570,49 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaInvalidateAllocations( VMA_DEBUG_GLOBAL_MUTEX_LOCK - const VkResult res = allocator->FlushOrInvalidateAllocations(allocationCount, allocations, offsets, sizes, VMA_CACHE_INVALIDATE); + return allocator->FlushOrInvalidateAllocations(allocationCount, allocations, offsets, sizes, VMA_CACHE_INVALIDATE); +} - return res; +VMA_CALL_PRE VkResult VMA_CALL_POST vmaCopyMemoryToAllocation( + VmaAllocator allocator, + const void* pSrcHostPointer, + VmaAllocation dstAllocation, + VkDeviceSize dstAllocationLocalOffset, + VkDeviceSize size) +{ + VMA_ASSERT(allocator && pSrcHostPointer && dstAllocation); + + if(size == 0) + { + return VK_SUCCESS; + } + + VMA_DEBUG_LOG("vmaCopyMemoryToAllocation"); + + VMA_DEBUG_GLOBAL_MUTEX_LOCK + + return allocator->CopyMemoryToAllocation(pSrcHostPointer, dstAllocation, dstAllocationLocalOffset, size); +} + +VMA_CALL_PRE VkResult VMA_CALL_POST vmaCopyAllocationToMemory( + VmaAllocator allocator, + VmaAllocation srcAllocation, + VkDeviceSize srcAllocationLocalOffset, + void* pDstHostPointer, + VkDeviceSize size) +{ + VMA_ASSERT(allocator && srcAllocation && pDstHostPointer); + + if(size == 0) + { + return VK_SUCCESS; + } + + VMA_DEBUG_LOG("vmaCopyAllocationToMemory"); + + VMA_DEBUG_GLOBAL_MUTEX_LOCK + + return allocator->CopyAllocationToMemory(srcAllocation, srcAllocationLocalOffset, pDstHostPointer, size); } VMA_CALL_PRE VkResult VMA_CALL_POST vmaCheckCorruption( @@ -16602,6 +16740,7 @@ You can use them directly with memory allocated by this library, but it is not recommended because of following issue: Mapping the same `VkDeviceMemory` block multiple times is illegal - only one mapping at a time is allowed. This includes mapping disjoint regions. Mapping is not reference-counted internally by Vulkan. +It is also not thread-safe. Because of this, Vulkan Memory Allocator provides following facilities: \note If you want to be able to map an allocation, you need to specify one of the flags @@ -16609,11 +16748,44 @@ Because of this, Vulkan Memory Allocator provides following facilities: in VmaAllocationCreateInfo::flags. These flags are required for an allocation to be mappable when using #VMA_MEMORY_USAGE_AUTO or other `VMA_MEMORY_USAGE_AUTO*` enum values. For other usage values they are ignored and every such allocation made in `HOST_VISIBLE` memory type is mappable, -but they can still be used for consistency. +but these flags can still be used for consistency. + +\section memory_mapping_copy_functions Copy functions + +The easiest way to copy data from a host pointer to an allocation is to use convenience function vmaCopyMemoryToAllocation(). +It automatically maps the Vulkan memory temporarily (if not already mapped), performs `memcpy`, +and calls `vkFlushMappedMemoryRanges` (if required - if memory type is not `HOST_COHERENT`). + +It is also the safest one, because using `memcpy` avoids a risk of accidentally introducing memory reads +(e.g. by doing `pMappedVectors[i] += v`), which may be very slow on memory types that are not `HOST_CACHED`. + +\code +struct ConstantBuffer +{ + ... +}; +ConstantBuffer constantBufferData = ... + +VkBufferCreateInfo bufCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO }; +bufCreateInfo.size = sizeof(ConstantBuffer); +bufCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT; + +VmaAllocationCreateInfo allocCreateInfo = {}; +allocCreateInfo.usage = VMA_MEMORY_USAGE_AUTO; +allocCreateInfo.flags = VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT; + +VkBuffer buf; +VmaAllocation alloc; +vmaCreateBuffer(allocator, &bufCreateInfo, &allocCreateInfo, &buf, &alloc, nullptr); + +vmaCopyMemoryToAllocation(allocator, &constantBufferData, alloc, 0, sizeof(ConstantBuffer)); +\endcode + +Copy in the other direction - from an allocation to a host pointer can be performed the same way using function vmaCopyAllocationToMemory(). \section memory_mapping_mapping_functions Mapping functions -The library provides following functions for mapping of a specific #VmaAllocation: vmaMapMemory(), vmaUnmapMemory(). +The library provides following functions for mapping of a specific allocation: vmaMapMemory(), vmaUnmapMemory(). They are safer and more convenient to use than standard Vulkan functions. You can map an allocation multiple times simultaneously - mapping is reference-counted internally. You can also map different allocations simultaneously regardless of whether they use the same `VkDeviceMemory` block. diff --git a/src/Tests.cpp b/src/Tests.cpp index a07df51..061c85c 100644 --- a/src/Tests.cpp +++ b/src/Tests.cpp @@ -6583,6 +6583,100 @@ static void TestMapping() } } +static void TestAllocationMemoryCopy() +{ + wprintf(L"Testing allocation-memory copy...\n"); + + VkResult res; + + constexpr size_t bufSize = 128 * KILOBYTE; + constexpr size_t bufFragmentSize = 1792; + constexpr size_t bufFragmentOffset = 14080; + std::vector origBufVector = std::vector(bufSize); + std::vector newBufVector = std::vector(bufSize); + uint8_t* const origBufData = origBufVector.data(); + uint8_t* const newBufData = newBufVector.data(); + for(size_t i = 0; i < bufSize; ++i) + { + origBufData[i] = (uint8_t)(i * 13 + 7); + } + + VkBufferCreateInfo bufCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO }; + bufCreateInfo.size = bufSize; + bufCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT; + + VmaAllocationCreateInfo allocCreateInfo = {}; + allocCreateInfo.usage = VMA_MEMORY_USAGE_AUTO; + + enum TEST + { + TEST_HOST_ACCESS_SEQUENTIAL_WRITE, + TEST_HOST_ACCESS_SEQUENTIAL_WRITE_PERSISTENTLY_MAPPED, + TEST_HOST_ACCESS_RANDOM, + TEST_HOST_ACCESS_RANDOM_PERSISTENTLY_MAPPED, + TEST_COUNT + }; + for(size_t test = 0; test < TEST_COUNT; ++test) + { + VkBuffer buf = VK_NULL_HANDLE; + VmaAllocation alloc = VK_NULL_HANDLE; + + switch(test) + { + case TEST_HOST_ACCESS_SEQUENTIAL_WRITE: + allocCreateInfo.flags = VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT; + break; + case TEST_HOST_ACCESS_SEQUENTIAL_WRITE_PERSISTENTLY_MAPPED: + allocCreateInfo.flags = VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT | + VMA_ALLOCATION_CREATE_MAPPED_BIT; + break; + case TEST_HOST_ACCESS_RANDOM: + allocCreateInfo.flags = VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT; + break; + case TEST_HOST_ACCESS_RANDOM_PERSISTENTLY_MAPPED: + allocCreateInfo.flags = VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT | + VMA_ALLOCATION_CREATE_MAPPED_BIT; + break; + } + + res = vmaCreateBuffer(g_hAllocator, &bufCreateInfo, &allocCreateInfo, &buf, &alloc, nullptr); + TEST(res == VK_SUCCESS && buf && alloc); + + // Test entire allocation (allocationLocalOffset = 0). + // First, try to write. + res = vmaCopyMemoryToAllocation(g_hAllocator, origBufData, alloc, 0, bufSize); + TEST(res == VK_SUCCESS); + + // If HOST_ACCESS_RANDOM, read back and compare. + if(test == TEST_HOST_ACCESS_RANDOM || + test == TEST_HOST_ACCESS_RANDOM_PERSISTENTLY_MAPPED) + { + ZeroMemory(newBufData, bufSize); + res = vmaCopyAllocationToMemory(g_hAllocator, alloc, 0, newBufData, bufSize); + TEST(res == VK_SUCCESS); + TEST(memcmp(origBufData, newBufData, bufSize) == 0); + } + + // Test fragment (allocationLocalOffset > 0). + // Using host data from the beginning, but placing them in the allocation at bufFragmentOffset. + // First, try to write. + res = vmaCopyMemoryToAllocation(g_hAllocator, origBufData, alloc, bufFragmentOffset, bufFragmentSize); + TEST(res == VK_SUCCESS); + + // If HOST_ACCESS_RANDOM, read back and compare. + if(test == TEST_HOST_ACCESS_RANDOM || + test == TEST_HOST_ACCESS_RANDOM_PERSISTENTLY_MAPPED) + { + ZeroMemory(newBufData, bufFragmentSize); + res = vmaCopyAllocationToMemory(g_hAllocator, alloc, bufFragmentOffset, newBufData, bufFragmentSize); + TEST(res == VK_SUCCESS); + TEST(memcmp(origBufData, newBufData, bufFragmentSize) == 0); + } + + vmaDestroyBuffer(g_hAllocator, buf, alloc); + } +} + // Test CREATE_MAPPED with required DEVICE_LOCAL. There was a bug with it. static void TestDeviceLocalMapped() { @@ -8025,6 +8119,7 @@ void Test() TestAliasing(); TestAllocationAliasing(); TestMapping(); + TestAllocationMemoryCopy(); TestMappingHysteresis(); TestDeviceLocalMapped(); TestMappingMultithreaded();