More development of buffer suballocation

Introduced dedicated suballocations - always used for now.
Started writing documentation.
diff --git a/docs/html/allocation_annotation.html b/docs/html/allocation_annotation.html
index da3ebf5..a3d7f54 100644
--- a/docs/html/allocation_annotation.html
+++ b/docs/html/allocation_annotation.html
@@ -92,17 +92,17 @@
 <div class="line"><a class="code hl_function" href="group__group__alloc.html#gac72ee55598617e8eecca384e746bab51">vmaCreateBuffer</a>(allocator, &amp;bufCreateInfo, &amp;allocCreateInfo, &amp;buffer, &amp;allocation, <span class="keyword">nullptr</span>);</div>
 <div class="ttc" id="agroup__group__alloc_html_gac72ee55598617e8eecca384e746bab51"><div class="ttname"><a href="group__group__alloc.html#gac72ee55598617e8eecca384e746bab51">vmaCreateBuffer</a></div><div class="ttdeci">VkResult vmaCreateBuffer(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkBuffer *pBuffer, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)</div><div class="ttdoc">Creates a new VkBuffer, allocates and binds memory for it.</div></div>
 <div class="ttc" id="agroup__group__alloc_html_ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e"><div class="ttname"><a href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e">VMA_MEMORY_USAGE_AUTO</a></div><div class="ttdeci">@ VMA_MEMORY_USAGE_AUTO</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:495</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html"><div class="ttname"><a href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a></div><div class="ttdoc">Parameters of new VmaAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1305</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_a8259e85c272683434f4abb4ddddffe19"><div class="ttname"><a href="struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19">VmaAllocationCreateInfo::pUserData</a></div><div class="ttdeci">void * pUserData</div><div class="ttdoc">Custom general-purpose pointer that will be stored in VmaAllocation, can be read as VmaAllocationInfo...</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1344</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_accb8b06b1f677d858cb9af20705fa910"><div class="ttname"><a href="struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910">VmaAllocationCreateInfo::usage</a></div><div class="ttdeci">VmaMemoryUsage usage</div><div class="ttdoc">Intended usage of memory.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1313</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html"><div class="ttname"><a href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a></div><div class="ttdoc">Parameters of new VmaAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1326</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_a8259e85c272683434f4abb4ddddffe19"><div class="ttname"><a href="struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19">VmaAllocationCreateInfo::pUserData</a></div><div class="ttdeci">void * pUserData</div><div class="ttdoc">Custom general-purpose pointer that will be stored in VmaAllocation, can be read as VmaAllocationInfo...</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1365</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_accb8b06b1f677d858cb9af20705fa910"><div class="ttname"><a href="struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910">VmaAllocationCreateInfo::usage</a></div><div class="ttdeci">VmaMemoryUsage usage</div><div class="ttdoc">Intended usage of memory.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1334</div></div>
 <div class="ttc" id="astruct_vma_allocation_html"><div class="ttname"><a href="struct_vma_allocation.html">VmaAllocation</a></div><div class="ttdoc">Represents single memory allocation.</div></div>
 </div><!-- fragment --><p >The pointer may be later retrieved as <a class="el" href="struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13" title="Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vma...">VmaAllocationInfo::pUserData</a>:</p>
 <div class="fragment"><div class="line"><a class="code hl_struct" href="struct_vma_allocation_info.html">VmaAllocationInfo</a> allocInfo;</div>
 <div class="line"><a class="code hl_function" href="group__group__alloc.html#ga86dd08aba8633bfa4ad0df2e76481d8b">vmaGetAllocationInfo</a>(allocator, allocation, &amp;allocInfo);</div>
 <div class="line">MyBufferMetadata* pMetadata = (MyBufferMetadata*)allocInfo.<a class="code hl_variable" href="struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13">pUserData</a>;</div>
 <div class="ttc" id="agroup__group__alloc_html_ga86dd08aba8633bfa4ad0df2e76481d8b"><div class="ttname"><a href="group__group__alloc.html#ga86dd08aba8633bfa4ad0df2e76481d8b">vmaGetAllocationInfo</a></div><div class="ttdeci">void vmaGetAllocationInfo(VmaAllocator allocator, VmaAllocation allocation, VmaAllocationInfo *pAllocationInfo)</div><div class="ttdoc">Returns current information about specified allocation.</div></div>
-<div class="ttc" id="astruct_vma_allocation_info_html"><div class="ttname"><a href="struct_vma_allocation_info.html">VmaAllocationInfo</a></div><div class="ttdoc">Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo().</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1420</div></div>
-<div class="ttc" id="astruct_vma_allocation_info_html_adc507656149c04de7ed95d0042ba2a13"><div class="ttname"><a href="struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13">VmaAllocationInfo::pUserData</a></div><div class="ttdeci">void * pUserData</div><div class="ttdoc">Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vma...</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1467</div></div>
+<div class="ttc" id="astruct_vma_allocation_info_html"><div class="ttname"><a href="struct_vma_allocation_info.html">VmaAllocationInfo</a></div><div class="ttdoc">Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo().</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1441</div></div>
+<div class="ttc" id="astruct_vma_allocation_info_html_adc507656149c04de7ed95d0042ba2a13"><div class="ttname"><a href="struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13">VmaAllocationInfo::pUserData</a></div><div class="ttdeci">void * pUserData</div><div class="ttdoc">Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vma...</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1488</div></div>
 </div><!-- fragment --><p >It can also be changed using function <a class="el" href="group__group__alloc.html#gaf9147d31ffc11d62fc187bde283ed14f" title="Sets pUserData in given allocation to new value.">vmaSetAllocationUserData()</a>.</p>
 <p >Values of (non-zero) allocations' <code>pUserData</code> are printed in JSON report created by vmaBuildStatsString() in hexadecimal form.</p>
 <h1><a class="anchor" id="allocation_names"></a>
diff --git a/docs/html/annotated.html b/docs/html/annotated.html
index 4266301..b17c25c 100644
--- a/docs/html/annotated.html
+++ b/docs/html/annotated.html
@@ -81,11 +81,11 @@
 <tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_allocator_create_info.html" target="_self">VmaAllocatorCreateInfo</a></td><td class="desc">Description of a Allocator to be created </td></tr>
 <tr id="row_5_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_allocator_info.html" target="_self">VmaAllocatorInfo</a></td><td class="desc">Information about existing <a class="el" href="struct_vma_allocator.html" title="Represents main object of this library initialized.">VmaAllocator</a> object </td></tr>
 <tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_budget.html" target="_self">VmaBudget</a></td><td class="desc">Statistics of current memory usage and available budget for a specific memory heap </td></tr>
-<tr id="row_7_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_buffer_allocator.html" target="_self">VmaBufferAllocator</a></td><td class="desc">TODO document! </td></tr>
-<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_buffer_allocator_create_info.html" target="_self">VmaBufferAllocatorCreateInfo</a></td><td class="desc">Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="TODO document!">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a> </td></tr>
-<tr id="row_9_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_buffer_suballocation.html" target="_self">VmaBufferSuballocation</a></td><td class="desc">TODO document! </td></tr>
-<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_buffer_suballocation_create_info.html" target="_self">VmaBufferSuballocationCreateInfo</a></td><td class="desc">Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="TODO document!">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a> </td></tr>
-<tr id="row_11_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_buffer_suballocation_info.html" target="_self">VmaBufferSuballocationInfo</a></td><td class="desc">Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a> </td></tr>
+<tr id="row_7_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_buffer_allocator.html" target="_self">VmaBufferAllocator</a></td><td class="desc">Represent main object that can allocate parts of larger Vulkan buffers </td></tr>
+<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_buffer_allocator_create_info.html" target="_self">VmaBufferAllocatorCreateInfo</a></td><td class="desc">Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="Represent main object that can allocate parts of larger Vulkan buffers.">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a> </td></tr>
+<tr id="row_9_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_buffer_suballocation.html" target="_self">VmaBufferSuballocation</a></td><td class="desc">Represents a single sub-allocation - allocated part of a larger Vulkan buffer </td></tr>
+<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_buffer_suballocation_create_info.html" target="_self">VmaBufferSuballocationCreateInfo</a></td><td class="desc">Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="Represents a single sub-allocation - allocated part of a larger Vulkan buffer.">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a> </td></tr>
+<tr id="row_11_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_buffer_suballocation_info.html" target="_self">VmaBufferSuballocationInfo</a></td><td class="desc">Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a> or <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a> </td></tr>
 <tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_defragmentation_context.html" target="_self">VmaDefragmentationContext</a></td><td class="desc">An opaque object that represents started defragmentation process </td></tr>
 <tr id="row_13_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_defragmentation_info.html" target="_self">VmaDefragmentationInfo</a></td><td class="desc">Parameters for defragmentation </td></tr>
 <tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_defragmentation_move.html" target="_self">VmaDefragmentationMove</a></td><td class="desc">Single move of an allocation to be done for defragmentation </td></tr>
diff --git a/docs/html/choosing_memory_type.html b/docs/html/choosing_memory_type.html
index b44529e..f6c4256 100644
--- a/docs/html/choosing_memory_type.html
+++ b/docs/html/choosing_memory_type.html
@@ -102,8 +102,8 @@
 <div class="line"><a class="code hl_function" href="group__group__alloc.html#gac72ee55598617e8eecca384e746bab51">vmaCreateBuffer</a>(allocator, &amp;bufferInfo, &amp;allocInfo, &amp;buffer, &amp;allocation, <span class="keyword">nullptr</span>);</div>
 <div class="ttc" id="agroup__group__alloc_html_gac72ee55598617e8eecca384e746bab51"><div class="ttname"><a href="group__group__alloc.html#gac72ee55598617e8eecca384e746bab51">vmaCreateBuffer</a></div><div class="ttdeci">VkResult vmaCreateBuffer(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkBuffer *pBuffer, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)</div><div class="ttdoc">Creates a new VkBuffer, allocates and binds memory for it.</div></div>
 <div class="ttc" id="agroup__group__alloc_html_ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e"><div class="ttname"><a href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e">VMA_MEMORY_USAGE_AUTO</a></div><div class="ttdeci">@ VMA_MEMORY_USAGE_AUTO</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:495</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html"><div class="ttname"><a href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a></div><div class="ttdoc">Parameters of new VmaAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1305</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_accb8b06b1f677d858cb9af20705fa910"><div class="ttname"><a href="struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910">VmaAllocationCreateInfo::usage</a></div><div class="ttdeci">VmaMemoryUsage usage</div><div class="ttdoc">Intended usage of memory.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1313</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html"><div class="ttname"><a href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a></div><div class="ttdoc">Parameters of new VmaAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1326</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_accb8b06b1f677d858cb9af20705fa910"><div class="ttname"><a href="struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910">VmaAllocationCreateInfo::usage</a></div><div class="ttdeci">VmaMemoryUsage usage</div><div class="ttdoc">Intended usage of memory.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1334</div></div>
 <div class="ttc" id="astruct_vma_allocation_html"><div class="ttname"><a href="struct_vma_allocation.html">VmaAllocation</a></div><div class="ttdoc">Represents single memory allocation.</div></div>
 </div><!-- fragment --><p >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 <a class="el" href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccae2adb696d6a73c18bb20c23666661327">VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE</a> or <a class="el" href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9b422585242160b8ed3418310ee6664d">VMA_MEMORY_USAGE_AUTO_PREFER_HOST</a>.</p>
 <p >When using <code>VMA_MEMORY_USAGE_AUTO*</code> while you want to map the allocated memory, you also need to specify one of the host access flags: <a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a9be224df3bfc1cfa06203aed689a30c5">VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT</a> or <a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597add61238d98e20917b9a06c617763f492">VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT</a>. This will help the library decide about preferred memory type to ensure it has <code>VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT</code> so you can map it.</p>
@@ -120,7 +120,7 @@
 <div class="line"><a class="code hl_struct" href="struct_vma_allocation.html">VmaAllocation</a> stagingAllocation;</div>
 <div class="line"><a class="code hl_function" href="group__group__alloc.html#gac72ee55598617e8eecca384e746bab51">vmaCreateBuffer</a>(allocator, &amp;stagingBufferInfo, &amp;stagingAllocInfo, &amp;stagingBuffer, &amp;stagingAllocation, <span class="keyword">nullptr</span>);</div>
 <div class="ttc" id="agroup__group__alloc_html_ggad9889c10c798b040d59c92f257cae597a9be224df3bfc1cfa06203aed689a30c5"><div class="ttname"><a href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a9be224df3bfc1cfa06203aed689a30c5">VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT</a></div><div class="ttdeci">@ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:601</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_add09658ac14fe290ace25470ddd6d41b"><div class="ttname"><a href="struct_vma_allocation_create_info.html#add09658ac14fe290ace25470ddd6d41b">VmaAllocationCreateInfo::flags</a></div><div class="ttdeci">VmaAllocationCreateFlags flags</div><div class="ttdoc">Use VmaAllocationCreateFlagBits enum.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1307</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_add09658ac14fe290ace25470ddd6d41b"><div class="ttname"><a href="struct_vma_allocation_create_info.html#add09658ac14fe290ace25470ddd6d41b">VmaAllocationCreateInfo::flags</a></div><div class="ttdeci">VmaAllocationCreateFlags flags</div><div class="ttdoc">Use VmaAllocationCreateFlagBits enum.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1328</div></div>
 </div><!-- fragment --><p >For more examples of creating different kinds of resources, see chapter <a class="el" href="usage_patterns.html">Recommended usage patterns</a>.</p>
 <p >Usage values <code>VMA_MEMORY_USAGE_AUTO*</code> are legal to use only when the library knows about the resource being created by having <code>VkBufferCreateInfo</code> / <code>VkImageCreateInfo</code> passed, so they work with functions like: <a class="el" href="group__group__alloc.html#gac72ee55598617e8eecca384e746bab51" title="Creates a new VkBuffer, allocates and binds memory for it.">vmaCreateBuffer()</a>, <a class="el" href="group__group__alloc.html#ga02a94f25679275851a53e82eacbcfc73" title="Function similar to vmaCreateBuffer().">vmaCreateImage()</a>, <a class="el" href="group__group__alloc.html#gae790ab9ffaf7667fb8f62523e6897888" title="Helps to find memoryTypeIndex, given VkBufferCreateInfo and VmaAllocationCreateInfo.">vmaFindMemoryTypeIndexForBufferInfo()</a> etc. If you allocate raw memory using function <a class="el" href="group__group__alloc.html#gabf28077dbf82d0908b8acbe8ee8dd9b8" title="General purpose memory allocation.">vmaAllocateMemory()</a>, you have to use other means of selecting memory type, as described below.</p>
 <dl class="section note"><dt>Note</dt><dd>Old usage values (<code>VMA_MEMORY_USAGE_GPU_ONLY</code>, <code>VMA_MEMORY_USAGE_CPU_ONLY</code>, <code>VMA_MEMORY_USAGE_CPU_TO_GPU</code>, <code>VMA_MEMORY_USAGE_GPU_TO_CPU</code>, <code>VMA_MEMORY_USAGE_CPU_COPY</code>) are still available and work same way as in previous versions of the library for backward compatibility, but they are not recommended.</dd></dl>
@@ -137,8 +137,8 @@
 <div class="line"><a class="code hl_function" href="group__group__alloc.html#gac72ee55598617e8eecca384e746bab51">vmaCreateBuffer</a>(allocator, &amp;bufferInfo, &amp;allocInfo, &amp;buffer, &amp;allocation, <span class="keyword">nullptr</span>);</div>
 <div class="ttc" id="agroup__group__alloc_html_ggad9889c10c798b040d59c92f257cae597a11da372cc3a82931c5e5d6146cd9dd1f"><div class="ttname"><a href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a11da372cc3a82931c5e5d6146cd9dd1f">VMA_ALLOCATION_CREATE_MAPPED_BIT</a></div><div class="ttdeci">@ VMA_ALLOCATION_CREATE_MAPPED_BIT</div><div class="ttdoc">Set this flag to use a memory that will be persistently mapped and retrieve pointer to it.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:552</div></div>
 <div class="ttc" id="agroup__group__alloc_html_ggad9889c10c798b040d59c92f257cae597add61238d98e20917b9a06c617763f492"><div class="ttname"><a href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597add61238d98e20917b9a06c617763f492">VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT</a></div><div class="ttdeci">@ VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:613</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_a7fe8d81a1ad10b2a2faacacee5b15d6d"><div class="ttname"><a href="struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d">VmaAllocationCreateInfo::preferredFlags</a></div><div class="ttdeci">VkMemoryPropertyFlags preferredFlags</div><div class="ttdoc">Flags that preferably should be set in a memory type chosen for an allocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1323</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_a9166390303ff42d783305bc31c2b6b90"><div class="ttname"><a href="struct_vma_allocation_create_info.html#a9166390303ff42d783305bc31c2b6b90">VmaAllocationCreateInfo::requiredFlags</a></div><div class="ttdeci">VkMemoryPropertyFlags requiredFlags</div><div class="ttdoc">Flags that must be set in a Memory Type chosen for an allocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1318</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_a7fe8d81a1ad10b2a2faacacee5b15d6d"><div class="ttname"><a href="struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d">VmaAllocationCreateInfo::preferredFlags</a></div><div class="ttdeci">VkMemoryPropertyFlags preferredFlags</div><div class="ttdoc">Flags that preferably should be set in a memory type chosen for an allocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1344</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_a9166390303ff42d783305bc31c2b6b90"><div class="ttname"><a href="struct_vma_allocation_create_info.html#a9166390303ff42d783305bc31c2b6b90">VmaAllocationCreateInfo::requiredFlags</a></div><div class="ttdeci">VkMemoryPropertyFlags requiredFlags</div><div class="ttdoc">Flags that must be set in a Memory Type chosen for an allocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1339</div></div>
 </div><!-- fragment --><p >A memory type is chosen that has all the required flags and as many preferred flags set as possible.</p>
 <p >Value passed in <a class="el" href="struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910" title="Intended usage of memory.">VmaAllocationCreateInfo::usage</a> is internally converted to a set of required and preferred flags, plus some extra "magic" (heuristics).</p>
 <h1><a class="anchor" id="choosing_memory_type_explicit_memory_types"></a>
@@ -153,7 +153,7 @@
 <div class="line">VkBuffer buffer;</div>
 <div class="line"><a class="code hl_struct" href="struct_vma_allocation.html">VmaAllocation</a> allocation;</div>
 <div class="line"><a class="code hl_function" href="group__group__alloc.html#gac72ee55598617e8eecca384e746bab51">vmaCreateBuffer</a>(allocator, &amp;bufferInfo, &amp;allocInfo, &amp;buffer, &amp;allocation, <span class="keyword">nullptr</span>);</div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_a3bf940c0271d85d6ba32a4d820075055"><div class="ttname"><a href="struct_vma_allocation_create_info.html#a3bf940c0271d85d6ba32a4d820075055">VmaAllocationCreateInfo::memoryTypeBits</a></div><div class="ttdeci">uint32_t memoryTypeBits</div><div class="ttdoc">Bitmask containing one bit set for every memory type acceptable for this allocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1331</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_a3bf940c0271d85d6ba32a4d820075055"><div class="ttname"><a href="struct_vma_allocation_create_info.html#a3bf940c0271d85d6ba32a4d820075055">VmaAllocationCreateInfo::memoryTypeBits</a></div><div class="ttdeci">uint32_t memoryTypeBits</div><div class="ttdoc">Bitmask containing one bit set for every memory type acceptable for this allocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1352</div></div>
 </div><!-- fragment --><h1><a class="anchor" id="choosing_memory_type_custom_memory_pools"></a>
 Custom memory pools</h1>
 <p >If you allocate from custom memory pool, all the ways of specifying memory requirements described above are not applicable and the aforementioned members of <a class="el" href="struct_vma_allocation_create_info.html" title="Parameters of new VmaAllocation.">VmaAllocationCreateInfo</a> 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 <a class="el" href="custom_memory_pools.html">Custom memory pools</a>.</p>
diff --git a/docs/html/custom_memory_pools.html b/docs/html/custom_memory_pools.html
index 98b8fee..dbbbdcb 100644
--- a/docs/html/custom_memory_pools.html
+++ b/docs/html/custom_memory_pools.html
@@ -132,14 +132,14 @@
 <div class="ttc" id="agroup__group__alloc_html_gac72ee55598617e8eecca384e746bab51"><div class="ttname"><a href="group__group__alloc.html#gac72ee55598617e8eecca384e746bab51">vmaCreateBuffer</a></div><div class="ttdeci">VkResult vmaCreateBuffer(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkBuffer *pBuffer, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)</div><div class="ttdoc">Creates a new VkBuffer, allocates and binds memory for it.</div></div>
 <div class="ttc" id="agroup__group__alloc_html_gae790ab9ffaf7667fb8f62523e6897888"><div class="ttname"><a href="group__group__alloc.html#gae790ab9ffaf7667fb8f62523e6897888">vmaFindMemoryTypeIndexForBufferInfo</a></div><div class="ttdeci">VkResult vmaFindMemoryTypeIndexForBufferInfo(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, uint32_t *pMemoryTypeIndex)</div><div class="ttdoc">Helps to find memoryTypeIndex, given VkBufferCreateInfo and VmaAllocationCreateInfo.</div></div>
 <div class="ttc" id="agroup__group__alloc_html_ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e"><div class="ttname"><a href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e">VMA_MEMORY_USAGE_AUTO</a></div><div class="ttdeci">@ VMA_MEMORY_USAGE_AUTO</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:495</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html"><div class="ttname"><a href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a></div><div class="ttdoc">Parameters of new VmaAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1305</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_a6272c0555cfd1fe28bff1afeb6190150"><div class="ttname"><a href="struct_vma_allocation_create_info.html#a6272c0555cfd1fe28bff1afeb6190150">VmaAllocationCreateInfo::pool</a></div><div class="ttdeci">VmaPool pool</div><div class="ttdoc">Pool that this allocation should be created in.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1337</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_accb8b06b1f677d858cb9af20705fa910"><div class="ttname"><a href="struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910">VmaAllocationCreateInfo::usage</a></div><div class="ttdeci">VmaMemoryUsage usage</div><div class="ttdoc">Intended usage of memory.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1313</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html"><div class="ttname"><a href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a></div><div class="ttdoc">Parameters of new VmaAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1326</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_a6272c0555cfd1fe28bff1afeb6190150"><div class="ttname"><a href="struct_vma_allocation_create_info.html#a6272c0555cfd1fe28bff1afeb6190150">VmaAllocationCreateInfo::pool</a></div><div class="ttdeci">VmaPool pool</div><div class="ttdoc">Pool that this allocation should be created in.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1358</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_accb8b06b1f677d858cb9af20705fa910"><div class="ttname"><a href="struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910">VmaAllocationCreateInfo::usage</a></div><div class="ttdeci">VmaMemoryUsage usage</div><div class="ttdoc">Intended usage of memory.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1334</div></div>
 <div class="ttc" id="astruct_vma_allocation_html"><div class="ttname"><a href="struct_vma_allocation.html">VmaAllocation</a></div><div class="ttdoc">Represents single memory allocation.</div></div>
-<div class="ttc" id="astruct_vma_pool_create_info_html"><div class="ttname"><a href="struct_vma_pool_create_info.html">VmaPoolCreateInfo</a></div><div class="ttdoc">Describes parameter of created VmaPool.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1356</div></div>
-<div class="ttc" id="astruct_vma_pool_create_info_html_a596fa76b685d3f1f688f84a709a5b319"><div class="ttname"><a href="struct_vma_pool_create_info.html#a596fa76b685d3f1f688f84a709a5b319">VmaPoolCreateInfo::memoryTypeIndex</a></div><div class="ttdeci">uint32_t memoryTypeIndex</div><div class="ttdoc">Vulkan memory type index to allocate this pool from.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1359</div></div>
-<div class="ttc" id="astruct_vma_pool_create_info_html_aa4265160536cdb9be821b7686c16c676"><div class="ttname"><a href="struct_vma_pool_create_info.html#aa4265160536cdb9be821b7686c16c676">VmaPoolCreateInfo::blockSize</a></div><div class="ttdeci">VkDeviceSize blockSize</div><div class="ttdoc">Size of a single VkDeviceMemory block to be allocated as part of this pool, in bytes....</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1372</div></div>
-<div class="ttc" id="astruct_vma_pool_create_info_html_ae41142f2834fcdc82baa4883c187b75c"><div class="ttname"><a href="struct_vma_pool_create_info.html#ae41142f2834fcdc82baa4883c187b75c">VmaPoolCreateInfo::maxBlockCount</a></div><div class="ttdeci">size_t maxBlockCount</div><div class="ttdoc">Maximum number of blocks that can be allocated in this pool. Optional.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1385</div></div>
+<div class="ttc" id="astruct_vma_pool_create_info_html"><div class="ttname"><a href="struct_vma_pool_create_info.html">VmaPoolCreateInfo</a></div><div class="ttdoc">Describes parameter of created VmaPool.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1377</div></div>
+<div class="ttc" id="astruct_vma_pool_create_info_html_a596fa76b685d3f1f688f84a709a5b319"><div class="ttname"><a href="struct_vma_pool_create_info.html#a596fa76b685d3f1f688f84a709a5b319">VmaPoolCreateInfo::memoryTypeIndex</a></div><div class="ttdeci">uint32_t memoryTypeIndex</div><div class="ttdoc">Vulkan memory type index to allocate this pool from.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1380</div></div>
+<div class="ttc" id="astruct_vma_pool_create_info_html_aa4265160536cdb9be821b7686c16c676"><div class="ttname"><a href="struct_vma_pool_create_info.html#aa4265160536cdb9be821b7686c16c676">VmaPoolCreateInfo::blockSize</a></div><div class="ttdeci">VkDeviceSize blockSize</div><div class="ttdoc">Size of a single VkDeviceMemory block to be allocated as part of this pool, in bytes....</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1393</div></div>
+<div class="ttc" id="astruct_vma_pool_create_info_html_ae41142f2834fcdc82baa4883c187b75c"><div class="ttname"><a href="struct_vma_pool_create_info.html#ae41142f2834fcdc82baa4883c187b75c">VmaPoolCreateInfo::maxBlockCount</a></div><div class="ttdeci">size_t maxBlockCount</div><div class="ttdoc">Maximum number of blocks that can be allocated in this pool. Optional.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1406</div></div>
 <div class="ttc" id="astruct_vma_pool_html"><div class="ttname"><a href="struct_vma_pool.html">VmaPool</a></div><div class="ttdoc">Represents custom memory pool.</div></div>
 </div><!-- fragment --><p >You have to free all allocations made from this pool before destroying it.</p>
 <div class="fragment"><div class="line"><a class="code hl_function" href="group__group__alloc.html#ga0d9f4e4ba5bf9aab1f1c746387753d77">vmaDestroyBuffer</a>(allocator, buf, alloc);</div>
diff --git a/docs/html/defragmentation.html b/docs/html/defragmentation.html
index 5d007c8..17c4394 100644
--- a/docs/html/defragmentation.html
+++ b/docs/html/defragmentation.html
@@ -142,17 +142,17 @@
 <div class="ttc" id="agroup__group__alloc_html_gac3335566858b45541fa9c0d7a6bbb57e"><div class="ttname"><a href="group__group__alloc.html#gac3335566858b45541fa9c0d7a6bbb57e">vmaBeginDefragmentation</a></div><div class="ttdeci">VkResult vmaBeginDefragmentation(VmaAllocator allocator, const VmaDefragmentationInfo *pInfo, VmaDefragmentationContext *pContext)</div><div class="ttdoc">Begins defragmentation process.</div></div>
 <div class="ttc" id="agroup__group__alloc_html_gaded05a445742a00718ee766144c5c226"><div class="ttname"><a href="group__group__alloc.html#gaded05a445742a00718ee766144c5c226">vmaEndDefragmentationPass</a></div><div class="ttdeci">VkResult vmaEndDefragmentationPass(VmaAllocator allocator, VmaDefragmentationContext context, VmaDefragmentationPassMoveInfo *pPassInfo)</div><div class="ttdoc">Ends single defragmentation pass.</div></div>
 <div class="ttc" id="agroup__group__alloc_html_gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b"><div class="ttname"><a href="group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b">VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT</a></div><div class="ttdeci">@ VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:709</div></div>
-<div class="ttc" id="astruct_vma_allocation_info_html"><div class="ttname"><a href="struct_vma_allocation_info.html">VmaAllocationInfo</a></div><div class="ttdoc">Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo().</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1420</div></div>
-<div class="ttc" id="astruct_vma_allocation_info_html_adc507656149c04de7ed95d0042ba2a13"><div class="ttname"><a href="struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13">VmaAllocationInfo::pUserData</a></div><div class="ttdeci">void * pUserData</div><div class="ttdoc">Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vma...</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1467</div></div>
+<div class="ttc" id="astruct_vma_allocation_info_html"><div class="ttname"><a href="struct_vma_allocation_info.html">VmaAllocationInfo</a></div><div class="ttdoc">Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo().</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1441</div></div>
+<div class="ttc" id="astruct_vma_allocation_info_html_adc507656149c04de7ed95d0042ba2a13"><div class="ttname"><a href="struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13">VmaAllocationInfo::pUserData</a></div><div class="ttdeci">void * pUserData</div><div class="ttdoc">Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vma...</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1488</div></div>
 <div class="ttc" id="astruct_vma_defragmentation_context_html"><div class="ttname"><a href="struct_vma_defragmentation_context.html">VmaDefragmentationContext</a></div><div class="ttdoc">An opaque object that represents started defragmentation process.</div></div>
-<div class="ttc" id="astruct_vma_defragmentation_info_html"><div class="ttname"><a href="struct_vma_defragmentation_info.html">VmaDefragmentationInfo</a></div><div class="ttdoc">Parameters for defragmentation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1483</div></div>
-<div class="ttc" id="astruct_vma_defragmentation_info_html_a18dd2097d8ab2976cdc7dd3e7b978bd4"><div class="ttname"><a href="struct_vma_defragmentation_info.html#a18dd2097d8ab2976cdc7dd3e7b978bd4">VmaDefragmentationInfo::pool</a></div><div class="ttdeci">VmaPool pool</div><div class="ttdoc">Custom pool to be defragmented.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1490</div></div>
-<div class="ttc" id="astruct_vma_defragmentation_info_html_a3e23080c978ecf3abb3180f5b2069da7"><div class="ttname"><a href="struct_vma_defragmentation_info.html#a3e23080c978ecf3abb3180f5b2069da7">VmaDefragmentationInfo::flags</a></div><div class="ttdeci">VmaDefragmentationFlags flags</div><div class="ttdoc">Use combination of VmaDefragmentationFlagBits.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1485</div></div>
-<div class="ttc" id="astruct_vma_defragmentation_move_html_a25aa1bb64efc507a49c6cbc50689f862"><div class="ttname"><a href="struct_vma_defragmentation_move.html#a25aa1bb64efc507a49c6cbc50689f862">VmaDefragmentationMove::srcAllocation</a></div><div class="ttdeci">VmaAllocation srcAllocation</div><div class="ttdoc">Allocation that should be moved.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1509</div></div>
-<div class="ttc" id="astruct_vma_defragmentation_move_html_ab65b106adf209acd7313296d1075300e"><div class="ttname"><a href="struct_vma_defragmentation_move.html#ab65b106adf209acd7313296d1075300e">VmaDefragmentationMove::dstTmpAllocation</a></div><div class="ttdeci">VmaAllocation dstTmpAllocation</div><div class="ttdoc">Temporary allocation pointing to destination memory that will replace srcAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1516</div></div>
-<div class="ttc" id="astruct_vma_defragmentation_pass_move_info_html"><div class="ttname"><a href="struct_vma_defragmentation_pass_move_info.html">VmaDefragmentationPassMoveInfo</a></div><div class="ttdoc">Parameters for incremental defragmentation steps.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1524</div></div>
-<div class="ttc" id="astruct_vma_defragmentation_pass_move_info_html_a1b3e18c23f9691f35baf183e615c4408"><div class="ttname"><a href="struct_vma_defragmentation_pass_move_info.html#a1b3e18c23f9691f35baf183e615c4408">VmaDefragmentationPassMoveInfo::moveCount</a></div><div class="ttdeci">uint32_t moveCount</div><div class="ttdoc">Number of elements in the pMoves array.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1526</div></div>
-<div class="ttc" id="astruct_vma_defragmentation_pass_move_info_html_adfa7a4994afd9b940e7f1dfaf436a725"><div class="ttname"><a href="struct_vma_defragmentation_pass_move_info.html#adfa7a4994afd9b940e7f1dfaf436a725">VmaDefragmentationPassMoveInfo::pMoves</a></div><div class="ttdeci">VmaDefragmentationMove * pMoves</div><div class="ttdoc">Array of moves to be performed by the user in the current defragmentation pass.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1550</div></div>
+<div class="ttc" id="astruct_vma_defragmentation_info_html"><div class="ttname"><a href="struct_vma_defragmentation_info.html">VmaDefragmentationInfo</a></div><div class="ttdoc">Parameters for defragmentation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1504</div></div>
+<div class="ttc" id="astruct_vma_defragmentation_info_html_a18dd2097d8ab2976cdc7dd3e7b978bd4"><div class="ttname"><a href="struct_vma_defragmentation_info.html#a18dd2097d8ab2976cdc7dd3e7b978bd4">VmaDefragmentationInfo::pool</a></div><div class="ttdeci">VmaPool pool</div><div class="ttdoc">Custom pool to be defragmented.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1511</div></div>
+<div class="ttc" id="astruct_vma_defragmentation_info_html_a3e23080c978ecf3abb3180f5b2069da7"><div class="ttname"><a href="struct_vma_defragmentation_info.html#a3e23080c978ecf3abb3180f5b2069da7">VmaDefragmentationInfo::flags</a></div><div class="ttdeci">VmaDefragmentationFlags flags</div><div class="ttdoc">Use combination of VmaDefragmentationFlagBits.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1506</div></div>
+<div class="ttc" id="astruct_vma_defragmentation_move_html_a25aa1bb64efc507a49c6cbc50689f862"><div class="ttname"><a href="struct_vma_defragmentation_move.html#a25aa1bb64efc507a49c6cbc50689f862">VmaDefragmentationMove::srcAllocation</a></div><div class="ttdeci">VmaAllocation srcAllocation</div><div class="ttdoc">Allocation that should be moved.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1530</div></div>
+<div class="ttc" id="astruct_vma_defragmentation_move_html_ab65b106adf209acd7313296d1075300e"><div class="ttname"><a href="struct_vma_defragmentation_move.html#ab65b106adf209acd7313296d1075300e">VmaDefragmentationMove::dstTmpAllocation</a></div><div class="ttdeci">VmaAllocation dstTmpAllocation</div><div class="ttdoc">Temporary allocation pointing to destination memory that will replace srcAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1537</div></div>
+<div class="ttc" id="astruct_vma_defragmentation_pass_move_info_html"><div class="ttname"><a href="struct_vma_defragmentation_pass_move_info.html">VmaDefragmentationPassMoveInfo</a></div><div class="ttdoc">Parameters for incremental defragmentation steps.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1545</div></div>
+<div class="ttc" id="astruct_vma_defragmentation_pass_move_info_html_a1b3e18c23f9691f35baf183e615c4408"><div class="ttname"><a href="struct_vma_defragmentation_pass_move_info.html#a1b3e18c23f9691f35baf183e615c4408">VmaDefragmentationPassMoveInfo::moveCount</a></div><div class="ttdeci">uint32_t moveCount</div><div class="ttdoc">Number of elements in the pMoves array.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1547</div></div>
+<div class="ttc" id="astruct_vma_defragmentation_pass_move_info_html_adfa7a4994afd9b940e7f1dfaf436a725"><div class="ttname"><a href="struct_vma_defragmentation_pass_move_info.html#adfa7a4994afd9b940e7f1dfaf436a725">VmaDefragmentationPassMoveInfo::pMoves</a></div><div class="ttdeci">VmaDefragmentationMove * pMoves</div><div class="ttdoc">Array of moves to be performed by the user in the current defragmentation pass.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1571</div></div>
 </div><!-- fragment --><p >Although functions like <a class="el" href="group__group__alloc.html#gac72ee55598617e8eecca384e746bab51" title="Creates a new VkBuffer, allocates and binds memory for it.">vmaCreateBuffer()</a>, <a class="el" href="group__group__alloc.html#ga02a94f25679275851a53e82eacbcfc73" title="Function similar to vmaCreateBuffer().">vmaCreateImage()</a>, <a class="el" href="group__group__alloc.html#ga0d9f4e4ba5bf9aab1f1c746387753d77" title="Destroys Vulkan buffer and frees allocated memory.">vmaDestroyBuffer()</a>, <a class="el" href="group__group__alloc.html#gae50d2cb3b4a3bfd4dd40987234e50e7e" title="Destroys Vulkan image and frees allocated memory.">vmaDestroyImage()</a> 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 <code>VK_INCOMPLETE</code> not <code>VK_SUCCESS</code>. In each pass:</p>
 <ol type="1">
 <li><a class="el" href="group__group__alloc.html#ga980d7da2ce3b1fd5c8b8476bc362cc00" title="Starts single defragmentation pass.">vmaBeginDefragmentationPass()</a> function call:<ul>
diff --git a/docs/html/functions.html b/docs/html/functions.html
index 09289bc..28721c1 100644
--- a/docs/html/functions.html
+++ b/docs/html/functions.html
@@ -149,6 +149,7 @@
 <li>pMoves&#160;:&#160;<a class="el" href="struct_vma_defragmentation_pass_move_info.html#adfa7a4994afd9b940e7f1dfaf436a725">VmaDefragmentationPassMoveInfo</a></li>
 <li>pName&#160;:&#160;<a class="el" href="struct_vma_allocation_info.html#a28612f3e897e5b268254a3c63413d759">VmaAllocationInfo</a></li>
 <li>pool&#160;:&#160;<a class="el" href="struct_vma_allocation_create_info.html#a6272c0555cfd1fe28bff1afeb6190150">VmaAllocationCreateInfo</a>, <a class="el" href="struct_vma_defragmentation_info.html#a18dd2097d8ab2976cdc7dd3e7b978bd4">VmaDefragmentationInfo</a></li>
+<li>preferredBufferSize&#160;:&#160;<a class="el" href="struct_vma_buffer_allocator_create_info.html#a7abb079b970fd8e777a7f6961e4ce7c9">VmaBufferAllocatorCreateInfo</a></li>
 <li>preferredFlags&#160;:&#160;<a class="el" href="struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d">VmaAllocationCreateInfo</a></li>
 <li>preferredLargeHeapBlockSize&#160;:&#160;<a class="el" href="struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a">VmaAllocatorCreateInfo</a></li>
 <li>priority&#160;:&#160;<a class="el" href="struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7">VmaAllocationCreateInfo</a>, <a class="el" href="struct_vma_pool_create_info.html#a16e686c688f6725f119ebf6e24ab5274">VmaPoolCreateInfo</a></li>
diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html
index 396cae3..e070f79 100644
--- a/docs/html/functions_vars.html
+++ b/docs/html/functions_vars.html
@@ -149,6 +149,7 @@
 <li>pMoves&#160;:&#160;<a class="el" href="struct_vma_defragmentation_pass_move_info.html#adfa7a4994afd9b940e7f1dfaf436a725">VmaDefragmentationPassMoveInfo</a></li>
 <li>pName&#160;:&#160;<a class="el" href="struct_vma_allocation_info.html#a28612f3e897e5b268254a3c63413d759">VmaAllocationInfo</a></li>
 <li>pool&#160;:&#160;<a class="el" href="struct_vma_allocation_create_info.html#a6272c0555cfd1fe28bff1afeb6190150">VmaAllocationCreateInfo</a>, <a class="el" href="struct_vma_defragmentation_info.html#a18dd2097d8ab2976cdc7dd3e7b978bd4">VmaDefragmentationInfo</a></li>
+<li>preferredBufferSize&#160;:&#160;<a class="el" href="struct_vma_buffer_allocator_create_info.html#a7abb079b970fd8e777a7f6961e4ce7c9">VmaBufferAllocatorCreateInfo</a></li>
 <li>preferredFlags&#160;:&#160;<a class="el" href="struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d">VmaAllocationCreateInfo</a></li>
 <li>preferredLargeHeapBlockSize&#160;:&#160;<a class="el" href="struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a">VmaAllocatorCreateInfo</a></li>
 <li>priority&#160;:&#160;<a class="el" href="struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7">VmaAllocationCreateInfo</a>, <a class="el" href="struct_vma_pool_create_info.html#a16e686c688f6725f119ebf6e24ab5274">VmaPoolCreateInfo</a></li>
diff --git a/docs/html/globals.html b/docs/html/globals.html
index 2f290e5..ec83611 100644
--- a/docs/html/globals.html
+++ b/docs/html/globals.html
@@ -75,6 +75,198 @@
 <li>PFN_vmaAllocateDeviceMemoryFunction&#160;:&#160;<a class="el" href="group__group__init.html#ga7e1ed85f7799600b03ad51a77acc21f3">vk_mem_alloc.h</a></li>
 <li>PFN_vmaFreeDeviceMemoryFunction&#160;:&#160;<a class="el" href="group__group__init.html#ga154ccaaf53dc2c36378f80f0c4f3679b">vk_mem_alloc.h</a></li>
 </ul>
+
+
+<h3><a id="index_v" name="index_v"></a>- v -</h3><ul>
+<li>VMA_ALLOCATION_CREATE_CAN_ALIAS_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597afb0ee060cd733aaa5e249704ff589ad6">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a3fc311d855c2ff53f1090ef5c722b38f">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_DONT_BIND_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a2310568c62208af432724305fe29ccea">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597ae5633ec569f4899cf8f29e7385b2f882">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_HOST_ACCESS_ALLOW_TRANSFER_INSTEAD_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a11337f96eacf34c1016c339eac165cad">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597add61238d98e20917b9a06c617763f492">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a9be224df3bfc1cfa06203aed689a30c5">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_MAPPED_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a11da372cc3a82931c5e5d6146cd9dd1f">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_NEVER_ALLOCATE_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a89759603401014eb325eb22a3839f2ff">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_STRATEGY_BEST_FIT_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a839826775c62319466441f86496f036d">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_STRATEGY_FIRST_FIT_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a33eb2052674f3ad92386c714a65fb777">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_STRATEGY_MASK&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a8e16845d81ae3d27c47106d4770d5c7e">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a8af1210cf591784afa026d94998f735d">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a8099acedc0d04cdccaaddcfe37fd227d">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a0729e932b7ea170e3a128cad96c5cf6d">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_UPPER_ADDRESS_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a42ba3a2d2c7117953210b7c3ef8da0df">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_USER_DATA_COPY_STRING_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597aa6f24f821cd6a7c5e4a443f7bf59c520">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597ab8b1764f3e9022368e440c057783b92d">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATOR_CREATE_AMD_DEVICE_COHERENT_MEMORY_BIT&#160;:&#160;<a class="el" href="group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca2acce4886d8078552efa38878413970f">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT&#160;:&#160;<a class="el" href="group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca5f1b28b0414319d1687e1f2b30ab0089">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT&#160;:&#160;<a class="el" href="group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca4d4687863f7bd4b418c6006dc04400b0">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT&#160;:&#160;<a class="el" href="group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7caffdd7a5169be3dbd7cbf6b3619e4f78a">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATOR_CREATE_EXTERNALLY_SYNCHRONIZED_BIT&#160;:&#160;<a class="el" href="group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca4816ddaed324ba110172ca608a20f29d">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM&#160;:&#160;<a class="el" href="group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7cae4d5ad929caba5f23eb502b13bd5286c">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATOR_CREATE_KHR_BIND_MEMORY2_BIT&#160;:&#160;<a class="el" href="group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca8fb75bf07cd184ab903596295e863dee">vk_mem_alloc.h</a></li>
+<li>VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT&#160;:&#160;<a class="el" href="group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7cace7da7cc6e71a625dfa763c55a597878">vk_mem_alloc.h</a></li>
+<li>VMA_BIND_MEMORY2&#160;:&#160;<a class="el" href="vk__mem__alloc_8h.html#a88bef97f86d70a34a4c0746e09a2680d">vk_mem_alloc.h</a></li>
+<li>VMA_BUFFER_ALLOCATOR_CREATE_ALGORITHM_MASK&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga57862e1ba87f2baa7e4b9d2af2cc1c08ae474b5be5f4211f75e953b620f2c493e">vk_mem_alloc.h</a></li>
+<li>VMA_BUFFER_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga57862e1ba87f2baa7e4b9d2af2cc1c08a386b94573003558b4103d9bbb430d49a">vk_mem_alloc.h</a></li>
+<li>VMA_BUFFER_ALLOCATOR_CREATE_LINEAR_ALGORITHM_BIT&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga57862e1ba87f2baa7e4b9d2af2cc1c08a7e65ee5a47b8f6073dcc7d22020327c1">vk_mem_alloc.h</a></li>
+<li>VMA_BUFFER_DEVICE_ADDRESS&#160;:&#160;<a class="el" href="vk__mem__alloc_8h.html#a7f9d5e71b70dd1a137c303a8a8262c10">vk_mem_alloc.h</a></li>
+<li>VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a">vk_mem_alloc.h</a></li>
+<li>VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaec0e2b1cec0f2337ad134cec5aead0df">vk_mem_alloc.h</a></li>
+<li>VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012">vk_mem_alloc.h</a></li>
+<li>VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaa891857e2a3c8307408b4e0763c158f2">vk_mem_alloc.h</a></li>
+<li>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388">vk_mem_alloc.h</a></li>
+<li>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb">vk_mem_alloc.h</a></li>
+<li>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099">vk_mem_alloc.h</a></li>
+<li>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30">vk_mem_alloc.h</a></li>
+<li>VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd">vk_mem_alloc.h</a></li>
+<li>VMA_DEDICATED_ALLOCATION&#160;:&#160;<a class="el" href="vk__mem__alloc_8h.html#af7b860e63b96d11e44ae8587ba06bbf4">vk_mem_alloc.h</a></li>
+<li>VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50caec35a4138111605a6ff32ca61aa871b6">vk_mem_alloc.h</a></li>
+<li>VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cae45a9469e5337731627758671741e412">vk_mem_alloc.h</a></li>
+<li>VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b">vk_mem_alloc.h</a></li>
+<li>VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cafa162eac5be800bcdd4011427a71156d">vk_mem_alloc.h</a></li>
+<li>VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK&#160;:&#160;<a class="el" href="group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cabcbbdb3bfd53c4c3ab4eaeb5fd4894e9">vk_mem_alloc.h</a></li>
+<li>VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM&#160;:&#160;<a class="el" href="group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cab87ec33154803bfeb5ac2b379f1d6a97">vk_mem_alloc.h</a></li>
+<li>VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY&#160;:&#160;<a class="el" href="group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad4a06ac46c4cb1c67b0ebc1edfab9f18">vk_mem_alloc.h</a></li>
+<li>VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY&#160;:&#160;<a class="el" href="group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257a9786f8492a9be2c03bd26395e352ab85">vk_mem_alloc.h</a></li>
+<li>VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE&#160;:&#160;<a class="el" href="group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad25bc6f816b226b4fd5170e845f218d2">vk_mem_alloc.h</a></li>
+<li>VMA_MEMORY_BUDGET&#160;:&#160;<a class="el" href="vk__mem__alloc_8h.html#a05decf1cf4ebf767beba7acca6c1ec3a">vk_mem_alloc.h</a></li>
+<li>VMA_MEMORY_USAGE_AUTO&#160;:&#160;<a class="el" href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e">vk_mem_alloc.h</a></li>
+<li>VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE&#160;:&#160;<a class="el" href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccae2adb696d6a73c18bb20c23666661327">vk_mem_alloc.h</a></li>
+<li>VMA_MEMORY_USAGE_AUTO_PREFER_HOST&#160;:&#160;<a class="el" href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9b422585242160b8ed3418310ee6664d">vk_mem_alloc.h</a></li>
+<li>VMA_MEMORY_USAGE_CPU_COPY&#160;:&#160;<a class="el" href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca416a444d4d0fc20067c3f76f32ff2500">vk_mem_alloc.h</a></li>
+<li>VMA_MEMORY_USAGE_CPU_ONLY&#160;:&#160;<a class="el" href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca40bdf4cddeffeb12f43d45ca1286e0a5">vk_mem_alloc.h</a></li>
+<li>VMA_MEMORY_USAGE_CPU_TO_GPU&#160;:&#160;<a class="el" href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9066b52c5a7079bb74a69aaf8b92ff67">vk_mem_alloc.h</a></li>
+<li>VMA_MEMORY_USAGE_GPU_LAZILY_ALLOCATED&#160;:&#160;<a class="el" href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca835333d9072db63a653818030e17614d">vk_mem_alloc.h</a></li>
+<li>VMA_MEMORY_USAGE_GPU_ONLY&#160;:&#160;<a class="el" href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccac6b5dc1432d88647aa4cd456246eadf7">vk_mem_alloc.h</a></li>
+<li>VMA_MEMORY_USAGE_GPU_TO_CPU&#160;:&#160;<a class="el" href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca7b586d2fdaf82a463b58f581ed72be27">vk_mem_alloc.h</a></li>
+<li>VMA_MEMORY_USAGE_MAX_ENUM&#160;:&#160;<a class="el" href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca091e69437ef693e8d0d287f1c719ba6e">vk_mem_alloc.h</a></li>
+<li>VMA_MEMORY_USAGE_UNKNOWN&#160;:&#160;<a class="el" href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccaf50d27e34e0925cf3a63db8c839121dd">vk_mem_alloc.h</a></li>
+<li>VMA_POOL_CREATE_ALGORITHM_MASK&#160;:&#160;<a class="el" href="group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7af4d270f8f42517a0f70037ceb6ac1d9c">vk_mem_alloc.h</a></li>
+<li>VMA_POOL_CREATE_FLAG_BITS_MAX_ENUM&#160;:&#160;<a class="el" href="group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a1c7312bea9ea246846b9054fd6bd6aec">vk_mem_alloc.h</a></li>
+<li>VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a9f1a499508a8edb4e8ba40aa0290a3d2">vk_mem_alloc.h</a></li>
+<li>VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT&#160;:&#160;<a class="el" href="group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a13c8a444197c67866be9cb05599fc726">vk_mem_alloc.h</a></li>
+<li>VMA_STATS_STRING_ENABLED&#160;:&#160;<a class="el" href="vk__mem__alloc_8h.html#ae25f0d55fd91cb166f002b63244800e1">vk_mem_alloc.h</a></li>
+<li>VMA_VIRTUAL_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM&#160;:&#160;<a class="el" href="group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac1163c03ea837fa663462dc286d6a1a9">vk_mem_alloc.h</a></li>
+<li>VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MASK&#160;:&#160;<a class="el" href="group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac5b5e45c335368d18df59c9f27df17e3">vk_mem_alloc.h</a></li>
+<li>VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT&#160;:&#160;<a class="el" href="group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ae2a9591a62b5e3b1bdcbc81c6188a1bf">vk_mem_alloc.h</a></li>
+<li>VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT&#160;:&#160;<a class="el" href="group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a3bb82d2aedd587a64846a1d7778852e6">vk_mem_alloc.h</a></li>
+<li>VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT&#160;:&#160;<a class="el" href="group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a562d10a46012719d33167d3dc5dbbf9b">vk_mem_alloc.h</a></li>
+<li>VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT&#160;:&#160;<a class="el" href="group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a9524a329a55b5ec390d57d90b67ad78e">vk_mem_alloc.h</a></li>
+<li>VMA_VIRTUAL_BLOCK_CREATE_ALGORITHM_MASK&#160;:&#160;<a class="el" href="group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaaf9487467136e1a9e371894dc3a7c4844">vk_mem_alloc.h</a></li>
+<li>VMA_VIRTUAL_BLOCK_CREATE_FLAG_BITS_MAX_ENUM&#160;:&#160;<a class="el" href="group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaa5fc0d333c3d5687a8bbf57df9b377a87">vk_mem_alloc.h</a></li>
+<li>VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT&#160;:&#160;<a class="el" href="group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaae6423e2fa2f3c9211b21c819e3f10f96">vk_mem_alloc.h</a></li>
+<li>vmaAllocateMemory()&#160;:&#160;<a class="el" href="group__group__alloc.html#gabf28077dbf82d0908b8acbe8ee8dd9b8">vk_mem_alloc.h</a></li>
+<li>vmaAllocateMemoryForBuffer()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga7fdf64415b6c3d83c454f28d2c53df7b">vk_mem_alloc.h</a></li>
+<li>vmaAllocateMemoryForImage()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga0faa3f9e5fb233d29d1e00390650febb">vk_mem_alloc.h</a></li>
+<li>vmaAllocateMemoryPages()&#160;:&#160;<a class="el" href="group__group__alloc.html#gad37e82e492b3de38fc3f4cffd9ad0ae1">vk_mem_alloc.h</a></li>
+<li>VmaAllocationCreateFlagBits&#160;:&#160;<a class="el" href="group__group__alloc.html#gad9889c10c798b040d59c92f257cae597">vk_mem_alloc.h</a></li>
+<li>VmaAllocationCreateFlags&#160;:&#160;<a class="el" href="group__group__alloc.html#ga5225e5e11f8376f6a31a1791f3d6e817">vk_mem_alloc.h</a></li>
+<li>VmaAllocationCreateInfo&#160;:&#160;<a class="el" href="group__group__alloc.html#ga3bf110892ea2fb4649fedb68488d026a">vk_mem_alloc.h</a></li>
+<li>VmaAllocationInfo&#160;:&#160;<a class="el" href="group__group__alloc.html#ga1cf7774606721026a68aabe3af2e5b50">vk_mem_alloc.h</a></li>
+<li>VmaAllocatorCreateFlagBits&#160;:&#160;<a class="el" href="group__group__init.html#ga4f87c9100d154a65a4ad495f7763cf7c">vk_mem_alloc.h</a></li>
+<li>VmaAllocatorCreateFlags&#160;:&#160;<a class="el" href="group__group__init.html#gacfe6863e160722c2c1bbcf7573fddc4d">vk_mem_alloc.h</a></li>
+<li>VmaAllocatorCreateInfo&#160;:&#160;<a class="el" href="group__group__init.html#gaad9652301d33759b83e52d4f3605a14a">vk_mem_alloc.h</a></li>
+<li>VmaAllocatorInfo&#160;:&#160;<a class="el" href="group__group__init.html#ga1988031b0223fdbd564250fa1edd942c">vk_mem_alloc.h</a></li>
+<li>vmaBeginDefragmentation()&#160;:&#160;<a class="el" href="group__group__alloc.html#gac3335566858b45541fa9c0d7a6bbb57e">vk_mem_alloc.h</a></li>
+<li>vmaBeginDefragmentationPass()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga980d7da2ce3b1fd5c8b8476bc362cc00">vk_mem_alloc.h</a></li>
+<li>vmaBindBufferMemory()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga6b0929b914b60cf2d45cac4bf3547470">vk_mem_alloc.h</a></li>
+<li>vmaBindBufferMemory2()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga927c944f45e0f2941182abb6f608e64a">vk_mem_alloc.h</a></li>
+<li>vmaBindImageMemory()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga3d3ca45799923aa5d138e9e5f9eb2da5">vk_mem_alloc.h</a></li>
+<li>vmaBindImageMemory2()&#160;:&#160;<a class="el" href="group__group__alloc.html#gaa8251ee81b0045a443e35b8e8aa021bc">vk_mem_alloc.h</a></li>
+<li>VmaBudget&#160;:&#160;<a class="el" href="group__group__stats.html#gaa078667e71b1ef24e87a6a30d128381d">vk_mem_alloc.h</a></li>
+<li>vmaBufferAllocatorAllocate()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39">vk_mem_alloc.h</a></li>
+<li>VmaBufferAllocatorCreateFlagBits&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08">vk_mem_alloc.h</a></li>
+<li>VmaBufferAllocatorCreateFlags&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga524fc82795862079781317e33be657e1">vk_mem_alloc.h</a></li>
+<li>VmaBufferAllocatorCreateInfo&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga07daea3c55e292b9ea9cdbe481f6d598">vk_mem_alloc.h</a></li>
+<li>vmaBufferAllocatorFree()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gaffeae9a3b55e1f1ccaf4dd97d9e74a5f">vk_mem_alloc.h</a></li>
+<li>VmaBufferSuballocationCreateFlagBits&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb">vk_mem_alloc.h</a></li>
+<li>VmaBufferSuballocationCreateFlags&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga7445a51cdb572ba54e795c74d8abc2b4">vk_mem_alloc.h</a></li>
+<li>VmaBufferSuballocationCreateInfo&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga0ee2c81ee2378cc43620c0d577175935">vk_mem_alloc.h</a></li>
+<li>VmaBufferSuballocationInfo&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga18bf3079703d3188bb268b5838bb9c22">vk_mem_alloc.h</a></li>
+<li>vmaCalculatePoolStatistics()&#160;:&#160;<a class="el" href="group__group__stats.html#ga50ba0eb25d2b363b792be4645ca7a380">vk_mem_alloc.h</a></li>
+<li>vmaCalculateStatistics()&#160;:&#160;<a class="el" href="group__group__stats.html#ga36f3484de7aa6cd6edc4de9edfa0ff59">vk_mem_alloc.h</a></li>
+<li>vmaCalculateVirtualBlockStatistics()&#160;:&#160;<a class="el" href="group__group__virtual.html#ga93c5741bca44b43e5b849cacbd616098">vk_mem_alloc.h</a></li>
+<li>vmaCheckCorruption()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga49329a7f030dafcf82f7b73334c22e98">vk_mem_alloc.h</a></li>
+<li>vmaCheckPoolCorruption()&#160;:&#160;<a class="el" href="group__group__alloc.html#gad535935619c7a549bf837e1bb0068f89">vk_mem_alloc.h</a></li>
+<li>vmaClearVirtualBlock()&#160;:&#160;<a class="el" href="group__group__virtual.html#ga5eda6f55919fb05bd2f56a112590c571">vk_mem_alloc.h</a></li>
+<li>vmaCreateAliasingBuffer()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga60d5d4803e3c82505a2bfddb929adb03">vk_mem_alloc.h</a></li>
+<li>vmaCreateAliasingBuffer2()&#160;:&#160;<a class="el" href="group__group__alloc.html#gaf0cf014344213e117bd9f9cf5f928122">vk_mem_alloc.h</a></li>
+<li>vmaCreateAliasingImage()&#160;:&#160;<a class="el" href="group__group__alloc.html#gaebc4db1f94b53dba2338b4c0fd80d0dc">vk_mem_alloc.h</a></li>
+<li>vmaCreateAliasingImage2()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga69ac829f5bb0737449fa92c2d971f1bb">vk_mem_alloc.h</a></li>
+<li>vmaCreateAllocator()&#160;:&#160;<a class="el" href="group__group__init.html#ga200692051ddb34240248234f5f4c17bb">vk_mem_alloc.h</a></li>
+<li>vmaCreateBuffer()&#160;:&#160;<a class="el" href="group__group__alloc.html#gac72ee55598617e8eecca384e746bab51">vk_mem_alloc.h</a></li>
+<li>vmaCreateBufferAllocator()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66">vk_mem_alloc.h</a></li>
+<li>vmaCreateBufferWithAlignment()&#160;:&#160;<a class="el" href="group__group__alloc.html#gaa06a690013a0d01e60894ac378083834">vk_mem_alloc.h</a></li>
+<li>vmaCreateImage()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga02a94f25679275851a53e82eacbcfc73">vk_mem_alloc.h</a></li>
+<li>vmaCreatePool()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga5c8770ded7c59c8caac6de0c2cb00b50">vk_mem_alloc.h</a></li>
+<li>vmaCreateVirtualBlock()&#160;:&#160;<a class="el" href="group__group__virtual.html#gab585754076877265fdae33e5c40ef13b">vk_mem_alloc.h</a></li>
+<li>VmaDefragmentationFlagBits&#160;:&#160;<a class="el" href="group__group__alloc.html#ga6552a65b71d16f378c6994b3ceaef50c">vk_mem_alloc.h</a></li>
+<li>VmaDefragmentationFlags&#160;:&#160;<a class="el" href="group__group__alloc.html#ga88a77cef37e5d3c4fc9eb328885d048d">vk_mem_alloc.h</a></li>
+<li>VmaDefragmentationInfo&#160;:&#160;<a class="el" href="group__group__alloc.html#ga2bf47f96bf92bed2a49461bd9af3acfa">vk_mem_alloc.h</a></li>
+<li>VmaDefragmentationMove&#160;:&#160;<a class="el" href="group__group__alloc.html#ga563f4b43d3e31ed603d80cacc9ba8589">vk_mem_alloc.h</a></li>
+<li>VmaDefragmentationMoveOperation&#160;:&#160;<a class="el" href="group__group__alloc.html#gada9e3861caf96f08894b0bcc160ec257">vk_mem_alloc.h</a></li>
+<li>VmaDefragmentationPassMoveInfo&#160;:&#160;<a class="el" href="group__group__alloc.html#gad6799e8e2b1527abfc84d33bc44aeaf5">vk_mem_alloc.h</a></li>
+<li>VmaDefragmentationStats&#160;:&#160;<a class="el" href="group__group__alloc.html#gad94034192259c2e34a4d1c5e27810403">vk_mem_alloc.h</a></li>
+<li>vmaDestroyAllocator()&#160;:&#160;<a class="el" href="group__group__init.html#gaa8d164061c88f22fb1fd3c8f3534bc1d">vk_mem_alloc.h</a></li>
+<li>vmaDestroyBuffer()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga0d9f4e4ba5bf9aab1f1c746387753d77">vk_mem_alloc.h</a></li>
+<li>vmaDestroyBufferAllocator()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga0583fc4a16f1b38d02b2d57a46a20183">vk_mem_alloc.h</a></li>
+<li>vmaDestroyImage()&#160;:&#160;<a class="el" href="group__group__alloc.html#gae50d2cb3b4a3bfd4dd40987234e50e7e">vk_mem_alloc.h</a></li>
+<li>vmaDestroyPool()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga5485779c8f1948238fc4e92232fa65e1">vk_mem_alloc.h</a></li>
+<li>vmaDestroyVirtualBlock()&#160;:&#160;<a class="el" href="group__group__virtual.html#ga3795f7783ae2c182cede067d656f66a5">vk_mem_alloc.h</a></li>
+<li>VmaDetailedStatistics&#160;:&#160;<a class="el" href="group__group__stats.html#ga9ab0c535a6ca655dc63b8609ab4b8394">vk_mem_alloc.h</a></li>
+<li>VmaDeviceMemoryCallbacks&#160;:&#160;<a class="el" href="group__group__init.html#ga77692d3c8770ea8882d573206bd27b2b">vk_mem_alloc.h</a></li>
+<li>vmaEndDefragmentation()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga59f01ca3d53d50b7cca9b442b77a3e87">vk_mem_alloc.h</a></li>
+<li>vmaEndDefragmentationPass()&#160;:&#160;<a class="el" href="group__group__alloc.html#gaded05a445742a00718ee766144c5c226">vk_mem_alloc.h</a></li>
+<li>vmaFindMemoryTypeIndex()&#160;:&#160;<a class="el" href="group__group__alloc.html#gaef15a94b58fbcb0fe706d5720e84a74a">vk_mem_alloc.h</a></li>
+<li>vmaFindMemoryTypeIndexForBufferInfo()&#160;:&#160;<a class="el" href="group__group__alloc.html#gae790ab9ffaf7667fb8f62523e6897888">vk_mem_alloc.h</a></li>
+<li>vmaFindMemoryTypeIndexForImageInfo()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga088da83d8eaf3ce9056d9ea0b981d472">vk_mem_alloc.h</a></li>
+<li>vmaFlushAllocation()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga30c37c1eec6025f397be41644f48490f">vk_mem_alloc.h</a></li>
+<li>vmaFlushAllocations()&#160;:&#160;<a class="el" href="group__group__alloc.html#gac3dd00da721875ed99fa8a881922bdfc">vk_mem_alloc.h</a></li>
+<li>vmaFlushBufferSuballocation()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga662e8386b36dc17573da63796713b50a">vk_mem_alloc.h</a></li>
+<li>vmaFreeMemory()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga5fea5518972ae9094b1526cbcb19b05f">vk_mem_alloc.h</a></li>
+<li>vmaFreeMemoryPages()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga834b1e4aef395c0a1d56a28e69a4a17e">vk_mem_alloc.h</a></li>
+<li>vmaGetAllocationInfo()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga86dd08aba8633bfa4ad0df2e76481d8b">vk_mem_alloc.h</a></li>
+<li>vmaGetAllocationMemoryProperties()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga571e87dd38e552249b56b1b0b982fad1">vk_mem_alloc.h</a></li>
+<li>vmaGetAllocatorInfo()&#160;:&#160;<a class="el" href="group__group__init.html#gafa02231a791b37255720d566a52683e7">vk_mem_alloc.h</a></li>
+<li>vmaGetBufferSuballocationInfo()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6">vk_mem_alloc.h</a></li>
+<li>vmaGetHeapBudgets()&#160;:&#160;<a class="el" href="group__group__stats.html#ga9f88db9d46a432c0ad7278cecbc5eaa7">vk_mem_alloc.h</a></li>
+<li>vmaGetMemoryProperties()&#160;:&#160;<a class="el" href="group__group__init.html#gab88db292a17974f911182543fda52d19">vk_mem_alloc.h</a></li>
+<li>vmaGetMemoryTypeProperties()&#160;:&#160;<a class="el" href="group__group__init.html#ga8701444752eb5de4464adb5a2b514bca">vk_mem_alloc.h</a></li>
+<li>vmaGetPhysicalDeviceProperties()&#160;:&#160;<a class="el" href="group__group__init.html#gaecabf7b6e91ea87d0316fa0a9e014fe0">vk_mem_alloc.h</a></li>
+<li>vmaGetPoolName()&#160;:&#160;<a class="el" href="group__group__alloc.html#gaf09b4e4eafdbee812e8d73ddf960f030">vk_mem_alloc.h</a></li>
+<li>vmaGetPoolStatistics()&#160;:&#160;<a class="el" href="group__group__stats.html#ga34d8e7d83774eed0caee5c5ae88e217d">vk_mem_alloc.h</a></li>
+<li>vmaGetVirtualAllocationInfo()&#160;:&#160;<a class="el" href="group__group__virtual.html#ga8ee14ceb1fe033ec84d8aa29e1f75afa">vk_mem_alloc.h</a></li>
+<li>vmaGetVirtualBlockStatistics()&#160;:&#160;<a class="el" href="group__group__virtual.html#ga2902aa3130866afcc64bb5f984113db3">vk_mem_alloc.h</a></li>
+<li>vmaInvalidateAllocation()&#160;:&#160;<a class="el" href="group__group__alloc.html#gaaa8412919139ef413a4215ac6a290fae">vk_mem_alloc.h</a></li>
+<li>vmaInvalidateAllocations()&#160;:&#160;<a class="el" href="group__group__alloc.html#gab25b558d75f7378ec944a1522fdcc3c5">vk_mem_alloc.h</a></li>
+<li>vmaInvalidateBufferSuballocation()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga1aa4e38503fae280262527ce41af6920">vk_mem_alloc.h</a></li>
+<li>vmaIsVirtualBlockEmpty()&#160;:&#160;<a class="el" href="group__group__virtual.html#gacd53b5b1d23f8fcbad692ccfdc1811f1">vk_mem_alloc.h</a></li>
+<li>vmaMapBufferSuballocation()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga5559d88f4181d96baa2671a9b5bbb195">vk_mem_alloc.h</a></li>
+<li>vmaMapMemory()&#160;:&#160;<a class="el" href="group__group__alloc.html#gad5bd1243512d099706de88168992f069">vk_mem_alloc.h</a></li>
+<li>VmaMemoryUsage&#160;:&#160;<a class="el" href="group__group__alloc.html#gaa5846affa1e9da3800e3e78fae2305cc">vk_mem_alloc.h</a></li>
+<li>VmaPoolCreateFlagBits&#160;:&#160;<a class="el" href="group__group__alloc.html#ga9a7c45f9c863695d98c83fa5ac940fe7">vk_mem_alloc.h</a></li>
+<li>VmaPoolCreateFlags&#160;:&#160;<a class="el" href="group__group__alloc.html#ga2770e325ea42e087c1b91fdf46d0292a">vk_mem_alloc.h</a></li>
+<li>VmaPoolCreateInfo&#160;:&#160;<a class="el" href="group__group__alloc.html#ga1017aa83489c0eee8d2163d2bf253f67">vk_mem_alloc.h</a></li>
+<li>vmaSetAllocationName()&#160;:&#160;<a class="el" href="group__group__alloc.html#gabe02cbb0cd913b3f125958179f2020fc">vk_mem_alloc.h</a></li>
+<li>vmaSetAllocationUserData()&#160;:&#160;<a class="el" href="group__group__alloc.html#gaf9147d31ffc11d62fc187bde283ed14f">vk_mem_alloc.h</a></li>
+<li>vmaSetBufferSuballocationUserData()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga859ffc45110bced385384044572b227c">vk_mem_alloc.h</a></li>
+<li>vmaSetCurrentFrameIndex()&#160;:&#160;<a class="el" href="group__group__init.html#gade56bf8dc9f5a5eaddf5f119ed525236">vk_mem_alloc.h</a></li>
+<li>vmaSetPoolName()&#160;:&#160;<a class="el" href="group__group__alloc.html#gadbae3a0b4ab078024462fc85c37f3b58">vk_mem_alloc.h</a></li>
+<li>vmaSetVirtualAllocationUserData()&#160;:&#160;<a class="el" href="group__group__virtual.html#ga001ea1850458a4062b829e09c303fca2">vk_mem_alloc.h</a></li>
+<li>VmaStatistics&#160;:&#160;<a class="el" href="group__group__stats.html#gac94bd1a382a3922ddc8de3af4d3ddd06">vk_mem_alloc.h</a></li>
+<li>VmaTotalStatistics&#160;:&#160;<a class="el" href="group__group__stats.html#ga68916e729e55d513f88ffafbadddb770">vk_mem_alloc.h</a></li>
+<li>vmaUnmapBufferSuballocation()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gabd39fc17fc5c76e1dc4f95a3753446d4">vk_mem_alloc.h</a></li>
+<li>vmaUnmapMemory()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga9bc268595cb33f6ec4d519cfce81ff45">vk_mem_alloc.h</a></li>
+<li>vmaVirtualAllocate()&#160;:&#160;<a class="el" href="group__group__virtual.html#ga6b7cdcc1c3e5103c323fedc4e1319e01">vk_mem_alloc.h</a></li>
+<li>VmaVirtualAllocationCreateFlagBits&#160;:&#160;<a class="el" href="group__group__virtual.html#ga2e9c64d405b14156fea7e10c4ad06cb6">vk_mem_alloc.h</a></li>
+<li>VmaVirtualAllocationCreateFlags&#160;:&#160;<a class="el" href="group__group__virtual.html#gae96ffc099bf898257fb19e9410ed08a7">vk_mem_alloc.h</a></li>
+<li>VmaVirtualAllocationCreateInfo&#160;:&#160;<a class="el" href="group__group__virtual.html#gac3c90d80bedc6847a41b82d0e2158c9e">vk_mem_alloc.h</a></li>
+<li>VmaVirtualAllocationInfo&#160;:&#160;<a class="el" href="group__group__virtual.html#ga75bc33ff7cf18c98e101f570dc2a5ebc">vk_mem_alloc.h</a></li>
+<li>VmaVirtualBlockCreateFlagBits&#160;:&#160;<a class="el" href="group__group__virtual.html#ga88bcf8c1cd3bb1610ff7343811c65bca">vk_mem_alloc.h</a></li>
+<li>VmaVirtualBlockCreateFlags&#160;:&#160;<a class="el" href="group__group__virtual.html#ga4e49c2f0ab7f6b4868833e5bac78d91e">vk_mem_alloc.h</a></li>
+<li>VmaVirtualBlockCreateInfo&#160;:&#160;<a class="el" href="group__group__virtual.html#ga4753d42d40217a3a652a3cdf253ad773">vk_mem_alloc.h</a></li>
+<li>vmaVirtualFree()&#160;:&#160;<a class="el" href="group__group__virtual.html#ga09fc688c0c3653ff23723b037e5d5033">vk_mem_alloc.h</a></li>
+<li>VmaVulkanFunctions&#160;:&#160;<a class="el" href="group__group__init.html#gabb0a8e3b5040d847571cca6c7f9a8074">vk_mem_alloc.h</a></li>
+</ul>
 </div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/html/globals_eval.html b/docs/html/globals_eval.html
index 129f257..ee8623c 100644
--- a/docs/html/globals_eval.html
+++ b/docs/html/globals_eval.html
@@ -104,6 +104,7 @@
 <li>VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a">vk_mem_alloc.h</a></li>
 <li>VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaec0e2b1cec0f2337ad134cec5aead0df">vk_mem_alloc.h</a></li>
 <li>VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012">vk_mem_alloc.h</a></li>
+<li>VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaa891857e2a3c8307408b4e0763c158f2">vk_mem_alloc.h</a></li>
 <li>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388">vk_mem_alloc.h</a></li>
 <li>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb">vk_mem_alloc.h</a></li>
 <li>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099">vk_mem_alloc.h</a></li>
diff --git a/docs/html/globals_func.html b/docs/html/globals_func.html
index 15f0019..b873b1d 100644
--- a/docs/html/globals_func.html
+++ b/docs/html/globals_func.html
@@ -114,8 +114,7 @@
 <li>vmaFindMemoryTypeIndexForImageInfo()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga088da83d8eaf3ce9056d9ea0b981d472">vk_mem_alloc.h</a></li>
 <li>vmaFlushAllocation()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga30c37c1eec6025f397be41644f48490f">vk_mem_alloc.h</a></li>
 <li>vmaFlushAllocations()&#160;:&#160;<a class="el" href="group__group__alloc.html#gac3dd00da721875ed99fa8a881922bdfc">vk_mem_alloc.h</a></li>
-<li>vmaFlushBufferSuballocation()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gae20326d64236fe7ea9332483b83cab0d">vk_mem_alloc.h</a></li>
-<li>vmaFlushBufferSuballocations()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga199d3aa9d77cd58670c06da2b6c5f53c">vk_mem_alloc.h</a></li>
+<li>vmaFlushBufferSuballocation()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga662e8386b36dc17573da63796713b50a">vk_mem_alloc.h</a></li>
 <li>vmaFreeMemory()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga5fea5518972ae9094b1526cbcb19b05f">vk_mem_alloc.h</a></li>
 <li>vmaFreeMemoryPages()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga834b1e4aef395c0a1d56a28e69a4a17e">vk_mem_alloc.h</a></li>
 <li>vmaGetAllocationInfo()&#160;:&#160;<a class="el" href="group__group__alloc.html#ga86dd08aba8633bfa4ad0df2e76481d8b">vk_mem_alloc.h</a></li>
@@ -132,8 +131,7 @@
 <li>vmaGetVirtualBlockStatistics()&#160;:&#160;<a class="el" href="group__group__virtual.html#ga2902aa3130866afcc64bb5f984113db3">vk_mem_alloc.h</a></li>
 <li>vmaInvalidateAllocation()&#160;:&#160;<a class="el" href="group__group__alloc.html#gaaa8412919139ef413a4215ac6a290fae">vk_mem_alloc.h</a></li>
 <li>vmaInvalidateAllocations()&#160;:&#160;<a class="el" href="group__group__alloc.html#gab25b558d75f7378ec944a1522fdcc3c5">vk_mem_alloc.h</a></li>
-<li>vmaInvalidateBufferSuballocation()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#gaa6da44bb7c952e31ee908b06dcaeaa1b">vk_mem_alloc.h</a></li>
-<li>vmaInvalidateBufferSuballocations()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga90de24bda8b9156113cfdc6b3e515191">vk_mem_alloc.h</a></li>
+<li>vmaInvalidateBufferSuballocation()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga1aa4e38503fae280262527ce41af6920">vk_mem_alloc.h</a></li>
 <li>vmaIsVirtualBlockEmpty()&#160;:&#160;<a class="el" href="group__group__virtual.html#gacd53b5b1d23f8fcbad692ccfdc1811f1">vk_mem_alloc.h</a></li>
 <li>vmaMapBufferSuballocation()&#160;:&#160;<a class="el" href="group__group__buffer__suballocation.html#ga5559d88f4181d96baa2671a9b5bbb195">vk_mem_alloc.h</a></li>
 <li>vmaMapMemory()&#160;:&#160;<a class="el" href="group__group__alloc.html#gad5bd1243512d099706de88168992f069">vk_mem_alloc.h</a></li>
diff --git a/docs/html/group__group__buffer__suballocation.html b/docs/html/group__group__buffer__suballocation.html
index d6ef487..d4b548c 100644
--- a/docs/html/group__group__buffer__suballocation.html
+++ b/docs/html/group__group__buffer__suballocation.html
@@ -84,28 +84,28 @@
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
 Classes</h2></td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_allocator_create_info.html">VmaBufferAllocatorCreateInfo</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="TODO document!">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>.  <a href="struct_vma_buffer_allocator_create_info.html#details">More...</a><br /></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="Represent main object that can allocate parts of larger Vulkan buffers.">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>.  <a href="struct_vma_buffer_allocator_create_info.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_suballocation_create_info.html">VmaBufferSuballocationCreateInfo</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="TODO document!">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>.  <a href="struct_vma_buffer_suballocation_create_info.html#details">More...</a><br /></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="Represents a single sub-allocation - allocated part of a larger Vulkan buffer.">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>.  <a href="struct_vma_buffer_suballocation_create_info.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_suballocation_info.html">VmaBufferSuballocationInfo</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>.  <a href="struct_vma_buffer_suballocation_info.html#details">More...</a><br /></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a> or <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>.  <a href="struct_vma_buffer_suballocation_info.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO document!  <a href="struct_vma_buffer_suballocation.html#details">More...</a><br /></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a single sub-allocation - allocated part of a larger Vulkan buffer.  <a href="struct_vma_buffer_suballocation.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO document!  <a href="struct_vma_buffer_allocator.html#details">More...</a><br /></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represent main object that can allocate parts of larger Vulkan buffers.  <a href="struct_vma_buffer_allocator.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
 Typedefs</h2></td></tr>
 <tr class="memitem:gab59dc80be7e88530693d2140c7e4baa9"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08">VmaBufferAllocatorCreateFlagBits</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#gab59dc80be7e88530693d2140c7e4baa9">VmaBufferAllocatorCreateFlagBits</a></td></tr>
-<tr class="memdesc:gab59dc80be7e88530693d2140c7e4baa9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="TODO document! TODO implement!">VmaBufferAllocatorCreateInfo::flags</a>.  <a href="group__group__buffer__suballocation.html#gab59dc80be7e88530693d2140c7e4baa9">More...</a><br /></td></tr>
+<tr class="memdesc:gab59dc80be7e88530693d2140c7e4baa9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="Flags - use VmaBufferAllocatorCreateFlagBits.">VmaBufferAllocatorCreateInfo::flags</a>.  <a href="group__group__buffer__suballocation.html#gab59dc80be7e88530693d2140c7e4baa9">More...</a><br /></td></tr>
 <tr class="separator:gab59dc80be7e88530693d2140c7e4baa9"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga524fc82795862079781317e33be657e1"><td class="memItemLeft" align="right" valign="top">typedef VkFlags&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga524fc82795862079781317e33be657e1">VmaBufferAllocatorCreateFlags</a></td></tr>
-<tr class="memdesc:ga524fc82795862079781317e33be657e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="TODO document! TODO implement!">VmaBufferAllocatorCreateInfo::flags</a>. See <a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08" title="Flags to be passed as VmaBufferAllocatorCreateInfo::flags.">VmaBufferAllocatorCreateFlagBits</a>.  <a href="group__group__buffer__suballocation.html#ga524fc82795862079781317e33be657e1">More...</a><br /></td></tr>
+<tr class="memdesc:ga524fc82795862079781317e33be657e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="Flags - use VmaBufferAllocatorCreateFlagBits.">VmaBufferAllocatorCreateInfo::flags</a>. See <a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08" title="Flags to be passed as VmaBufferAllocatorCreateInfo::flags.">VmaBufferAllocatorCreateFlagBits</a>.  <a href="group__group__buffer__suballocation.html#ga524fc82795862079781317e33be657e1">More...</a><br /></td></tr>
 <tr class="separator:ga524fc82795862079781317e33be657e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gab4d54a73919432f9d90f5e8cb1752fb0"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb">VmaBufferSuballocationCreateFlagBits</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#gab4d54a73919432f9d90f5e8cb1752fb0">VmaBufferSuballocationCreateFlagBits</a></td></tr>
 <tr class="memdesc:gab4d54a73919432f9d90f5e8cb1752fb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_virtual_allocation_create_info.html#ab10e16956cc4bf20ced9de77d1129ea4" title="Use combination of VmaVirtualAllocationCreateFlagBits.">VmaVirtualAllocationCreateInfo::flags</a>.  <a href="group__group__buffer__suballocation.html#gab4d54a73919432f9d90f5e8cb1752fb0">More...</a><br /></td></tr>
@@ -114,13 +114,13 @@
 <tr class="memdesc:ga7445a51cdb572ba54e795c74d8abc2b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_suballocation_create_info.html#ac30a8d28fe7248a2133885f663fdb5e0" title="TODO document! TODO implement!">VmaBufferSuballocationCreateInfo::flags</a>. See <a class="el" href="group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb" title="Flags to be passed as VmaVirtualAllocationCreateInfo::flags.">VmaBufferSuballocationCreateFlagBits</a>.  <a href="group__group__buffer__suballocation.html#ga7445a51cdb572ba54e795c74d8abc2b4">More...</a><br /></td></tr>
 <tr class="separator:ga7445a51cdb572ba54e795c74d8abc2b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga07daea3c55e292b9ea9cdbe481f6d598"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_buffer_allocator_create_info.html">VmaBufferAllocatorCreateInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga07daea3c55e292b9ea9cdbe481f6d598">VmaBufferAllocatorCreateInfo</a></td></tr>
-<tr class="memdesc:ga07daea3c55e292b9ea9cdbe481f6d598"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="TODO document!">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>.  <a href="group__group__buffer__suballocation.html#ga07daea3c55e292b9ea9cdbe481f6d598">More...</a><br /></td></tr>
+<tr class="memdesc:ga07daea3c55e292b9ea9cdbe481f6d598"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="Represent main object that can allocate parts of larger Vulkan buffers.">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>.  <a href="group__group__buffer__suballocation.html#ga07daea3c55e292b9ea9cdbe481f6d598">More...</a><br /></td></tr>
 <tr class="separator:ga07daea3c55e292b9ea9cdbe481f6d598"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga0ee2c81ee2378cc43620c0d577175935"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_buffer_suballocation_create_info.html">VmaBufferSuballocationCreateInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga0ee2c81ee2378cc43620c0d577175935">VmaBufferSuballocationCreateInfo</a></td></tr>
-<tr class="memdesc:ga0ee2c81ee2378cc43620c0d577175935"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="TODO document!">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>.  <a href="group__group__buffer__suballocation.html#ga0ee2c81ee2378cc43620c0d577175935">More...</a><br /></td></tr>
+<tr class="memdesc:ga0ee2c81ee2378cc43620c0d577175935"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="Represents a single sub-allocation - allocated part of a larger Vulkan buffer.">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>.  <a href="group__group__buffer__suballocation.html#ga0ee2c81ee2378cc43620c0d577175935">More...</a><br /></td></tr>
 <tr class="separator:ga0ee2c81ee2378cc43620c0d577175935"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga18bf3079703d3188bb268b5838bb9c22"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_buffer_suballocation_info.html">VmaBufferSuballocationInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga18bf3079703d3188bb268b5838bb9c22">VmaBufferSuballocationInfo</a></td></tr>
-<tr class="memdesc:ga18bf3079703d3188bb268b5838bb9c22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>.  <a href="group__group__buffer__suballocation.html#ga18bf3079703d3188bb268b5838bb9c22">More...</a><br /></td></tr>
+<tr class="memdesc:ga18bf3079703d3188bb268b5838bb9c22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a> or <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>.  <a href="group__group__buffer__suballocation.html#ga18bf3079703d3188bb268b5838bb9c22">More...</a><br /></td></tr>
 <tr class="separator:ga18bf3079703d3188bb268b5838bb9c22"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
@@ -129,18 +129,20 @@
 , <a class="el" href="group__group__buffer__suballocation.html#gga57862e1ba87f2baa7e4b9d2af2cc1c08ae474b5be5f4211f75e953b620f2c493e">VMA_BUFFER_ALLOCATOR_CREATE_ALGORITHM_MASK</a>
 , <a class="el" href="group__group__buffer__suballocation.html#gga57862e1ba87f2baa7e4b9d2af2cc1c08a386b94573003558b4103d9bbb430d49a">VMA_BUFFER_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM</a> = 0x7FFFFFFF
  }</td></tr>
-<tr class="memdesc:ga57862e1ba87f2baa7e4b9d2af2cc1c08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="TODO document! TODO implement!">VmaBufferAllocatorCreateInfo::flags</a>.  <a href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08">More...</a><br /></td></tr>
+<tr class="memdesc:ga57862e1ba87f2baa7e4b9d2af2cc1c08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="Flags - use VmaBufferAllocatorCreateFlagBits.">VmaBufferAllocatorCreateInfo::flags</a>.  <a href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08">More...</a><br /></td></tr>
 <tr class="separator:ga57862e1ba87f2baa7e4b9d2af2cc1c08"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga79ecf879da8900036ea0ea5b2e7adceb"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb">VmaBufferSuballocationCreateFlagBits</a> { <br />
 &#160;&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a">VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT</a> = 0x00000001
-, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012">VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT</a> = 0x00000002
-, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd">VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT</a> = 0x00000004
-, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb">VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT</a> = 0x00010000
+, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaa891857e2a3c8307408b4e0763c158f2">VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT</a> = 0x00000002
+, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012">VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT</a> = 0x00000004
+, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd">VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT</a> = 0x00000008
 , <br />
-&#160;&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30">VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT</a> = 0x00020000
+&#160;&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb">VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT</a> = 0x00010000
+, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30">VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT</a> = 0x00020000
 , <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099">VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT</a> = 0x00040000
 , <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388">VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK</a>
-, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaec0e2b1cec0f2337ad134cec5aead0df">VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM</a> = 0x7FFFFFFF
+, <br />
+&#160;&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaec0e2b1cec0f2337ad134cec5aead0df">VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM</a> = 0x7FFFFFFF
 <br />
  }</td></tr>
 <tr class="memdesc:ga79ecf879da8900036ea0ea5b2e7adceb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_virtual_allocation_create_info.html#ab10e16956cc4bf20ced9de77d1129ea4" title="Use combination of VmaVirtualAllocationCreateFlagBits.">VmaVirtualAllocationCreateInfo::flags</a>.  <a href="group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb">More...</a><br /></td></tr>
@@ -172,18 +174,12 @@
 <tr class="memitem:gabd39fc17fc5c76e1dc4f95a3753446d4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#gabd39fc17fc5c76e1dc4f95a3753446d4">vmaUnmapBufferSuballocation</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation)</td></tr>
 <tr class="memdesc:gabd39fc17fc5c76e1dc4f95a3753446d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document!  <a href="group__group__buffer__suballocation.html#gabd39fc17fc5c76e1dc4f95a3753446d4">More...</a><br /></td></tr>
 <tr class="separator:gabd39fc17fc5c76e1dc4f95a3753446d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gae20326d64236fe7ea9332483b83cab0d"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#gae20326d64236fe7ea9332483b83cab0d">vmaFlushBufferSuballocation</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation, VkDeviceSize offset, VkDeviceSize size)</td></tr>
-<tr class="memdesc:gae20326d64236fe7ea9332483b83cab0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document!  <a href="group__group__buffer__suballocation.html#gae20326d64236fe7ea9332483b83cab0d">More...</a><br /></td></tr>
-<tr class="separator:gae20326d64236fe7ea9332483b83cab0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gaa6da44bb7c952e31ee908b06dcaeaa1b"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#gaa6da44bb7c952e31ee908b06dcaeaa1b">vmaInvalidateBufferSuballocation</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation, VkDeviceSize offset, VkDeviceSize size)</td></tr>
-<tr class="memdesc:gaa6da44bb7c952e31ee908b06dcaeaa1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document!  <a href="group__group__buffer__suballocation.html#gaa6da44bb7c952e31ee908b06dcaeaa1b">More...</a><br /></td></tr>
-<tr class="separator:gaa6da44bb7c952e31ee908b06dcaeaa1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga199d3aa9d77cd58670c06da2b6c5f53c"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga199d3aa9d77cd58670c06da2b6c5f53c">vmaFlushBufferSuballocations</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, uint32_t bufferSuballocationCount, const <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> *pBufferSuballocations, const VkDeviceSize *pOffset, const VkDeviceSize *pSizes)</td></tr>
-<tr class="memdesc:ga199d3aa9d77cd58670c06da2b6c5f53c"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document!  <a href="group__group__buffer__suballocation.html#ga199d3aa9d77cd58670c06da2b6c5f53c">More...</a><br /></td></tr>
-<tr class="separator:ga199d3aa9d77cd58670c06da2b6c5f53c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga90de24bda8b9156113cfdc6b3e515191"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga90de24bda8b9156113cfdc6b3e515191">vmaInvalidateBufferSuballocations</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, const <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> *pBufferSuballocations, const VkDeviceSize *pOffset, const VkDeviceSize *pSizes)</td></tr>
-<tr class="memdesc:ga90de24bda8b9156113cfdc6b3e515191"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document!  <a href="group__group__buffer__suballocation.html#ga90de24bda8b9156113cfdc6b3e515191">More...</a><br /></td></tr>
-<tr class="separator:ga90de24bda8b9156113cfdc6b3e515191"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga662e8386b36dc17573da63796713b50a"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga662e8386b36dc17573da63796713b50a">vmaFlushBufferSuballocation</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation, VkDeviceSize suballocationLocalOffset, VkDeviceSize size)</td></tr>
+<tr class="memdesc:ga662e8386b36dc17573da63796713b50a"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document!  <a href="group__group__buffer__suballocation.html#ga662e8386b36dc17573da63796713b50a">More...</a><br /></td></tr>
+<tr class="separator:ga662e8386b36dc17573da63796713b50a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1aa4e38503fae280262527ce41af6920"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga1aa4e38503fae280262527ce41af6920">vmaInvalidateBufferSuballocation</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation, VkDeviceSize suballocationLocalOffset, VkDeviceSize size)</td></tr>
+<tr class="memdesc:ga1aa4e38503fae280262527ce41af6920"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document!  <a href="group__group__buffer__suballocation.html#ga1aa4e38503fae280262527ce41af6920">More...</a><br /></td></tr>
+<tr class="separator:ga1aa4e38503fae280262527ce41af6920"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <p >API elements related to the mechanism of <a class="el" href="buffer_suballocation.html">Buffer suballocation</a> - allocating parts of larger buffers that allocator can create implicitly. </p>
@@ -200,7 +196,7 @@
       </table>
 </div><div class="memdoc">
 
-<p>Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="TODO document! TODO implement!">VmaBufferAllocatorCreateInfo::flags</a>. </p>
+<p>Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="Flags - use VmaBufferAllocatorCreateFlagBits.">VmaBufferAllocatorCreateInfo::flags</a>. </p>
 
 </div>
 </div>
@@ -216,7 +212,7 @@
       </table>
 </div><div class="memdoc">
 
-<p>Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="TODO document! TODO implement!">VmaBufferAllocatorCreateInfo::flags</a>. See <a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08" title="Flags to be passed as VmaBufferAllocatorCreateInfo::flags.">VmaBufferAllocatorCreateFlagBits</a>. </p>
+<p>Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="Flags - use VmaBufferAllocatorCreateFlagBits.">VmaBufferAllocatorCreateInfo::flags</a>. See <a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08" title="Flags to be passed as VmaBufferAllocatorCreateInfo::flags.">VmaBufferAllocatorCreateFlagBits</a>. </p>
 
 </div>
 </div>
@@ -232,7 +228,7 @@
       </table>
 </div><div class="memdoc">
 
-<p>Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="TODO document!">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>. </p>
+<p>Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="Represent main object that can allocate parts of larger Vulkan buffers.">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>. </p>
 
 </div>
 </div>
@@ -280,7 +276,7 @@
       </table>
 </div><div class="memdoc">
 
-<p>Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="TODO document!">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>. </p>
+<p>Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="Represents a single sub-allocation - allocated part of a larger Vulkan buffer.">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>. </p>
 
 </div>
 </div>
@@ -296,7 +292,7 @@
       </table>
 </div><div class="memdoc">
 
-<p>Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>. </p>
+<p>Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a> or <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>. </p>
 
 </div>
 </div>
@@ -313,13 +309,12 @@
       </table>
 </div><div class="memdoc">
 
-<p>Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="TODO document! TODO implement!">VmaBufferAllocatorCreateInfo::flags</a>. </p>
+<p>Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="Flags - use VmaBufferAllocatorCreateFlagBits.">VmaBufferAllocatorCreateInfo::flags</a>. </p>
 <table class="fieldtable">
-<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga57862e1ba87f2baa7e4b9d2af2cc1c08a7e65ee5a47b8f6073dcc7d22020327c1" name="gga57862e1ba87f2baa7e4b9d2af2cc1c08a7e65ee5a47b8f6073dcc7d22020327c1"></a>VMA_BUFFER_ALLOCATOR_CREATE_LINEAR_ALGORITHM_BIT&#160;</td><td class="fielddoc"><p >Enables alternative, linear allocation algorithm in this virtual block. </p>
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga57862e1ba87f2baa7e4b9d2af2cc1c08a7e65ee5a47b8f6073dcc7d22020327c1" name="gga57862e1ba87f2baa7e4b9d2af2cc1c08a7e65ee5a47b8f6073dcc7d22020327c1"></a>VMA_BUFFER_ALLOCATOR_CREATE_LINEAR_ALGORITHM_BIT&#160;</td><td class="fielddoc"><p >Enables alternative, linear allocation algorithm in this virtual block.</p>
 <p >Specify this flag to enable linear allocation algorithm, which always creates new allocations after last one and doesn't reuse space from allocations freed in between. It trades memory consumption for simplified algorithm and data structure, which has better performance and uses less memory for metadata.</p>
 <p >By using this flag, you can achieve behavior of free-at-once, stack, ring buffer, and double stack. For details, see documentation chapter <a class="el" href="custom_memory_pools.html#linear_algorithm">Linear allocation algorithm</a>.</p>
-<p >Under the hood, it uses a <a class="el" href="virtual_allocator.html">Virtual allocator</a> with flag <a class="el" href="group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaae6423e2fa2f3c9211b21c819e3f10f96" title="Enables alternative, linear allocation algorithm in this virtual block.">VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT</a>.</p>
-<p >TODO implement! </p>
+<p >Internally it uses a <a class="el" href="virtual_allocator.html">Virtual allocator</a> with flag <a class="el" href="group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaae6423e2fa2f3c9211b21c819e3f10f96" title="Enables alternative, linear allocation algorithm in this virtual block.">VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT</a>. </p>
 </td></tr>
 <tr><td class="fieldname"><a id="gga57862e1ba87f2baa7e4b9d2af2cc1c08ae474b5be5f4211f75e953b620f2c493e" name="gga57862e1ba87f2baa7e4b9d2af2cc1c08ae474b5be5f4211f75e953b620f2c493e"></a>VMA_BUFFER_ALLOCATOR_CREATE_ALGORITHM_MASK&#160;</td><td class="fielddoc"><p >Bit mask to extract only <code>ALGORITHM</code> bits from entire set of flags. </p>
 </td></tr>
@@ -342,17 +337,19 @@
 
 <p>Flags to be passed as <a class="el" href="struct_vma_virtual_allocation_create_info.html#ab10e16956cc4bf20ced9de77d1129ea4" title="Use combination of VmaVirtualAllocationCreateFlagBits.">VmaVirtualAllocationCreateInfo::flags</a>. </p>
 <table class="fieldtable">
-<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a" name="gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a"></a>VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT&#160;</td><td class="fielddoc"><p >TODO document! TODO implement! </p>
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a" name="gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a"></a>VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT&#160;</td><td class="fielddoc"><p >Always creates a separate <code>VkBuffer</code> dedicated for this suballocation. Suballocation will then always have buffer-local offset 0. </p>
 </td></tr>
-<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012" name="gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012"></a>VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT&#160;</td><td class="fielddoc"><p >TODO document! TODO implement! </p>
+<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adcebaa891857e2a3c8307408b4e0763c158f2" name="gga79ecf879da8900036ea0ea5b2e7adcebaa891857e2a3c8307408b4e0763c158f2"></a>VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT&#160;</td><td class="fielddoc"><p >Never creates a new <code>VkBuffer</code> or allocates new Vulkan memory. Tries to create the suballocation in a free space of an existing buffer. If not possible, returns <code>VK_ERROR_OUT_OF_DEVICE_MEMORY</code>. </p>
 </td></tr>
-<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd" name="gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd"></a>VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT&#160;</td><td class="fielddoc"><p >TODO document! TODO implement! </p>
+<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012" name="gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012"></a>VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT&#160;</td><td class="fielddoc"><p >Never allocates new Vulkan memory. Tries to create the suballocation in a free space of an existing buffer. If not possible, tries to create a new buffer but in existing memory blocks, internally using <a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a89759603401014eb325eb22a3839f2ff" title="Set this flag to only try to allocate from existing VkDeviceMemory blocks and never create new such b...">VMA_ALLOCATION_CREATE_NEVER_ALLOCATE_BIT</a>. If not possible, returns <code>VK_ERROR_OUT_OF_DEVICE_MEMORY</code>. </p>
 </td></tr>
-<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb" name="gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb"></a>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT&#160;</td><td class="fielddoc"><p >TODO document! TODO implement! </p>
+<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd" name="gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd"></a>VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT&#160;</td><td class="fielddoc"><p >Creates suballocation only if additional Vulkan memory required for it, if any, won't exceed memory budget. Otherwise return <code>VK_ERROR_OUT_OF_DEVICE_MEMORY</code>. </p>
 </td></tr>
-<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30" name="gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30"></a>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT&#160;</td><td class="fielddoc"><p >TODO document! TODO implement! </p>
+<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb" name="gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb"></a>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT&#160;</td><td class="fielddoc"><p >Allocation strategy that chooses smallest possible empty space for the suballocation to minimize memory usage and fragmentation, possibly at the expense of allocation time. </p>
 </td></tr>
-<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099" name="gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099"></a>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT&#160;</td><td class="fielddoc"><p >TODO document! TODO implement! </p>
+<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30" name="gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30"></a>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT&#160;</td><td class="fielddoc"><p >Allocation strategy that chooses first suitable empty space for the suballocation - not necessarily in terms of the smallest offset but the one that is easiest and fastest to find to minimize allocation time, possibly at the expense of allocation quality. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099" name="gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099"></a>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT&#160;</td><td class="fielddoc"><p >Allocation strategy that chooses always the lowest offset in available space. This is not the most efficient strategy but achieves highly packed data. Not recommended or useful, provided just for completeness. </p>
 </td></tr>
 <tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388" name="gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388"></a>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK&#160;</td><td class="fielddoc"><p >A bit mask to extract only <code>STRATEGY</code> bits from entire set of flags. </p>
 </td></tr>
@@ -512,8 +509,8 @@
 
 </div>
 </div>
-<a id="gae20326d64236fe7ea9332483b83cab0d" name="gae20326d64236fe7ea9332483b83cab0d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#gae20326d64236fe7ea9332483b83cab0d">&#9670;&#160;</a></span>vmaFlushBufferSuballocation()</h2>
+<a id="ga662e8386b36dc17573da63796713b50a" name="ga662e8386b36dc17573da63796713b50a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga662e8386b36dc17573da63796713b50a">&#9670;&#160;</a></span>vmaFlushBufferSuballocation()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -540,7 +537,7 @@
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">VkDeviceSize&#160;</td>
-          <td class="paramname"><em>offset</em>, </td>
+          <td class="paramname"><em>suballocationLocalOffset</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
@@ -560,60 +557,6 @@
 
 </div>
 </div>
-<a id="ga199d3aa9d77cd58670c06da2b6c5f53c" name="ga199d3aa9d77cd58670c06da2b6c5f53c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ga199d3aa9d77cd58670c06da2b6c5f53c">&#9670;&#160;</a></span>vmaFlushBufferSuballocations()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VkResult vmaFlushBufferSuballocations </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a>&#160;</td>
-          <td class="paramname"><em>allocator</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a>&#160;</td>
-          <td class="paramname"><em>bufferAllocator</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">uint32_t&#160;</td>
-          <td class="paramname"><em>bufferSuballocationCount</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> *&#160;</td>
-          <td class="paramname"><em>pBufferSuballocations</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const VkDeviceSize *&#160;</td>
-          <td class="paramname"><em>pOffset</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const VkDeviceSize *&#160;</td>
-          <td class="paramname"><em>pSizes</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>TODO implement! TODO document! </p>
-
-</div>
-</div>
 <a id="ga8fd69c9c2dc254b99875604d6a08cea6" name="ga8fd69c9c2dc254b99875604d6a08cea6"></a>
 <h2 class="memtitle"><span class="permalink"><a href="#ga8fd69c9c2dc254b99875604d6a08cea6">&#9670;&#160;</a></span>vmaGetBufferSuballocationInfo()</h2>
 
@@ -656,8 +599,8 @@
 
 </div>
 </div>
-<a id="gaa6da44bb7c952e31ee908b06dcaeaa1b" name="gaa6da44bb7c952e31ee908b06dcaeaa1b"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#gaa6da44bb7c952e31ee908b06dcaeaa1b">&#9670;&#160;</a></span>vmaInvalidateBufferSuballocation()</h2>
+<a id="ga1aa4e38503fae280262527ce41af6920" name="ga1aa4e38503fae280262527ce41af6920"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1aa4e38503fae280262527ce41af6920">&#9670;&#160;</a></span>vmaInvalidateBufferSuballocation()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -684,7 +627,7 @@
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">VkDeviceSize&#160;</td>
-          <td class="paramname"><em>offset</em>, </td>
+          <td class="paramname"><em>suballocationLocalOffset</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
@@ -704,54 +647,6 @@
 
 </div>
 </div>
-<a id="ga90de24bda8b9156113cfdc6b3e515191" name="ga90de24bda8b9156113cfdc6b3e515191"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ga90de24bda8b9156113cfdc6b3e515191">&#9670;&#160;</a></span>vmaInvalidateBufferSuballocations()</h2>
-
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">VkResult vmaInvalidateBufferSuballocations </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a>&#160;</td>
-          <td class="paramname"><em>allocator</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a>&#160;</td>
-          <td class="paramname"><em>bufferAllocator</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> *&#160;</td>
-          <td class="paramname"><em>pBufferSuballocations</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const VkDeviceSize *&#160;</td>
-          <td class="paramname"><em>pOffset</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const VkDeviceSize *&#160;</td>
-          <td class="paramname"><em>pSizes</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>TODO implement! TODO document! </p>
-
-</div>
-</div>
 <a id="ga5559d88f4181d96baa2671a9b5bbb195" name="ga5559d88f4181d96baa2671a9b5bbb195"></a>
 <h2 class="memtitle"><span class="permalink"><a href="#ga5559d88f4181d96baa2671a9b5bbb195">&#9670;&#160;</a></span>vmaMapBufferSuballocation()</h2>
 
diff --git a/docs/html/memory_mapping.html b/docs/html/memory_mapping.html
index dcda71c..b089b80 100644
--- a/docs/html/memory_mapping.html
+++ b/docs/html/memory_mapping.html
@@ -126,12 +126,12 @@
 <div class="ttc" id="agroup__group__alloc_html_ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e"><div class="ttname"><a href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e">VMA_MEMORY_USAGE_AUTO</a></div><div class="ttdeci">@ VMA_MEMORY_USAGE_AUTO</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:495</div></div>
 <div class="ttc" id="agroup__group__alloc_html_ggad9889c10c798b040d59c92f257cae597a11da372cc3a82931c5e5d6146cd9dd1f"><div class="ttname"><a href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a11da372cc3a82931c5e5d6146cd9dd1f">VMA_ALLOCATION_CREATE_MAPPED_BIT</a></div><div class="ttdeci">@ VMA_ALLOCATION_CREATE_MAPPED_BIT</div><div class="ttdoc">Set this flag to use a memory that will be persistently mapped and retrieve pointer to it.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:552</div></div>
 <div class="ttc" id="agroup__group__alloc_html_ggad9889c10c798b040d59c92f257cae597a9be224df3bfc1cfa06203aed689a30c5"><div class="ttname"><a href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a9be224df3bfc1cfa06203aed689a30c5">VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT</a></div><div class="ttdeci">@ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:601</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html"><div class="ttname"><a href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a></div><div class="ttdoc">Parameters of new VmaAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1305</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_accb8b06b1f677d858cb9af20705fa910"><div class="ttname"><a href="struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910">VmaAllocationCreateInfo::usage</a></div><div class="ttdeci">VmaMemoryUsage usage</div><div class="ttdoc">Intended usage of memory.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1313</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_add09658ac14fe290ace25470ddd6d41b"><div class="ttname"><a href="struct_vma_allocation_create_info.html#add09658ac14fe290ace25470ddd6d41b">VmaAllocationCreateInfo::flags</a></div><div class="ttdeci">VmaAllocationCreateFlags flags</div><div class="ttdoc">Use VmaAllocationCreateFlagBits enum.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1307</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html"><div class="ttname"><a href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a></div><div class="ttdoc">Parameters of new VmaAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1326</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_accb8b06b1f677d858cb9af20705fa910"><div class="ttname"><a href="struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910">VmaAllocationCreateInfo::usage</a></div><div class="ttdeci">VmaMemoryUsage usage</div><div class="ttdoc">Intended usage of memory.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1334</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_add09658ac14fe290ace25470ddd6d41b"><div class="ttname"><a href="struct_vma_allocation_create_info.html#add09658ac14fe290ace25470ddd6d41b">VmaAllocationCreateInfo::flags</a></div><div class="ttdeci">VmaAllocationCreateFlags flags</div><div class="ttdoc">Use VmaAllocationCreateFlagBits enum.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1328</div></div>
 <div class="ttc" id="astruct_vma_allocation_html"><div class="ttname"><a href="struct_vma_allocation.html">VmaAllocation</a></div><div class="ttdoc">Represents single memory allocation.</div></div>
-<div class="ttc" id="astruct_vma_allocation_info_html"><div class="ttname"><a href="struct_vma_allocation_info.html">VmaAllocationInfo</a></div><div class="ttdoc">Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo().</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1420</div></div>
-<div class="ttc" id="astruct_vma_allocation_info_html_a5eeffbe2d2f30f53370ff14aefbadbe2"><div class="ttname"><a href="struct_vma_allocation_info.html#a5eeffbe2d2f30f53370ff14aefbadbe2">VmaAllocationInfo::pMappedData</a></div><div class="ttdeci">void * pMappedData</div><div class="ttdoc">Pointer to the beginning of this allocation as mapped data.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1462</div></div>
+<div class="ttc" id="astruct_vma_allocation_info_html"><div class="ttname"><a href="struct_vma_allocation_info.html">VmaAllocationInfo</a></div><div class="ttdoc">Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo().</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1441</div></div>
+<div class="ttc" id="astruct_vma_allocation_info_html_a5eeffbe2d2f30f53370ff14aefbadbe2"><div class="ttname"><a href="struct_vma_allocation_info.html#a5eeffbe2d2f30f53370ff14aefbadbe2">VmaAllocationInfo::pMappedData</a></div><div class="ttdeci">void * pMappedData</div><div class="ttdoc">Pointer to the beginning of this allocation as mapped data.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1483</div></div>
 </div><!-- fragment --><dl class="section note"><dt>Note</dt><dd><a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a11da372cc3a82931c5e5d6146cd9dd1f" title="Set this flag to use a memory that will be persistently mapped and retrieve pointer to it.">VMA_ALLOCATION_CREATE_MAPPED_BIT</a> by itself doesn't guarantee that the allocation will end up in a mappable memory type. For this, you need to also specify <a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a9be224df3bfc1cfa06203aed689a30c5">VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT</a> or <a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597add61238d98e20917b9a06c617763f492">VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT</a>. <a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a11da372cc3a82931c5e5d6146cd9dd1f" title="Set this flag to use a memory that will be persistently mapped and retrieve pointer to it.">VMA_ALLOCATION_CREATE_MAPPED_BIT</a> only guarantees that if the memory is <code>HOST_VISIBLE</code>, the allocation will be mapped on creation. For an example of how to make use of this fact, see section <a class="el" href="usage_patterns.html#usage_patterns_advanced_data_uploading">Advanced data uploading</a>.</dd></dl>
 <h1><a class="anchor" id="memory_mapping_cache_control"></a>
 Cache flush and invalidate</h1>
diff --git a/docs/html/menudata.js b/docs/html/menudata.js
index 4a1228a..74a8ea2 100644
--- a/docs/html/menudata.js
+++ b/docs/html/menudata.js
@@ -63,7 +63,7 @@
 {text:"File Members",url:"globals.html",children:[
 {text:"All",url:"globals.html",children:[
 {text:"p",url:"globals.html#index_p"},
-{text:"v",url:"globals_v.html#index_v"}]},
+{text:"v",url:"globals.html#index_v"}]},
 {text:"Functions",url:"globals_func.html",children:[
 {text:"v",url:"globals_func.html#index_v"}]},
 {text:"Typedefs",url:"globals_type.html",children:[
diff --git a/docs/html/quick_start.html b/docs/html/quick_start.html
index a3f353a..8f51464 100644
--- a/docs/html/quick_start.html
+++ b/docs/html/quick_start.html
@@ -148,12 +148,12 @@
 <div class="line"><a class="code hl_struct" href="struct_vma_allocator.html">VmaAllocator</a> allocator;</div>
 <div class="line"><a class="code hl_function" href="group__group__init.html#ga200692051ddb34240248234f5f4c17bb">vmaCreateAllocator</a>(&amp;allocatorCreateInfo, &amp;allocator);</div>
 <div class="ttc" id="agroup__group__init_html_ga200692051ddb34240248234f5f4c17bb"><div class="ttname"><a href="group__group__init.html#ga200692051ddb34240248234f5f4c17bb">vmaCreateAllocator</a></div><div class="ttdeci">VkResult vmaCreateAllocator(const VmaAllocatorCreateInfo *pCreateInfo, VmaAllocator *pAllocator)</div><div class="ttdoc">Creates VmaAllocator object.</div></div>
-<div class="ttc" id="astruct_vma_allocator_create_info_html"><div class="ttname"><a href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a></div><div class="ttdoc">Description of a Allocator to be created.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1084</div></div>
-<div class="ttc" id="astruct_vma_allocator_create_info_html_a08230f04ae6ccf8a78150a9e829a7156"><div class="ttname"><a href="struct_vma_allocator_create_info.html#a08230f04ae6ccf8a78150a9e829a7156">VmaAllocatorCreateInfo::physicalDevice</a></div><div class="ttdeci">VkPhysicalDevice physicalDevice</div><div class="ttdoc">Vulkan physical device.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1089</div></div>
-<div class="ttc" id="astruct_vma_allocator_create_info_html_a3dc197be3227da7338b1643f70db36bd"><div class="ttname"><a href="struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd">VmaAllocatorCreateInfo::pVulkanFunctions</a></div><div class="ttdeci">const VmaVulkanFunctions * pVulkanFunctions</div><div class="ttdoc">Pointers to Vulkan functions. Can be null.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1132</div></div>
-<div class="ttc" id="astruct_vma_allocator_create_info_html_a70dd42e29b1df1d1b9b61532ae0b370b"><div class="ttname"><a href="struct_vma_allocator_create_info.html#a70dd42e29b1df1d1b9b61532ae0b370b">VmaAllocatorCreateInfo::instance</a></div><div class="ttdeci">VkInstance instance</div><div class="ttdoc">Handle to Vulkan instance object.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1137</div></div>
-<div class="ttc" id="astruct_vma_allocator_create_info_html_ad924ddd77b04039c88d0c09b0ffcd500"><div class="ttname"><a href="struct_vma_allocator_create_info.html#ad924ddd77b04039c88d0c09b0ffcd500">VmaAllocatorCreateInfo::device</a></div><div class="ttdeci">VkDevice device</div><div class="ttdoc">Vulkan device.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1092</div></div>
-<div class="ttc" id="astruct_vma_allocator_create_info_html_ae0ffc55139b54520a6bb704b29ffc285"><div class="ttname"><a href="struct_vma_allocator_create_info.html#ae0ffc55139b54520a6bb704b29ffc285">VmaAllocatorCreateInfo::vulkanApiVersion</a></div><div class="ttdeci">uint32_t vulkanApiVersion</div><div class="ttdoc">Optional. The highest version of Vulkan that the application is designed to use.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1146</div></div>
+<div class="ttc" id="astruct_vma_allocator_create_info_html"><div class="ttname"><a href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a></div><div class="ttdoc">Description of a Allocator to be created.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1105</div></div>
+<div class="ttc" id="astruct_vma_allocator_create_info_html_a08230f04ae6ccf8a78150a9e829a7156"><div class="ttname"><a href="struct_vma_allocator_create_info.html#a08230f04ae6ccf8a78150a9e829a7156">VmaAllocatorCreateInfo::physicalDevice</a></div><div class="ttdeci">VkPhysicalDevice physicalDevice</div><div class="ttdoc">Vulkan physical device.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1110</div></div>
+<div class="ttc" id="astruct_vma_allocator_create_info_html_a3dc197be3227da7338b1643f70db36bd"><div class="ttname"><a href="struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd">VmaAllocatorCreateInfo::pVulkanFunctions</a></div><div class="ttdeci">const VmaVulkanFunctions * pVulkanFunctions</div><div class="ttdoc">Pointers to Vulkan functions. Can be null.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1153</div></div>
+<div class="ttc" id="astruct_vma_allocator_create_info_html_a70dd42e29b1df1d1b9b61532ae0b370b"><div class="ttname"><a href="struct_vma_allocator_create_info.html#a70dd42e29b1df1d1b9b61532ae0b370b">VmaAllocatorCreateInfo::instance</a></div><div class="ttdeci">VkInstance instance</div><div class="ttdoc">Handle to Vulkan instance object.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1158</div></div>
+<div class="ttc" id="astruct_vma_allocator_create_info_html_ad924ddd77b04039c88d0c09b0ffcd500"><div class="ttname"><a href="struct_vma_allocator_create_info.html#ad924ddd77b04039c88d0c09b0ffcd500">VmaAllocatorCreateInfo::device</a></div><div class="ttdeci">VkDevice device</div><div class="ttdoc">Vulkan device.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1113</div></div>
+<div class="ttc" id="astruct_vma_allocator_create_info_html_ae0ffc55139b54520a6bb704b29ffc285"><div class="ttname"><a href="struct_vma_allocator_create_info.html#ae0ffc55139b54520a6bb704b29ffc285">VmaAllocatorCreateInfo::vulkanApiVersion</a></div><div class="ttdeci">uint32_t vulkanApiVersion</div><div class="ttdoc">Optional. The highest version of Vulkan that the application is designed to use.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1167</div></div>
 <div class="ttc" id="astruct_vma_allocator_html"><div class="ttname"><a href="struct_vma_allocator.html">VmaAllocator</a></div><div class="ttdoc">Represents main object of this library initialized.</div></div>
 </div><!-- fragment --><h1><a class="anchor" id="quick_start_resource_allocation"></a>
 Resource allocation</h1>
@@ -175,8 +175,8 @@
 <div class="line"><a class="code hl_function" href="group__group__alloc.html#gac72ee55598617e8eecca384e746bab51">vmaCreateBuffer</a>(allocator, &amp;bufferInfo, &amp;allocInfo, &amp;buffer, &amp;allocation, <span class="keyword">nullptr</span>);</div>
 <div class="ttc" id="agroup__group__alloc_html_gac72ee55598617e8eecca384e746bab51"><div class="ttname"><a href="group__group__alloc.html#gac72ee55598617e8eecca384e746bab51">vmaCreateBuffer</a></div><div class="ttdeci">VkResult vmaCreateBuffer(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkBuffer *pBuffer, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)</div><div class="ttdoc">Creates a new VkBuffer, allocates and binds memory for it.</div></div>
 <div class="ttc" id="agroup__group__alloc_html_ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e"><div class="ttname"><a href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e">VMA_MEMORY_USAGE_AUTO</a></div><div class="ttdeci">@ VMA_MEMORY_USAGE_AUTO</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:495</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html"><div class="ttname"><a href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a></div><div class="ttdoc">Parameters of new VmaAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1305</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_accb8b06b1f677d858cb9af20705fa910"><div class="ttname"><a href="struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910">VmaAllocationCreateInfo::usage</a></div><div class="ttdeci">VmaMemoryUsage usage</div><div class="ttdoc">Intended usage of memory.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1313</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html"><div class="ttname"><a href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a></div><div class="ttdoc">Parameters of new VmaAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1326</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_accb8b06b1f677d858cb9af20705fa910"><div class="ttname"><a href="struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910">VmaAllocationCreateInfo::usage</a></div><div class="ttdeci">VmaMemoryUsage usage</div><div class="ttdoc">Intended usage of memory.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1334</div></div>
 <div class="ttc" id="astruct_vma_allocation_html"><div class="ttname"><a href="struct_vma_allocation.html">VmaAllocation</a></div><div class="ttdoc">Represents single memory allocation.</div></div>
 </div><!-- fragment --><p >Don't forget to destroy your objects when no longer needed:</p>
 <div class="fragment"><div class="line"><a class="code hl_function" href="group__group__alloc.html#ga0d9f4e4ba5bf9aab1f1c746387753d77">vmaDestroyBuffer</a>(allocator, buffer, allocation);</div>
diff --git a/docs/html/resource_aliasing.html b/docs/html/resource_aliasing.html
index be1487e..75643d0 100644
--- a/docs/html/resource_aliasing.html
+++ b/docs/html/resource_aliasing.html
@@ -147,8 +147,8 @@
 <div class="ttc" id="agroup__group__alloc_html_ga3d3ca45799923aa5d138e9e5f9eb2da5"><div class="ttname"><a href="group__group__alloc.html#ga3d3ca45799923aa5d138e9e5f9eb2da5">vmaBindImageMemory</a></div><div class="ttdeci">VkResult vmaBindImageMemory(VmaAllocator allocator, VmaAllocation allocation, VkImage image)</div><div class="ttdoc">Binds image to allocation.</div></div>
 <div class="ttc" id="agroup__group__alloc_html_ga5fea5518972ae9094b1526cbcb19b05f"><div class="ttname"><a href="group__group__alloc.html#ga5fea5518972ae9094b1526cbcb19b05f">vmaFreeMemory</a></div><div class="ttdeci">void vmaFreeMemory(VmaAllocator allocator, const VmaAllocation allocation)</div><div class="ttdoc">Frees memory previously allocated using vmaAllocateMemory(), vmaAllocateMemoryForBuffer(),...</div></div>
 <div class="ttc" id="agroup__group__alloc_html_gabf28077dbf82d0908b8acbe8ee8dd9b8"><div class="ttname"><a href="group__group__alloc.html#gabf28077dbf82d0908b8acbe8ee8dd9b8">vmaAllocateMemory</a></div><div class="ttdeci">VkResult vmaAllocateMemory(VmaAllocator allocator, const VkMemoryRequirements *pVkMemoryRequirements, const VmaAllocationCreateInfo *pCreateInfo, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)</div><div class="ttdoc">General purpose memory allocation.</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html"><div class="ttname"><a href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a></div><div class="ttdoc">Parameters of new VmaAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1305</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_a7fe8d81a1ad10b2a2faacacee5b15d6d"><div class="ttname"><a href="struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d">VmaAllocationCreateInfo::preferredFlags</a></div><div class="ttdeci">VkMemoryPropertyFlags preferredFlags</div><div class="ttdoc">Flags that preferably should be set in a memory type chosen for an allocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1323</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html"><div class="ttname"><a href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a></div><div class="ttdoc">Parameters of new VmaAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1326</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_a7fe8d81a1ad10b2a2faacacee5b15d6d"><div class="ttname"><a href="struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d">VmaAllocationCreateInfo::preferredFlags</a></div><div class="ttdeci">VkMemoryPropertyFlags preferredFlags</div><div class="ttdoc">Flags that preferably should be set in a memory type chosen for an allocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1344</div></div>
 <div class="ttc" id="astruct_vma_allocation_html"><div class="ttname"><a href="struct_vma_allocation.html">VmaAllocation</a></div><div class="ttdoc">Represents single memory allocation.</div></div>
 </div><!-- fragment --><p >Remember that using resources that alias in memory requires proper synchronization. You need to issue a memory barrier to make sure commands that use <code>img1</code> and <code>img2</code> 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 <code>img1</code> and then want to use <code>img2</code>, you need to issue an image memory barrier for <code>img2</code> with <code>oldLayout</code> = <code>VK_IMAGE_LAYOUT_UNDEFINED</code>.</p>
 <p >Additional considerations:</p>
diff --git a/docs/html/search/all_11.js b/docs/html/search/all_11.js
index 526451a..58209f7 100644
--- a/docs/html/search/all_11.js
+++ b/docs/html/search/all_11.js
@@ -65,121 +65,121 @@
   ['vma_5fbuffer_5fsuballocation_5fcreate_5fdedicated_5fbuffer_5fbit_62',['VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a',1,'vk_mem_alloc.h']]],
   ['vma_5fbuffer_5fsuballocation_5fcreate_5fflag_5fbits_5fmax_5fenum_63',['VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaec0e2b1cec0f2337ad134cec5aead0df',1,'vk_mem_alloc.h']]],
   ['vma_5fbuffer_5fsuballocation_5fcreate_5fnever_5fallocate_5fbit_64',['VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012',1,'vk_mem_alloc.h']]],
-  ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmask_65',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388',1,'vk_mem_alloc.h']]],
-  ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_66',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb',1,'vk_mem_alloc.h']]],
-  ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_67',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099',1,'vk_mem_alloc.h']]],
-  ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_68',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30',1,'vk_mem_alloc.h']]],
-  ['vma_5fbuffer_5fsuballocation_5fcreate_5fwithin_5fbudget_5fbit_69',['VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd',1,'vk_mem_alloc.h']]],
-  ['vma_5fdedicated_5fallocation_70',['VMA_DEDICATED_ALLOCATION',['../vk__mem__alloc_8h.html#af7b860e63b96d11e44ae8587ba06bbf4',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fflag_5falgorithm_5fbalanced_5fbit_71',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50caec35a4138111605a6ff32ca61aa871b6',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fflag_5falgorithm_5fextensive_5fbit_72',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cae45a9469e5337731627758671741e412',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fflag_5falgorithm_5ffast_5fbit_73',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fflag_5falgorithm_5ffull_5fbit_74',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cafa162eac5be800bcdd4011427a71156d',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fflag_5falgorithm_5fmask_75',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cabcbbdb3bfd53c4c3ab4eaeb5fd4894e9',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fflag_5fbits_5fmax_5fenum_76',['VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cab87ec33154803bfeb5ac2b379f1d6a97',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fmove_5foperation_5fcopy_77',['VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad4a06ac46c4cb1c67b0ebc1edfab9f18',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fmove_5foperation_5fdestroy_78',['VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257a9786f8492a9be2c03bd26395e352ab85',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fmove_5foperation_5fignore_79',['VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad25bc6f816b226b4fd5170e845f218d2',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fbudget_80',['VMA_MEMORY_BUDGET',['../vk__mem__alloc_8h.html#a05decf1cf4ebf767beba7acca6c1ec3a',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fauto_81',['VMA_MEMORY_USAGE_AUTO',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fauto_5fprefer_5fdevice_82',['VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccae2adb696d6a73c18bb20c23666661327',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fauto_5fprefer_5fhost_83',['VMA_MEMORY_USAGE_AUTO_PREFER_HOST',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9b422585242160b8ed3418310ee6664d',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fcpu_5fcopy_84',['VMA_MEMORY_USAGE_CPU_COPY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca416a444d4d0fc20067c3f76f32ff2500',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fcpu_5fonly_85',['VMA_MEMORY_USAGE_CPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca40bdf4cddeffeb12f43d45ca1286e0a5',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fcpu_5fto_5fgpu_86',['VMA_MEMORY_USAGE_CPU_TO_GPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9066b52c5a7079bb74a69aaf8b92ff67',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fgpu_5flazily_5fallocated_87',['VMA_MEMORY_USAGE_GPU_LAZILY_ALLOCATED',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca835333d9072db63a653818030e17614d',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fgpu_5fonly_88',['VMA_MEMORY_USAGE_GPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccac6b5dc1432d88647aa4cd456246eadf7',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fgpu_5fto_5fcpu_89',['VMA_MEMORY_USAGE_GPU_TO_CPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca7b586d2fdaf82a463b58f581ed72be27',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fmax_5fenum_90',['VMA_MEMORY_USAGE_MAX_ENUM',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca091e69437ef693e8d0d287f1c719ba6e',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5funknown_91',['VMA_MEMORY_USAGE_UNKNOWN',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccaf50d27e34e0925cf3a63db8c839121dd',1,'vk_mem_alloc.h']]],
-  ['vma_5fpool_5fcreate_5falgorithm_5fmask_92',['VMA_POOL_CREATE_ALGORITHM_MASK',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7af4d270f8f42517a0f70037ceb6ac1d9c',1,'vk_mem_alloc.h']]],
-  ['vma_5fpool_5fcreate_5fflag_5fbits_5fmax_5fenum_93',['VMA_POOL_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a1c7312bea9ea246846b9054fd6bd6aec',1,'vk_mem_alloc.h']]],
-  ['vma_5fpool_5fcreate_5fignore_5fbuffer_5fimage_5fgranularity_5fbit_94',['VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a9f1a499508a8edb4e8ba40aa0290a3d2',1,'vk_mem_alloc.h']]],
-  ['vma_5fpool_5fcreate_5flinear_5falgorithm_5fbit_95',['VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a13c8a444197c67866be9cb05599fc726',1,'vk_mem_alloc.h']]],
-  ['vma_5fstats_5fstring_5fenabled_96',['VMA_STATS_STRING_ENABLED',['../vk__mem__alloc_8h.html#ae25f0d55fd91cb166f002b63244800e1',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum_97',['VMA_VIRTUAL_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac1163c03ea837fa663462dc286d6a1a9',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmask_98',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MASK',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac5b5e45c335368d18df59c9f27df17e3',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_99',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ae2a9591a62b5e3b1bdcbc81c6188a1bf',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_100',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a3bb82d2aedd587a64846a1d7778852e6',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_101',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a562d10a46012719d33167d3dc5dbbf9b',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fallocation_5fcreate_5fupper_5faddress_5fbit_102',['VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a9524a329a55b5ec390d57d90b67ad78e',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fblock_5fcreate_5falgorithm_5fmask_103',['VMA_VIRTUAL_BLOCK_CREATE_ALGORITHM_MASK',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaaf9487467136e1a9e371894dc3a7c4844',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fblock_5fcreate_5fflag_5fbits_5fmax_5fenum_104',['VMA_VIRTUAL_BLOCK_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaa5fc0d333c3d5687a8bbf57df9b377a87',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fblock_5fcreate_5flinear_5falgorithm_5fbit_105',['VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaae6423e2fa2f3c9211b21c819e3f10f96',1,'vk_mem_alloc.h']]],
-  ['vmaallocatememory_106',['vmaAllocateMemory',['../group__group__alloc.html#gabf28077dbf82d0908b8acbe8ee8dd9b8',1,'vk_mem_alloc.h']]],
-  ['vmaallocatememoryforbuffer_107',['vmaAllocateMemoryForBuffer',['../group__group__alloc.html#ga7fdf64415b6c3d83c454f28d2c53df7b',1,'vk_mem_alloc.h']]],
-  ['vmaallocatememoryforimage_108',['vmaAllocateMemoryForImage',['../group__group__alloc.html#ga0faa3f9e5fb233d29d1e00390650febb',1,'vk_mem_alloc.h']]],
-  ['vmaallocatememorypages_109',['vmaAllocateMemoryPages',['../group__group__alloc.html#gad37e82e492b3de38fc3f4cffd9ad0ae1',1,'vk_mem_alloc.h']]],
-  ['vmaallocation_110',['VmaAllocation',['../struct_vma_allocation.html',1,'']]],
-  ['vmaallocationcreateflagbits_111',['VmaAllocationCreateFlagBits',['../group__group__alloc.html#ga4fceecc301f4064dc808d3cd6c038941',1,'VmaAllocationCreateFlagBits():&#160;vk_mem_alloc.h'],['../group__group__alloc.html#gad9889c10c798b040d59c92f257cae597',1,'VmaAllocationCreateFlagBits():&#160;vk_mem_alloc.h']]],
-  ['vmaallocationcreateflags_112',['VmaAllocationCreateFlags',['../group__group__alloc.html#ga5225e5e11f8376f6a31a1791f3d6e817',1,'vk_mem_alloc.h']]],
-  ['vmaallocationcreateinfo_113',['VmaAllocationCreateInfo',['../struct_vma_allocation_create_info.html',1,'VmaAllocationCreateInfo'],['../group__group__alloc.html#ga3bf110892ea2fb4649fedb68488d026a',1,'VmaAllocationCreateInfo():&#160;vk_mem_alloc.h']]],
-  ['vmaallocationinfo_114',['VmaAllocationInfo',['../struct_vma_allocation_info.html',1,'VmaAllocationInfo'],['../group__group__alloc.html#ga1cf7774606721026a68aabe3af2e5b50',1,'VmaAllocationInfo():&#160;vk_mem_alloc.h']]],
-  ['vmaallocator_115',['VmaAllocator',['../struct_vma_allocator.html',1,'']]],
-  ['vmaallocatorcreateflagbits_116',['VmaAllocatorCreateFlagBits',['../group__group__init.html#ga4f87c9100d154a65a4ad495f7763cf7c',1,'VmaAllocatorCreateFlagBits():&#160;vk_mem_alloc.h'],['../group__group__init.html#gafd73b95e737ee7e76f827cb5472f559f',1,'VmaAllocatorCreateFlagBits():&#160;vk_mem_alloc.h']]],
-  ['vmaallocatorcreateflags_117',['VmaAllocatorCreateFlags',['../group__group__init.html#gacfe6863e160722c2c1bbcf7573fddc4d',1,'vk_mem_alloc.h']]],
-  ['vmaallocatorcreateinfo_118',['VmaAllocatorCreateInfo',['../struct_vma_allocator_create_info.html',1,'VmaAllocatorCreateInfo'],['../group__group__init.html#gaad9652301d33759b83e52d4f3605a14a',1,'VmaAllocatorCreateInfo():&#160;vk_mem_alloc.h']]],
-  ['vmaallocatorinfo_119',['VmaAllocatorInfo',['../struct_vma_allocator_info.html',1,'VmaAllocatorInfo'],['../group__group__init.html#ga1988031b0223fdbd564250fa1edd942c',1,'VmaAllocatorInfo():&#160;vk_mem_alloc.h']]],
-  ['vmabegindefragmentation_120',['vmaBeginDefragmentation',['../group__group__alloc.html#gac3335566858b45541fa9c0d7a6bbb57e',1,'vk_mem_alloc.h']]],
-  ['vmabegindefragmentationpass_121',['vmaBeginDefragmentationPass',['../group__group__alloc.html#ga980d7da2ce3b1fd5c8b8476bc362cc00',1,'vk_mem_alloc.h']]],
-  ['vmabindbuffermemory_122',['vmaBindBufferMemory',['../group__group__alloc.html#ga6b0929b914b60cf2d45cac4bf3547470',1,'vk_mem_alloc.h']]],
-  ['vmabindbuffermemory2_123',['vmaBindBufferMemory2',['../group__group__alloc.html#ga927c944f45e0f2941182abb6f608e64a',1,'vk_mem_alloc.h']]],
-  ['vmabindimagememory_124',['vmaBindImageMemory',['../group__group__alloc.html#ga3d3ca45799923aa5d138e9e5f9eb2da5',1,'vk_mem_alloc.h']]],
-  ['vmabindimagememory2_125',['vmaBindImageMemory2',['../group__group__alloc.html#gaa8251ee81b0045a443e35b8e8aa021bc',1,'vk_mem_alloc.h']]],
-  ['vmabudget_126',['VmaBudget',['../group__group__stats.html#gaa078667e71b1ef24e87a6a30d128381d',1,'VmaBudget():&#160;vk_mem_alloc.h'],['../struct_vma_budget.html',1,'VmaBudget']]],
-  ['vmabufferallocator_127',['VmaBufferAllocator',['../struct_vma_buffer_allocator.html',1,'']]],
-  ['vmabufferallocatorallocate_128',['vmaBufferAllocatorAllocate',['../group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39',1,'vk_mem_alloc.h']]],
-  ['vmabufferallocatorcreateflagbits_129',['VmaBufferAllocatorCreateFlagBits',['../group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08',1,'VmaBufferAllocatorCreateFlagBits():&#160;vk_mem_alloc.h'],['../group__group__buffer__suballocation.html#gab59dc80be7e88530693d2140c7e4baa9',1,'VmaBufferAllocatorCreateFlagBits():&#160;vk_mem_alloc.h']]],
-  ['vmabufferallocatorcreateflags_130',['VmaBufferAllocatorCreateFlags',['../group__group__buffer__suballocation.html#ga524fc82795862079781317e33be657e1',1,'vk_mem_alloc.h']]],
-  ['vmabufferallocatorcreateinfo_131',['VmaBufferAllocatorCreateInfo',['../struct_vma_buffer_allocator_create_info.html',1,'VmaBufferAllocatorCreateInfo'],['../group__group__buffer__suballocation.html#ga07daea3c55e292b9ea9cdbe481f6d598',1,'VmaBufferAllocatorCreateInfo():&#160;vk_mem_alloc.h']]],
-  ['vmabufferallocatorfree_132',['vmaBufferAllocatorFree',['../group__group__buffer__suballocation.html#gaffeae9a3b55e1f1ccaf4dd97d9e74a5f',1,'vk_mem_alloc.h']]],
-  ['vmabuffersuballocation_133',['VmaBufferSuballocation',['../struct_vma_buffer_suballocation.html',1,'']]],
-  ['vmabuffersuballocationcreateflagbits_134',['VmaBufferSuballocationCreateFlagBits',['../group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb',1,'VmaBufferSuballocationCreateFlagBits():&#160;vk_mem_alloc.h'],['../group__group__buffer__suballocation.html#gab4d54a73919432f9d90f5e8cb1752fb0',1,'VmaBufferSuballocationCreateFlagBits():&#160;vk_mem_alloc.h']]],
-  ['vmabuffersuballocationcreateflags_135',['VmaBufferSuballocationCreateFlags',['../group__group__buffer__suballocation.html#ga7445a51cdb572ba54e795c74d8abc2b4',1,'vk_mem_alloc.h']]],
-  ['vmabuffersuballocationcreateinfo_136',['VmaBufferSuballocationCreateInfo',['../struct_vma_buffer_suballocation_create_info.html',1,'VmaBufferSuballocationCreateInfo'],['../group__group__buffer__suballocation.html#ga0ee2c81ee2378cc43620c0d577175935',1,'VmaBufferSuballocationCreateInfo():&#160;vk_mem_alloc.h']]],
-  ['vmabuffersuballocationinfo_137',['VmaBufferSuballocationInfo',['../struct_vma_buffer_suballocation_info.html',1,'VmaBufferSuballocationInfo'],['../group__group__buffer__suballocation.html#ga18bf3079703d3188bb268b5838bb9c22',1,'VmaBufferSuballocationInfo():&#160;vk_mem_alloc.h']]],
-  ['vmacalculatepoolstatistics_138',['vmaCalculatePoolStatistics',['../group__group__stats.html#ga50ba0eb25d2b363b792be4645ca7a380',1,'vk_mem_alloc.h']]],
-  ['vmacalculatestatistics_139',['vmaCalculateStatistics',['../group__group__stats.html#ga36f3484de7aa6cd6edc4de9edfa0ff59',1,'vk_mem_alloc.h']]],
-  ['vmacalculatevirtualblockstatistics_140',['vmaCalculateVirtualBlockStatistics',['../group__group__virtual.html#ga93c5741bca44b43e5b849cacbd616098',1,'vk_mem_alloc.h']]],
-  ['vmacheckcorruption_141',['vmaCheckCorruption',['../group__group__alloc.html#ga49329a7f030dafcf82f7b73334c22e98',1,'vk_mem_alloc.h']]],
-  ['vmacheckpoolcorruption_142',['vmaCheckPoolCorruption',['../group__group__alloc.html#gad535935619c7a549bf837e1bb0068f89',1,'vk_mem_alloc.h']]],
-  ['vmaclearvirtualblock_143',['vmaClearVirtualBlock',['../group__group__virtual.html#ga5eda6f55919fb05bd2f56a112590c571',1,'vk_mem_alloc.h']]],
-  ['vmacreatealiasingbuffer_144',['vmaCreateAliasingBuffer',['../group__group__alloc.html#ga60d5d4803e3c82505a2bfddb929adb03',1,'vk_mem_alloc.h']]],
-  ['vmacreatealiasingbuffer2_145',['vmaCreateAliasingBuffer2',['../group__group__alloc.html#gaf0cf014344213e117bd9f9cf5f928122',1,'vk_mem_alloc.h']]],
-  ['vmacreatealiasingimage_146',['vmaCreateAliasingImage',['../group__group__alloc.html#gaebc4db1f94b53dba2338b4c0fd80d0dc',1,'vk_mem_alloc.h']]],
-  ['vmacreatealiasingimage2_147',['vmaCreateAliasingImage2',['../group__group__alloc.html#ga69ac829f5bb0737449fa92c2d971f1bb',1,'vk_mem_alloc.h']]],
-  ['vmacreateallocator_148',['vmaCreateAllocator',['../group__group__init.html#ga200692051ddb34240248234f5f4c17bb',1,'vk_mem_alloc.h']]],
-  ['vmacreatebuffer_149',['vmaCreateBuffer',['../group__group__alloc.html#gac72ee55598617e8eecca384e746bab51',1,'vk_mem_alloc.h']]],
-  ['vmacreatebufferallocator_150',['vmaCreateBufferAllocator',['../group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66',1,'vk_mem_alloc.h']]],
-  ['vmacreatebufferwithalignment_151',['vmaCreateBufferWithAlignment',['../group__group__alloc.html#gaa06a690013a0d01e60894ac378083834',1,'vk_mem_alloc.h']]],
-  ['vmacreateimage_152',['vmaCreateImage',['../group__group__alloc.html#ga02a94f25679275851a53e82eacbcfc73',1,'vk_mem_alloc.h']]],
-  ['vmacreatepool_153',['vmaCreatePool',['../group__group__alloc.html#ga5c8770ded7c59c8caac6de0c2cb00b50',1,'vk_mem_alloc.h']]],
-  ['vmacreatevirtualblock_154',['vmaCreateVirtualBlock',['../group__group__virtual.html#gab585754076877265fdae33e5c40ef13b',1,'vk_mem_alloc.h']]],
-  ['vmadefragmentationcontext_155',['VmaDefragmentationContext',['../struct_vma_defragmentation_context.html',1,'']]],
-  ['vmadefragmentationflagbits_156',['VmaDefragmentationFlagBits',['../group__group__alloc.html#ga13415cc0b443353a7b5abda300b833fc',1,'VmaDefragmentationFlagBits():&#160;vk_mem_alloc.h'],['../group__group__alloc.html#ga6552a65b71d16f378c6994b3ceaef50c',1,'VmaDefragmentationFlagBits():&#160;vk_mem_alloc.h']]],
-  ['vmadefragmentationflags_157',['VmaDefragmentationFlags',['../group__group__alloc.html#ga88a77cef37e5d3c4fc9eb328885d048d',1,'vk_mem_alloc.h']]],
-  ['vmadefragmentationinfo_158',['VmaDefragmentationInfo',['../struct_vma_defragmentation_info.html',1,'VmaDefragmentationInfo'],['../group__group__alloc.html#ga2bf47f96bf92bed2a49461bd9af3acfa',1,'VmaDefragmentationInfo():&#160;vk_mem_alloc.h']]],
-  ['vmadefragmentationmove_159',['VmaDefragmentationMove',['../struct_vma_defragmentation_move.html',1,'VmaDefragmentationMove'],['../group__group__alloc.html#ga563f4b43d3e31ed603d80cacc9ba8589',1,'VmaDefragmentationMove():&#160;vk_mem_alloc.h']]],
-  ['vmadefragmentationmoveoperation_160',['VmaDefragmentationMoveOperation',['../group__group__alloc.html#gada9e3861caf96f08894b0bcc160ec257',1,'VmaDefragmentationMoveOperation():&#160;vk_mem_alloc.h'],['../group__group__alloc.html#ga2ea666deeb3c2c74806a097e27cdb4a1',1,'VmaDefragmentationMoveOperation():&#160;vk_mem_alloc.h']]],
-  ['vmadefragmentationpassmoveinfo_161',['VmaDefragmentationPassMoveInfo',['../struct_vma_defragmentation_pass_move_info.html',1,'VmaDefragmentationPassMoveInfo'],['../group__group__alloc.html#gad6799e8e2b1527abfc84d33bc44aeaf5',1,'VmaDefragmentationPassMoveInfo():&#160;vk_mem_alloc.h']]],
-  ['vmadefragmentationstats_162',['VmaDefragmentationStats',['../struct_vma_defragmentation_stats.html',1,'VmaDefragmentationStats'],['../group__group__alloc.html#gad94034192259c2e34a4d1c5e27810403',1,'VmaDefragmentationStats():&#160;vk_mem_alloc.h']]],
-  ['vmadestroyallocator_163',['vmaDestroyAllocator',['../group__group__init.html#gaa8d164061c88f22fb1fd3c8f3534bc1d',1,'vk_mem_alloc.h']]],
-  ['vmadestroybuffer_164',['vmaDestroyBuffer',['../group__group__alloc.html#ga0d9f4e4ba5bf9aab1f1c746387753d77',1,'vk_mem_alloc.h']]],
-  ['vmadestroybufferallocator_165',['vmaDestroyBufferAllocator',['../group__group__buffer__suballocation.html#ga0583fc4a16f1b38d02b2d57a46a20183',1,'vk_mem_alloc.h']]],
-  ['vmadestroyimage_166',['vmaDestroyImage',['../group__group__alloc.html#gae50d2cb3b4a3bfd4dd40987234e50e7e',1,'vk_mem_alloc.h']]],
-  ['vmadestroypool_167',['vmaDestroyPool',['../group__group__alloc.html#ga5485779c8f1948238fc4e92232fa65e1',1,'vk_mem_alloc.h']]],
-  ['vmadestroyvirtualblock_168',['vmaDestroyVirtualBlock',['../group__group__virtual.html#ga3795f7783ae2c182cede067d656f66a5',1,'vk_mem_alloc.h']]],
-  ['vmadetailedstatistics_169',['VmaDetailedStatistics',['../struct_vma_detailed_statistics.html',1,'VmaDetailedStatistics'],['../group__group__stats.html#ga9ab0c535a6ca655dc63b8609ab4b8394',1,'VmaDetailedStatistics():&#160;vk_mem_alloc.h']]],
-  ['vmadevicememorycallbacks_170',['VmaDeviceMemoryCallbacks',['../struct_vma_device_memory_callbacks.html',1,'VmaDeviceMemoryCallbacks'],['../group__group__init.html#ga77692d3c8770ea8882d573206bd27b2b',1,'VmaDeviceMemoryCallbacks():&#160;vk_mem_alloc.h']]],
-  ['vmaenddefragmentation_171',['vmaEndDefragmentation',['../group__group__alloc.html#ga59f01ca3d53d50b7cca9b442b77a3e87',1,'vk_mem_alloc.h']]],
-  ['vmaenddefragmentationpass_172',['vmaEndDefragmentationPass',['../group__group__alloc.html#gaded05a445742a00718ee766144c5c226',1,'vk_mem_alloc.h']]],
-  ['vmafindmemorytypeindex_173',['vmaFindMemoryTypeIndex',['../group__group__alloc.html#gaef15a94b58fbcb0fe706d5720e84a74a',1,'vk_mem_alloc.h']]],
-  ['vmafindmemorytypeindexforbufferinfo_174',['vmaFindMemoryTypeIndexForBufferInfo',['../group__group__alloc.html#gae790ab9ffaf7667fb8f62523e6897888',1,'vk_mem_alloc.h']]],
-  ['vmafindmemorytypeindexforimageinfo_175',['vmaFindMemoryTypeIndexForImageInfo',['../group__group__alloc.html#ga088da83d8eaf3ce9056d9ea0b981d472',1,'vk_mem_alloc.h']]],
-  ['vmaflushallocation_176',['vmaFlushAllocation',['../group__group__alloc.html#ga30c37c1eec6025f397be41644f48490f',1,'vk_mem_alloc.h']]],
-  ['vmaflushallocations_177',['vmaFlushAllocations',['../group__group__alloc.html#gac3dd00da721875ed99fa8a881922bdfc',1,'vk_mem_alloc.h']]],
-  ['vmaflushbuffersuballocation_178',['vmaFlushBufferSuballocation',['../group__group__buffer__suballocation.html#gae20326d64236fe7ea9332483b83cab0d',1,'vk_mem_alloc.h']]],
-  ['vmaflushbuffersuballocations_179',['vmaFlushBufferSuballocations',['../group__group__buffer__suballocation.html#ga199d3aa9d77cd58670c06da2b6c5f53c',1,'vk_mem_alloc.h']]],
+  ['vma_5fbuffer_5fsuballocation_5fcreate_5fnever_5fcreate_5fbuffer_5fbit_65',['VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaa891857e2a3c8307408b4e0763c158f2',1,'vk_mem_alloc.h']]],
+  ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmask_66',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388',1,'vk_mem_alloc.h']]],
+  ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_67',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb',1,'vk_mem_alloc.h']]],
+  ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_68',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099',1,'vk_mem_alloc.h']]],
+  ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_69',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30',1,'vk_mem_alloc.h']]],
+  ['vma_5fbuffer_5fsuballocation_5fcreate_5fwithin_5fbudget_5fbit_70',['VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd',1,'vk_mem_alloc.h']]],
+  ['vma_5fdedicated_5fallocation_71',['VMA_DEDICATED_ALLOCATION',['../vk__mem__alloc_8h.html#af7b860e63b96d11e44ae8587ba06bbf4',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fflag_5falgorithm_5fbalanced_5fbit_72',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50caec35a4138111605a6ff32ca61aa871b6',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fflag_5falgorithm_5fextensive_5fbit_73',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cae45a9469e5337731627758671741e412',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fflag_5falgorithm_5ffast_5fbit_74',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fflag_5falgorithm_5ffull_5fbit_75',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cafa162eac5be800bcdd4011427a71156d',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fflag_5falgorithm_5fmask_76',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cabcbbdb3bfd53c4c3ab4eaeb5fd4894e9',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fflag_5fbits_5fmax_5fenum_77',['VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cab87ec33154803bfeb5ac2b379f1d6a97',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fmove_5foperation_5fcopy_78',['VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad4a06ac46c4cb1c67b0ebc1edfab9f18',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fmove_5foperation_5fdestroy_79',['VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257a9786f8492a9be2c03bd26395e352ab85',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fmove_5foperation_5fignore_80',['VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad25bc6f816b226b4fd5170e845f218d2',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fbudget_81',['VMA_MEMORY_BUDGET',['../vk__mem__alloc_8h.html#a05decf1cf4ebf767beba7acca6c1ec3a',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fauto_82',['VMA_MEMORY_USAGE_AUTO',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fauto_5fprefer_5fdevice_83',['VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccae2adb696d6a73c18bb20c23666661327',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fauto_5fprefer_5fhost_84',['VMA_MEMORY_USAGE_AUTO_PREFER_HOST',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9b422585242160b8ed3418310ee6664d',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fcpu_5fcopy_85',['VMA_MEMORY_USAGE_CPU_COPY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca416a444d4d0fc20067c3f76f32ff2500',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fcpu_5fonly_86',['VMA_MEMORY_USAGE_CPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca40bdf4cddeffeb12f43d45ca1286e0a5',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fcpu_5fto_5fgpu_87',['VMA_MEMORY_USAGE_CPU_TO_GPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9066b52c5a7079bb74a69aaf8b92ff67',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fgpu_5flazily_5fallocated_88',['VMA_MEMORY_USAGE_GPU_LAZILY_ALLOCATED',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca835333d9072db63a653818030e17614d',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fgpu_5fonly_89',['VMA_MEMORY_USAGE_GPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccac6b5dc1432d88647aa4cd456246eadf7',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fgpu_5fto_5fcpu_90',['VMA_MEMORY_USAGE_GPU_TO_CPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca7b586d2fdaf82a463b58f581ed72be27',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fmax_5fenum_91',['VMA_MEMORY_USAGE_MAX_ENUM',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca091e69437ef693e8d0d287f1c719ba6e',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5funknown_92',['VMA_MEMORY_USAGE_UNKNOWN',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccaf50d27e34e0925cf3a63db8c839121dd',1,'vk_mem_alloc.h']]],
+  ['vma_5fpool_5fcreate_5falgorithm_5fmask_93',['VMA_POOL_CREATE_ALGORITHM_MASK',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7af4d270f8f42517a0f70037ceb6ac1d9c',1,'vk_mem_alloc.h']]],
+  ['vma_5fpool_5fcreate_5fflag_5fbits_5fmax_5fenum_94',['VMA_POOL_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a1c7312bea9ea246846b9054fd6bd6aec',1,'vk_mem_alloc.h']]],
+  ['vma_5fpool_5fcreate_5fignore_5fbuffer_5fimage_5fgranularity_5fbit_95',['VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a9f1a499508a8edb4e8ba40aa0290a3d2',1,'vk_mem_alloc.h']]],
+  ['vma_5fpool_5fcreate_5flinear_5falgorithm_5fbit_96',['VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a13c8a444197c67866be9cb05599fc726',1,'vk_mem_alloc.h']]],
+  ['vma_5fstats_5fstring_5fenabled_97',['VMA_STATS_STRING_ENABLED',['../vk__mem__alloc_8h.html#ae25f0d55fd91cb166f002b63244800e1',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum_98',['VMA_VIRTUAL_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac1163c03ea837fa663462dc286d6a1a9',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmask_99',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MASK',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac5b5e45c335368d18df59c9f27df17e3',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_100',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ae2a9591a62b5e3b1bdcbc81c6188a1bf',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_101',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a3bb82d2aedd587a64846a1d7778852e6',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_102',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a562d10a46012719d33167d3dc5dbbf9b',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fallocation_5fcreate_5fupper_5faddress_5fbit_103',['VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a9524a329a55b5ec390d57d90b67ad78e',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fblock_5fcreate_5falgorithm_5fmask_104',['VMA_VIRTUAL_BLOCK_CREATE_ALGORITHM_MASK',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaaf9487467136e1a9e371894dc3a7c4844',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fblock_5fcreate_5fflag_5fbits_5fmax_5fenum_105',['VMA_VIRTUAL_BLOCK_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaa5fc0d333c3d5687a8bbf57df9b377a87',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fblock_5fcreate_5flinear_5falgorithm_5fbit_106',['VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaae6423e2fa2f3c9211b21c819e3f10f96',1,'vk_mem_alloc.h']]],
+  ['vmaallocatememory_107',['vmaAllocateMemory',['../group__group__alloc.html#gabf28077dbf82d0908b8acbe8ee8dd9b8',1,'vk_mem_alloc.h']]],
+  ['vmaallocatememoryforbuffer_108',['vmaAllocateMemoryForBuffer',['../group__group__alloc.html#ga7fdf64415b6c3d83c454f28d2c53df7b',1,'vk_mem_alloc.h']]],
+  ['vmaallocatememoryforimage_109',['vmaAllocateMemoryForImage',['../group__group__alloc.html#ga0faa3f9e5fb233d29d1e00390650febb',1,'vk_mem_alloc.h']]],
+  ['vmaallocatememorypages_110',['vmaAllocateMemoryPages',['../group__group__alloc.html#gad37e82e492b3de38fc3f4cffd9ad0ae1',1,'vk_mem_alloc.h']]],
+  ['vmaallocation_111',['VmaAllocation',['../struct_vma_allocation.html',1,'']]],
+  ['vmaallocationcreateflagbits_112',['VmaAllocationCreateFlagBits',['../group__group__alloc.html#gad9889c10c798b040d59c92f257cae597',1,'VmaAllocationCreateFlagBits():&#160;vk_mem_alloc.h'],['../group__group__alloc.html#ga4fceecc301f4064dc808d3cd6c038941',1,'VmaAllocationCreateFlagBits():&#160;vk_mem_alloc.h']]],
+  ['vmaallocationcreateflags_113',['VmaAllocationCreateFlags',['../group__group__alloc.html#ga5225e5e11f8376f6a31a1791f3d6e817',1,'vk_mem_alloc.h']]],
+  ['vmaallocationcreateinfo_114',['VmaAllocationCreateInfo',['../struct_vma_allocation_create_info.html',1,'VmaAllocationCreateInfo'],['../group__group__alloc.html#ga3bf110892ea2fb4649fedb68488d026a',1,'VmaAllocationCreateInfo():&#160;vk_mem_alloc.h']]],
+  ['vmaallocationinfo_115',['VmaAllocationInfo',['../struct_vma_allocation_info.html',1,'VmaAllocationInfo'],['../group__group__alloc.html#ga1cf7774606721026a68aabe3af2e5b50',1,'VmaAllocationInfo():&#160;vk_mem_alloc.h']]],
+  ['vmaallocator_116',['VmaAllocator',['../struct_vma_allocator.html',1,'']]],
+  ['vmaallocatorcreateflagbits_117',['VmaAllocatorCreateFlagBits',['../group__group__init.html#gafd73b95e737ee7e76f827cb5472f559f',1,'VmaAllocatorCreateFlagBits():&#160;vk_mem_alloc.h'],['../group__group__init.html#ga4f87c9100d154a65a4ad495f7763cf7c',1,'VmaAllocatorCreateFlagBits():&#160;vk_mem_alloc.h']]],
+  ['vmaallocatorcreateflags_118',['VmaAllocatorCreateFlags',['../group__group__init.html#gacfe6863e160722c2c1bbcf7573fddc4d',1,'vk_mem_alloc.h']]],
+  ['vmaallocatorcreateinfo_119',['VmaAllocatorCreateInfo',['../struct_vma_allocator_create_info.html',1,'VmaAllocatorCreateInfo'],['../group__group__init.html#gaad9652301d33759b83e52d4f3605a14a',1,'VmaAllocatorCreateInfo():&#160;vk_mem_alloc.h']]],
+  ['vmaallocatorinfo_120',['VmaAllocatorInfo',['../struct_vma_allocator_info.html',1,'VmaAllocatorInfo'],['../group__group__init.html#ga1988031b0223fdbd564250fa1edd942c',1,'VmaAllocatorInfo():&#160;vk_mem_alloc.h']]],
+  ['vmabegindefragmentation_121',['vmaBeginDefragmentation',['../group__group__alloc.html#gac3335566858b45541fa9c0d7a6bbb57e',1,'vk_mem_alloc.h']]],
+  ['vmabegindefragmentationpass_122',['vmaBeginDefragmentationPass',['../group__group__alloc.html#ga980d7da2ce3b1fd5c8b8476bc362cc00',1,'vk_mem_alloc.h']]],
+  ['vmabindbuffermemory_123',['vmaBindBufferMemory',['../group__group__alloc.html#ga6b0929b914b60cf2d45cac4bf3547470',1,'vk_mem_alloc.h']]],
+  ['vmabindbuffermemory2_124',['vmaBindBufferMemory2',['../group__group__alloc.html#ga927c944f45e0f2941182abb6f608e64a',1,'vk_mem_alloc.h']]],
+  ['vmabindimagememory_125',['vmaBindImageMemory',['../group__group__alloc.html#ga3d3ca45799923aa5d138e9e5f9eb2da5',1,'vk_mem_alloc.h']]],
+  ['vmabindimagememory2_126',['vmaBindImageMemory2',['../group__group__alloc.html#gaa8251ee81b0045a443e35b8e8aa021bc',1,'vk_mem_alloc.h']]],
+  ['vmabudget_127',['VmaBudget',['../group__group__stats.html#gaa078667e71b1ef24e87a6a30d128381d',1,'VmaBudget():&#160;vk_mem_alloc.h'],['../struct_vma_budget.html',1,'VmaBudget']]],
+  ['vmabufferallocator_128',['VmaBufferAllocator',['../struct_vma_buffer_allocator.html',1,'']]],
+  ['vmabufferallocatorallocate_129',['vmaBufferAllocatorAllocate',['../group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39',1,'vk_mem_alloc.h']]],
+  ['vmabufferallocatorcreateflagbits_130',['VmaBufferAllocatorCreateFlagBits',['../group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08',1,'VmaBufferAllocatorCreateFlagBits():&#160;vk_mem_alloc.h'],['../group__group__buffer__suballocation.html#gab59dc80be7e88530693d2140c7e4baa9',1,'VmaBufferAllocatorCreateFlagBits():&#160;vk_mem_alloc.h']]],
+  ['vmabufferallocatorcreateflags_131',['VmaBufferAllocatorCreateFlags',['../group__group__buffer__suballocation.html#ga524fc82795862079781317e33be657e1',1,'vk_mem_alloc.h']]],
+  ['vmabufferallocatorcreateinfo_132',['VmaBufferAllocatorCreateInfo',['../struct_vma_buffer_allocator_create_info.html',1,'VmaBufferAllocatorCreateInfo'],['../group__group__buffer__suballocation.html#ga07daea3c55e292b9ea9cdbe481f6d598',1,'VmaBufferAllocatorCreateInfo():&#160;vk_mem_alloc.h']]],
+  ['vmabufferallocatorfree_133',['vmaBufferAllocatorFree',['../group__group__buffer__suballocation.html#gaffeae9a3b55e1f1ccaf4dd97d9e74a5f',1,'vk_mem_alloc.h']]],
+  ['vmabuffersuballocation_134',['VmaBufferSuballocation',['../struct_vma_buffer_suballocation.html',1,'']]],
+  ['vmabuffersuballocationcreateflagbits_135',['VmaBufferSuballocationCreateFlagBits',['../group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb',1,'VmaBufferSuballocationCreateFlagBits():&#160;vk_mem_alloc.h'],['../group__group__buffer__suballocation.html#gab4d54a73919432f9d90f5e8cb1752fb0',1,'VmaBufferSuballocationCreateFlagBits():&#160;vk_mem_alloc.h']]],
+  ['vmabuffersuballocationcreateflags_136',['VmaBufferSuballocationCreateFlags',['../group__group__buffer__suballocation.html#ga7445a51cdb572ba54e795c74d8abc2b4',1,'vk_mem_alloc.h']]],
+  ['vmabuffersuballocationcreateinfo_137',['VmaBufferSuballocationCreateInfo',['../struct_vma_buffer_suballocation_create_info.html',1,'VmaBufferSuballocationCreateInfo'],['../group__group__buffer__suballocation.html#ga0ee2c81ee2378cc43620c0d577175935',1,'VmaBufferSuballocationCreateInfo():&#160;vk_mem_alloc.h']]],
+  ['vmabuffersuballocationinfo_138',['VmaBufferSuballocationInfo',['../struct_vma_buffer_suballocation_info.html',1,'VmaBufferSuballocationInfo'],['../group__group__buffer__suballocation.html#ga18bf3079703d3188bb268b5838bb9c22',1,'VmaBufferSuballocationInfo():&#160;vk_mem_alloc.h']]],
+  ['vmacalculatepoolstatistics_139',['vmaCalculatePoolStatistics',['../group__group__stats.html#ga50ba0eb25d2b363b792be4645ca7a380',1,'vk_mem_alloc.h']]],
+  ['vmacalculatestatistics_140',['vmaCalculateStatistics',['../group__group__stats.html#ga36f3484de7aa6cd6edc4de9edfa0ff59',1,'vk_mem_alloc.h']]],
+  ['vmacalculatevirtualblockstatistics_141',['vmaCalculateVirtualBlockStatistics',['../group__group__virtual.html#ga93c5741bca44b43e5b849cacbd616098',1,'vk_mem_alloc.h']]],
+  ['vmacheckcorruption_142',['vmaCheckCorruption',['../group__group__alloc.html#ga49329a7f030dafcf82f7b73334c22e98',1,'vk_mem_alloc.h']]],
+  ['vmacheckpoolcorruption_143',['vmaCheckPoolCorruption',['../group__group__alloc.html#gad535935619c7a549bf837e1bb0068f89',1,'vk_mem_alloc.h']]],
+  ['vmaclearvirtualblock_144',['vmaClearVirtualBlock',['../group__group__virtual.html#ga5eda6f55919fb05bd2f56a112590c571',1,'vk_mem_alloc.h']]],
+  ['vmacreatealiasingbuffer_145',['vmaCreateAliasingBuffer',['../group__group__alloc.html#ga60d5d4803e3c82505a2bfddb929adb03',1,'vk_mem_alloc.h']]],
+  ['vmacreatealiasingbuffer2_146',['vmaCreateAliasingBuffer2',['../group__group__alloc.html#gaf0cf014344213e117bd9f9cf5f928122',1,'vk_mem_alloc.h']]],
+  ['vmacreatealiasingimage_147',['vmaCreateAliasingImage',['../group__group__alloc.html#gaebc4db1f94b53dba2338b4c0fd80d0dc',1,'vk_mem_alloc.h']]],
+  ['vmacreatealiasingimage2_148',['vmaCreateAliasingImage2',['../group__group__alloc.html#ga69ac829f5bb0737449fa92c2d971f1bb',1,'vk_mem_alloc.h']]],
+  ['vmacreateallocator_149',['vmaCreateAllocator',['../group__group__init.html#ga200692051ddb34240248234f5f4c17bb',1,'vk_mem_alloc.h']]],
+  ['vmacreatebuffer_150',['vmaCreateBuffer',['../group__group__alloc.html#gac72ee55598617e8eecca384e746bab51',1,'vk_mem_alloc.h']]],
+  ['vmacreatebufferallocator_151',['vmaCreateBufferAllocator',['../group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66',1,'vk_mem_alloc.h']]],
+  ['vmacreatebufferwithalignment_152',['vmaCreateBufferWithAlignment',['../group__group__alloc.html#gaa06a690013a0d01e60894ac378083834',1,'vk_mem_alloc.h']]],
+  ['vmacreateimage_153',['vmaCreateImage',['../group__group__alloc.html#ga02a94f25679275851a53e82eacbcfc73',1,'vk_mem_alloc.h']]],
+  ['vmacreatepool_154',['vmaCreatePool',['../group__group__alloc.html#ga5c8770ded7c59c8caac6de0c2cb00b50',1,'vk_mem_alloc.h']]],
+  ['vmacreatevirtualblock_155',['vmaCreateVirtualBlock',['../group__group__virtual.html#gab585754076877265fdae33e5c40ef13b',1,'vk_mem_alloc.h']]],
+  ['vmadefragmentationcontext_156',['VmaDefragmentationContext',['../struct_vma_defragmentation_context.html',1,'']]],
+  ['vmadefragmentationflagbits_157',['VmaDefragmentationFlagBits',['../group__group__alloc.html#ga6552a65b71d16f378c6994b3ceaef50c',1,'VmaDefragmentationFlagBits():&#160;vk_mem_alloc.h'],['../group__group__alloc.html#ga13415cc0b443353a7b5abda300b833fc',1,'VmaDefragmentationFlagBits():&#160;vk_mem_alloc.h']]],
+  ['vmadefragmentationflags_158',['VmaDefragmentationFlags',['../group__group__alloc.html#ga88a77cef37e5d3c4fc9eb328885d048d',1,'vk_mem_alloc.h']]],
+  ['vmadefragmentationinfo_159',['VmaDefragmentationInfo',['../struct_vma_defragmentation_info.html',1,'VmaDefragmentationInfo'],['../group__group__alloc.html#ga2bf47f96bf92bed2a49461bd9af3acfa',1,'VmaDefragmentationInfo():&#160;vk_mem_alloc.h']]],
+  ['vmadefragmentationmove_160',['VmaDefragmentationMove',['../struct_vma_defragmentation_move.html',1,'VmaDefragmentationMove'],['../group__group__alloc.html#ga563f4b43d3e31ed603d80cacc9ba8589',1,'VmaDefragmentationMove():&#160;vk_mem_alloc.h']]],
+  ['vmadefragmentationmoveoperation_161',['VmaDefragmentationMoveOperation',['../group__group__alloc.html#gada9e3861caf96f08894b0bcc160ec257',1,'VmaDefragmentationMoveOperation():&#160;vk_mem_alloc.h'],['../group__group__alloc.html#ga2ea666deeb3c2c74806a097e27cdb4a1',1,'VmaDefragmentationMoveOperation():&#160;vk_mem_alloc.h']]],
+  ['vmadefragmentationpassmoveinfo_162',['VmaDefragmentationPassMoveInfo',['../struct_vma_defragmentation_pass_move_info.html',1,'VmaDefragmentationPassMoveInfo'],['../group__group__alloc.html#gad6799e8e2b1527abfc84d33bc44aeaf5',1,'VmaDefragmentationPassMoveInfo():&#160;vk_mem_alloc.h']]],
+  ['vmadefragmentationstats_163',['VmaDefragmentationStats',['../struct_vma_defragmentation_stats.html',1,'VmaDefragmentationStats'],['../group__group__alloc.html#gad94034192259c2e34a4d1c5e27810403',1,'VmaDefragmentationStats():&#160;vk_mem_alloc.h']]],
+  ['vmadestroyallocator_164',['vmaDestroyAllocator',['../group__group__init.html#gaa8d164061c88f22fb1fd3c8f3534bc1d',1,'vk_mem_alloc.h']]],
+  ['vmadestroybuffer_165',['vmaDestroyBuffer',['../group__group__alloc.html#ga0d9f4e4ba5bf9aab1f1c746387753d77',1,'vk_mem_alloc.h']]],
+  ['vmadestroybufferallocator_166',['vmaDestroyBufferAllocator',['../group__group__buffer__suballocation.html#ga0583fc4a16f1b38d02b2d57a46a20183',1,'vk_mem_alloc.h']]],
+  ['vmadestroyimage_167',['vmaDestroyImage',['../group__group__alloc.html#gae50d2cb3b4a3bfd4dd40987234e50e7e',1,'vk_mem_alloc.h']]],
+  ['vmadestroypool_168',['vmaDestroyPool',['../group__group__alloc.html#ga5485779c8f1948238fc4e92232fa65e1',1,'vk_mem_alloc.h']]],
+  ['vmadestroyvirtualblock_169',['vmaDestroyVirtualBlock',['../group__group__virtual.html#ga3795f7783ae2c182cede067d656f66a5',1,'vk_mem_alloc.h']]],
+  ['vmadetailedstatistics_170',['VmaDetailedStatistics',['../struct_vma_detailed_statistics.html',1,'VmaDetailedStatistics'],['../group__group__stats.html#ga9ab0c535a6ca655dc63b8609ab4b8394',1,'VmaDetailedStatistics():&#160;vk_mem_alloc.h']]],
+  ['vmadevicememorycallbacks_171',['VmaDeviceMemoryCallbacks',['../struct_vma_device_memory_callbacks.html',1,'VmaDeviceMemoryCallbacks'],['../group__group__init.html#ga77692d3c8770ea8882d573206bd27b2b',1,'VmaDeviceMemoryCallbacks():&#160;vk_mem_alloc.h']]],
+  ['vmaenddefragmentation_172',['vmaEndDefragmentation',['../group__group__alloc.html#ga59f01ca3d53d50b7cca9b442b77a3e87',1,'vk_mem_alloc.h']]],
+  ['vmaenddefragmentationpass_173',['vmaEndDefragmentationPass',['../group__group__alloc.html#gaded05a445742a00718ee766144c5c226',1,'vk_mem_alloc.h']]],
+  ['vmafindmemorytypeindex_174',['vmaFindMemoryTypeIndex',['../group__group__alloc.html#gaef15a94b58fbcb0fe706d5720e84a74a',1,'vk_mem_alloc.h']]],
+  ['vmafindmemorytypeindexforbufferinfo_175',['vmaFindMemoryTypeIndexForBufferInfo',['../group__group__alloc.html#gae790ab9ffaf7667fb8f62523e6897888',1,'vk_mem_alloc.h']]],
+  ['vmafindmemorytypeindexforimageinfo_176',['vmaFindMemoryTypeIndexForImageInfo',['../group__group__alloc.html#ga088da83d8eaf3ce9056d9ea0b981d472',1,'vk_mem_alloc.h']]],
+  ['vmaflushallocation_177',['vmaFlushAllocation',['../group__group__alloc.html#ga30c37c1eec6025f397be41644f48490f',1,'vk_mem_alloc.h']]],
+  ['vmaflushallocations_178',['vmaFlushAllocations',['../group__group__alloc.html#gac3dd00da721875ed99fa8a881922bdfc',1,'vk_mem_alloc.h']]],
+  ['vmaflushbuffersuballocation_179',['vmaFlushBufferSuballocation',['../group__group__buffer__suballocation.html#ga662e8386b36dc17573da63796713b50a',1,'vk_mem_alloc.h']]],
   ['vmafreememory_180',['vmaFreeMemory',['../group__group__alloc.html#ga5fea5518972ae9094b1526cbcb19b05f',1,'vk_mem_alloc.h']]],
   ['vmafreememorypages_181',['vmaFreeMemoryPages',['../group__group__alloc.html#ga834b1e4aef395c0a1d56a28e69a4a17e',1,'vk_mem_alloc.h']]],
   ['vmagetallocationinfo_182',['vmaGetAllocationInfo',['../group__group__alloc.html#ga86dd08aba8633bfa4ad0df2e76481d8b',1,'vk_mem_alloc.h']]],
@@ -196,38 +196,37 @@
   ['vmagetvirtualblockstatistics_193',['vmaGetVirtualBlockStatistics',['../group__group__virtual.html#ga2902aa3130866afcc64bb5f984113db3',1,'vk_mem_alloc.h']]],
   ['vmainvalidateallocation_194',['vmaInvalidateAllocation',['../group__group__alloc.html#gaaa8412919139ef413a4215ac6a290fae',1,'vk_mem_alloc.h']]],
   ['vmainvalidateallocations_195',['vmaInvalidateAllocations',['../group__group__alloc.html#gab25b558d75f7378ec944a1522fdcc3c5',1,'vk_mem_alloc.h']]],
-  ['vmainvalidatebuffersuballocation_196',['vmaInvalidateBufferSuballocation',['../group__group__buffer__suballocation.html#gaa6da44bb7c952e31ee908b06dcaeaa1b',1,'vk_mem_alloc.h']]],
-  ['vmainvalidatebuffersuballocations_197',['vmaInvalidateBufferSuballocations',['../group__group__buffer__suballocation.html#ga90de24bda8b9156113cfdc6b3e515191',1,'vk_mem_alloc.h']]],
-  ['vmaisvirtualblockempty_198',['vmaIsVirtualBlockEmpty',['../group__group__virtual.html#gacd53b5b1d23f8fcbad692ccfdc1811f1',1,'vk_mem_alloc.h']]],
-  ['vmamapbuffersuballocation_199',['vmaMapBufferSuballocation',['../group__group__buffer__suballocation.html#ga5559d88f4181d96baa2671a9b5bbb195',1,'vk_mem_alloc.h']]],
-  ['vmamapmemory_200',['vmaMapMemory',['../group__group__alloc.html#gad5bd1243512d099706de88168992f069',1,'vk_mem_alloc.h']]],
-  ['vmamemoryusage_201',['VmaMemoryUsage',['../group__group__alloc.html#gaa5846affa1e9da3800e3e78fae2305cc',1,'VmaMemoryUsage():&#160;vk_mem_alloc.h'],['../group__group__alloc.html#ga806e8499dde802e59eb72a1dc811c35f',1,'VmaMemoryUsage():&#160;vk_mem_alloc.h']]],
-  ['vmapool_202',['VmaPool',['../struct_vma_pool.html',1,'']]],
-  ['vmapoolcreateflagbits_203',['VmaPoolCreateFlagBits',['../group__group__alloc.html#ga9a7c45f9c863695d98c83fa5ac940fe7',1,'VmaPoolCreateFlagBits():&#160;vk_mem_alloc.h'],['../group__group__alloc.html#ga4d4f2efc2509157a9e4ecd4fd7942303',1,'VmaPoolCreateFlagBits():&#160;vk_mem_alloc.h']]],
-  ['vmapoolcreateflags_204',['VmaPoolCreateFlags',['../group__group__alloc.html#ga2770e325ea42e087c1b91fdf46d0292a',1,'vk_mem_alloc.h']]],
-  ['vmapoolcreateinfo_205',['VmaPoolCreateInfo',['../group__group__alloc.html#ga1017aa83489c0eee8d2163d2bf253f67',1,'VmaPoolCreateInfo():&#160;vk_mem_alloc.h'],['../struct_vma_pool_create_info.html',1,'VmaPoolCreateInfo']]],
-  ['vmasetallocationname_206',['vmaSetAllocationName',['../group__group__alloc.html#gabe02cbb0cd913b3f125958179f2020fc',1,'vk_mem_alloc.h']]],
-  ['vmasetallocationuserdata_207',['vmaSetAllocationUserData',['../group__group__alloc.html#gaf9147d31ffc11d62fc187bde283ed14f',1,'vk_mem_alloc.h']]],
-  ['vmasetbuffersuballocationuserdata_208',['vmaSetBufferSuballocationUserData',['../group__group__buffer__suballocation.html#ga859ffc45110bced385384044572b227c',1,'vk_mem_alloc.h']]],
-  ['vmasetcurrentframeindex_209',['vmaSetCurrentFrameIndex',['../group__group__init.html#gade56bf8dc9f5a5eaddf5f119ed525236',1,'vk_mem_alloc.h']]],
-  ['vmasetpoolname_210',['vmaSetPoolName',['../group__group__alloc.html#gadbae3a0b4ab078024462fc85c37f3b58',1,'vk_mem_alloc.h']]],
-  ['vmasetvirtualallocationuserdata_211',['vmaSetVirtualAllocationUserData',['../group__group__virtual.html#ga001ea1850458a4062b829e09c303fca2',1,'vk_mem_alloc.h']]],
-  ['vmastatistics_212',['VmaStatistics',['../struct_vma_statistics.html',1,'VmaStatistics'],['../group__group__stats.html#gac94bd1a382a3922ddc8de3af4d3ddd06',1,'VmaStatistics():&#160;vk_mem_alloc.h']]],
-  ['vmatotalstatistics_213',['VmaTotalStatistics',['../struct_vma_total_statistics.html',1,'VmaTotalStatistics'],['../group__group__stats.html#ga68916e729e55d513f88ffafbadddb770',1,'VmaTotalStatistics():&#160;vk_mem_alloc.h']]],
-  ['vmaunmapbuffersuballocation_214',['vmaUnmapBufferSuballocation',['../group__group__buffer__suballocation.html#gabd39fc17fc5c76e1dc4f95a3753446d4',1,'vk_mem_alloc.h']]],
-  ['vmaunmapmemory_215',['vmaUnmapMemory',['../group__group__alloc.html#ga9bc268595cb33f6ec4d519cfce81ff45',1,'vk_mem_alloc.h']]],
-  ['vmavirtualallocate_216',['vmaVirtualAllocate',['../group__group__virtual.html#ga6b7cdcc1c3e5103c323fedc4e1319e01',1,'vk_mem_alloc.h']]],
-  ['vmavirtualallocation_217',['VmaVirtualAllocation',['../struct_vma_virtual_allocation.html',1,'']]],
-  ['vmavirtualallocationcreateflagbits_218',['VmaVirtualAllocationCreateFlagBits',['../group__group__virtual.html#ga2e9c64d405b14156fea7e10c4ad06cb6',1,'VmaVirtualAllocationCreateFlagBits():&#160;vk_mem_alloc.h'],['../group__group__virtual.html#ga936815e64946a6b6d812d08d10184c23',1,'VmaVirtualAllocationCreateFlagBits():&#160;vk_mem_alloc.h']]],
-  ['vmavirtualallocationcreateflags_219',['VmaVirtualAllocationCreateFlags',['../group__group__virtual.html#gae96ffc099bf898257fb19e9410ed08a7',1,'vk_mem_alloc.h']]],
-  ['vmavirtualallocationcreateinfo_220',['VmaVirtualAllocationCreateInfo',['../struct_vma_virtual_allocation_create_info.html',1,'VmaVirtualAllocationCreateInfo'],['../group__group__virtual.html#gac3c90d80bedc6847a41b82d0e2158c9e',1,'VmaVirtualAllocationCreateInfo():&#160;vk_mem_alloc.h']]],
-  ['vmavirtualallocationinfo_221',['VmaVirtualAllocationInfo',['../group__group__virtual.html#ga75bc33ff7cf18c98e101f570dc2a5ebc',1,'VmaVirtualAllocationInfo():&#160;vk_mem_alloc.h'],['../struct_vma_virtual_allocation_info.html',1,'VmaVirtualAllocationInfo']]],
-  ['vmavirtualblock_222',['VmaVirtualBlock',['../struct_vma_virtual_block.html',1,'']]],
-  ['vmavirtualblockcreateflagbits_223',['VmaVirtualBlockCreateFlagBits',['../group__group__virtual.html#ga88bcf8c1cd3bb1610ff7343811c65bca',1,'VmaVirtualBlockCreateFlagBits():&#160;vk_mem_alloc.h'],['../group__group__virtual.html#ga0860ba1c0a67178fae4aecb63a78573e',1,'VmaVirtualBlockCreateFlagBits():&#160;vk_mem_alloc.h']]],
-  ['vmavirtualblockcreateflags_224',['VmaVirtualBlockCreateFlags',['../group__group__virtual.html#ga4e49c2f0ab7f6b4868833e5bac78d91e',1,'vk_mem_alloc.h']]],
-  ['vmavirtualblockcreateinfo_225',['VmaVirtualBlockCreateInfo',['../group__group__virtual.html#ga4753d42d40217a3a652a3cdf253ad773',1,'VmaVirtualBlockCreateInfo():&#160;vk_mem_alloc.h'],['../struct_vma_virtual_block_create_info.html',1,'VmaVirtualBlockCreateInfo']]],
-  ['vmavirtualfree_226',['vmaVirtualFree',['../group__group__virtual.html#ga09fc688c0c3653ff23723b037e5d5033',1,'vk_mem_alloc.h']]],
-  ['vmavulkanfunctions_227',['VmaVulkanFunctions',['../group__group__init.html#gabb0a8e3b5040d847571cca6c7f9a8074',1,'VmaVulkanFunctions():&#160;vk_mem_alloc.h'],['../struct_vma_vulkan_functions.html',1,'VmaVulkanFunctions']]],
-  ['vulkan_20memory_20allocator_228',['Vulkan Memory Allocator',['../index.html',1,'']]],
-  ['vulkanapiversion_229',['vulkanApiVersion',['../struct_vma_allocator_create_info.html#ae0ffc55139b54520a6bb704b29ffc285',1,'VmaAllocatorCreateInfo']]]
+  ['vmainvalidatebuffersuballocation_196',['vmaInvalidateBufferSuballocation',['../group__group__buffer__suballocation.html#ga1aa4e38503fae280262527ce41af6920',1,'vk_mem_alloc.h']]],
+  ['vmaisvirtualblockempty_197',['vmaIsVirtualBlockEmpty',['../group__group__virtual.html#gacd53b5b1d23f8fcbad692ccfdc1811f1',1,'vk_mem_alloc.h']]],
+  ['vmamapbuffersuballocation_198',['vmaMapBufferSuballocation',['../group__group__buffer__suballocation.html#ga5559d88f4181d96baa2671a9b5bbb195',1,'vk_mem_alloc.h']]],
+  ['vmamapmemory_199',['vmaMapMemory',['../group__group__alloc.html#gad5bd1243512d099706de88168992f069',1,'vk_mem_alloc.h']]],
+  ['vmamemoryusage_200',['VmaMemoryUsage',['../group__group__alloc.html#gaa5846affa1e9da3800e3e78fae2305cc',1,'VmaMemoryUsage():&#160;vk_mem_alloc.h'],['../group__group__alloc.html#ga806e8499dde802e59eb72a1dc811c35f',1,'VmaMemoryUsage():&#160;vk_mem_alloc.h']]],
+  ['vmapool_201',['VmaPool',['../struct_vma_pool.html',1,'']]],
+  ['vmapoolcreateflagbits_202',['VmaPoolCreateFlagBits',['../group__group__alloc.html#ga9a7c45f9c863695d98c83fa5ac940fe7',1,'VmaPoolCreateFlagBits():&#160;vk_mem_alloc.h'],['../group__group__alloc.html#ga4d4f2efc2509157a9e4ecd4fd7942303',1,'VmaPoolCreateFlagBits():&#160;vk_mem_alloc.h']]],
+  ['vmapoolcreateflags_203',['VmaPoolCreateFlags',['../group__group__alloc.html#ga2770e325ea42e087c1b91fdf46d0292a',1,'vk_mem_alloc.h']]],
+  ['vmapoolcreateinfo_204',['VmaPoolCreateInfo',['../group__group__alloc.html#ga1017aa83489c0eee8d2163d2bf253f67',1,'VmaPoolCreateInfo():&#160;vk_mem_alloc.h'],['../struct_vma_pool_create_info.html',1,'VmaPoolCreateInfo']]],
+  ['vmasetallocationname_205',['vmaSetAllocationName',['../group__group__alloc.html#gabe02cbb0cd913b3f125958179f2020fc',1,'vk_mem_alloc.h']]],
+  ['vmasetallocationuserdata_206',['vmaSetAllocationUserData',['../group__group__alloc.html#gaf9147d31ffc11d62fc187bde283ed14f',1,'vk_mem_alloc.h']]],
+  ['vmasetbuffersuballocationuserdata_207',['vmaSetBufferSuballocationUserData',['../group__group__buffer__suballocation.html#ga859ffc45110bced385384044572b227c',1,'vk_mem_alloc.h']]],
+  ['vmasetcurrentframeindex_208',['vmaSetCurrentFrameIndex',['../group__group__init.html#gade56bf8dc9f5a5eaddf5f119ed525236',1,'vk_mem_alloc.h']]],
+  ['vmasetpoolname_209',['vmaSetPoolName',['../group__group__alloc.html#gadbae3a0b4ab078024462fc85c37f3b58',1,'vk_mem_alloc.h']]],
+  ['vmasetvirtualallocationuserdata_210',['vmaSetVirtualAllocationUserData',['../group__group__virtual.html#ga001ea1850458a4062b829e09c303fca2',1,'vk_mem_alloc.h']]],
+  ['vmastatistics_211',['VmaStatistics',['../struct_vma_statistics.html',1,'VmaStatistics'],['../group__group__stats.html#gac94bd1a382a3922ddc8de3af4d3ddd06',1,'VmaStatistics():&#160;vk_mem_alloc.h']]],
+  ['vmatotalstatistics_212',['VmaTotalStatistics',['../struct_vma_total_statistics.html',1,'VmaTotalStatistics'],['../group__group__stats.html#ga68916e729e55d513f88ffafbadddb770',1,'VmaTotalStatistics():&#160;vk_mem_alloc.h']]],
+  ['vmaunmapbuffersuballocation_213',['vmaUnmapBufferSuballocation',['../group__group__buffer__suballocation.html#gabd39fc17fc5c76e1dc4f95a3753446d4',1,'vk_mem_alloc.h']]],
+  ['vmaunmapmemory_214',['vmaUnmapMemory',['../group__group__alloc.html#ga9bc268595cb33f6ec4d519cfce81ff45',1,'vk_mem_alloc.h']]],
+  ['vmavirtualallocate_215',['vmaVirtualAllocate',['../group__group__virtual.html#ga6b7cdcc1c3e5103c323fedc4e1319e01',1,'vk_mem_alloc.h']]],
+  ['vmavirtualallocation_216',['VmaVirtualAllocation',['../struct_vma_virtual_allocation.html',1,'']]],
+  ['vmavirtualallocationcreateflagbits_217',['VmaVirtualAllocationCreateFlagBits',['../group__group__virtual.html#ga2e9c64d405b14156fea7e10c4ad06cb6',1,'VmaVirtualAllocationCreateFlagBits():&#160;vk_mem_alloc.h'],['../group__group__virtual.html#ga936815e64946a6b6d812d08d10184c23',1,'VmaVirtualAllocationCreateFlagBits():&#160;vk_mem_alloc.h']]],
+  ['vmavirtualallocationcreateflags_218',['VmaVirtualAllocationCreateFlags',['../group__group__virtual.html#gae96ffc099bf898257fb19e9410ed08a7',1,'vk_mem_alloc.h']]],
+  ['vmavirtualallocationcreateinfo_219',['VmaVirtualAllocationCreateInfo',['../struct_vma_virtual_allocation_create_info.html',1,'VmaVirtualAllocationCreateInfo'],['../group__group__virtual.html#gac3c90d80bedc6847a41b82d0e2158c9e',1,'VmaVirtualAllocationCreateInfo():&#160;vk_mem_alloc.h']]],
+  ['vmavirtualallocationinfo_220',['VmaVirtualAllocationInfo',['../group__group__virtual.html#ga75bc33ff7cf18c98e101f570dc2a5ebc',1,'VmaVirtualAllocationInfo():&#160;vk_mem_alloc.h'],['../struct_vma_virtual_allocation_info.html',1,'VmaVirtualAllocationInfo']]],
+  ['vmavirtualblock_221',['VmaVirtualBlock',['../struct_vma_virtual_block.html',1,'']]],
+  ['vmavirtualblockcreateflagbits_222',['VmaVirtualBlockCreateFlagBits',['../group__group__virtual.html#ga88bcf8c1cd3bb1610ff7343811c65bca',1,'VmaVirtualBlockCreateFlagBits():&#160;vk_mem_alloc.h'],['../group__group__virtual.html#ga0860ba1c0a67178fae4aecb63a78573e',1,'VmaVirtualBlockCreateFlagBits():&#160;vk_mem_alloc.h']]],
+  ['vmavirtualblockcreateflags_223',['VmaVirtualBlockCreateFlags',['../group__group__virtual.html#ga4e49c2f0ab7f6b4868833e5bac78d91e',1,'vk_mem_alloc.h']]],
+  ['vmavirtualblockcreateinfo_224',['VmaVirtualBlockCreateInfo',['../group__group__virtual.html#ga4753d42d40217a3a652a3cdf253ad773',1,'VmaVirtualBlockCreateInfo():&#160;vk_mem_alloc.h'],['../struct_vma_virtual_block_create_info.html',1,'VmaVirtualBlockCreateInfo']]],
+  ['vmavirtualfree_225',['vmaVirtualFree',['../group__group__virtual.html#ga09fc688c0c3653ff23723b037e5d5033',1,'vk_mem_alloc.h']]],
+  ['vmavulkanfunctions_226',['VmaVulkanFunctions',['../group__group__init.html#gabb0a8e3b5040d847571cca6c7f9a8074',1,'VmaVulkanFunctions():&#160;vk_mem_alloc.h'],['../struct_vma_vulkan_functions.html',1,'VmaVulkanFunctions']]],
+  ['vulkan_20memory_20allocator_227',['Vulkan Memory Allocator',['../index.html',1,'']]],
+  ['vulkanapiversion_228',['vulkanApiVersion',['../struct_vma_allocator_create_info.html#ae0ffc55139b54520a6bb704b29ffc285',1,'VmaAllocatorCreateInfo']]]
 ];
diff --git a/docs/html/search/all_b.js b/docs/html/search/all_b.js
index 926cdc3..501f1ad 100644
--- a/docs/html/search/all_b.js
+++ b/docs/html/search/all_b.js
@@ -13,10 +13,11 @@
   ['pmoves_10',['pMoves',['../struct_vma_defragmentation_pass_move_info.html#adfa7a4994afd9b940e7f1dfaf436a725',1,'VmaDefragmentationPassMoveInfo']]],
   ['pname_11',['pName',['../struct_vma_allocation_info.html#a28612f3e897e5b268254a3c63413d759',1,'VmaAllocationInfo']]],
   ['pool_12',['pool',['../struct_vma_allocation_create_info.html#a6272c0555cfd1fe28bff1afeb6190150',1,'VmaAllocationCreateInfo::pool()'],['../struct_vma_defragmentation_info.html#a18dd2097d8ab2976cdc7dd3e7b978bd4',1,'VmaDefragmentationInfo::pool()']]],
-  ['preferredflags_13',['preferredFlags',['../struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d',1,'VmaAllocationCreateInfo']]],
-  ['preferredlargeheapblocksize_14',['preferredLargeHeapBlockSize',['../struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a',1,'VmaAllocatorCreateInfo']]],
-  ['priority_15',['priority',['../struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7',1,'VmaAllocationCreateInfo::priority()'],['../struct_vma_pool_create_info.html#a16e686c688f6725f119ebf6e24ab5274',1,'VmaPoolCreateInfo::priority()']]],
-  ['ptypeexternalmemoryhandletypes_16',['pTypeExternalMemoryHandleTypes',['../struct_vma_allocator_create_info.html#ae8f0db05e5cb4c43d7713bf4a49a736b',1,'VmaAllocatorCreateInfo']]],
-  ['puserdata_17',['pUserData',['../struct_vma_device_memory_callbacks.html#a24052de0937ddd54015a2df0363903c6',1,'VmaDeviceMemoryCallbacks::pUserData()'],['../struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19',1,'VmaAllocationCreateInfo::pUserData()'],['../struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13',1,'VmaAllocationInfo::pUserData()'],['../struct_vma_virtual_allocation_create_info.html#a015f8544ca51a7350f7434d42d0587bb',1,'VmaVirtualAllocationCreateInfo::pUserData()'],['../struct_vma_virtual_allocation_info.html#a41d5cb09357656411653d82fee436f45',1,'VmaVirtualAllocationInfo::pUserData()'],['../struct_vma_buffer_suballocation_create_info.html#a2c4a9a3a240e093c4679a9c72f084966',1,'VmaBufferSuballocationCreateInfo::pUserData()'],['../struct_vma_buffer_suballocation_info.html#aafb0ff200f8fae41e383dec078e3eb47',1,'VmaBufferSuballocationInfo::pUserData()']]],
-  ['pvulkanfunctions_18',['pVulkanFunctions',['../struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd',1,'VmaAllocatorCreateInfo']]]
+  ['preferredbuffersize_13',['preferredBufferSize',['../struct_vma_buffer_allocator_create_info.html#a7abb079b970fd8e777a7f6961e4ce7c9',1,'VmaBufferAllocatorCreateInfo']]],
+  ['preferredflags_14',['preferredFlags',['../struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d',1,'VmaAllocationCreateInfo']]],
+  ['preferredlargeheapblocksize_15',['preferredLargeHeapBlockSize',['../struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a',1,'VmaAllocatorCreateInfo']]],
+  ['priority_16',['priority',['../struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7',1,'VmaAllocationCreateInfo::priority()'],['../struct_vma_pool_create_info.html#a16e686c688f6725f119ebf6e24ab5274',1,'VmaPoolCreateInfo::priority()']]],
+  ['ptypeexternalmemoryhandletypes_17',['pTypeExternalMemoryHandleTypes',['../struct_vma_allocator_create_info.html#ae8f0db05e5cb4c43d7713bf4a49a736b',1,'VmaAllocatorCreateInfo']]],
+  ['puserdata_18',['pUserData',['../struct_vma_device_memory_callbacks.html#a24052de0937ddd54015a2df0363903c6',1,'VmaDeviceMemoryCallbacks::pUserData()'],['../struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19',1,'VmaAllocationCreateInfo::pUserData()'],['../struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13',1,'VmaAllocationInfo::pUserData()'],['../struct_vma_virtual_allocation_create_info.html#a015f8544ca51a7350f7434d42d0587bb',1,'VmaVirtualAllocationCreateInfo::pUserData()'],['../struct_vma_virtual_allocation_info.html#a41d5cb09357656411653d82fee436f45',1,'VmaVirtualAllocationInfo::pUserData()'],['../struct_vma_buffer_suballocation_create_info.html#a2c4a9a3a240e093c4679a9c72f084966',1,'VmaBufferSuballocationCreateInfo::pUserData()'],['../struct_vma_buffer_suballocation_info.html#aafb0ff200f8fae41e383dec078e3eb47',1,'VmaBufferSuballocationInfo::pUserData()']]],
+  ['pvulkanfunctions_19',['pVulkanFunctions',['../struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd',1,'VmaAllocatorCreateInfo']]]
 ];
diff --git a/docs/html/search/enumvalues_0.js b/docs/html/search/enumvalues_0.js
index a860eab..115be5f 100644
--- a/docs/html/search/enumvalues_0.js
+++ b/docs/html/search/enumvalues_0.js
@@ -32,42 +32,43 @@
   ['vma_5fbuffer_5fsuballocation_5fcreate_5fdedicated_5fbuffer_5fbit_29',['VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a',1,'vk_mem_alloc.h']]],
   ['vma_5fbuffer_5fsuballocation_5fcreate_5fflag_5fbits_5fmax_5fenum_30',['VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaec0e2b1cec0f2337ad134cec5aead0df',1,'vk_mem_alloc.h']]],
   ['vma_5fbuffer_5fsuballocation_5fcreate_5fnever_5fallocate_5fbit_31',['VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012',1,'vk_mem_alloc.h']]],
-  ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmask_32',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388',1,'vk_mem_alloc.h']]],
-  ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_33',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb',1,'vk_mem_alloc.h']]],
-  ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_34',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099',1,'vk_mem_alloc.h']]],
-  ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_35',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30',1,'vk_mem_alloc.h']]],
-  ['vma_5fbuffer_5fsuballocation_5fcreate_5fwithin_5fbudget_5fbit_36',['VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fflag_5falgorithm_5fbalanced_5fbit_37',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50caec35a4138111605a6ff32ca61aa871b6',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fflag_5falgorithm_5fextensive_5fbit_38',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cae45a9469e5337731627758671741e412',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fflag_5falgorithm_5ffast_5fbit_39',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fflag_5falgorithm_5ffull_5fbit_40',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cafa162eac5be800bcdd4011427a71156d',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fflag_5falgorithm_5fmask_41',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cabcbbdb3bfd53c4c3ab4eaeb5fd4894e9',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fflag_5fbits_5fmax_5fenum_42',['VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cab87ec33154803bfeb5ac2b379f1d6a97',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fmove_5foperation_5fcopy_43',['VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad4a06ac46c4cb1c67b0ebc1edfab9f18',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fmove_5foperation_5fdestroy_44',['VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257a9786f8492a9be2c03bd26395e352ab85',1,'vk_mem_alloc.h']]],
-  ['vma_5fdefragmentation_5fmove_5foperation_5fignore_45',['VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad25bc6f816b226b4fd5170e845f218d2',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fauto_46',['VMA_MEMORY_USAGE_AUTO',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fauto_5fprefer_5fdevice_47',['VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccae2adb696d6a73c18bb20c23666661327',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fauto_5fprefer_5fhost_48',['VMA_MEMORY_USAGE_AUTO_PREFER_HOST',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9b422585242160b8ed3418310ee6664d',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fcpu_5fcopy_49',['VMA_MEMORY_USAGE_CPU_COPY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca416a444d4d0fc20067c3f76f32ff2500',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fcpu_5fonly_50',['VMA_MEMORY_USAGE_CPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca40bdf4cddeffeb12f43d45ca1286e0a5',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fcpu_5fto_5fgpu_51',['VMA_MEMORY_USAGE_CPU_TO_GPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9066b52c5a7079bb74a69aaf8b92ff67',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fgpu_5flazily_5fallocated_52',['VMA_MEMORY_USAGE_GPU_LAZILY_ALLOCATED',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca835333d9072db63a653818030e17614d',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fgpu_5fonly_53',['VMA_MEMORY_USAGE_GPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccac6b5dc1432d88647aa4cd456246eadf7',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fgpu_5fto_5fcpu_54',['VMA_MEMORY_USAGE_GPU_TO_CPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca7b586d2fdaf82a463b58f581ed72be27',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5fmax_5fenum_55',['VMA_MEMORY_USAGE_MAX_ENUM',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca091e69437ef693e8d0d287f1c719ba6e',1,'vk_mem_alloc.h']]],
-  ['vma_5fmemory_5fusage_5funknown_56',['VMA_MEMORY_USAGE_UNKNOWN',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccaf50d27e34e0925cf3a63db8c839121dd',1,'vk_mem_alloc.h']]],
-  ['vma_5fpool_5fcreate_5falgorithm_5fmask_57',['VMA_POOL_CREATE_ALGORITHM_MASK',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7af4d270f8f42517a0f70037ceb6ac1d9c',1,'vk_mem_alloc.h']]],
-  ['vma_5fpool_5fcreate_5fflag_5fbits_5fmax_5fenum_58',['VMA_POOL_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a1c7312bea9ea246846b9054fd6bd6aec',1,'vk_mem_alloc.h']]],
-  ['vma_5fpool_5fcreate_5fignore_5fbuffer_5fimage_5fgranularity_5fbit_59',['VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a9f1a499508a8edb4e8ba40aa0290a3d2',1,'vk_mem_alloc.h']]],
-  ['vma_5fpool_5fcreate_5flinear_5falgorithm_5fbit_60',['VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a13c8a444197c67866be9cb05599fc726',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum_61',['VMA_VIRTUAL_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac1163c03ea837fa663462dc286d6a1a9',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmask_62',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MASK',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac5b5e45c335368d18df59c9f27df17e3',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_63',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ae2a9591a62b5e3b1bdcbc81c6188a1bf',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_64',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a3bb82d2aedd587a64846a1d7778852e6',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_65',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a562d10a46012719d33167d3dc5dbbf9b',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fallocation_5fcreate_5fupper_5faddress_5fbit_66',['VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a9524a329a55b5ec390d57d90b67ad78e',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fblock_5fcreate_5falgorithm_5fmask_67',['VMA_VIRTUAL_BLOCK_CREATE_ALGORITHM_MASK',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaaf9487467136e1a9e371894dc3a7c4844',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fblock_5fcreate_5fflag_5fbits_5fmax_5fenum_68',['VMA_VIRTUAL_BLOCK_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaa5fc0d333c3d5687a8bbf57df9b377a87',1,'vk_mem_alloc.h']]],
-  ['vma_5fvirtual_5fblock_5fcreate_5flinear_5falgorithm_5fbit_69',['VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaae6423e2fa2f3c9211b21c819e3f10f96',1,'vk_mem_alloc.h']]]
+  ['vma_5fbuffer_5fsuballocation_5fcreate_5fnever_5fcreate_5fbuffer_5fbit_32',['VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaa891857e2a3c8307408b4e0763c158f2',1,'vk_mem_alloc.h']]],
+  ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmask_33',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388',1,'vk_mem_alloc.h']]],
+  ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_34',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb',1,'vk_mem_alloc.h']]],
+  ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_35',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099',1,'vk_mem_alloc.h']]],
+  ['vma_5fbuffer_5fsuballocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_36',['VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30',1,'vk_mem_alloc.h']]],
+  ['vma_5fbuffer_5fsuballocation_5fcreate_5fwithin_5fbudget_5fbit_37',['VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT',['../group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fflag_5falgorithm_5fbalanced_5fbit_38',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50caec35a4138111605a6ff32ca61aa871b6',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fflag_5falgorithm_5fextensive_5fbit_39',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cae45a9469e5337731627758671741e412',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fflag_5falgorithm_5ffast_5fbit_40',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fflag_5falgorithm_5ffull_5fbit_41',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cafa162eac5be800bcdd4011427a71156d',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fflag_5falgorithm_5fmask_42',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cabcbbdb3bfd53c4c3ab4eaeb5fd4894e9',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fflag_5fbits_5fmax_5fenum_43',['VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cab87ec33154803bfeb5ac2b379f1d6a97',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fmove_5foperation_5fcopy_44',['VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad4a06ac46c4cb1c67b0ebc1edfab9f18',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fmove_5foperation_5fdestroy_45',['VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257a9786f8492a9be2c03bd26395e352ab85',1,'vk_mem_alloc.h']]],
+  ['vma_5fdefragmentation_5fmove_5foperation_5fignore_46',['VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad25bc6f816b226b4fd5170e845f218d2',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fauto_47',['VMA_MEMORY_USAGE_AUTO',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fauto_5fprefer_5fdevice_48',['VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccae2adb696d6a73c18bb20c23666661327',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fauto_5fprefer_5fhost_49',['VMA_MEMORY_USAGE_AUTO_PREFER_HOST',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9b422585242160b8ed3418310ee6664d',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fcpu_5fcopy_50',['VMA_MEMORY_USAGE_CPU_COPY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca416a444d4d0fc20067c3f76f32ff2500',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fcpu_5fonly_51',['VMA_MEMORY_USAGE_CPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca40bdf4cddeffeb12f43d45ca1286e0a5',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fcpu_5fto_5fgpu_52',['VMA_MEMORY_USAGE_CPU_TO_GPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9066b52c5a7079bb74a69aaf8b92ff67',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fgpu_5flazily_5fallocated_53',['VMA_MEMORY_USAGE_GPU_LAZILY_ALLOCATED',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca835333d9072db63a653818030e17614d',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fgpu_5fonly_54',['VMA_MEMORY_USAGE_GPU_ONLY',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccac6b5dc1432d88647aa4cd456246eadf7',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fgpu_5fto_5fcpu_55',['VMA_MEMORY_USAGE_GPU_TO_CPU',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca7b586d2fdaf82a463b58f581ed72be27',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5fmax_5fenum_56',['VMA_MEMORY_USAGE_MAX_ENUM',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca091e69437ef693e8d0d287f1c719ba6e',1,'vk_mem_alloc.h']]],
+  ['vma_5fmemory_5fusage_5funknown_57',['VMA_MEMORY_USAGE_UNKNOWN',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccaf50d27e34e0925cf3a63db8c839121dd',1,'vk_mem_alloc.h']]],
+  ['vma_5fpool_5fcreate_5falgorithm_5fmask_58',['VMA_POOL_CREATE_ALGORITHM_MASK',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7af4d270f8f42517a0f70037ceb6ac1d9c',1,'vk_mem_alloc.h']]],
+  ['vma_5fpool_5fcreate_5fflag_5fbits_5fmax_5fenum_59',['VMA_POOL_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a1c7312bea9ea246846b9054fd6bd6aec',1,'vk_mem_alloc.h']]],
+  ['vma_5fpool_5fcreate_5fignore_5fbuffer_5fimage_5fgranularity_5fbit_60',['VMA_POOL_CREATE_IGNORE_BUFFER_IMAGE_GRANULARITY_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a9f1a499508a8edb4e8ba40aa0290a3d2',1,'vk_mem_alloc.h']]],
+  ['vma_5fpool_5fcreate_5flinear_5falgorithm_5fbit_61',['VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__alloc.html#gga9a7c45f9c863695d98c83fa5ac940fe7a13c8a444197c67866be9cb05599fc726',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum_62',['VMA_VIRTUAL_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac1163c03ea837fa663462dc286d6a1a9',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmask_63',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MASK',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ac5b5e45c335368d18df59c9f27df17e3',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_64',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6ae2a9591a62b5e3b1bdcbc81c6188a1bf',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_65',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a3bb82d2aedd587a64846a1d7778852e6',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fallocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_66',['VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a562d10a46012719d33167d3dc5dbbf9b',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fallocation_5fcreate_5fupper_5faddress_5fbit_67',['VMA_VIRTUAL_ALLOCATION_CREATE_UPPER_ADDRESS_BIT',['../group__group__virtual.html#gga2e9c64d405b14156fea7e10c4ad06cb6a9524a329a55b5ec390d57d90b67ad78e',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fblock_5fcreate_5falgorithm_5fmask_68',['VMA_VIRTUAL_BLOCK_CREATE_ALGORITHM_MASK',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaaf9487467136e1a9e371894dc3a7c4844',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fblock_5fcreate_5fflag_5fbits_5fmax_5fenum_69',['VMA_VIRTUAL_BLOCK_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaa5fc0d333c3d5687a8bbf57df9b377a87',1,'vk_mem_alloc.h']]],
+  ['vma_5fvirtual_5fblock_5fcreate_5flinear_5falgorithm_5fbit_70',['VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT',['../group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaae6423e2fa2f3c9211b21c819e3f10f96',1,'vk_mem_alloc.h']]]
 ];
diff --git a/docs/html/search/functions_0.js b/docs/html/search/functions_0.js
index 9e6de76..0db8d98 100644
--- a/docs/html/search/functions_0.js
+++ b/docs/html/search/functions_0.js
@@ -42,37 +42,35 @@
   ['vmafindmemorytypeindexforimageinfo_39',['vmaFindMemoryTypeIndexForImageInfo',['../group__group__alloc.html#ga088da83d8eaf3ce9056d9ea0b981d472',1,'vk_mem_alloc.h']]],
   ['vmaflushallocation_40',['vmaFlushAllocation',['../group__group__alloc.html#ga30c37c1eec6025f397be41644f48490f',1,'vk_mem_alloc.h']]],
   ['vmaflushallocations_41',['vmaFlushAllocations',['../group__group__alloc.html#gac3dd00da721875ed99fa8a881922bdfc',1,'vk_mem_alloc.h']]],
-  ['vmaflushbuffersuballocation_42',['vmaFlushBufferSuballocation',['../group__group__buffer__suballocation.html#gae20326d64236fe7ea9332483b83cab0d',1,'vk_mem_alloc.h']]],
-  ['vmaflushbuffersuballocations_43',['vmaFlushBufferSuballocations',['../group__group__buffer__suballocation.html#ga199d3aa9d77cd58670c06da2b6c5f53c',1,'vk_mem_alloc.h']]],
-  ['vmafreememory_44',['vmaFreeMemory',['../group__group__alloc.html#ga5fea5518972ae9094b1526cbcb19b05f',1,'vk_mem_alloc.h']]],
-  ['vmafreememorypages_45',['vmaFreeMemoryPages',['../group__group__alloc.html#ga834b1e4aef395c0a1d56a28e69a4a17e',1,'vk_mem_alloc.h']]],
-  ['vmagetallocationinfo_46',['vmaGetAllocationInfo',['../group__group__alloc.html#ga86dd08aba8633bfa4ad0df2e76481d8b',1,'vk_mem_alloc.h']]],
-  ['vmagetallocationmemoryproperties_47',['vmaGetAllocationMemoryProperties',['../group__group__alloc.html#ga571e87dd38e552249b56b1b0b982fad1',1,'vk_mem_alloc.h']]],
-  ['vmagetallocatorinfo_48',['vmaGetAllocatorInfo',['../group__group__init.html#gafa02231a791b37255720d566a52683e7',1,'vk_mem_alloc.h']]],
-  ['vmagetbuffersuballocationinfo_49',['vmaGetBufferSuballocationInfo',['../group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6',1,'vk_mem_alloc.h']]],
-  ['vmagetheapbudgets_50',['vmaGetHeapBudgets',['../group__group__stats.html#ga9f88db9d46a432c0ad7278cecbc5eaa7',1,'vk_mem_alloc.h']]],
-  ['vmagetmemoryproperties_51',['vmaGetMemoryProperties',['../group__group__init.html#gab88db292a17974f911182543fda52d19',1,'vk_mem_alloc.h']]],
-  ['vmagetmemorytypeproperties_52',['vmaGetMemoryTypeProperties',['../group__group__init.html#ga8701444752eb5de4464adb5a2b514bca',1,'vk_mem_alloc.h']]],
-  ['vmagetphysicaldeviceproperties_53',['vmaGetPhysicalDeviceProperties',['../group__group__init.html#gaecabf7b6e91ea87d0316fa0a9e014fe0',1,'vk_mem_alloc.h']]],
-  ['vmagetpoolname_54',['vmaGetPoolName',['../group__group__alloc.html#gaf09b4e4eafdbee812e8d73ddf960f030',1,'vk_mem_alloc.h']]],
-  ['vmagetpoolstatistics_55',['vmaGetPoolStatistics',['../group__group__stats.html#ga34d8e7d83774eed0caee5c5ae88e217d',1,'vk_mem_alloc.h']]],
-  ['vmagetvirtualallocationinfo_56',['vmaGetVirtualAllocationInfo',['../group__group__virtual.html#ga8ee14ceb1fe033ec84d8aa29e1f75afa',1,'vk_mem_alloc.h']]],
-  ['vmagetvirtualblockstatistics_57',['vmaGetVirtualBlockStatistics',['../group__group__virtual.html#ga2902aa3130866afcc64bb5f984113db3',1,'vk_mem_alloc.h']]],
-  ['vmainvalidateallocation_58',['vmaInvalidateAllocation',['../group__group__alloc.html#gaaa8412919139ef413a4215ac6a290fae',1,'vk_mem_alloc.h']]],
-  ['vmainvalidateallocations_59',['vmaInvalidateAllocations',['../group__group__alloc.html#gab25b558d75f7378ec944a1522fdcc3c5',1,'vk_mem_alloc.h']]],
-  ['vmainvalidatebuffersuballocation_60',['vmaInvalidateBufferSuballocation',['../group__group__buffer__suballocation.html#gaa6da44bb7c952e31ee908b06dcaeaa1b',1,'vk_mem_alloc.h']]],
-  ['vmainvalidatebuffersuballocations_61',['vmaInvalidateBufferSuballocations',['../group__group__buffer__suballocation.html#ga90de24bda8b9156113cfdc6b3e515191',1,'vk_mem_alloc.h']]],
-  ['vmaisvirtualblockempty_62',['vmaIsVirtualBlockEmpty',['../group__group__virtual.html#gacd53b5b1d23f8fcbad692ccfdc1811f1',1,'vk_mem_alloc.h']]],
-  ['vmamapbuffersuballocation_63',['vmaMapBufferSuballocation',['../group__group__buffer__suballocation.html#ga5559d88f4181d96baa2671a9b5bbb195',1,'vk_mem_alloc.h']]],
-  ['vmamapmemory_64',['vmaMapMemory',['../group__group__alloc.html#gad5bd1243512d099706de88168992f069',1,'vk_mem_alloc.h']]],
-  ['vmasetallocationname_65',['vmaSetAllocationName',['../group__group__alloc.html#gabe02cbb0cd913b3f125958179f2020fc',1,'vk_mem_alloc.h']]],
-  ['vmasetallocationuserdata_66',['vmaSetAllocationUserData',['../group__group__alloc.html#gaf9147d31ffc11d62fc187bde283ed14f',1,'vk_mem_alloc.h']]],
-  ['vmasetbuffersuballocationuserdata_67',['vmaSetBufferSuballocationUserData',['../group__group__buffer__suballocation.html#ga859ffc45110bced385384044572b227c',1,'vk_mem_alloc.h']]],
-  ['vmasetcurrentframeindex_68',['vmaSetCurrentFrameIndex',['../group__group__init.html#gade56bf8dc9f5a5eaddf5f119ed525236',1,'vk_mem_alloc.h']]],
-  ['vmasetpoolname_69',['vmaSetPoolName',['../group__group__alloc.html#gadbae3a0b4ab078024462fc85c37f3b58',1,'vk_mem_alloc.h']]],
-  ['vmasetvirtualallocationuserdata_70',['vmaSetVirtualAllocationUserData',['../group__group__virtual.html#ga001ea1850458a4062b829e09c303fca2',1,'vk_mem_alloc.h']]],
-  ['vmaunmapbuffersuballocation_71',['vmaUnmapBufferSuballocation',['../group__group__buffer__suballocation.html#gabd39fc17fc5c76e1dc4f95a3753446d4',1,'vk_mem_alloc.h']]],
-  ['vmaunmapmemory_72',['vmaUnmapMemory',['../group__group__alloc.html#ga9bc268595cb33f6ec4d519cfce81ff45',1,'vk_mem_alloc.h']]],
-  ['vmavirtualallocate_73',['vmaVirtualAllocate',['../group__group__virtual.html#ga6b7cdcc1c3e5103c323fedc4e1319e01',1,'vk_mem_alloc.h']]],
-  ['vmavirtualfree_74',['vmaVirtualFree',['../group__group__virtual.html#ga09fc688c0c3653ff23723b037e5d5033',1,'vk_mem_alloc.h']]]
+  ['vmaflushbuffersuballocation_42',['vmaFlushBufferSuballocation',['../group__group__buffer__suballocation.html#ga662e8386b36dc17573da63796713b50a',1,'vk_mem_alloc.h']]],
+  ['vmafreememory_43',['vmaFreeMemory',['../group__group__alloc.html#ga5fea5518972ae9094b1526cbcb19b05f',1,'vk_mem_alloc.h']]],
+  ['vmafreememorypages_44',['vmaFreeMemoryPages',['../group__group__alloc.html#ga834b1e4aef395c0a1d56a28e69a4a17e',1,'vk_mem_alloc.h']]],
+  ['vmagetallocationinfo_45',['vmaGetAllocationInfo',['../group__group__alloc.html#ga86dd08aba8633bfa4ad0df2e76481d8b',1,'vk_mem_alloc.h']]],
+  ['vmagetallocationmemoryproperties_46',['vmaGetAllocationMemoryProperties',['../group__group__alloc.html#ga571e87dd38e552249b56b1b0b982fad1',1,'vk_mem_alloc.h']]],
+  ['vmagetallocatorinfo_47',['vmaGetAllocatorInfo',['../group__group__init.html#gafa02231a791b37255720d566a52683e7',1,'vk_mem_alloc.h']]],
+  ['vmagetbuffersuballocationinfo_48',['vmaGetBufferSuballocationInfo',['../group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6',1,'vk_mem_alloc.h']]],
+  ['vmagetheapbudgets_49',['vmaGetHeapBudgets',['../group__group__stats.html#ga9f88db9d46a432c0ad7278cecbc5eaa7',1,'vk_mem_alloc.h']]],
+  ['vmagetmemoryproperties_50',['vmaGetMemoryProperties',['../group__group__init.html#gab88db292a17974f911182543fda52d19',1,'vk_mem_alloc.h']]],
+  ['vmagetmemorytypeproperties_51',['vmaGetMemoryTypeProperties',['../group__group__init.html#ga8701444752eb5de4464adb5a2b514bca',1,'vk_mem_alloc.h']]],
+  ['vmagetphysicaldeviceproperties_52',['vmaGetPhysicalDeviceProperties',['../group__group__init.html#gaecabf7b6e91ea87d0316fa0a9e014fe0',1,'vk_mem_alloc.h']]],
+  ['vmagetpoolname_53',['vmaGetPoolName',['../group__group__alloc.html#gaf09b4e4eafdbee812e8d73ddf960f030',1,'vk_mem_alloc.h']]],
+  ['vmagetpoolstatistics_54',['vmaGetPoolStatistics',['../group__group__stats.html#ga34d8e7d83774eed0caee5c5ae88e217d',1,'vk_mem_alloc.h']]],
+  ['vmagetvirtualallocationinfo_55',['vmaGetVirtualAllocationInfo',['../group__group__virtual.html#ga8ee14ceb1fe033ec84d8aa29e1f75afa',1,'vk_mem_alloc.h']]],
+  ['vmagetvirtualblockstatistics_56',['vmaGetVirtualBlockStatistics',['../group__group__virtual.html#ga2902aa3130866afcc64bb5f984113db3',1,'vk_mem_alloc.h']]],
+  ['vmainvalidateallocation_57',['vmaInvalidateAllocation',['../group__group__alloc.html#gaaa8412919139ef413a4215ac6a290fae',1,'vk_mem_alloc.h']]],
+  ['vmainvalidateallocations_58',['vmaInvalidateAllocations',['../group__group__alloc.html#gab25b558d75f7378ec944a1522fdcc3c5',1,'vk_mem_alloc.h']]],
+  ['vmainvalidatebuffersuballocation_59',['vmaInvalidateBufferSuballocation',['../group__group__buffer__suballocation.html#ga1aa4e38503fae280262527ce41af6920',1,'vk_mem_alloc.h']]],
+  ['vmaisvirtualblockempty_60',['vmaIsVirtualBlockEmpty',['../group__group__virtual.html#gacd53b5b1d23f8fcbad692ccfdc1811f1',1,'vk_mem_alloc.h']]],
+  ['vmamapbuffersuballocation_61',['vmaMapBufferSuballocation',['../group__group__buffer__suballocation.html#ga5559d88f4181d96baa2671a9b5bbb195',1,'vk_mem_alloc.h']]],
+  ['vmamapmemory_62',['vmaMapMemory',['../group__group__alloc.html#gad5bd1243512d099706de88168992f069',1,'vk_mem_alloc.h']]],
+  ['vmasetallocationname_63',['vmaSetAllocationName',['../group__group__alloc.html#gabe02cbb0cd913b3f125958179f2020fc',1,'vk_mem_alloc.h']]],
+  ['vmasetallocationuserdata_64',['vmaSetAllocationUserData',['../group__group__alloc.html#gaf9147d31ffc11d62fc187bde283ed14f',1,'vk_mem_alloc.h']]],
+  ['vmasetbuffersuballocationuserdata_65',['vmaSetBufferSuballocationUserData',['../group__group__buffer__suballocation.html#ga859ffc45110bced385384044572b227c',1,'vk_mem_alloc.h']]],
+  ['vmasetcurrentframeindex_66',['vmaSetCurrentFrameIndex',['../group__group__init.html#gade56bf8dc9f5a5eaddf5f119ed525236',1,'vk_mem_alloc.h']]],
+  ['vmasetpoolname_67',['vmaSetPoolName',['../group__group__alloc.html#gadbae3a0b4ab078024462fc85c37f3b58',1,'vk_mem_alloc.h']]],
+  ['vmasetvirtualallocationuserdata_68',['vmaSetVirtualAllocationUserData',['../group__group__virtual.html#ga001ea1850458a4062b829e09c303fca2',1,'vk_mem_alloc.h']]],
+  ['vmaunmapbuffersuballocation_69',['vmaUnmapBufferSuballocation',['../group__group__buffer__suballocation.html#gabd39fc17fc5c76e1dc4f95a3753446d4',1,'vk_mem_alloc.h']]],
+  ['vmaunmapmemory_70',['vmaUnmapMemory',['../group__group__alloc.html#ga9bc268595cb33f6ec4d519cfce81ff45',1,'vk_mem_alloc.h']]],
+  ['vmavirtualallocate_71',['vmaVirtualAllocate',['../group__group__virtual.html#ga6b7cdcc1c3e5103c323fedc4e1319e01',1,'vk_mem_alloc.h']]],
+  ['vmavirtualfree_72',['vmaVirtualFree',['../group__group__virtual.html#ga09fc688c0c3653ff23723b037e5d5033',1,'vk_mem_alloc.h']]]
 ];
diff --git a/docs/html/search/variables_7.js b/docs/html/search/variables_7.js
index a49657f..3fcae56 100644
--- a/docs/html/search/variables_7.js
+++ b/docs/html/search/variables_7.js
@@ -11,10 +11,11 @@
   ['pmoves_8',['pMoves',['../struct_vma_defragmentation_pass_move_info.html#adfa7a4994afd9b940e7f1dfaf436a725',1,'VmaDefragmentationPassMoveInfo']]],
   ['pname_9',['pName',['../struct_vma_allocation_info.html#a28612f3e897e5b268254a3c63413d759',1,'VmaAllocationInfo']]],
   ['pool_10',['pool',['../struct_vma_allocation_create_info.html#a6272c0555cfd1fe28bff1afeb6190150',1,'VmaAllocationCreateInfo::pool()'],['../struct_vma_defragmentation_info.html#a18dd2097d8ab2976cdc7dd3e7b978bd4',1,'VmaDefragmentationInfo::pool()']]],
-  ['preferredflags_11',['preferredFlags',['../struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d',1,'VmaAllocationCreateInfo']]],
-  ['preferredlargeheapblocksize_12',['preferredLargeHeapBlockSize',['../struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a',1,'VmaAllocatorCreateInfo']]],
-  ['priority_13',['priority',['../struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7',1,'VmaAllocationCreateInfo::priority()'],['../struct_vma_pool_create_info.html#a16e686c688f6725f119ebf6e24ab5274',1,'VmaPoolCreateInfo::priority()']]],
-  ['ptypeexternalmemoryhandletypes_14',['pTypeExternalMemoryHandleTypes',['../struct_vma_allocator_create_info.html#ae8f0db05e5cb4c43d7713bf4a49a736b',1,'VmaAllocatorCreateInfo']]],
-  ['puserdata_15',['pUserData',['../struct_vma_device_memory_callbacks.html#a24052de0937ddd54015a2df0363903c6',1,'VmaDeviceMemoryCallbacks::pUserData()'],['../struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19',1,'VmaAllocationCreateInfo::pUserData()'],['../struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13',1,'VmaAllocationInfo::pUserData()'],['../struct_vma_virtual_allocation_create_info.html#a015f8544ca51a7350f7434d42d0587bb',1,'VmaVirtualAllocationCreateInfo::pUserData()'],['../struct_vma_virtual_allocation_info.html#a41d5cb09357656411653d82fee436f45',1,'VmaVirtualAllocationInfo::pUserData()'],['../struct_vma_buffer_suballocation_create_info.html#a2c4a9a3a240e093c4679a9c72f084966',1,'VmaBufferSuballocationCreateInfo::pUserData()'],['../struct_vma_buffer_suballocation_info.html#aafb0ff200f8fae41e383dec078e3eb47',1,'VmaBufferSuballocationInfo::pUserData()']]],
-  ['pvulkanfunctions_16',['pVulkanFunctions',['../struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd',1,'VmaAllocatorCreateInfo']]]
+  ['preferredbuffersize_11',['preferredBufferSize',['../struct_vma_buffer_allocator_create_info.html#a7abb079b970fd8e777a7f6961e4ce7c9',1,'VmaBufferAllocatorCreateInfo']]],
+  ['preferredflags_12',['preferredFlags',['../struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d',1,'VmaAllocationCreateInfo']]],
+  ['preferredlargeheapblocksize_13',['preferredLargeHeapBlockSize',['../struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a',1,'VmaAllocatorCreateInfo']]],
+  ['priority_14',['priority',['../struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7',1,'VmaAllocationCreateInfo::priority()'],['../struct_vma_pool_create_info.html#a16e686c688f6725f119ebf6e24ab5274',1,'VmaPoolCreateInfo::priority()']]],
+  ['ptypeexternalmemoryhandletypes_15',['pTypeExternalMemoryHandleTypes',['../struct_vma_allocator_create_info.html#ae8f0db05e5cb4c43d7713bf4a49a736b',1,'VmaAllocatorCreateInfo']]],
+  ['puserdata_16',['pUserData',['../struct_vma_device_memory_callbacks.html#a24052de0937ddd54015a2df0363903c6',1,'VmaDeviceMemoryCallbacks::pUserData()'],['../struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19',1,'VmaAllocationCreateInfo::pUserData()'],['../struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13',1,'VmaAllocationInfo::pUserData()'],['../struct_vma_virtual_allocation_create_info.html#a015f8544ca51a7350f7434d42d0587bb',1,'VmaVirtualAllocationCreateInfo::pUserData()'],['../struct_vma_virtual_allocation_info.html#a41d5cb09357656411653d82fee436f45',1,'VmaVirtualAllocationInfo::pUserData()'],['../struct_vma_buffer_suballocation_create_info.html#a2c4a9a3a240e093c4679a9c72f084966',1,'VmaBufferSuballocationCreateInfo::pUserData()'],['../struct_vma_buffer_suballocation_info.html#aafb0ff200f8fae41e383dec078e3eb47',1,'VmaBufferSuballocationInfo::pUserData()']]],
+  ['pvulkanfunctions_17',['pVulkanFunctions',['../struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd',1,'VmaAllocatorCreateInfo']]]
 ];
diff --git a/docs/html/struct_vma_buffer_allocator.html b/docs/html/struct_vma_buffer_allocator.html
index c0e8a31..5673968 100644
--- a/docs/html/struct_vma_buffer_allocator.html
+++ b/docs/html/struct_vma_buffer_allocator.html
@@ -73,10 +73,11 @@
 </div><!--header-->
 <div class="contents">
 
-<p>TODO document!  
+<p>Represent main object that can allocate parts of larger Vulkan buffers.  
  <a href="struct_vma_buffer_allocator.html#details">More...</a></p>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p >TODO document! </p>
+<div class="textblock"><p >Represent main object that can allocate parts of larger Vulkan buffers. </p>
+<p >To create one, fill in structure <a class="el" href="struct_vma_buffer_allocator_create_info.html" title="Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator().">VmaBufferAllocatorCreateInfo</a> and call <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>. To destroy it, call <a class="el" href="group__group__buffer__suballocation.html#ga0583fc4a16f1b38d02b2d57a46a20183" title="TODO implement! TODO document!">vmaDestroyBufferAllocator()</a>. For more information, see: <a class="el" href="buffer_suballocation.html">Buffer suballocation</a>. </p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
 <li>D:/PROJECTS/Vulkan Memory Allocator/REPO/include/<a class="el" href="vk__mem__alloc_8h.html">vk_mem_alloc.h</a></li>
 </ul>
diff --git a/docs/html/struct_vma_buffer_allocator_create_info-members.html b/docs/html/struct_vma_buffer_allocator_create_info-members.html
index 2299281..f626862 100644
--- a/docs/html/struct_vma_buffer_allocator_create_info-members.html
+++ b/docs/html/struct_vma_buffer_allocator_create_info-members.html
@@ -81,6 +81,7 @@
   <tr class="odd"><td class="entry"><a class="el" href="struct_vma_buffer_allocator_create_info.html#aa5ce312e46795d927685deb752c17ad1">maxBufferCount</a></td><td class="entry"><a class="el" href="struct_vma_buffer_allocator_create_info.html">VmaBufferAllocatorCreateInfo</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="struct_vma_buffer_allocator_create_info.html#af17c4cad7c00d0df00959461dbbfb40f">minBufferCount</a></td><td class="entry"><a class="el" href="struct_vma_buffer_allocator_create_info.html">VmaBufferAllocatorCreateInfo</a></td><td class="entry"></td></tr>
   <tr class="odd"><td class="entry"><a class="el" href="struct_vma_buffer_allocator_create_info.html#a60338f1d9b57b1bb3446e1c899ee7294">minSuballocationAlignment</a></td><td class="entry"><a class="el" href="struct_vma_buffer_allocator_create_info.html">VmaBufferAllocatorCreateInfo</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="struct_vma_buffer_allocator_create_info.html#a7abb079b970fd8e777a7f6961e4ce7c9">preferredBufferSize</a></td><td class="entry"><a class="el" href="struct_vma_buffer_allocator_create_info.html">VmaBufferAllocatorCreateInfo</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/html/struct_vma_buffer_allocator_create_info.html b/docs/html/struct_vma_buffer_allocator_create_info.html
index 0bc1478..2aaefe3 100644
--- a/docs/html/struct_vma_buffer_allocator_create_info.html
+++ b/docs/html/struct_vma_buffer_allocator_create_info.html
@@ -76,32 +76,35 @@
 </div><!--header-->
 <div class="contents">
 
-<p>Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="TODO document!">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>.  
+<p>Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="Represent main object that can allocate parts of larger Vulkan buffers.">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>.  
  <a href="struct_vma_buffer_allocator_create_info.html#details">More...</a></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
 Public Attributes</h2></td></tr>
 <tr class="memitem:ad6ea3d17d437bea0a131f40233b3f296"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__group__buffer__suballocation.html#ga524fc82795862079781317e33be657e1">VmaBufferAllocatorCreateFlags</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296">flags</a></td></tr>
-<tr class="memdesc:ad6ea3d17d437bea0a131f40233b3f296"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO document! TODO implement!  <a href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296">More...</a><br /></td></tr>
+<tr class="memdesc:ad6ea3d17d437bea0a131f40233b3f296"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags - use <a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08" title="Flags to be passed as VmaBufferAllocatorCreateInfo::flags.">VmaBufferAllocatorCreateFlagBits</a>.  <a href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296">More...</a><br /></td></tr>
 <tr class="separator:ad6ea3d17d437bea0a131f40233b3f296"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ae968d15a5e1c3bbb765f0d185c8e21a6"><td class="memItemLeft" align="right" valign="top">VkBufferCreateInfo&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_allocator_create_info.html#ae968d15a5e1c3bbb765f0d185c8e21a6">bufferCreateInfo</a></td></tr>
-<tr class="memdesc:ae968d15a5e1c3bbb765f0d185c8e21a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO document! TODO implement!  <a href="struct_vma_buffer_allocator_create_info.html#ae968d15a5e1c3bbb765f0d185c8e21a6">More...</a><br /></td></tr>
+<tr class="memdesc:ae968d15a5e1c3bbb765f0d185c8e21a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of Vulkan buffers to be created internally by the created <a class="el" href="struct_vma_buffer_allocator.html" title="Represent main object that can allocate parts of larger Vulkan buffers.">VmaBufferAllocator</a>.  <a href="struct_vma_buffer_allocator_create_info.html#ae968d15a5e1c3bbb765f0d185c8e21a6">More...</a><br /></td></tr>
 <tr class="separator:ae968d15a5e1c3bbb765f0d185c8e21a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac5f946a3e8523ca7d2f1f9d3b435fced"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_allocator_create_info.html#ac5f946a3e8523ca7d2f1f9d3b435fced">allocationCreateInfo</a></td></tr>
-<tr class="memdesc:ac5f946a3e8523ca7d2f1f9d3b435fced"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO document! TODO implement!  <a href="struct_vma_buffer_allocator_create_info.html#ac5f946a3e8523ca7d2f1f9d3b435fced">More...</a><br /></td></tr>
+<tr class="memdesc:ac5f946a3e8523ca7d2f1f9d3b435fced"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of allocations to be created internally for buffers.  <a href="struct_vma_buffer_allocator_create_info.html#ac5f946a3e8523ca7d2f1f9d3b435fced">More...</a><br /></td></tr>
 <tr class="separator:ac5f946a3e8523ca7d2f1f9d3b435fced"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af17c4cad7c00d0df00959461dbbfb40f"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_allocator_create_info.html#af17c4cad7c00d0df00959461dbbfb40f">minBufferCount</a></td></tr>
-<tr class="memdesc:af17c4cad7c00d0df00959461dbbfb40f"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO document! TODO implement!  <a href="struct_vma_buffer_allocator_create_info.html#af17c4cad7c00d0df00959461dbbfb40f">More...</a><br /></td></tr>
+<tr class="memdesc:af17c4cad7c00d0df00959461dbbfb40f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum number of buffers to be created and always exist during lifetime of the created allocator. Default: 0.  <a href="struct_vma_buffer_allocator_create_info.html#af17c4cad7c00d0df00959461dbbfb40f">More...</a><br /></td></tr>
 <tr class="separator:af17c4cad7c00d0df00959461dbbfb40f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aa5ce312e46795d927685deb752c17ad1"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_allocator_create_info.html#aa5ce312e46795d927685deb752c17ad1">maxBufferCount</a></td></tr>
-<tr class="memdesc:aa5ce312e46795d927685deb752c17ad1"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO document! TODO implement!  <a href="struct_vma_buffer_allocator_create_info.html#aa5ce312e46795d927685deb752c17ad1">More...</a><br /></td></tr>
+<tr class="memdesc:aa5ce312e46795d927685deb752c17ad1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum number of buffers that can be created by the allocator. 0 means no limit.  <a href="struct_vma_buffer_allocator_create_info.html#aa5ce312e46795d927685deb752c17ad1">More...</a><br /></td></tr>
 <tr class="separator:aa5ce312e46795d927685deb752c17ad1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7abb079b970fd8e777a7f6961e4ce7c9"><td class="memItemLeft" align="right" valign="top">VkDeviceSize&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_allocator_create_info.html#a7abb079b970fd8e777a7f6961e4ce7c9">preferredBufferSize</a></td></tr>
+<tr class="memdesc:a7abb079b970fd8e777a7f6961e4ce7c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Preferred size of a single <code>VkBuffer</code> to be created by the allocator. 0 means default, which is currently 64 MB.  <a href="struct_vma_buffer_allocator_create_info.html#a7abb079b970fd8e777a7f6961e4ce7c9">More...</a><br /></td></tr>
+<tr class="separator:a7abb079b970fd8e777a7f6961e4ce7c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a60338f1d9b57b1bb3446e1c899ee7294"><td class="memItemLeft" align="right" valign="top">VkDeviceSize&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_allocator_create_info.html#a60338f1d9b57b1bb3446e1c899ee7294">minSuballocationAlignment</a></td></tr>
-<tr class="memdesc:a60338f1d9b57b1bb3446e1c899ee7294"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO document! TODO implement!  <a href="struct_vma_buffer_allocator_create_info.html#a60338f1d9b57b1bb3446e1c899ee7294">More...</a><br /></td></tr>
+<tr class="memdesc:a60338f1d9b57b1bb3446e1c899ee7294"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum alignment to be used for all suballocations created from this allocator. 0 or 1 means no minimum alignment is specified.  <a href="struct_vma_buffer_allocator_create_info.html#a60338f1d9b57b1bb3446e1c899ee7294">More...</a><br /></td></tr>
 <tr class="separator:a60338f1d9b57b1bb3446e1c899ee7294"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p >Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="TODO document!">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>. </p>
+<div class="textblock"><p >Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="Represent main object that can allocate parts of larger Vulkan buffers.">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>. </p>
 </div><h2 class="groupheader">Member Data Documentation</h2>
 <a id="ac5f946a3e8523ca7d2f1f9d3b435fced" name="ac5f946a3e8523ca7d2f1f9d3b435fced"></a>
 <h2 class="memtitle"><span class="permalink"><a href="#ac5f946a3e8523ca7d2f1f9d3b435fced">&#9670;&#160;</a></span>allocationCreateInfo</h2>
@@ -115,7 +118,8 @@
       </table>
 </div><div class="memdoc">
 
-<p>TODO document! TODO implement! </p>
+<p>Parameters of allocations to be created internally for buffers. </p>
+<p >The structure is copied, so you can free the memory of if together with the entire <a class="el" href="struct_vma_buffer_allocator_create_info.html" title="Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator().">VmaBufferAllocatorCreateInfo</a> after the creation call, but it has non-null <a class="el" href="struct_vma_allocation_create_info.html#a6272c0555cfd1fe28bff1afeb6190150" title="Pool that this allocation should be created in.">VmaAllocationCreateInfo::pool</a>, this pool must remain alive for the whole lifetime of the created allocator. </p>
 
 </div>
 </div>
@@ -131,7 +135,9 @@
       </table>
 </div><div class="memdoc">
 
-<p>TODO document! TODO implement! </p>
+<p>Parameters of Vulkan buffers to be created internally by the created <a class="el" href="struct_vma_buffer_allocator.html" title="Represent main object that can allocate parts of larger Vulkan buffers.">VmaBufferAllocator</a>. </p>
+<p ><code>size</code> parameter has special meaning. Set it to 0 to allow the allocator to managed buffer sizes automatically. This also allows buffer sizes to vary and allows to use <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a">VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT</a>. Set it to some other value to enforce that all buffers created by the allocator must have this specific size. This will also disallow to use <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a">VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT</a>. Note this is different than <a class="el" href="struct_vma_buffer_allocator_create_info.html#a7abb079b970fd8e777a7f6961e4ce7c9" title="Preferred size of a single VkBuffer to be created by the allocator. 0 means default,...">VmaBufferAllocatorCreateInfo::preferredBufferSize</a>.</p>
+<p >The structure is copied, so you can free the memory of if together with the entire <a class="el" href="struct_vma_buffer_allocator_create_info.html" title="Parameters of created VmaBufferAllocator object to be passed to vmaCreateBufferAllocator().">VmaBufferAllocatorCreateInfo</a> after the creation call, but if points to additional memory, e.g. using <code>pNext</code> chain or <code>pQueueFamilyIndices</code>, this memory must remain alive and unchanged for the whole lifetime of the created allocator. </p>
 
 </div>
 </div>
@@ -147,7 +153,7 @@
       </table>
 </div><div class="memdoc">
 
-<p>TODO document! TODO implement! </p>
+<p>Flags - use <a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08" title="Flags to be passed as VmaBufferAllocatorCreateInfo::flags.">VmaBufferAllocatorCreateFlagBits</a>. </p>
 
 </div>
 </div>
@@ -163,7 +169,7 @@
       </table>
 </div><div class="memdoc">
 
-<p>TODO document! TODO implement! </p>
+<p>Maximum number of buffers that can be created by the allocator. 0 means no limit. </p>
 
 </div>
 </div>
@@ -179,7 +185,8 @@
       </table>
 </div><div class="memdoc">
 
-<p>TODO document! TODO implement! </p>
+<p>Minimum number of buffers to be created and always exist during lifetime of the created allocator. Default: 0. </p>
+<p >Set it to 0 if you don't want to reserve a minimum number of buffers, so that no buffers are created before first suballocation is made. </p>
 
 </div>
 </div>
@@ -195,7 +202,25 @@
       </table>
 </div><div class="memdoc">
 
-<p>TODO document! TODO implement! </p>
+<p>Minimum alignment to be used for all suballocations created from this allocator. 0 or 1 means no minimum alignment is specified. </p>
+<p >As aligment for a new suballocation, maximum of this parameter and <a class="el" href="struct_vma_buffer_suballocation_create_info.html#ac95493e115314b775a8da4601269edef" title="TODO document! TODO implement!">VmaBufferSuballocationCreateInfo::alignment</a> will be taken. </p>
+
+</div>
+</div>
+<a id="a7abb079b970fd8e777a7f6961e4ce7c9" name="a7abb079b970fd8e777a7f6961e4ce7c9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7abb079b970fd8e777a7f6961e4ce7c9">&#9670;&#160;</a></span>preferredBufferSize</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">VkDeviceSize VmaBufferAllocatorCreateInfo::preferredBufferSize</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Preferred size of a single <code>VkBuffer</code> to be created by the allocator. 0 means default, which is currently 64 MB. </p>
+<p >Note this is different than <a class="el" href="struct_vma_buffer_allocator_create_info.html#ae968d15a5e1c3bbb765f0d185c8e21a6" title="Parameters of Vulkan buffers to be created internally by the created VmaBufferAllocator.">VmaBufferAllocatorCreateInfo::bufferCreateInfo</a> size parameter. By setting non-zero <code>preferredBufferSize</code>, you still allow the allocator to create buffers of different sizes, smaller and larger than this number. This also doesn't disallow to use <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a">VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT</a>. </p>
 
 </div>
 </div>
diff --git a/docs/html/struct_vma_buffer_suballocation.html b/docs/html/struct_vma_buffer_suballocation.html
index da75e72..6b50aac 100644
--- a/docs/html/struct_vma_buffer_suballocation.html
+++ b/docs/html/struct_vma_buffer_suballocation.html
@@ -73,10 +73,11 @@
 </div><!--header-->
 <div class="contents">
 
-<p>TODO document!  
+<p>Represents a single sub-allocation - allocated part of a larger Vulkan buffer.  
  <a href="struct_vma_buffer_suballocation.html#details">More...</a></p>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p >TODO document! </p>
+<div class="textblock"><p >Represents a single sub-allocation - allocated part of a larger Vulkan buffer. </p>
+<p >To use this object, create <a class="el" href="struct_vma_buffer_allocator.html" title="Represent main object that can allocate parts of larger Vulkan buffers.">VmaBufferAllocator</a> object first. For more information, see: <a class="el" href="buffer_suballocation.html">Buffer suballocation</a>. </p>
 </div><hr/>The documentation for this struct was generated from the following file:<ul>
 <li>D:/PROJECTS/Vulkan Memory Allocator/REPO/include/<a class="el" href="vk__mem__alloc_8h.html">vk_mem_alloc.h</a></li>
 </ul>
diff --git a/docs/html/struct_vma_buffer_suballocation_create_info.html b/docs/html/struct_vma_buffer_suballocation_create_info.html
index 45aac6a..ed023eb 100644
--- a/docs/html/struct_vma_buffer_suballocation_create_info.html
+++ b/docs/html/struct_vma_buffer_suballocation_create_info.html
@@ -76,7 +76,7 @@
 </div><!--header-->
 <div class="contents">
 
-<p>Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="TODO document!">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>.  
+<p>Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="Represents a single sub-allocation - allocated part of a larger Vulkan buffer.">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>.  
  <a href="struct_vma_buffer_suballocation_create_info.html#details">More...</a></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
@@ -95,7 +95,7 @@
 <tr class="separator:a2c4a9a3a240e093c4679a9c72f084966"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p >Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="TODO document!">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>. </p>
+<div class="textblock"><p >Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="Represents a single sub-allocation - allocated part of a larger Vulkan buffer.">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>. </p>
 </div><h2 class="groupheader">Member Data Documentation</h2>
 <a id="ac95493e115314b775a8da4601269edef" name="ac95493e115314b775a8da4601269edef"></a>
 <h2 class="memtitle"><span class="permalink"><a href="#ac95493e115314b775a8da4601269edef">&#9670;&#160;</a></span>alignment</h2>
diff --git a/docs/html/struct_vma_buffer_suballocation_info.html b/docs/html/struct_vma_buffer_suballocation_info.html
index 7ec84e9..783c0fb 100644
--- a/docs/html/struct_vma_buffer_suballocation_info.html
+++ b/docs/html/struct_vma_buffer_suballocation_info.html
@@ -76,7 +76,7 @@
 </div><!--header-->
 <div class="contents">
 
-<p>Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>.  
+<p>Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a> or <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>.  
  <a href="struct_vma_buffer_suballocation_info.html#details">More...</a></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
@@ -101,7 +101,7 @@
 <tr class="separator:aafb0ff200f8fae41e383dec078e3eb47"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p >Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>. </p>
+<div class="textblock"><p >Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a> or <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>. </p>
 </div><h2 class="groupheader">Member Data Documentation</h2>
 <a id="ad2e94e2bb0d15b9f48bce1213965e4a4" name="ad2e94e2bb0d15b9f48bce1213965e4a4"></a>
 <h2 class="memtitle"><span class="permalink"><a href="#ad2e94e2bb0d15b9f48bce1213965e4a4">&#9670;&#160;</a></span>allocation</h2>
diff --git a/docs/html/usage_patterns.html b/docs/html/usage_patterns.html
index d47efee..912ab63 100644
--- a/docs/html/usage_patterns.html
+++ b/docs/html/usage_patterns.html
@@ -106,10 +106,10 @@
 <div class="ttc" id="agroup__group__alloc_html_ga02a94f25679275851a53e82eacbcfc73"><div class="ttname"><a href="group__group__alloc.html#ga02a94f25679275851a53e82eacbcfc73">vmaCreateImage</a></div><div class="ttdeci">VkResult vmaCreateImage(VmaAllocator allocator, const VkImageCreateInfo *pImageCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkImage *pImage, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)</div><div class="ttdoc">Function similar to vmaCreateBuffer().</div></div>
 <div class="ttc" id="agroup__group__alloc_html_ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e"><div class="ttname"><a href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e">VMA_MEMORY_USAGE_AUTO</a></div><div class="ttdeci">@ VMA_MEMORY_USAGE_AUTO</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:495</div></div>
 <div class="ttc" id="agroup__group__alloc_html_ggad9889c10c798b040d59c92f257cae597a3fc311d855c2ff53f1090ef5c722b38f"><div class="ttname"><a href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a3fc311d855c2ff53f1090ef5c722b38f">VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT</a></div><div class="ttdeci">@ VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT</div><div class="ttdoc">Set this flag if the allocation should have its own memory block.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:531</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html"><div class="ttname"><a href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a></div><div class="ttdoc">Parameters of new VmaAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1305</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_a983d39e1a2e63649d78a960aa2fdd0f7"><div class="ttname"><a href="struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7">VmaAllocationCreateInfo::priority</a></div><div class="ttdeci">float priority</div><div class="ttdoc">A floating-point value between 0 and 1, indicating the priority of the allocation relative to other m...</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1351</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_accb8b06b1f677d858cb9af20705fa910"><div class="ttname"><a href="struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910">VmaAllocationCreateInfo::usage</a></div><div class="ttdeci">VmaMemoryUsage usage</div><div class="ttdoc">Intended usage of memory.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1313</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_add09658ac14fe290ace25470ddd6d41b"><div class="ttname"><a href="struct_vma_allocation_create_info.html#add09658ac14fe290ace25470ddd6d41b">VmaAllocationCreateInfo::flags</a></div><div class="ttdeci">VmaAllocationCreateFlags flags</div><div class="ttdoc">Use VmaAllocationCreateFlagBits enum.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1307</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html"><div class="ttname"><a href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a></div><div class="ttdoc">Parameters of new VmaAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1326</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_a983d39e1a2e63649d78a960aa2fdd0f7"><div class="ttname"><a href="struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7">VmaAllocationCreateInfo::priority</a></div><div class="ttdeci">float priority</div><div class="ttdoc">A floating-point value between 0 and 1, indicating the priority of the allocation relative to other m...</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1372</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_accb8b06b1f677d858cb9af20705fa910"><div class="ttname"><a href="struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910">VmaAllocationCreateInfo::usage</a></div><div class="ttdeci">VmaMemoryUsage usage</div><div class="ttdoc">Intended usage of memory.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1334</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_add09658ac14fe290ace25470ddd6d41b"><div class="ttname"><a href="struct_vma_allocation_create_info.html#add09658ac14fe290ace25470ddd6d41b">VmaAllocationCreateInfo::flags</a></div><div class="ttdeci">VmaAllocationCreateFlags flags</div><div class="ttdoc">Use VmaAllocationCreateFlagBits enum.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1328</div></div>
 <div class="ttc" id="astruct_vma_allocation_html"><div class="ttname"><a href="struct_vma_allocation.html">VmaAllocation</a></div><div class="ttdoc">Represents single memory allocation.</div></div>
 </div><!-- fragment --><p ><b>Also consider:</b> Consider creating them as dedicated allocations using <a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a3fc311d855c2ff53f1090ef5c722b38f" title="Set this flag if the allocation should have its own memory block.">VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT</a>, 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.</p>
 <h1><a class="anchor" id="usage_patterns_staging_copy_upload"></a>
@@ -136,8 +136,8 @@
 <div class="ttc" id="agroup__group__alloc_html_gac72ee55598617e8eecca384e746bab51"><div class="ttname"><a href="group__group__alloc.html#gac72ee55598617e8eecca384e746bab51">vmaCreateBuffer</a></div><div class="ttdeci">VkResult vmaCreateBuffer(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkBuffer *pBuffer, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)</div><div class="ttdoc">Creates a new VkBuffer, allocates and binds memory for it.</div></div>
 <div class="ttc" id="agroup__group__alloc_html_ggad9889c10c798b040d59c92f257cae597a11da372cc3a82931c5e5d6146cd9dd1f"><div class="ttname"><a href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a11da372cc3a82931c5e5d6146cd9dd1f">VMA_ALLOCATION_CREATE_MAPPED_BIT</a></div><div class="ttdeci">@ VMA_ALLOCATION_CREATE_MAPPED_BIT</div><div class="ttdoc">Set this flag to use a memory that will be persistently mapped and retrieve pointer to it.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:552</div></div>
 <div class="ttc" id="agroup__group__alloc_html_ggad9889c10c798b040d59c92f257cae597a9be224df3bfc1cfa06203aed689a30c5"><div class="ttname"><a href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a9be224df3bfc1cfa06203aed689a30c5">VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT</a></div><div class="ttdeci">@ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:601</div></div>
-<div class="ttc" id="astruct_vma_allocation_info_html"><div class="ttname"><a href="struct_vma_allocation_info.html">VmaAllocationInfo</a></div><div class="ttdoc">Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo().</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1420</div></div>
-<div class="ttc" id="astruct_vma_allocation_info_html_a5eeffbe2d2f30f53370ff14aefbadbe2"><div class="ttname"><a href="struct_vma_allocation_info.html#a5eeffbe2d2f30f53370ff14aefbadbe2">VmaAllocationInfo::pMappedData</a></div><div class="ttdeci">void * pMappedData</div><div class="ttdoc">Pointer to the beginning of this allocation as mapped data.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1462</div></div>
+<div class="ttc" id="astruct_vma_allocation_info_html"><div class="ttname"><a href="struct_vma_allocation_info.html">VmaAllocationInfo</a></div><div class="ttdoc">Parameters of VmaAllocation objects, that can be retrieved using function vmaGetAllocationInfo().</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1441</div></div>
+<div class="ttc" id="astruct_vma_allocation_info_html_a5eeffbe2d2f30f53370ff14aefbadbe2"><div class="ttname"><a href="struct_vma_allocation_info.html#a5eeffbe2d2f30f53370ff14aefbadbe2">VmaAllocationInfo::pMappedData</a></div><div class="ttdeci">void * pMappedData</div><div class="ttdoc">Pointer to the beginning of this allocation as mapped data.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1483</div></div>
 </div><!-- fragment --><p ><b>Also consider:</b> You can map the allocation using <a class="el" href="group__group__alloc.html#gad5bd1243512d099706de88168992f069" title="Maps memory represented by given allocation and returns pointer to it.">vmaMapMemory()</a> or you can create it as persistenly mapped using <a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a11da372cc3a82931c5e5d6146cd9dd1f" title="Set this flag to use a memory that will be persistently mapped and retrieve pointer to it.">VMA_ALLOCATION_CREATE_MAPPED_BIT</a>, as in the example above.</p>
 <h1><a class="anchor" id="usage_patterns_readback"></a>
 Readback</h1>
diff --git a/docs/html/virtual_allocator.html b/docs/html/virtual_allocator.html
index e0cf5fc..54d9660 100644
--- a/docs/html/virtual_allocator.html
+++ b/docs/html/virtual_allocator.html
@@ -91,8 +91,8 @@
 <div class="line"><a class="code hl_struct" href="struct_vma_virtual_block.html">VmaVirtualBlock</a> block;</div>
 <div class="line">VkResult res = <a class="code hl_function" href="group__group__virtual.html#gab585754076877265fdae33e5c40ef13b">vmaCreateVirtualBlock</a>(&amp;blockCreateInfo, &amp;block);</div>
 <div class="ttc" id="agroup__group__virtual_html_gab585754076877265fdae33e5c40ef13b"><div class="ttname"><a href="group__group__virtual.html#gab585754076877265fdae33e5c40ef13b">vmaCreateVirtualBlock</a></div><div class="ttdeci">VkResult vmaCreateVirtualBlock(const VmaVirtualBlockCreateInfo *pCreateInfo, VmaVirtualBlock *pVirtualBlock)</div><div class="ttdoc">Creates new VmaVirtualBlock object.</div></div>
-<div class="ttc" id="astruct_vma_virtual_block_create_info_html"><div class="ttname"><a href="struct_vma_virtual_block_create_info.html">VmaVirtualBlockCreateInfo</a></div><div class="ttdoc">Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock().</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1575</div></div>
-<div class="ttc" id="astruct_vma_virtual_block_create_info_html_a670ab8c6a6e822f3c36781d79e8824e9"><div class="ttname"><a href="struct_vma_virtual_block_create_info.html#a670ab8c6a6e822f3c36781d79e8824e9">VmaVirtualBlockCreateInfo::size</a></div><div class="ttdeci">VkDeviceSize size</div><div class="ttdoc">Total size of the virtual block.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1581</div></div>
+<div class="ttc" id="astruct_vma_virtual_block_create_info_html"><div class="ttname"><a href="struct_vma_virtual_block_create_info.html">VmaVirtualBlockCreateInfo</a></div><div class="ttdoc">Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock().</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1596</div></div>
+<div class="ttc" id="astruct_vma_virtual_block_create_info_html_a670ab8c6a6e822f3c36781d79e8824e9"><div class="ttname"><a href="struct_vma_virtual_block_create_info.html#a670ab8c6a6e822f3c36781d79e8824e9">VmaVirtualBlockCreateInfo::size</a></div><div class="ttdeci">VkDeviceSize size</div><div class="ttdoc">Total size of the virtual block.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1602</div></div>
 <div class="ttc" id="astruct_vma_virtual_block_html"><div class="ttname"><a href="struct_vma_virtual_block.html">VmaVirtualBlock</a></div><div class="ttdoc">Handle to a virtual block object that allows to use core allocation algorithm without allocating any ...</div></div>
 </div><!-- fragment --><h1><a class="anchor" id="virtual_allocator_making_virtual_allocations"></a>
 Making virtual allocations</h1>
@@ -118,8 +118,8 @@
 <div class="line">    <span class="comment">// Allocation failed - no space for it could be found. Handle this error!</span></div>
 <div class="line">}</div>
 <div class="ttc" id="agroup__group__virtual_html_ga6b7cdcc1c3e5103c323fedc4e1319e01"><div class="ttname"><a href="group__group__virtual.html#ga6b7cdcc1c3e5103c323fedc4e1319e01">vmaVirtualAllocate</a></div><div class="ttdeci">VkResult vmaVirtualAllocate(VmaVirtualBlock virtualBlock, const VmaVirtualAllocationCreateInfo *pCreateInfo, VmaVirtualAllocation *pAllocation, VkDeviceSize *pOffset)</div><div class="ttdoc">Allocates new virtual allocation inside given VmaVirtualBlock.</div></div>
-<div class="ttc" id="astruct_vma_virtual_allocation_create_info_html"><div class="ttname"><a href="struct_vma_virtual_allocation_create_info.html">VmaVirtualAllocationCreateInfo</a></div><div class="ttdoc">Parameters of created virtual allocation to be passed to vmaVirtualAllocate().</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1596</div></div>
-<div class="ttc" id="astruct_vma_virtual_allocation_create_info_html_aae08752b86817abd0d944c6025dc603e"><div class="ttname"><a href="struct_vma_virtual_allocation_create_info.html#aae08752b86817abd0d944c6025dc603e">VmaVirtualAllocationCreateInfo::size</a></div><div class="ttdeci">VkDeviceSize size</div><div class="ttdoc">Size of the allocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1601</div></div>
+<div class="ttc" id="astruct_vma_virtual_allocation_create_info_html"><div class="ttname"><a href="struct_vma_virtual_allocation_create_info.html">VmaVirtualAllocationCreateInfo</a></div><div class="ttdoc">Parameters of created virtual allocation to be passed to vmaVirtualAllocate().</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1617</div></div>
+<div class="ttc" id="astruct_vma_virtual_allocation_create_info_html_aae08752b86817abd0d944c6025dc603e"><div class="ttname"><a href="struct_vma_virtual_allocation_create_info.html#aae08752b86817abd0d944c6025dc603e">VmaVirtualAllocationCreateInfo::size</a></div><div class="ttdeci">VkDeviceSize size</div><div class="ttdoc">Size of the allocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1622</div></div>
 <div class="ttc" id="astruct_vma_virtual_allocation_html"><div class="ttname"><a href="struct_vma_virtual_allocation.html">VmaVirtualAllocation</a></div><div class="ttdoc">Represents single memory allocation done inside VmaVirtualBlock.</div></div>
 </div><!-- fragment --><h1><a class="anchor" id="virtual_allocator_deallocation"></a>
 Deallocation</h1>
@@ -147,8 +147,8 @@
 <div class="line"> </div>
 <div class="line"><a class="code hl_function" href="group__group__virtual.html#ga09fc688c0c3653ff23723b037e5d5033">vmaVirtualFree</a>(block, alloc);</div>
 <div class="ttc" id="agroup__group__virtual_html_ga8ee14ceb1fe033ec84d8aa29e1f75afa"><div class="ttname"><a href="group__group__virtual.html#ga8ee14ceb1fe033ec84d8aa29e1f75afa">vmaGetVirtualAllocationInfo</a></div><div class="ttdeci">void vmaGetVirtualAllocationInfo(VmaVirtualBlock virtualBlock, VmaVirtualAllocation allocation, VmaVirtualAllocationInfo *pVirtualAllocInfo)</div><div class="ttdoc">Returns information about a specific virtual allocation within a virtual block, like its size and pUs...</div></div>
-<div class="ttc" id="astruct_vma_virtual_allocation_info_html"><div class="ttname"><a href="struct_vma_virtual_allocation_info.html">VmaVirtualAllocationInfo</a></div><div class="ttdoc">Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo().</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1619</div></div>
-<div class="ttc" id="astruct_vma_virtual_allocation_info_html_a41d5cb09357656411653d82fee436f45"><div class="ttname"><a href="struct_vma_virtual_allocation_info.html#a41d5cb09357656411653d82fee436f45">VmaVirtualAllocationInfo::pUserData</a></div><div class="ttdeci">void * pUserData</div><div class="ttdoc">Custom pointer associated with the allocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1634</div></div>
+<div class="ttc" id="astruct_vma_virtual_allocation_info_html"><div class="ttname"><a href="struct_vma_virtual_allocation_info.html">VmaVirtualAllocationInfo</a></div><div class="ttdoc">Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo().</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1640</div></div>
+<div class="ttc" id="astruct_vma_virtual_allocation_info_html_a41d5cb09357656411653d82fee436f45"><div class="ttname"><a href="struct_vma_virtual_allocation_info.html#a41d5cb09357656411653d82fee436f45">VmaVirtualAllocationInfo::pUserData</a></div><div class="ttdeci">void * pUserData</div><div class="ttdoc">Custom pointer associated with the allocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1655</div></div>
 </div><!-- fragment --><h1><a class="anchor" id="virtual_allocator_alignment_and_units"></a>
 Alignment and units</h1>
 <p >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 <a class="el" href="struct_vma_virtual_allocation_create_info.html#a9d19709872fc1904a105079e1c885821" title="Required alignment of the allocation. Optional.">VmaVirtualAllocationCreateInfo::alignment</a> to request it. Example:</p>
@@ -158,7 +158,7 @@
 <div class="line"> </div>
 <div class="line"><a class="code hl_struct" href="struct_vma_virtual_allocation.html">VmaVirtualAllocation</a> alloc;</div>
 <div class="line">res = <a class="code hl_function" href="group__group__virtual.html#ga6b7cdcc1c3e5103c323fedc4e1319e01">vmaVirtualAllocate</a>(block, &amp;allocCreateInfo, &amp;alloc, <span class="keyword">nullptr</span>);</div>
-<div class="ttc" id="astruct_vma_virtual_allocation_create_info_html_a9d19709872fc1904a105079e1c885821"><div class="ttname"><a href="struct_vma_virtual_allocation_create_info.html#a9d19709872fc1904a105079e1c885821">VmaVirtualAllocationCreateInfo::alignment</a></div><div class="ttdeci">VkDeviceSize alignment</div><div class="ttdoc">Required alignment of the allocation. Optional.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1606</div></div>
+<div class="ttc" id="astruct_vma_virtual_allocation_create_info_html_a9d19709872fc1904a105079e1c885821"><div class="ttname"><a href="struct_vma_virtual_allocation_create_info.html#a9d19709872fc1904a105079e1c885821">VmaVirtualAllocationCreateInfo::alignment</a></div><div class="ttdeci">VkDeviceSize alignment</div><div class="ttdoc">Required alignment of the allocation. Optional.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1627</div></div>
 </div><!-- fragment --><p >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 <code>sizeof(MyDataStruct)</code>, 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:</p>
 <ul>
 <li><a class="el" href="struct_vma_virtual_block_create_info.html#a670ab8c6a6e822f3c36781d79e8824e9" title="Total size of the virtual block.">VmaVirtualBlockCreateInfo::size</a></li>
@@ -173,9 +173,9 @@
 <div class="line">printf(<span class="stringliteral">&quot;My virtual block has %llu bytes used by %u virtual allocations\n&quot;</span>,</div>
 <div class="line">    stats.<a class="code hl_variable" href="struct_vma_statistics.html#a21db06eba3422f87a2b4b4703d879c16">allocationBytes</a>, stats.<a class="code hl_variable" href="struct_vma_statistics.html#ab0ff76e50f58f9f54b6f265e5bf5dde2">allocationCount</a>);</div>
 <div class="ttc" id="agroup__group__virtual_html_ga2902aa3130866afcc64bb5f984113db3"><div class="ttname"><a href="group__group__virtual.html#ga2902aa3130866afcc64bb5f984113db3">vmaGetVirtualBlockStatistics</a></div><div class="ttdeci">void vmaGetVirtualBlockStatistics(VmaVirtualBlock virtualBlock, VmaStatistics *pStats)</div><div class="ttdoc">Calculates and returns statistics about virtual allocations and memory usage in given VmaVirtualBlock...</div></div>
-<div class="ttc" id="astruct_vma_statistics_html"><div class="ttname"><a href="struct_vma_statistics.html">VmaStatistics</a></div><div class="ttdoc">Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool,...</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1194</div></div>
-<div class="ttc" id="astruct_vma_statistics_html_a21db06eba3422f87a2b4b4703d879c16"><div class="ttname"><a href="struct_vma_statistics.html#a21db06eba3422f87a2b4b4703d879c16">VmaStatistics::allocationBytes</a></div><div class="ttdeci">VkDeviceSize allocationBytes</div><div class="ttdoc">Total number of bytes occupied by all VmaAllocation objects.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1216</div></div>
-<div class="ttc" id="astruct_vma_statistics_html_ab0ff76e50f58f9f54b6f265e5bf5dde2"><div class="ttname"><a href="struct_vma_statistics.html#ab0ff76e50f58f9f54b6f265e5bf5dde2">VmaStatistics::allocationCount</a></div><div class="ttdeci">uint32_t allocationCount</div><div class="ttdoc">Number of VmaAllocation objects allocated.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1202</div></div>
+<div class="ttc" id="astruct_vma_statistics_html"><div class="ttname"><a href="struct_vma_statistics.html">VmaStatistics</a></div><div class="ttdoc">Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool,...</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1215</div></div>
+<div class="ttc" id="astruct_vma_statistics_html_a21db06eba3422f87a2b4b4703d879c16"><div class="ttname"><a href="struct_vma_statistics.html#a21db06eba3422f87a2b4b4703d879c16">VmaStatistics::allocationBytes</a></div><div class="ttdeci">VkDeviceSize allocationBytes</div><div class="ttdoc">Total number of bytes occupied by all VmaAllocation objects.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1237</div></div>
+<div class="ttc" id="astruct_vma_statistics_html_ab0ff76e50f58f9f54b6f265e5bf5dde2"><div class="ttname"><a href="struct_vma_statistics.html#ab0ff76e50f58f9f54b6f265e5bf5dde2">VmaStatistics::allocationCount</a></div><div class="ttdeci">uint32_t allocationCount</div><div class="ttdoc">Number of VmaAllocation objects allocated.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1223</div></div>
 </div><!-- fragment --><p >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.</p>
 <h1><a class="anchor" id="virtual_allocator_additional_considerations"></a>
 Additional considerations</h1>
diff --git a/docs/html/vk__mem__alloc_8h.html b/docs/html/vk__mem__alloc_8h.html
index 978cc39..6abf645 100644
--- a/docs/html/vk__mem__alloc_8h.html
+++ b/docs/html/vk__mem__alloc_8h.html
@@ -141,13 +141,13 @@
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of an existing virtual allocation, returned by <a class="el" href="group__group__virtual.html#ga8ee14ceb1fe033ec84d8aa29e1f75afa" title="Returns information about a specific virtual allocation within a virtual block, like its size and pUs...">vmaGetVirtualAllocationInfo()</a>.  <a href="struct_vma_virtual_allocation_info.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_allocator_create_info.html">VmaBufferAllocatorCreateInfo</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="TODO document!">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>.  <a href="struct_vma_buffer_allocator_create_info.html#details">More...</a><br /></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="Represent main object that can allocate parts of larger Vulkan buffers.">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>.  <a href="struct_vma_buffer_allocator_create_info.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_suballocation_create_info.html">VmaBufferSuballocationCreateInfo</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="TODO document!">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>.  <a href="struct_vma_buffer_suballocation_create_info.html#details">More...</a><br /></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="Represents a single sub-allocation - allocated part of a larger Vulkan buffer.">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>.  <a href="struct_vma_buffer_suballocation_create_info.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_suballocation_info.html">VmaBufferSuballocationInfo</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>.  <a href="struct_vma_buffer_suballocation_info.html#details">More...</a><br /></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a> or <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>.  <a href="struct_vma_buffer_suballocation_info.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
@@ -208,10 +208,10 @@
 <tr class="memdesc:gae96ffc099bf898257fb19e9410ed08a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_virtual_allocation_create_info.html#ab10e16956cc4bf20ced9de77d1129ea4" title="Use combination of VmaVirtualAllocationCreateFlagBits.">VmaVirtualAllocationCreateInfo::flags</a>. See <a class="el" href="group__group__virtual.html#ga2e9c64d405b14156fea7e10c4ad06cb6" title="Flags to be passed as VmaVirtualAllocationCreateInfo::flags.">VmaVirtualAllocationCreateFlagBits</a>.  <a href="group__group__virtual.html#gae96ffc099bf898257fb19e9410ed08a7">More...</a><br /></td></tr>
 <tr class="separator:gae96ffc099bf898257fb19e9410ed08a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gab59dc80be7e88530693d2140c7e4baa9"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08">VmaBufferAllocatorCreateFlagBits</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#gab59dc80be7e88530693d2140c7e4baa9">VmaBufferAllocatorCreateFlagBits</a></td></tr>
-<tr class="memdesc:gab59dc80be7e88530693d2140c7e4baa9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="TODO document! TODO implement!">VmaBufferAllocatorCreateInfo::flags</a>.  <a href="group__group__buffer__suballocation.html#gab59dc80be7e88530693d2140c7e4baa9">More...</a><br /></td></tr>
+<tr class="memdesc:gab59dc80be7e88530693d2140c7e4baa9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="Flags - use VmaBufferAllocatorCreateFlagBits.">VmaBufferAllocatorCreateInfo::flags</a>.  <a href="group__group__buffer__suballocation.html#gab59dc80be7e88530693d2140c7e4baa9">More...</a><br /></td></tr>
 <tr class="separator:gab59dc80be7e88530693d2140c7e4baa9"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga524fc82795862079781317e33be657e1"><td class="memItemLeft" align="right" valign="top">typedef VkFlags&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga524fc82795862079781317e33be657e1">VmaBufferAllocatorCreateFlags</a></td></tr>
-<tr class="memdesc:ga524fc82795862079781317e33be657e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="TODO document! TODO implement!">VmaBufferAllocatorCreateInfo::flags</a>. See <a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08" title="Flags to be passed as VmaBufferAllocatorCreateInfo::flags.">VmaBufferAllocatorCreateFlagBits</a>.  <a href="group__group__buffer__suballocation.html#ga524fc82795862079781317e33be657e1">More...</a><br /></td></tr>
+<tr class="memdesc:ga524fc82795862079781317e33be657e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="Flags - use VmaBufferAllocatorCreateFlagBits.">VmaBufferAllocatorCreateInfo::flags</a>. See <a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08" title="Flags to be passed as VmaBufferAllocatorCreateInfo::flags.">VmaBufferAllocatorCreateFlagBits</a>.  <a href="group__group__buffer__suballocation.html#ga524fc82795862079781317e33be657e1">More...</a><br /></td></tr>
 <tr class="separator:ga524fc82795862079781317e33be657e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:gab4d54a73919432f9d90f5e8cb1752fb0"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb">VmaBufferSuballocationCreateFlagBits</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#gab4d54a73919432f9d90f5e8cb1752fb0">VmaBufferSuballocationCreateFlagBits</a></td></tr>
 <tr class="memdesc:gab4d54a73919432f9d90f5e8cb1752fb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_virtual_allocation_create_info.html#ab10e16956cc4bf20ced9de77d1129ea4" title="Use combination of VmaVirtualAllocationCreateFlagBits.">VmaVirtualAllocationCreateInfo::flags</a>.  <a href="group__group__buffer__suballocation.html#gab4d54a73919432f9d90f5e8cb1752fb0">More...</a><br /></td></tr>
@@ -280,13 +280,13 @@
 <tr class="memdesc:ga75bc33ff7cf18c98e101f570dc2a5ebc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of an existing virtual allocation, returned by <a class="el" href="group__group__virtual.html#ga8ee14ceb1fe033ec84d8aa29e1f75afa" title="Returns information about a specific virtual allocation within a virtual block, like its size and pUs...">vmaGetVirtualAllocationInfo()</a>.  <a href="group__group__virtual.html#ga75bc33ff7cf18c98e101f570dc2a5ebc">More...</a><br /></td></tr>
 <tr class="separator:ga75bc33ff7cf18c98e101f570dc2a5ebc"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga07daea3c55e292b9ea9cdbe481f6d598"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_buffer_allocator_create_info.html">VmaBufferAllocatorCreateInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga07daea3c55e292b9ea9cdbe481f6d598">VmaBufferAllocatorCreateInfo</a></td></tr>
-<tr class="memdesc:ga07daea3c55e292b9ea9cdbe481f6d598"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="TODO document!">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>.  <a href="group__group__buffer__suballocation.html#ga07daea3c55e292b9ea9cdbe481f6d598">More...</a><br /></td></tr>
+<tr class="memdesc:ga07daea3c55e292b9ea9cdbe481f6d598"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="Represent main object that can allocate parts of larger Vulkan buffers.">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>.  <a href="group__group__buffer__suballocation.html#ga07daea3c55e292b9ea9cdbe481f6d598">More...</a><br /></td></tr>
 <tr class="separator:ga07daea3c55e292b9ea9cdbe481f6d598"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga0ee2c81ee2378cc43620c0d577175935"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_buffer_suballocation_create_info.html">VmaBufferSuballocationCreateInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga0ee2c81ee2378cc43620c0d577175935">VmaBufferSuballocationCreateInfo</a></td></tr>
-<tr class="memdesc:ga0ee2c81ee2378cc43620c0d577175935"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="TODO document!">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>.  <a href="group__group__buffer__suballocation.html#ga0ee2c81ee2378cc43620c0d577175935">More...</a><br /></td></tr>
+<tr class="memdesc:ga0ee2c81ee2378cc43620c0d577175935"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="Represents a single sub-allocation - allocated part of a larger Vulkan buffer.">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>.  <a href="group__group__buffer__suballocation.html#ga0ee2c81ee2378cc43620c0d577175935">More...</a><br /></td></tr>
 <tr class="separator:ga0ee2c81ee2378cc43620c0d577175935"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga18bf3079703d3188bb268b5838bb9c22"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_buffer_suballocation_info.html">VmaBufferSuballocationInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga18bf3079703d3188bb268b5838bb9c22">VmaBufferSuballocationInfo</a></td></tr>
-<tr class="memdesc:ga18bf3079703d3188bb268b5838bb9c22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>.  <a href="group__group__buffer__suballocation.html#ga18bf3079703d3188bb268b5838bb9c22">More...</a><br /></td></tr>
+<tr class="memdesc:ga18bf3079703d3188bb268b5838bb9c22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a> or <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>.  <a href="group__group__buffer__suballocation.html#ga18bf3079703d3188bb268b5838bb9c22">More...</a><br /></td></tr>
 <tr class="separator:ga18bf3079703d3188bb268b5838bb9c22"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
@@ -397,18 +397,20 @@
 , <a class="el" href="group__group__buffer__suballocation.html#gga57862e1ba87f2baa7e4b9d2af2cc1c08ae474b5be5f4211f75e953b620f2c493e">VMA_BUFFER_ALLOCATOR_CREATE_ALGORITHM_MASK</a>
 , <a class="el" href="group__group__buffer__suballocation.html#gga57862e1ba87f2baa7e4b9d2af2cc1c08a386b94573003558b4103d9bbb430d49a">VMA_BUFFER_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM</a> = 0x7FFFFFFF
  }</td></tr>
-<tr class="memdesc:ga57862e1ba87f2baa7e4b9d2af2cc1c08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="TODO document! TODO implement!">VmaBufferAllocatorCreateInfo::flags</a>.  <a href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08">More...</a><br /></td></tr>
+<tr class="memdesc:ga57862e1ba87f2baa7e4b9d2af2cc1c08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="Flags - use VmaBufferAllocatorCreateFlagBits.">VmaBufferAllocatorCreateInfo::flags</a>.  <a href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08">More...</a><br /></td></tr>
 <tr class="separator:ga57862e1ba87f2baa7e4b9d2af2cc1c08"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga79ecf879da8900036ea0ea5b2e7adceb"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb">VmaBufferSuballocationCreateFlagBits</a> { <br />
 &#160;&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a">VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT</a> = 0x00000001
-, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012">VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT</a> = 0x00000002
-, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd">VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT</a> = 0x00000004
-, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb">VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT</a> = 0x00010000
+, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaa891857e2a3c8307408b4e0763c158f2">VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT</a> = 0x00000002
+, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012">VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT</a> = 0x00000004
+, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd">VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT</a> = 0x00000008
 , <br />
-&#160;&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30">VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT</a> = 0x00020000
+&#160;&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb">VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT</a> = 0x00010000
+, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30">VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT</a> = 0x00020000
 , <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099">VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT</a> = 0x00040000
 , <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388">VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK</a>
-, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaec0e2b1cec0f2337ad134cec5aead0df">VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM</a> = 0x7FFFFFFF
+, <br />
+&#160;&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaec0e2b1cec0f2337ad134cec5aead0df">VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM</a> = 0x7FFFFFFF
 <br />
  }</td></tr>
 <tr class="memdesc:ga79ecf879da8900036ea0ea5b2e7adceb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_virtual_allocation_create_info.html#ab10e16956cc4bf20ced9de77d1129ea4" title="Use combination of VmaVirtualAllocationCreateFlagBits.">VmaVirtualAllocationCreateInfo::flags</a>.  <a href="group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb">More...</a><br /></td></tr>
@@ -627,18 +629,12 @@
 <tr class="memitem:gabd39fc17fc5c76e1dc4f95a3753446d4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#gabd39fc17fc5c76e1dc4f95a3753446d4">vmaUnmapBufferSuballocation</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation)</td></tr>
 <tr class="memdesc:gabd39fc17fc5c76e1dc4f95a3753446d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document!  <a href="group__group__buffer__suballocation.html#gabd39fc17fc5c76e1dc4f95a3753446d4">More...</a><br /></td></tr>
 <tr class="separator:gabd39fc17fc5c76e1dc4f95a3753446d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gae20326d64236fe7ea9332483b83cab0d"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#gae20326d64236fe7ea9332483b83cab0d">vmaFlushBufferSuballocation</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation, VkDeviceSize offset, VkDeviceSize size)</td></tr>
-<tr class="memdesc:gae20326d64236fe7ea9332483b83cab0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document!  <a href="group__group__buffer__suballocation.html#gae20326d64236fe7ea9332483b83cab0d">More...</a><br /></td></tr>
-<tr class="separator:gae20326d64236fe7ea9332483b83cab0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gaa6da44bb7c952e31ee908b06dcaeaa1b"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#gaa6da44bb7c952e31ee908b06dcaeaa1b">vmaInvalidateBufferSuballocation</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation, VkDeviceSize offset, VkDeviceSize size)</td></tr>
-<tr class="memdesc:gaa6da44bb7c952e31ee908b06dcaeaa1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document!  <a href="group__group__buffer__suballocation.html#gaa6da44bb7c952e31ee908b06dcaeaa1b">More...</a><br /></td></tr>
-<tr class="separator:gaa6da44bb7c952e31ee908b06dcaeaa1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga199d3aa9d77cd58670c06da2b6c5f53c"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga199d3aa9d77cd58670c06da2b6c5f53c">vmaFlushBufferSuballocations</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, uint32_t bufferSuballocationCount, const <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> *pBufferSuballocations, const VkDeviceSize *pOffset, const VkDeviceSize *pSizes)</td></tr>
-<tr class="memdesc:ga199d3aa9d77cd58670c06da2b6c5f53c"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document!  <a href="group__group__buffer__suballocation.html#ga199d3aa9d77cd58670c06da2b6c5f53c">More...</a><br /></td></tr>
-<tr class="separator:ga199d3aa9d77cd58670c06da2b6c5f53c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga90de24bda8b9156113cfdc6b3e515191"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga90de24bda8b9156113cfdc6b3e515191">vmaInvalidateBufferSuballocations</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, const <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> *pBufferSuballocations, const VkDeviceSize *pOffset, const VkDeviceSize *pSizes)</td></tr>
-<tr class="memdesc:ga90de24bda8b9156113cfdc6b3e515191"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document!  <a href="group__group__buffer__suballocation.html#ga90de24bda8b9156113cfdc6b3e515191">More...</a><br /></td></tr>
-<tr class="separator:ga90de24bda8b9156113cfdc6b3e515191"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga662e8386b36dc17573da63796713b50a"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga662e8386b36dc17573da63796713b50a">vmaFlushBufferSuballocation</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation, VkDeviceSize suballocationLocalOffset, VkDeviceSize size)</td></tr>
+<tr class="memdesc:ga662e8386b36dc17573da63796713b50a"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document!  <a href="group__group__buffer__suballocation.html#ga662e8386b36dc17573da63796713b50a">More...</a><br /></td></tr>
+<tr class="separator:ga662e8386b36dc17573da63796713b50a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1aa4e38503fae280262527ce41af6920"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga1aa4e38503fae280262527ce41af6920">vmaInvalidateBufferSuballocation</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation, VkDeviceSize suballocationLocalOffset, VkDeviceSize size)</td></tr>
+<tr class="memdesc:ga1aa4e38503fae280262527ce41af6920"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document!  <a href="group__group__buffer__suballocation.html#ga1aa4e38503fae280262527ce41af6920">More...</a><br /></td></tr>
+<tr class="separator:ga1aa4e38503fae280262527ce41af6920"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Macro Definition Documentation</h2>
 <a id="a88bef97f86d70a34a4c0746e09a2680d" name="a88bef97f86d70a34a4c0746e09a2680d"></a>
diff --git a/docs/html/vk_ext_memory_priority.html b/docs/html/vk_ext_memory_priority.html
index 1ef4359..96ff89b 100644
--- a/docs/html/vk_ext_memory_priority.html
+++ b/docs/html/vk_ext_memory_priority.html
@@ -119,10 +119,10 @@
 <div class="ttc" id="agroup__group__alloc_html_ga02a94f25679275851a53e82eacbcfc73"><div class="ttname"><a href="group__group__alloc.html#ga02a94f25679275851a53e82eacbcfc73">vmaCreateImage</a></div><div class="ttdeci">VkResult vmaCreateImage(VmaAllocator allocator, const VkImageCreateInfo *pImageCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkImage *pImage, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)</div><div class="ttdoc">Function similar to vmaCreateBuffer().</div></div>
 <div class="ttc" id="agroup__group__alloc_html_ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e"><div class="ttname"><a href="group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e">VMA_MEMORY_USAGE_AUTO</a></div><div class="ttdeci">@ VMA_MEMORY_USAGE_AUTO</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:495</div></div>
 <div class="ttc" id="agroup__group__alloc_html_ggad9889c10c798b040d59c92f257cae597a3fc311d855c2ff53f1090ef5c722b38f"><div class="ttname"><a href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a3fc311d855c2ff53f1090ef5c722b38f">VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT</a></div><div class="ttdeci">@ VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT</div><div class="ttdoc">Set this flag if the allocation should have its own memory block.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:531</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html"><div class="ttname"><a href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a></div><div class="ttdoc">Parameters of new VmaAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1305</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_a983d39e1a2e63649d78a960aa2fdd0f7"><div class="ttname"><a href="struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7">VmaAllocationCreateInfo::priority</a></div><div class="ttdeci">float priority</div><div class="ttdoc">A floating-point value between 0 and 1, indicating the priority of the allocation relative to other m...</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1351</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_accb8b06b1f677d858cb9af20705fa910"><div class="ttname"><a href="struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910">VmaAllocationCreateInfo::usage</a></div><div class="ttdeci">VmaMemoryUsage usage</div><div class="ttdoc">Intended usage of memory.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1313</div></div>
-<div class="ttc" id="astruct_vma_allocation_create_info_html_add09658ac14fe290ace25470ddd6d41b"><div class="ttname"><a href="struct_vma_allocation_create_info.html#add09658ac14fe290ace25470ddd6d41b">VmaAllocationCreateInfo::flags</a></div><div class="ttdeci">VmaAllocationCreateFlags flags</div><div class="ttdoc">Use VmaAllocationCreateFlagBits enum.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1307</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html"><div class="ttname"><a href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a></div><div class="ttdoc">Parameters of new VmaAllocation.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1326</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_a983d39e1a2e63649d78a960aa2fdd0f7"><div class="ttname"><a href="struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7">VmaAllocationCreateInfo::priority</a></div><div class="ttdeci">float priority</div><div class="ttdoc">A floating-point value between 0 and 1, indicating the priority of the allocation relative to other m...</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1372</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_accb8b06b1f677d858cb9af20705fa910"><div class="ttname"><a href="struct_vma_allocation_create_info.html#accb8b06b1f677d858cb9af20705fa910">VmaAllocationCreateInfo::usage</a></div><div class="ttdeci">VmaMemoryUsage usage</div><div class="ttdoc">Intended usage of memory.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1334</div></div>
+<div class="ttc" id="astruct_vma_allocation_create_info_html_add09658ac14fe290ace25470ddd6d41b"><div class="ttname"><a href="struct_vma_allocation_create_info.html#add09658ac14fe290ace25470ddd6d41b">VmaAllocationCreateInfo::flags</a></div><div class="ttdeci">VmaAllocationCreateFlags flags</div><div class="ttdoc">Use VmaAllocationCreateFlagBits enum.</div><div class="ttdef"><b>Definition:</b> vk_mem_alloc.h:1328</div></div>
 <div class="ttc" id="astruct_vma_allocation_html"><div class="ttname"><a href="struct_vma_allocation.html">VmaAllocation</a></div><div class="ttdoc">Represents single memory allocation.</div></div>
 </div><!-- fragment --><p ><code>priority</code> member is ignored in the following situations:</p>
 <ul>
diff --git a/include/vk_mem_alloc.h b/include/vk_mem_alloc.h
index 75ca34a..b8a7cfa 100644
--- a/include/vk_mem_alloc.h
+++ b/include/vk_mem_alloc.h
@@ -817,7 +817,7 @@
 /// Flags to be passed as VmaBufferAllocatorCreateInfo::flags.
 typedef enum VmaBufferAllocatorCreateFlagBits
 {
-    /** \brief Enables alternative, linear allocation algorithm in this virtual block.
+    /** Enables alternative, linear allocation algorithm in this virtual block.
 
     Specify this flag to enable linear allocation algorithm, which always creates
     new allocations after last one and doesn't reuse space from allocations freed in
@@ -828,13 +828,11 @@
     ring buffer, and double stack.
     For details, see documentation chapter \ref linear_algorithm.
 
-    Under the hood, it uses a \ref virtual_allocator with flag #VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT.
-
-    TODO implement!
+    Internally it uses a \ref virtual_allocator with flag #VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT.
     */
     VMA_BUFFER_ALLOCATOR_CREATE_LINEAR_ALGORITHM_BIT = 0x00000001,
 
-    /** \brief Bit mask to extract only `ALGORITHM` bits from entire set of flags.
+    /** Bit mask to extract only `ALGORITHM` bits from entire set of flags.
     */
     VMA_BUFFER_ALLOCATOR_CREATE_ALGORITHM_MASK =
         VMA_BUFFER_ALLOCATOR_CREATE_LINEAR_ALGORITHM_BIT,
@@ -847,25 +845,38 @@
 /// Flags to be passed as VmaVirtualAllocationCreateInfo::flags.
 typedef enum VmaBufferSuballocationCreateFlagBits
 {
-    /** \brief TODO document! TODO implement!
+    /** Always creates a separate `VkBuffer` dedicated for this suballocation.
+    Suballocation will then always have buffer-local offset 0.
     */
     VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT = 0x00000001,
-    /** \brief TODO document! TODO implement!
+    /** Never creates a new `VkBuffer` or allocates new Vulkan memory.
+    Tries to create the suballocation in a free space of an existing buffer.
+    If not possible, returns `VK_ERROR_OUT_OF_DEVICE_MEMORY`.
     */
     VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT = 0x00000002,
-    /** \brief TODO document! TODO implement!
+    /** Never allocates new Vulkan memory.
+    Tries to create the suballocation in a free space of an existing buffer.
+    If not possible, tries to create a new buffer but in existing memory blocks,
+    internally using #VMA_ALLOCATION_CREATE_NEVER_ALLOCATE_BIT.
+    If not possible, returns `VK_ERROR_OUT_OF_DEVICE_MEMORY`.
     */
     VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT = 0x00000004,
-    /** \brief TODO document! TODO implement!
+    /** Creates suballocation only if additional Vulkan memory required for it, if any,
+    won't exceed memory budget. Otherwise return `VK_ERROR_OUT_OF_DEVICE_MEMORY`.
     */
     VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT = 0x00000008,
-    /** \brief TODO document! TODO implement!
+    /** Allocation strategy that chooses smallest possible empty space for the suballocation
+    to minimize memory usage and fragmentation, possibly at the expense of allocation time.
     */
     VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT = 0x00010000,
-    /** \brief TODO document! TODO implement!
+    /** Allocation strategy that chooses first suitable empty space for the suballocation -
+    not necessarily in terms of the smallest offset but the one that is easiest and fastest to find
+    to minimize allocation time, possibly at the expense of allocation quality.
     */
     VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT = 0x00020000,
-    /** \brief TODO document! TODO implement!
+    /** Allocation strategy that chooses always the lowest offset in available space.
+    This is not the most efficient strategy but achieves highly packed data.
+    Not recommended or useful, provided just for completeness.
     */
     VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT  = 0x00040000,
     /** A bit mask to extract only `STRATEGY` bits from entire set of flags.
@@ -983,12 +994,19 @@
 */
 
 /** \struct VmaBufferSuballocation
-\brief TODO document!
+\brief Represents a single sub-allocation - allocated part of a larger Vulkan buffer.
+
+To use this object, create #VmaBufferAllocator object first.
+For more information, see: \ref buffer_suballocation.
 */
 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VmaBufferSuballocation)
 
 /** \struct VmaBufferAllocator
-\brief TODO document!
+\brief Represent main object that can allocate parts of larger Vulkan buffers.
+
+To create one, fill in structure #VmaBufferAllocatorCreateInfo and call vmaCreateBufferAllocator().
+To destroy it, call vmaDestroyBufferAllocator().
+For more information, see: \ref buffer_suballocation.
 */
 VK_DEFINE_HANDLE(VmaBufferAllocator)
 
@@ -1647,22 +1665,50 @@
 /// Parameters of created #VmaBufferAllocator object to be passed to vmaCreateBufferAllocator().
 typedef struct VmaBufferAllocatorCreateInfo
 {
-    /** \brief TODO document! TODO implement!
+    /** \brief Flags - use #VmaBufferAllocatorCreateFlagBits.
     */
     VmaBufferAllocatorCreateFlags flags;
-    /** \brief TODO document! TODO implement!
+    /** \brief Parameters of Vulkan buffers to be created internally by the created #VmaBufferAllocator.
+    
+    `size` parameter has special meaning. Set it to 0 to allow the allocator
+    to managed buffer sizes automatically. This also allows buffer sizes to vary
+    and allows to use #VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT.
+    Set it to some other value to enforce that all buffers created by the allocator must have this specific size.
+    This will also disallow to use #VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT.
+    Note this is different than VmaBufferAllocatorCreateInfo::preferredBufferSize.
+
+    The structure is copied, so you can free the memory of if together with the entire #VmaBufferAllocatorCreateInfo
+    after the creation call, but if points to additional memory, e.g. using `pNext` chain or `pQueueFamilyIndices`,
+    this memory must remain alive and unchanged for the whole lifetime of the created allocator.
     */
     VkBufferCreateInfo bufferCreateInfo;
-    /** \brief TODO document! TODO implement!
+    /** \brief Parameters of allocations to be created internally for buffers.
+
+    The structure is copied, so you can free the memory of if together with the entire #VmaBufferAllocatorCreateInfo
+    after the creation call, but it has non-null VmaAllocationCreateInfo::pool,
+    this pool must remain alive for the whole lifetime of the created allocator.
     */
     VmaAllocationCreateInfo allocationCreateInfo;
-    /** \brief TODO document! TODO implement!
+    /** \brief Minimum number of buffers to be created and always exist during lifetime of the created allocator. Default: 0.
+    
+    Set it to 0 if you don't want to reserve a minimum number of buffers,
+    so that no buffers are created before first suballocation is made.
     */
     size_t minBufferCount;
-    /** \brief TODO document! TODO implement!
+    /** \brief Maximum number of buffers that can be created by the allocator. 0 means no limit.
     */
     size_t maxBufferCount;
-    /** \brief TODO document! TODO implement!
+    /** \brief Preferred size of a single `VkBuffer` to be created by the allocator. 0 means default, which is currently 64 MB.
+    
+    Note this is different than VmaBufferAllocatorCreateInfo::bufferCreateInfo size parameter.
+    By setting non-zero `preferredBufferSize`, you still allow the allocator
+    to create buffers of different sizes, smaller and larger than this number.
+    This also doesn't disallow to use #VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT.
+    */
+    VkDeviceSize preferredBufferSize;
+    /** \brief Minimum alignment to be used for all suballocations created from this allocator. 0 or 1 means no minimum alignment is specified.
+    
+    As aligment for a new suballocation, maximum of this parameter and VmaBufferSuballocationCreateInfo::alignment will be taken.
     */
     VkDeviceSize minSuballocationAlignment;
 } VmaBufferAllocatorCreateInfo;
@@ -1686,7 +1732,7 @@
     void* VMA_NULLABLE pUserData;
 } VmaBufferSuballocationCreateInfo;
 
-/// Parameters of an existing buffer suballocation, returned by vmaGetBufferSuballocationInfo().
+/// Parameters of an existing buffer suballocation, returned by vmaBufferAllocatorAllocate() or vmaGetBufferSuballocationInfo().
 typedef struct VmaBufferSuballocationInfo
 {
     /** \brief TODO document! TODO implement!
@@ -2764,7 +2810,7 @@
     VmaAllocator VMA_NOT_NULL allocator,
     VmaBufferAllocator VMA_NOT_NULL bufferAllocator,
     VmaBufferSuballocation VMA_NOT_NULL bufferSuballocation,
-    VkDeviceSize offset,
+    VkDeviceSize suballocationLocalOffset,
     VkDeviceSize size);
 /** \brief TODO implement! TODO document!
 */
@@ -2772,26 +2818,8 @@
     VmaAllocator VMA_NOT_NULL allocator,
     VmaBufferAllocator VMA_NOT_NULL bufferAllocator,
     VmaBufferSuballocation VMA_NOT_NULL bufferSuballocation,
-    VkDeviceSize offset,
+    VkDeviceSize suballocationLocalOffset,
     VkDeviceSize size);
-/** \brief TODO implement! TODO document!
-*/
-VMA_CALL_PRE VkResult VMA_CALL_POST vmaFlushBufferSuballocations(
-    VmaAllocator VMA_NOT_NULL allocator,
-    VmaBufferAllocator VMA_NOT_NULL bufferAllocator,
-    uint32_t bufferSuballocationCount,
-    const VmaBufferSuballocation VMA_NOT_NULL* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pBufferSuballocations,
-    const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pOffsets,
-    const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pSizes);
-/** \brief TODO implement! TODO document!
-*/
-VMA_CALL_PRE VkResult VMA_CALL_POST vmaInvalidateBufferSuballocations(
-    VmaAllocator VMA_NOT_NULL allocator,
-    VmaBufferAllocator VMA_NOT_NULL bufferAllocator,
-    uint32_t bufferSuballocationCount,
-    const VmaBufferSuballocation VMA_NOT_NULL* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pBufferSuballocations,
-    const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pOffsets,
-    const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pSizes);
 
 /** @} */
 
@@ -11596,11 +11624,58 @@
 
 struct VmaBufferAllocation_T;
 
+// TODO: turn it into a class hierarchy with separate PoolAllocators for each of 2 variants, so that Normal object is smaller than Dedicated.
 struct VmaBufferSuballocation_T
 {
-    VmaBufferAllocation_T* m_BufferAllocation = nullptr;
-    VmaVirtualAllocation m_VirtualAllocation = VK_NULL_HANDLE;
-    VkDeviceSize m_BufferLocalOffset = 0; // Cached for optimization.
+    enum class Type { None, Normal, Dedicated } m_Type = Type::None;
+    union
+    {
+        struct DedicatedStruct
+        {
+            VmaBufferAllocator m_ParentBufferAllocator;
+            VmaAllocation m_Allocation;
+            VkBuffer m_Buffer;
+            /* In normal suballocation, UserData is stored in m_Normal.m_VirtualAllocation.pUserData.
+            In dedicated suballocation, it must be stored manually.
+            We cannot store it in m_Dedicated.m_Allocation.m_UserData as it must store
+            VmaBufferAllocatorCreateInfo::VmaAllocationCreateInfo::pUserData.
+            */
+            void* m_UserData;
+            VmaBufferSuballocation_T* m_ListPrev;
+            VmaBufferSuballocation_T* m_ListNext;
+        } m_Dedicated;
+        struct NormalStruct
+        {
+            VmaBufferAllocation_T* m_BufferAllocation;
+            VmaVirtualAllocation m_VirtualAllocation;
+            VkDeviceSize m_BufferLocalOffset; // Cached for optimization.
+        } m_Normal;
+    };
+};
+
+struct VmaBufferDedicatedSuballocationListTypeTraits
+{
+    typedef VmaBufferSuballocation_T ItemType;
+    static ItemType* GetPrev(const ItemType* item)
+    {
+        VMA_HEAVY_ASSERT(item->m_Type == VmaBufferSuballocation_T::Type::Dedicated);
+        return item->m_Dedicated.m_ListPrev;
+    }
+    static ItemType* GetNext(const ItemType* item)
+    {
+        VMA_HEAVY_ASSERT(item->m_Type == VmaBufferSuballocation_T::Type::Dedicated);
+        return item->m_Dedicated.m_ListNext;
+    }
+    static ItemType*& AccessPrev(ItemType* item)
+    {
+        VMA_HEAVY_ASSERT(item->m_Type == VmaBufferSuballocation_T::Type::Dedicated);
+        return item->m_Dedicated.m_ListPrev;
+    }
+    static ItemType*& AccessNext(ItemType* item)
+    {
+        VMA_HEAVY_ASSERT(item->m_Type == VmaBufferSuballocation_T::Type::Dedicated);
+        return item->m_Dedicated.m_ListNext;
+    }
 };
 
 // Represents a single buffer managed by VmaBufferAllocator:
@@ -11618,21 +11693,19 @@
 
     VkResult Allocate(
         const VmaBufferSuballocationCreateInfo& createInfo,
-        VmaBufferSuballocation_T*& outBufferSuballocation,
-        VmaBufferSuballocationInfo* outBufferSuballocationInfo);
-    void Free(VmaBufferSuballocation_T* bufferSuballocation);
+        VmaBufferSuballocation_T*& outSuballoc,
+        VmaBufferSuballocationInfo* outSuballocInfo);
+    void Free(VmaBufferSuballocation_T* suballoc);
 
     void GetSuballocationInfo(
-        const VmaBufferSuballocation_T& bufferSuballocation,
-        VmaBufferSuballocationInfo& outBufferSuballocationInfo) const;
+        const VmaBufferSuballocation_T& suballoc,
+        VmaBufferSuballocationInfo& outSuballocInfo) const;
     void SetSuballocationUserData(
-        const VmaBufferSuballocation_T& bufferSuballocation, void* pUserData);
-    VkResult MapSuballocation(
-        const VmaBufferSuballocation_T& bufferSuballocation,
-        void*& outData);
-    void UnmapSuballocation(const VmaBufferSuballocation_T& bufferSuballocation);
+        const VmaBufferSuballocation_T& suballoc, void* pUserData);
+    VkResult MapSuballocation(const VmaBufferSuballocation_T& suballoc, void*& outData);
+    void UnmapSuballocation(const VmaBufferSuballocation_T& suballoc);
     VkResult FlushOrInvalidateSuballocation(
-        const VmaBufferSuballocation_T& bufferSuballocation,
+        const VmaBufferSuballocation_T& suballoc,
         VkDeviceSize suballocLocalOffset, VkDeviceSize size, VMA_CACHE_OPERATION op) const;
 
 private:
@@ -11666,21 +11739,44 @@
         VmaBufferSuballocationInfo& outBufferSuballocationInfo) const;
     void SetSuballocationUserData(
         const VmaBufferSuballocation bufferSuballocation, void* pUserData);
-    VkResult MapSuballocation(
-        const VmaBufferSuballocation bufferSuballocation,
+
+    VkResult MapSuballocation(const VmaBufferSuballocation bufferSuballocation,
         void*& outData);
     void UnmapSuballocation(const VmaBufferSuballocation bufferSuballocation);
-    VkResult FlushOrInvalidateSuballocations(
-        uint32_t count, const VmaBufferSuballocation* bufferSuballocations,
-        const VkDeviceSize* offsets, const VkDeviceSize* sizes, VMA_CACHE_OPERATION op) const;
+
+    VkResult FlushOrInvalidateSuballocation(
+        VmaBufferSuballocation bufferSuballocation,
+        VkDeviceSize suballocationLocalOffset, VkDeviceSize size, VMA_CACHE_OPERATION op) const;
 
 private:
-    VmaAllocator m_Allocator = VK_NULL_HANDLE;
-    VmaBufferAllocatorCreateInfo m_CreateInfo = {};
+    VmaAllocator const m_Allocator = VK_NULL_HANDLE;
+    const VmaBufferAllocatorCreateInfo m_CreateInfo = {};
+
     typedef VmaVector<VmaBufferAllocation_T*, VmaStlAllocator<VmaBufferAllocation_T*>> BufferAllocationVectorType;
     BufferAllocationVectorType m_BufferAllocations;
+    typedef VmaIntrusiveLinkedList<VmaBufferDedicatedSuballocationListTypeTraits> DedicatedListType;
+    DedicatedListType m_DedicatedSuballocations;
 
     VkResult CreateBufferAllocation(VkDeviceSize size);
+    
+    VkResult AllocateDedicated(
+        const VmaBufferSuballocationCreateInfo& createInfo,
+        VmaBufferSuballocation& outBufferSuballocation,
+        VmaBufferSuballocationInfo* outBufferSuballocationInfo);
+    // Given suballocation that must be of Type::Dedicated, releases its resources,
+    // removes it from the list of dedicated suballocations and frees the object from memory.
+    void FreeDedicated(VmaBufferSuballocation_T* suballoc);
+    // Given suballocation that must be of Type::Normal, frees its memory region,
+    // updates management of BufferAllocations, frees the object from memory.
+    void FreeNormal(VmaBufferSuballocation_T* suballoc);
+
+    void GetDedicatedInfo(
+        const VmaBufferSuballocation_T& suballoc,
+        VmaBufferSuballocationInfo& outBufferSuballocationInfo) const;
+    VkResult MapDedicated(const VmaBufferSuballocation_T& suballoc, void*& outData);
+    void UnmapDedicated(const VmaBufferSuballocation_T& suballoc);
+    VkResult FlushOrInvalidateDedicated(const VmaBufferSuballocation_T& suballoc,
+        VkDeviceSize suballocationLocalOffset, VkDeviceSize size, VMA_CACHE_OPERATION op) const;
 };
 
 #endif // _VMA_BUFFER_ALLOCATOR_T
@@ -15944,7 +16040,7 @@
     VkImage hImage,
     const void* pNext)
 {
-    VkResult res = VK_ERROR_UNKNOWN;
+    VkResult res = VK_ERROR_UNKNOWN_COPY;
     switch(hAllocation->GetType())
     {
     case VmaAllocation_T::ALLOCATION_TYPE_DEDICATED:
@@ -16384,8 +16480,8 @@
 
 VkResult VmaBufferAllocation_T::Allocate(
     const VmaBufferSuballocationCreateInfo& createInfo,
-    VmaBufferSuballocation_T*& outBufferSuballocation,
-    VmaBufferSuballocationInfo* outBufferSuballocationInfo)
+    VmaBufferSuballocation_T*& outSuballoc,
+    VmaBufferSuballocationInfo* outSuballocInfo)
 {
     VmaVirtualAllocationCreateInfo virtualAllocCreateInfo = {};
     virtualAllocCreateInfo.size = createInfo.size; // TODO check size if it fits, early return if not.
@@ -16411,77 +16507,85 @@
         VMA_ASSERT(virtualAlloc != VK_NULL_HANDLE);
 
         // Create VmaBufferSuballocation structure.
-        outBufferSuballocation = vma_new(
+        outSuballoc = vma_new(
             m_ParentBufferAllocator->GetAllocator()->GetAllocationCallbacks(), VmaBufferSuballocation_T);
-        outBufferSuballocation->m_BufferAllocation = this;
-        outBufferSuballocation->m_VirtualAllocation = virtualAlloc;
-        outBufferSuballocation->m_BufferLocalOffset = bufferLocalOffset;
+        // TODO convert it to some method InitNormal(...).
+        outSuballoc->m_Type = VmaBufferSuballocation_T::Type::Normal;
+        outSuballoc->m_Normal.m_BufferAllocation = this;
+        outSuballoc->m_Normal.m_VirtualAllocation = virtualAlloc;
+        outSuballoc->m_Normal.m_BufferLocalOffset = bufferLocalOffset;
 
         // Fetch VmaBufferSuballocationInfo.
-        if(outBufferSuballocationInfo)
+        if(outSuballocInfo)
         {
-            outBufferSuballocationInfo->allocation = m_Allocation;
-            outBufferSuballocationInfo->buffer = m_Buffer;
-            outBufferSuballocationInfo->bufferLocalOffset = bufferLocalOffset;
-            outBufferSuballocationInfo->size = createInfo.size;
-            outBufferSuballocationInfo->pMappedData = allocInfo.pMappedData ?
+            outSuballocInfo->allocation = m_Allocation;
+            outSuballocInfo->buffer = m_Buffer;
+            outSuballocInfo->bufferLocalOffset = bufferLocalOffset;
+            outSuballocInfo->size = createInfo.size;
+            outSuballocInfo->pMappedData = allocInfo.pMappedData ?
                 (void*)((char*)allocInfo.pMappedData + bufferLocalOffset) : nullptr;
-            outBufferSuballocationInfo->pUserData = createInfo.pUserData;
+            outSuballocInfo->pUserData = createInfo.pUserData;
         }
     }
 
     return res;
 }
 
-void VmaBufferAllocation_T::Free(VmaBufferSuballocation_T* bufferSuballocation)
+void VmaBufferAllocation_T::Free(VmaBufferSuballocation_T* suballoc)
 {
-    VMA_ASSERT(bufferSuballocation->m_BufferAllocation == this);
+    VMA_ASSERT(suballoc->m_Type == VmaBufferSuballocation_T::Type::Normal &&
+        suballoc->m_Normal.m_BufferAllocation == this);
     
-    vmaVirtualFree(m_VirtualBlock, bufferSuballocation->m_VirtualAllocation);
-    vma_delete(m_ParentBufferAllocator->GetAllocator()->GetAllocationCallbacks(), bufferSuballocation);
+    vmaVirtualFree(m_VirtualBlock, suballoc->m_Normal.m_VirtualAllocation);
+    vma_delete(m_ParentBufferAllocator->GetAllocator()->GetAllocationCallbacks(), suballoc);
 }
 
 void VmaBufferAllocation_T::GetSuballocationInfo(
-    const VmaBufferSuballocation_T& bufferSuballocation,
-    VmaBufferSuballocationInfo& outBufferSuballocationInfo) const
+    const VmaBufferSuballocation_T& suballoc,
+        VmaBufferSuballocationInfo& outSuballocInfo) const
 {
-    VMA_ASSERT(bufferSuballocation.m_BufferAllocation == this);
+    VMA_ASSERT(suballoc.m_Type == VmaBufferSuballocation_T::Type::Normal &&
+            suballoc.m_Normal.m_BufferAllocation == this);
 
     VmaAllocationInfo allocInfo = {};
     vmaGetAllocationInfo(m_ParentBufferAllocator->GetAllocator(), m_Allocation, &allocInfo);
 
     VmaVirtualAllocationInfo virtualAllocInfo = {};
-    vmaGetVirtualAllocationInfo(m_VirtualBlock, bufferSuballocation.m_VirtualAllocation, &virtualAllocInfo);
+    vmaGetVirtualAllocationInfo(m_VirtualBlock, suballoc.m_Normal.m_VirtualAllocation, &virtualAllocInfo);
 
-    outBufferSuballocationInfo.allocation = m_Allocation;
-    outBufferSuballocationInfo.buffer = m_Buffer;
-    outBufferSuballocationInfo.bufferLocalOffset = virtualAllocInfo.offset;
-    outBufferSuballocationInfo.size = virtualAllocInfo.size;
-    outBufferSuballocationInfo.pMappedData = allocInfo.pMappedData ?
+    outSuballocInfo.allocation = m_Allocation;
+    outSuballocInfo.buffer = m_Buffer;
+    outSuballocInfo.bufferLocalOffset = virtualAllocInfo.offset;
+    outSuballocInfo.size = virtualAllocInfo.size;
+    outSuballocInfo.pMappedData = allocInfo.pMappedData ?
         (void*)((char*)allocInfo.pMappedData + virtualAllocInfo.offset) : nullptr;
-    outBufferSuballocationInfo.pUserData = virtualAllocInfo.pUserData;
+    outSuballocInfo.pUserData = virtualAllocInfo.pUserData;
 }
 
 void VmaBufferAllocation_T::SetSuballocationUserData(
-    const VmaBufferSuballocation_T& bufferSuballocation, void* pUserData)
+    const VmaBufferSuballocation_T& suballoc, void* pUserData)
 {
-    VMA_ASSERT(bufferSuballocation.m_BufferAllocation == this);
+    VMA_ASSERT(suballoc.m_Type == VmaBufferSuballocation_T::Type::Normal &&
+        suballoc.m_Normal.m_BufferAllocation == this);
 
-    vmaSetVirtualAllocationUserData(m_VirtualBlock, bufferSuballocation.m_VirtualAllocation,
+    vmaSetVirtualAllocationUserData(m_VirtualBlock, suballoc.m_Normal.m_VirtualAllocation,
         pUserData);
 }
 
 VkResult VmaBufferAllocation_T::MapSuballocation(
-    const VmaBufferSuballocation_T& bufferSuballocation,
+    const VmaBufferSuballocation_T& suballoc,
     void*& outData)
 {
+    VMA_ASSERT(suballoc.m_Type == VmaBufferSuballocation_T::Type::Normal &&
+        suballoc.m_Normal.m_BufferAllocation == this);
+
     void* allocMappedPtr = nullptr;
     if(m_MapCounter == 0)
     {
         VkResult res = vmaMapMemory(m_ParentBufferAllocator->GetAllocator(), m_Allocation, &allocMappedPtr);
         if(res == VK_SUCCESS)
         {
-            outData = (void*)((char*)allocMappedPtr + bufferSuballocation.m_BufferLocalOffset);
+            outData = (void*)((char*)allocMappedPtr + suballoc.m_Normal.m_BufferLocalOffset);
             m_MapCounter = 1;
             return VK_SUCCESS;
         }
@@ -16492,13 +16596,13 @@
         VmaAllocationInfo allocInfo = {};
         vmaGetAllocationInfo(m_ParentBufferAllocator->GetAllocator(), m_Allocation, &allocInfo);
         VMA_ASSERT(allocInfo.pMappedData);
-        outData = (void*)((char*)allocInfo.pMappedData + bufferSuballocation.m_BufferLocalOffset);
+        outData = (void*)((char*)allocInfo.pMappedData + suballoc.m_Normal.m_BufferLocalOffset);
         ++m_MapCounter;
         return VK_SUCCESS;
     }
 }
 
-void VmaBufferAllocation_T::UnmapSuballocation(const VmaBufferSuballocation_T& bufferSuballocation)
+void VmaBufferAllocation_T::UnmapSuballocation(const VmaBufferSuballocation_T& suballoc)
 {
     VMA_ASSERT(m_MapCounter > 0);
     if(m_MapCounter == 1)
@@ -16513,18 +16617,33 @@
 }
 
 VkResult VmaBufferAllocation_T::FlushOrInvalidateSuballocation(
-    const VmaBufferSuballocation_T& bufferSuballocation,
+    const VmaBufferSuballocation_T& suballoc,
     VkDeviceSize suballocLocalOffset, VkDeviceSize size, VMA_CACHE_OPERATION op) const
 {
-    VMA_ASSERT(bufferSuballocation.m_BufferAllocation == this);
+    VMA_ASSERT(suballoc.m_Type == VmaBufferSuballocation_T::Type::Normal &&
+        suballoc.m_Normal.m_BufferAllocation == this);
 
     // VkBuffer-local offset is the same thing as VmaAllocation-local offset.
-    const VkDeviceSize allocOffset = bufferSuballocation.m_BufferLocalOffset + suballocLocalOffset;
+    const VkDeviceSize allocOffset = suballoc.m_Normal.m_BufferLocalOffset + suballocLocalOffset;
+    
+    // Size should be limited to at most the size of the suballocation.
+    // TODO maybe optimize it somehow do not fetch the full structure, here and in other places.
+    VmaVirtualAllocationInfo virtualAllocInfo = {};
+    vmaGetVirtualAllocationInfo(m_VirtualBlock, suballoc.m_Normal.m_VirtualAllocation, &virtualAllocInfo);
+    const VkDeviceSize suballocSize = virtualAllocInfo.size;
+    VMA_ASSERT(suballocLocalOffset < suballocSize);
+    const VkDeviceSize finalFlushOrInvalidateSize = VMA_MIN(size, suballocSize - suballocLocalOffset);
 
     if(op == VMA_CACHE_FLUSH)
-        return vmaFlushAllocation(m_ParentBufferAllocator->GetAllocator(), m_Allocation, allocOffset, size);
+    {
+        return vmaFlushAllocation(m_ParentBufferAllocator->GetAllocator(), m_Allocation,
+            allocOffset, finalFlushOrInvalidateSize);
+    }
     else
-        return vmaInvalidateAllocation(m_ParentBufferAllocator->GetAllocator(), m_Allocation, allocOffset, size);
+    {
+        return vmaInvalidateAllocation(m_ParentBufferAllocator->GetAllocator(), m_Allocation,
+            allocOffset, finalFlushOrInvalidateSize);
+    }
 }
 
 VmaBufferAllocator_T::VmaBufferAllocator_T(VmaAllocator allocator, const VmaBufferAllocatorCreateInfo& createInfo) :
@@ -16543,6 +16662,9 @@
 VmaBufferAllocator_T::~VmaBufferAllocator_T()
 {
     const VkAllocationCallbacks* const allocationCallbacks = m_Allocator->GetAllocationCallbacks();
+
+    while(!m_DedicatedSuballocations.IsEmpty())
+        FreeDedicated(m_DedicatedSuballocations.Front());
     
     for(size_t i = m_BufferAllocations.size(); i--; )
         vma_delete(allocationCallbacks, m_BufferAllocations[i]);
@@ -16553,12 +16675,15 @@
     VmaBufferSuballocation& outBufferSuballocation,
     VmaBufferSuballocationInfo* outBufferSuballocationInfo)
 {
+    // TODO TEMP
+    return AllocateDedicated(createInfo, outBufferSuballocation, outBufferSuballocationInfo);
+
     // TODO find existing BufferAllocation to allocate if possible.
     // TODO respect VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT
     // TODO respect VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT and VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT.
     // TODO respect VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT.
     // TODO manage BufferAllocation sizes
-    
+    /*
     VkResult res = CreateBufferAllocation(createInfo.size);
     if(res == VK_SUCCESS)
     {
@@ -16567,77 +16692,116 @@
         outBufferSuballocation = (VmaBufferSuballocation)suballocStruct;
     }
     return res;
+    */
 }
 
 void VmaBufferAllocator_T::Free(VmaBufferSuballocation bufferSuballocation)
 {
     VmaBufferSuballocation_T* const suballocStruct = (VmaBufferSuballocation_T*)bufferSuballocation;
-
-    // Find BufferAllocation. TODO any faster than linear search to use?
-    for(size_t i = 0, count = m_BufferAllocations.size(); i < count; ++i)
+    switch(suballocStruct->m_Type)
     {
-        VmaBufferAllocation_T* bufferAllocation = m_BufferAllocations[i];
-        if(suballocStruct->m_BufferAllocation == bufferAllocation)
-        {
-            bufferAllocation->Free(suballocStruct);
-            vma_delete(m_Allocator->GetAllocationCallbacks(), bufferAllocation);
-            m_BufferAllocations.remove(i);
-            return;
-        }
+    case VmaBufferSuballocation_T::Type::Dedicated:
+        FreeDedicated(suballocStruct);
+        break;
+    case VmaBufferSuballocation_T::Type::Normal:
+        FreeNormal(suballocStruct);
+        break;
+    default:
+        VMA_ASSERT(0);
     }
-    VMA_ASSERT(0 && "BufferSuballocation doesn't belong to this BufferAllocator!");
 }
 
 void VmaBufferAllocator_T::GetSuballocationInfo(
     const VmaBufferSuballocation bufferSuballocation,
     VmaBufferSuballocationInfo& outBufferSuballocationInfo) const
 {
-    VmaBufferSuballocation_T* const suballocStruct = (VmaBufferSuballocation_T*)bufferSuballocation;
-    VMA_ASSERT(suballocStruct->m_BufferAllocation);
-    suballocStruct->m_BufferAllocation->GetSuballocationInfo(
-        *suballocStruct, outBufferSuballocationInfo);
+    VmaBufferSuballocation_T* const suballoc = (VmaBufferSuballocation_T*)bufferSuballocation;
+    switch(suballoc->m_Type)
+    {
+    case VmaBufferSuballocation_T::Type::Dedicated:
+        GetDedicatedInfo(*suballoc, outBufferSuballocationInfo);
+        break;
+    case VmaBufferSuballocation_T::Type::Normal:
+        VMA_ASSERT(suballoc->m_Normal.m_BufferAllocation);
+        suballoc->m_Normal.m_BufferAllocation->GetSuballocationInfo(
+            *suballoc, outBufferSuballocationInfo);
+        break;
+    default:
+        VMA_ASSERT(0);
+    }
 }
 
 void VmaBufferAllocator_T::SetSuballocationUserData(
     const VmaBufferSuballocation bufferSuballocation, void* pUserData)
 {
-    VmaBufferSuballocation_T* const suballocStruct = (VmaBufferSuballocation_T*)bufferSuballocation;
-    VMA_ASSERT(suballocStruct->m_BufferAllocation);
-    suballocStruct->m_BufferAllocation->SetSuballocationUserData(
-        *suballocStruct, pUserData);
+    VmaBufferSuballocation_T* const suballoc = (VmaBufferSuballocation_T*)bufferSuballocation;
+    switch(suballoc->m_Type)
+    {
+    case VmaBufferSuballocation_T::Type::Dedicated:
+        suballoc->m_Dedicated.m_UserData = pUserData;
+        break;
+    case VmaBufferSuballocation_T::Type::Normal:
+        VMA_ASSERT(suballoc->m_Normal.m_BufferAllocation);
+        suballoc->m_Normal.m_BufferAllocation->SetSuballocationUserData(
+            *suballoc, pUserData);
+        break;
+    default:
+        VMA_ASSERT(0);
+    }
 }
 
 VkResult VmaBufferAllocator_T::MapSuballocation(
     const VmaBufferSuballocation bufferSuballocation,
     void*& outData)
 {
-    VmaBufferSuballocation_T* const suballocStruct = (VmaBufferSuballocation_T*)bufferSuballocation;
-    VMA_ASSERT(suballocStruct->m_BufferAllocation);
-    return suballocStruct->m_BufferAllocation->MapSuballocation(*suballocStruct, outData);
+    VmaBufferSuballocation_T* const suballoc = (VmaBufferSuballocation_T*)bufferSuballocation;
+    switch(suballoc->m_Type)
+    {
+    case VmaBufferSuballocation_T::Type::Dedicated:
+        return MapDedicated(*suballoc, outData);
+    case VmaBufferSuballocation_T::Type::Normal:
+        VMA_ASSERT(suballoc->m_Normal.m_BufferAllocation);
+        return suballoc->m_Normal.m_BufferAllocation->MapSuballocation(*suballoc, outData);
+    default:
+        VMA_ASSERT(0);
+        return VK_ERROR_UNKNOWN_COPY;
+    }
 }
 
 void VmaBufferAllocator_T::UnmapSuballocation(const VmaBufferSuballocation bufferSuballocation)
 {
-    VmaBufferSuballocation_T* const suballocStruct = (VmaBufferSuballocation_T*)bufferSuballocation;
-    VMA_ASSERT(suballocStruct->m_BufferAllocation);
-    suballocStruct->m_BufferAllocation->UnmapSuballocation(*suballocStruct);
+    VmaBufferSuballocation_T* const suballoc = (VmaBufferSuballocation_T*)bufferSuballocation;
+    switch(suballoc->m_Type)
+    {
+    case VmaBufferSuballocation_T::Type::Dedicated:
+        return UnmapDedicated(*suballoc);
+    case VmaBufferSuballocation_T::Type::Normal:
+        VMA_ASSERT(suballoc->m_Normal.m_BufferAllocation);
+        suballoc->m_Normal.m_BufferAllocation->UnmapSuballocation(*suballoc);
+    default:
+        VMA_ASSERT(0);
+    }
 }
 
-VkResult VmaBufferAllocator_T::FlushOrInvalidateSuballocations(
-    uint32_t count, const VmaBufferSuballocation* bufferSuballocations,
-    const VkDeviceSize* offsets, const VkDeviceSize* sizes, VMA_CACHE_OPERATION op) const
+VkResult VmaBufferAllocator_T::FlushOrInvalidateSuballocation(
+    VmaBufferSuballocation bufferSuballocation,
+    VkDeviceSize suballocationLocalOffset, VkDeviceSize size, VMA_CACHE_OPERATION op) const
 {
-    VkResult res = VK_SUCCESS;
-    for(uint32_t i = 0; i < count; ++i)
+    if(size == 0)
+        return VK_SUCCESS;
+
+    const VmaBufferSuballocation_T* const suballoc = (const VmaBufferSuballocation_T*)bufferSuballocation;
+    switch(suballoc->m_Type)
     {
-        const VmaBufferSuballocation_T* const suballocStruct = (const VmaBufferSuballocation_T*)bufferSuballocations[i];
-        VMA_ASSERT(suballocStruct->m_BufferAllocation);
-        const VkResult localRes = suballocStruct->m_BufferAllocation->FlushOrInvalidateSuballocation(
-            *suballocStruct, offsets[i], sizes[i], op);
-        if(res == VK_SUCCESS)
-            res = localRes;
+    case VmaBufferSuballocation_T::Type::Dedicated:
+        return FlushOrInvalidateDedicated(*suballoc, suballocationLocalOffset, size, op);
+    case VmaBufferSuballocation_T::Type::Normal:
+        return suballoc->m_Normal.m_BufferAllocation->FlushOrInvalidateSuballocation(
+            *suballoc, suballocationLocalOffset, size, op);
+    default:
+        VMA_ASSERT(0);
+        return VK_ERROR_UNKNOWN_COPY;
     }
-    return res;
 }
 
 VkResult VmaBufferAllocator_T::CreateBufferAllocation(VkDeviceSize size)
@@ -16660,6 +16824,134 @@
     return res;
 }
 
+
+VkResult VmaBufferAllocator_T::AllocateDedicated(
+    const VmaBufferSuballocationCreateInfo& createInfo,
+    VmaBufferSuballocation& outBufferSuballocation,
+    VmaBufferSuballocationInfo* outBufferSuballocationInfo)
+{
+    outBufferSuballocation = VK_NULL_HANDLE;
+    if(outBufferSuballocationInfo)
+        *outBufferSuballocationInfo = VmaBufferSuballocationInfo{};
+
+    VkBufferCreateInfo finalBufCreateInfo = m_CreateInfo.bufferCreateInfo;
+    finalBufCreateInfo.size = createInfo.size;
+
+    VmaAllocation alloc = VK_NULL_HANDLE;
+    VkBuffer buf = VK_NULL_HANDLE;
+    VmaAllocationInfo allocInfo = {};
+    VkResult res = vmaCreateBuffer(m_Allocator,
+        &finalBufCreateInfo, &m_CreateInfo.allocationCreateInfo,
+        &buf, &alloc, &allocInfo);
+    if(res == VK_SUCCESS)
+    {
+        VmaBufferSuballocation_T* suballoc = vma_new(m_Allocator, VmaBufferSuballocation_T)();
+        // TODO enclose this into some method suballoc->InitDedicated(...).
+        suballoc->m_Type = VmaBufferSuballocation_T::Type::Dedicated;
+        suballoc->m_Dedicated.m_ParentBufferAllocator = this;
+        suballoc->m_Dedicated.m_Buffer = buf;
+        suballoc->m_Dedicated.m_Allocation = alloc;
+        suballoc->m_Dedicated.m_UserData = createInfo.pUserData;
+        suballoc->m_Dedicated.m_ListPrev = nullptr;
+        suballoc->m_Dedicated.m_ListNext = nullptr;
+
+        m_DedicatedSuballocations.PushBack(suballoc);
+
+        outBufferSuballocation = (VmaBufferSuballocation)suballoc;
+
+        if(outBufferSuballocationInfo)
+        {
+            outBufferSuballocationInfo->allocation = alloc;
+            outBufferSuballocationInfo->buffer = buf;
+            outBufferSuballocationInfo->bufferLocalOffset = 0;
+            outBufferSuballocationInfo->size = allocInfo.size;
+            outBufferSuballocationInfo->pMappedData = allocInfo.pMappedData;
+            outBufferSuballocationInfo->pUserData = createInfo.pUserData;
+        }
+    }
+    return res;
+}
+
+void VmaBufferAllocator_T::FreeDedicated(VmaBufferSuballocation_T* suballoc)
+{
+    VMA_ASSERT(suballoc->m_Type == VmaBufferSuballocation_T::Type::Dedicated);
+    VMA_ASSERT(suballoc->m_Dedicated.m_ParentBufferAllocator == this);
+    vmaDestroyBuffer(m_Allocator, suballoc->m_Dedicated.m_Buffer, suballoc->m_Dedicated.m_Allocation);
+    m_DedicatedSuballocations.Remove(suballoc);
+    vma_delete(m_Allocator, suballoc);
+}
+
+
+void VmaBufferAllocator_T::FreeNormal(VmaBufferSuballocation_T* suballoc)
+{
+    VMA_ASSERT(suballoc->m_Type == VmaBufferSuballocation_T::Type::Normal);
+    // Find BufferAllocation. TODO any faster than linear search to use?
+    for(size_t i = 0, count = m_BufferAllocations.size(); i < count; ++i)
+    {
+        VmaBufferAllocation_T* bufferAllocation = m_BufferAllocations[i];
+        if(suballoc->m_Normal.m_BufferAllocation == bufferAllocation)
+        {
+            bufferAllocation->Free(suballoc);
+            vma_delete(m_Allocator, suballoc);
+            // TODO TEMP
+            vma_delete(m_Allocator, bufferAllocation);
+            m_BufferAllocations.remove(i);
+            return;
+        }
+    }
+    VMA_ASSERT(0 && "BufferSuballocation doesn't belong to this BufferAllocator!");
+}
+
+
+void VmaBufferAllocator_T::GetDedicatedInfo(
+    const VmaBufferSuballocation_T& suballoc,
+    VmaBufferSuballocationInfo& outBufferSuballocationInfo) const
+{
+    VMA_ASSERT(suballoc.m_Type == VmaBufferSuballocation_T::Type::Dedicated);
+
+    VmaAllocationInfo allocInfo = {};
+    vmaGetAllocationInfo(m_Allocator, suballoc.m_Dedicated.m_Allocation, &allocInfo);
+
+    // TODO enclose it in some function VmaSetBufferSuballocationInfo(...).
+    outBufferSuballocationInfo.allocation = suballoc.m_Dedicated.m_Allocation;
+    outBufferSuballocationInfo.buffer = suballoc.m_Dedicated.m_Buffer;
+    outBufferSuballocationInfo.bufferLocalOffset = 0;
+    outBufferSuballocationInfo.size = allocInfo.size;
+    outBufferSuballocationInfo.pMappedData = allocInfo.pMappedData;
+    outBufferSuballocationInfo.pUserData = suballoc.m_Dedicated.m_UserData;
+}
+
+VkResult VmaBufferAllocator_T::MapDedicated(const VmaBufferSuballocation_T& suballoc, void*& outData)
+{
+    VMA_ASSERT(suballoc.m_Type == VmaBufferSuballocation_T::Type::Dedicated);
+    return vmaMapMemory(m_Allocator, suballoc.m_Dedicated.m_Allocation, &outData);
+}
+
+void VmaBufferAllocator_T::UnmapDedicated(const VmaBufferSuballocation_T& suballoc)
+{
+    VMA_ASSERT(suballoc.m_Type == VmaBufferSuballocation_T::Type::Dedicated);
+    vmaUnmapMemory(m_Allocator, suballoc.m_Dedicated.m_Allocation);
+}
+
+
+VkResult VmaBufferAllocator_T::FlushOrInvalidateDedicated(
+    const VmaBufferSuballocation_T& suballoc, VkDeviceSize suballocationLocalOffset, VkDeviceSize size,
+    VMA_CACHE_OPERATION op) const
+{
+    VMA_ASSERT(suballoc.m_Type == VmaBufferSuballocation_T::Type::Dedicated);
+    // For dedicated, suballocationLocalOffset == offset local to the beginning of VmaAllocation and VkBuffer.
+    switch(op)
+    {
+    case VMA_CACHE_FLUSH:
+        return vmaFlushAllocation(m_Allocator, suballoc.m_Dedicated.m_Allocation, suballocationLocalOffset, size);
+    case VMA_CACHE_INVALIDATE:
+        return vmaInvalidateAllocation(m_Allocator, suballoc.m_Dedicated.m_Allocation, suballocationLocalOffset, size);
+    default:
+        VMA_ASSERT(0);
+        return VK_ERROR_UNKNOWN_COPY;
+    }
+}
+
 #endif // _VMA_BUFFER_ALLOCATOR_T_FUNCTIONS
 
 #ifndef _VMA_PUBLIC_INTERFACE
@@ -18351,7 +18643,7 @@
     VmaAllocator VMA_NOT_NULL allocator,
     VmaBufferAllocator VMA_NOT_NULL bufferAllocator,
     VmaBufferSuballocation VMA_NOT_NULL bufferSuballocation,
-    VkDeviceSize offset,
+    VkDeviceSize suballocationLocalOffset,
     VkDeviceSize size)
 {
     VMA_ASSERT(allocator != VK_NULL_HANDLE && bufferAllocator != VK_NULL_HANDLE &&
@@ -18360,65 +18652,23 @@
     VMA_DEBUG_LOG("vmaFlushBufferSuballocation");
     //VMA_DEBUG_GLOBAL_MUTEX_LOCK; // Not using, as this is a higher-level API that uses public VMA functions with this lock under the hood.
 
-    return bufferAllocator->FlushOrInvalidateSuballocations(1, &bufferSuballocation, &offset, &size, VMA_CACHE_FLUSH);
+    return bufferAllocator->FlushOrInvalidateSuballocation(bufferSuballocation, suballocationLocalOffset, size, VMA_CACHE_FLUSH);
 }
 
 VMA_CALL_PRE VkResult VMA_CALL_POST vmaInvalidateBufferSuballocation(
     VmaAllocator VMA_NOT_NULL allocator,
     VmaBufferAllocator VMA_NOT_NULL bufferAllocator,
     VmaBufferSuballocation VMA_NOT_NULL bufferSuballocation,
-    VkDeviceSize offset,
+    VkDeviceSize suballocationLocalOffset,
     VkDeviceSize size)
 {
     VMA_ASSERT(allocator != VK_NULL_HANDLE && bufferAllocator != VK_NULL_HANDLE &&
         bufferSuballocation != VK_NULL_HANDLE);
 
-    VMA_DEBUG_LOG("vmaInvalidateBufferSuballocation");
+    VMA_DEBUG_LOG("vmaFlushBufferSuballocation");
     //VMA_DEBUG_GLOBAL_MUTEX_LOCK; // Not using, as this is a higher-level API that uses public VMA functions with this lock under the hood.
 
-    return bufferAllocator->FlushOrInvalidateSuballocations(1, &bufferSuballocation, &offset, &size, VMA_CACHE_INVALIDATE);
-}
-
-VMA_CALL_PRE VkResult VMA_CALL_POST vmaFlushBufferSuballocations(
-    VmaAllocator VMA_NOT_NULL allocator,
-    VmaBufferAllocator VMA_NOT_NULL bufferAllocator,
-    uint32_t bufferSuballocationCount,
-    const VmaBufferSuballocation VMA_NOT_NULL* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pBufferSuballocations,
-    const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pOffsets,
-    const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pSizes)
-{
-    VMA_ASSERT(allocator != VK_NULL_HANDLE && bufferAllocator != VK_NULL_HANDLE);
-
-    VMA_DEBUG_LOG("vmaFlushBufferSuballocations");
-    //VMA_DEBUG_GLOBAL_MUTEX_LOCK; // Not using, as this is a higher-level API that uses public VMA functions with this lock under the hood.
-
-    if(bufferSuballocationCount > 0)
-    {
-        VMA_ASSERT(pBufferSuballocations && pOffsets && pSizes);
-        return bufferAllocator->FlushOrInvalidateSuballocations(bufferSuballocationCount, pBufferSuballocations, pOffsets, pSizes, VMA_CACHE_FLUSH);
-    }
-    return VK_SUCCESS;
-}
-
-VMA_CALL_PRE VkResult VMA_CALL_POST vmaInvalidateBufferSuballocations(
-    VmaAllocator VMA_NOT_NULL allocator,
-    VmaBufferAllocator VMA_NOT_NULL bufferAllocator,
-    uint32_t bufferSuballocationCount,
-    const VmaBufferSuballocation VMA_NOT_NULL* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pBufferSuballocations,
-    const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pOffsets,
-    const VkDeviceSize* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(bufferSuballocationCount) pSizes)
-{
-    VMA_ASSERT(allocator != VK_NULL_HANDLE && bufferAllocator != VK_NULL_HANDLE);
-
-    VMA_DEBUG_LOG("vmaInvalidateBufferSuballocations");
-    //VMA_DEBUG_GLOBAL_MUTEX_LOCK; // Not using, as this is a higher-level API that uses public VMA functions with this lock under the hood.
-
-    if(bufferSuballocationCount > 0)
-    {
-        VMA_ASSERT(pBufferSuballocations && pOffsets && pSizes);
-        return bufferAllocator->FlushOrInvalidateSuballocations(bufferSuballocationCount, pBufferSuballocations, pOffsets, pSizes, VMA_CACHE_INVALIDATE);
-    }
-    return VK_SUCCESS;
+    return bufferAllocator->FlushOrInvalidateSuballocation(bufferSuballocation, suballocationLocalOffset, size, VMA_CACHE_INVALIDATE);
 }
 
 #endif // _VMA_PUBLIC_INTERFACE
diff --git a/src/Tests.cpp b/src/Tests.cpp
index 3180d20..fcee002 100644
--- a/src/Tests.cpp
+++ b/src/Tests.cpp
@@ -7742,9 +7742,6 @@
         // Random calls to flush/invalidate just to test they don't crash.
         vmaFlushBufferSuballocation(g_hAllocator, bufferAllocator, suballoc, 0, suballocSize);
         vmaInvalidateBufferSuballocation(g_hAllocator, bufferAllocator, suballoc, 0, suballocSize);
-        const VkDeviceSize zero = 0;
-        vmaFlushBufferSuballocations(g_hAllocator, bufferAllocator, 1, &suballoc, &zero, &suballocSize);
-        vmaInvalidateBufferSuballocations(g_hAllocator, bufferAllocator, 1, &suballoc, &zero, &suballocSize);
 
         // Testing map/unmap, on the already mapped suballocation.
         void* mappedPtr;