diff --git a/.gitignore b/.gitignore index cff4adc9..a98a838e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,6 @@ /build/* !/bin/VmaSample_Release_vs2019.exe !/bin/VmaSample_Release_vs2022.exe +!/bin/VmaSample_Release_vs2026.exe !/bin/Shader*.spv .vscode/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 63643f62..a51c1505 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# 3.4.0 (2026-??-??) +# 3.4.0 (2026-06-05) - Added file `AGENTS.md` for agentic AI. - Added member `VmaAllocationCreateInfo::minAlignment` (#523). diff --git a/CMakeLists.txt b/CMakeLists.txt index 1547f472..2f574cc7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,7 @@ cmake_minimum_required(VERSION 3.15...3.26) -project(VMA VERSION 3.3.0 LANGUAGES CXX) +project(VMA VERSION 3.4.0 LANGUAGES CXX) add_library(VulkanMemoryAllocator INTERFACE) add_library(GPUOpen::VulkanMemoryAllocator ALIAS VulkanMemoryAllocator) diff --git a/bin/VmaSample_Release_vs2022.exe b/bin/VmaSample_Release_vs2022.exe deleted file mode 100644 index 9c961968..00000000 Binary files a/bin/VmaSample_Release_vs2022.exe and /dev/null differ diff --git a/bin/VmaSample_Release_vs2026.exe b/bin/VmaSample_Release_vs2026.exe new file mode 100644 index 00000000..7ecb9405 Binary files /dev/null and b/bin/VmaSample_Release_vs2026.exe differ diff --git a/docs/html/allocation_annotation.html b/docs/html/allocation_annotation.html index bfe2afdc..e8069878 100644 --- a/docs/html/allocation_annotation.html +++ b/docs/html/allocation_annotation.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Allocation names and user data - - + + @@ -31,22 +35,45 @@ - + - + +
VmaAllocation allocation;
vmaCreateBuffer(allocator, &bufCreateInfo, &allocCreateInfo, &buffer, &allocation, nullptr);
vmaCreateBuffer
VkResult vmaCreateBuffer(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkBuffer *pBuffer, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)
Creates a new VkBuffer, allocates and binds memory for it.
-
VMA_MEMORY_USAGE_AUTO
@ VMA_MEMORY_USAGE_AUTO
Definition vk_mem_alloc.h:553
-
VmaAllocationCreateInfo
Parameters of new VmaAllocation.
Definition vk_mem_alloc.h:1294
-
VmaAllocationCreateInfo::pUserData
void * pUserData
Custom general-purpose pointer that will be stored in VmaAllocation, can be read as VmaAllocationInfo...
Definition vk_mem_alloc.h:1333
-
VmaAllocationCreateInfo::usage
VmaMemoryUsage usage
Intended usage of memory.
Definition vk_mem_alloc.h:1302
+
VMA_MEMORY_USAGE_AUTO
@ VMA_MEMORY_USAGE_AUTO
Definition vk_mem_alloc.h:563
+
VmaAllocationCreateInfo
Parameters of new VmaAllocation.
Definition vk_mem_alloc.h:1308
+
VmaAllocationCreateInfo::pUserData
void * pUserData
Custom general-purpose pointer that will be stored in VmaAllocation, can be read as VmaAllocationInfo...
Definition vk_mem_alloc.h:1347
+
VmaAllocationCreateInfo::usage
VmaMemoryUsage usage
Intended usage of memory.
Definition vk_mem_alloc.h:1316
VmaAllocation
Represents single memory allocation.

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

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

It can also be changed using function vmaSetAllocationUserData().

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

@@ -120,7 +147,7 @@

diff --git a/docs/html/annotated.html b/docs/html/annotated.html index b479d003..0bc00028 100644 --- a/docs/html/annotated.html +++ b/docs/html/annotated.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Class List - - + + @@ -31,22 +35,45 @@ - + - + +
@@ -106,7 +133,7 @@
diff --git a/docs/html/choosing_memory_type.html b/docs/html/choosing_memory_type.html index b258de8f..d5f6f3df 100644 --- a/docs/html/choosing_memory_type.html +++ b/docs/html/choosing_memory_type.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Choosing memory type - - + + @@ -31,22 +35,45 @@ - + - + +
VmaAllocation allocation;
vmaCreateBuffer(allocator, &bufferInfo, &allocInfo, &buffer, &allocation, nullptr);
VkResult vmaCreateBuffer(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkBuffer *pBuffer, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)
Creates a new VkBuffer, allocates and binds memory for it.
-
@ VMA_MEMORY_USAGE_AUTO
Definition vk_mem_alloc.h:553
-
Parameters of new VmaAllocation.
Definition vk_mem_alloc.h:1294
-
VmaMemoryUsage usage
Intended usage of memory.
Definition vk_mem_alloc.h:1302
+
@ VMA_MEMORY_USAGE_AUTO
Definition vk_mem_alloc.h:563
+
Parameters of new VmaAllocation.
Definition vk_mem_alloc.h:1308
+
VmaMemoryUsage usage
Intended usage of memory.
Definition vk_mem_alloc.h:1316
Represents single memory allocation.

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

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

@@ -121,8 +148,8 @@

VkBuffer stagingBuffer;
VmaAllocation stagingAllocation;
vmaCreateBuffer(allocator, &stagingBufferInfo, &stagingAllocInfo, &stagingBuffer, &stagingAllocation, nullptr);
-
@ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT
Definition vk_mem_alloc.h:662
-
VmaAllocationCreateFlags flags
Use VmaAllocationCreateFlagBits enum.
Definition vk_mem_alloc.h:1296
+
@ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT
Definition vk_mem_alloc.h:672
+
VmaAllocationCreateFlags flags
Use VmaAllocationCreateFlagBits enum.
Definition vk_mem_alloc.h:1310

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

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

Note
Old usage values (VMA_MEMORY_USAGE_GPU_ONLY, VMA_MEMORY_USAGE_CPU_ONLY, VMA_MEMORY_USAGE_CPU_TO_GPU, VMA_MEMORY_USAGE_GPU_TO_CPU, VMA_MEMORY_USAGE_CPU_COPY) are still available and work same way as in previous versions of the library for backward compatibility, but they are deprecated.
@@ -137,10 +164,10 @@

VkBuffer buffer;
VmaAllocation allocation;
vmaCreateBuffer(allocator, &bufferInfo, &allocInfo, &buffer, &allocation, nullptr);
-
@ VMA_ALLOCATION_CREATE_MAPPED_BIT
Set this flag to use a memory that will be persistently mapped and retrieve pointer to it.
Definition vk_mem_alloc.h:613
-
@ VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT
Definition vk_mem_alloc.h:674
-
VkMemoryPropertyFlags preferredFlags
Flags that preferably should be set in a memory type chosen for an allocation.
Definition vk_mem_alloc.h:1312
-
VkMemoryPropertyFlags requiredFlags
Flags that must be set in a Memory Type chosen for an allocation.
Definition vk_mem_alloc.h:1307
+
@ VMA_ALLOCATION_CREATE_MAPPED_BIT
Set this flag to use a memory that will be persistently mapped and retrieve pointer to it.
Definition vk_mem_alloc.h:623
+
@ VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT
Definition vk_mem_alloc.h:684
+
VkMemoryPropertyFlags preferredFlags
Flags that preferably should be set in a memory type chosen for an allocation.
Definition vk_mem_alloc.h:1326
+
VkMemoryPropertyFlags requiredFlags
Flags that must be set in a Memory Type chosen for an allocation.
Definition vk_mem_alloc.h:1321

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

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

@@ -155,7 +182,7 @@

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

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

// ...
uint32_t excludedMemoryTypeIndex = 2;
@@ -178,7 +205,7 @@

diff --git a/docs/html/classes.html b/docs/html/classes.html index 489d8b97..beb816da 100644 --- a/docs/html/classes.html +++ b/docs/html/classes.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Class Index - - + + @@ -31,22 +35,45 @@ - + - + +
@@ -83,7 +110,7 @@
diff --git a/docs/html/clipboard.js b/docs/html/clipboard.js index 9da9f3ca..6a0f42cd 100644 --- a/docs/html/clipboard.js +++ b/docs/html/clipboard.js @@ -32,7 +32,7 @@ let clipboard_icon = `` let clipboard_successDuration = 1000 -$(function() { +document.addEventListener('DOMContentLoaded', function() { if(navigator.clipboard) { const fragments = document.getElementsByClassName("fragment") for(const fragment of fragments) { @@ -40,7 +40,7 @@ $(function() { clipboard_div.classList.add("clipboard") clipboard_div.innerHTML = clipboard_icon clipboard_div.title = clipboard_title - $(clipboard_div).click(function() { + clipboard_div.addEventListener('click', function() { const content = this.parentNode.cloneNode(true) // filter out line number and folded fragments from file listings content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) diff --git a/docs/html/codefolding.js b/docs/html/codefolding.js new file mode 100644 index 00000000..5b55e8b6 --- /dev/null +++ b/docs/html/codefolding.js @@ -0,0 +1,143 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2026 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +let codefold = { + opened : true, + + show_plus : function(el) { + if (el) { + el.classList.remove('minus'); + el.classList.add('plus'); + } + }, + + show_minus : function(el) { + if (el) { + el.classList.add('minus'); + el.classList.remove('plus'); + } + }, + + // toggle all folding blocks + toggle_all : function() { + if (this.opened) { + const foldAll = document.getElementById('fold_all'); + this.show_plus(foldAll); + document.querySelectorAll('div[id^=foldopen]').forEach(el => el.style.display = 'none'); + document.querySelectorAll('div[id^=foldclosed]').forEach(el => el.style.display = ''); + document.querySelectorAll('div[id^=foldclosed] span.fold').forEach(el => this.show_plus(el)); + } else { + const foldAll = document.getElementById('fold_all'); + this.show_minus(foldAll); + document.querySelectorAll('div[id^=foldopen]').forEach(el => el.style.display = ''); + document.querySelectorAll('div[id^=foldclosed]').forEach(el => el.style.display = 'none'); + } + this.opened=!this.opened; + }, + + // toggle single folding block + toggle : function(id) { + const openEl = document.getElementById('foldopen'+id); + const closedEl = document.getElementById('foldclosed'+id); + if (openEl) { + openEl.style.display = openEl.style.display === 'none' ? '' : 'none'; + const nextEl = openEl.nextElementSibling; + if (nextEl) { + nextEl.querySelectorAll('span.fold').forEach(el => this.show_plus(el)); + } + } + if (closedEl) { + closedEl.style.display = closedEl.style.display === 'none' ? '' : 'none'; + } + }, + + init : function() { + // add code folding line and global control + document.querySelectorAll('span.lineno').forEach((el, index) => { + el.style.paddingRight = '4px'; + el.style.marginRight = '2px'; + el.style.display = 'inline-block'; + el.style.width = '54px'; + el.style.background = 'linear-gradient(var(--fold-line-color),var(--fold-line-color)) no-repeat 46px/2px 100%'; + const span = document.createElement('span'); + if (index === 0) { // add global toggle to first line + span.className = 'fold minus'; + span.id = 'fold_all'; + span.onclick = () => codefold.toggle_all(); + } else { // add vertical lines to other rows + span.className = 'fold' + } + el.appendChild(span); + }); + // add toggle controls to lines with fold divs + document.querySelectorAll('div.foldopen').forEach(el => { + // extract specific id to use + const id = el.getAttribute('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = el.getAttribute('data-start'); + const end = el.getAttribute('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + const firstFold = el.querySelector('span.fold'); + if (firstFold) { + const span = document.createElement('span'); + span.className = 'fold minus'; + span.onclick = () => codefold.toggle(id); + firstFold.replaceWith(span); + } + // append div for folded (closed) representation + const closedDiv = document.createElement('div'); + closedDiv.id = 'foldclosed'+id; + closedDiv.className = 'foldclosed'; + closedDiv.style.display = 'none'; + el.after(closedDiv); + // extract the first line from the "open" section to represent closed content + const line = el.children[0] ? el.children[0].cloneNode(true) : null; + if (line) { + // remove any glow that might still be active on the original line + line.classList.remove('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + line.innerHTML = line.innerHTML.replace(new RegExp('\\s*'+start+'\\s*$','g'),''); + } + // replace minus with plus symbol + line.querySelectorAll('span.fold').forEach(span => { + codefold.show_plus(span); + // re-apply click handler as it is not copied with cloneNode + span.onclick = () => codefold.toggle(id); + }); + // append ellipsis + const ellipsisLink = document.createElement('a'); + ellipsisLink.href = "javascript:codefold.toggle('"+id+"')"; + ellipsisLink.innerHTML = '…'; + line.appendChild(document.createTextNode(' '+start)); + line.appendChild(ellipsisLink); + line.appendChild(document.createTextNode(end)); + // insert constructed line into closed div + closedDiv.appendChild(line); + } + }); + }, +}; +/* @license-end */ diff --git a/docs/html/configuration.html b/docs/html/configuration.html index 546dad53..e5b15ee2 100644 --- a/docs/html/configuration.html +++ b/docs/html/configuration.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Configuration - - + + @@ -31,22 +35,45 @@ - + - + +
diff --git a/docs/html/custom_memory_pools.html b/docs/html/custom_memory_pools.html index 66eb8ca7..a6e98e2c 100644 --- a/docs/html/custom_memory_pools.html +++ b/docs/html/custom_memory_pools.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Custom memory pools - - + + @@ -31,22 +35,45 @@ - + - + +
VkResult vmaCreatePool(VmaAllocator allocator, const VmaPoolCreateInfo *pCreateInfo, VmaPool *pPool)
Allocates Vulkan device memory and creates VmaPool object.
VkResult vmaCreateBuffer(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkBuffer *pBuffer, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)
Creates a new VkBuffer, allocates and binds memory for it.
VkResult vmaFindMemoryTypeIndexForBufferInfo(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, uint32_t *pMemoryTypeIndex)
Helps to find memoryTypeIndex, given VkBufferCreateInfo and VmaAllocationCreateInfo.
-
@ VMA_MEMORY_USAGE_AUTO
Definition vk_mem_alloc.h:553
-
Parameters of new VmaAllocation.
Definition vk_mem_alloc.h:1294
-
VmaPool pool
Pool that this allocation should be created in.
Definition vk_mem_alloc.h:1326
-
VmaMemoryUsage usage
Intended usage of memory.
Definition vk_mem_alloc.h:1302
+
@ VMA_MEMORY_USAGE_AUTO
Definition vk_mem_alloc.h:563
+
Parameters of new VmaAllocation.
Definition vk_mem_alloc.h:1308
+
VmaPool pool
Pool that this allocation should be created in.
Definition vk_mem_alloc.h:1340
+
VmaMemoryUsage usage
Intended usage of memory.
Definition vk_mem_alloc.h:1316
Represents single memory allocation.
-
Describes parameter of created VmaPool.
Definition vk_mem_alloc.h:1358
-
uint32_t memoryTypeIndex
Vulkan memory type index to allocate this pool from.
Definition vk_mem_alloc.h:1361
-
VkDeviceSize blockSize
Size of a single VkDeviceMemory block to be allocated as part of this pool, in bytes....
Definition vk_mem_alloc.h:1374
-
size_t maxBlockCount
Maximum number of blocks that can be allocated in this pool. Optional.
Definition vk_mem_alloc.h:1387
+
Describes parameter of created VmaPool.
Definition vk_mem_alloc.h:1372
+
uint32_t memoryTypeIndex
Vulkan memory type index to allocate this pool from.
Definition vk_mem_alloc.h:1375
+
VkDeviceSize blockSize
Size of a single VkDeviceMemory block to be allocated as part of this pool, in bytes....
Definition vk_mem_alloc.h:1388
+
size_t maxBlockCount
Maximum number of blocks that can be allocated in this pool. Optional.
Definition vk_mem_alloc.h:1401
Represents custom memory pool.

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

vmaDestroyBuffer(allocator, buf, alloc);
@@ -227,7 +254,7 @@

diff --git a/docs/html/debugging_memory_usage.html b/docs/html/debugging_memory_usage.html index 22f08433..645ab174 100644 --- a/docs/html/debugging_memory_usage.html +++ b/docs/html/debugging_memory_usage.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Debugging incorrect memory usage - - + + @@ -31,22 +35,45 @@ - + - + +
diff --git a/docs/html/defragmentation.html b/docs/html/defragmentation.html index 24282ac2..a6b10f6a 100644 --- a/docs/html/defragmentation.html +++ b/docs/html/defragmentation.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Defragmentation - - + + @@ -31,22 +35,45 @@ - + - + +
VkResult vmaBeginDefragmentationPass(VmaAllocator allocator, VmaDefragmentationContext context, VmaDefragmentationPassMoveInfo *pPassInfo)
Starts single defragmentation pass.
VkResult vmaBeginDefragmentation(VmaAllocator allocator, const VmaDefragmentationInfo *pInfo, VmaDefragmentationContext *pContext)
Begins defragmentation process.
VkResult vmaEndDefragmentationPass(VmaAllocator allocator, VmaDefragmentationContext context, VmaDefragmentationPassMoveInfo *pPassInfo)
Ends single defragmentation pass.
-
@ VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT
Definition vk_mem_alloc.h:770
-
Definition vk_mem_alloc.h:1432
-
void * pUserData
Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vma...
Definition vk_mem_alloc.h:1479
+
@ VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT
Definition vk_mem_alloc.h:780
+
Definition vk_mem_alloc.h:1446
+
void * pUserData
Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vma...
Definition vk_mem_alloc.h:1493
An opaque object that represents started defragmentation process.
-
Parameters for defragmentation.
Definition vk_mem_alloc.h:1522
-
VmaPool pool
Custom pool to be defragmented.
Definition vk_mem_alloc.h:1529
-
VmaDefragmentationFlags flags
Use combination of VmaDefragmentationFlagBits.
Definition vk_mem_alloc.h:1524
-
VmaAllocation srcAllocation
Allocation that should be moved.
Definition vk_mem_alloc.h:1555
-
VmaAllocation dstTmpAllocation
Temporary allocation pointing to destination memory that will replace srcAllocation.
Definition vk_mem_alloc.h:1562
-
Parameters for incremental defragmentation steps.
Definition vk_mem_alloc.h:1570
-
uint32_t moveCount
Number of elements in the pMoves array.
Definition vk_mem_alloc.h:1572
-
VmaDefragmentationMove * pMoves
Array of moves to be performed by the user in the current defragmentation pass.
Definition vk_mem_alloc.h:1596
+
Parameters for defragmentation.
Definition vk_mem_alloc.h:1536
+
VmaPool pool
Custom pool to be defragmented.
Definition vk_mem_alloc.h:1543
+
VmaDefragmentationFlags flags
Use combination of VmaDefragmentationFlagBits.
Definition vk_mem_alloc.h:1538
+
VmaAllocation srcAllocation
Allocation that should be moved.
Definition vk_mem_alloc.h:1569
+
VmaAllocation dstTmpAllocation
Temporary allocation pointing to destination memory that will replace srcAllocation.
Definition vk_mem_alloc.h:1576
+
Parameters for incremental defragmentation steps.
Definition vk_mem_alloc.h:1584
+
uint32_t moveCount
Number of elements in the pMoves array.
Definition vk_mem_alloc.h:1586
+
VmaDefragmentationMove * pMoves
Array of moves to be performed by the user in the current defragmentation pass.
Definition vk_mem_alloc.h:1610

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

  1. vmaBeginDefragmentationPass() function call:
      @@ -204,7 +231,7 @@ diff --git a/docs/html/deprecated.html b/docs/html/deprecated.html index 05e1bdc3..035cc1d5 100644 --- a/docs/html/deprecated.html +++ b/docs/html/deprecated.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Deprecated List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html b/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html index 303849ae..2663349c 100644 --- a/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: C:/Code/VulkanMemoryAllocator/REPO/include Directory Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/doxygen.css b/docs/html/doxygen.css index 788923ab..2990034f 100644 --- a/docs/html/doxygen.css +++ b/docs/html/doxygen.css @@ -1,4 +1,4 @@ -/* The standard CSS for doxygen 1.16.1*/ +/* The standard CSS for doxygen 1.17.0*/ html { /* page base colors */ @@ -542,6 +542,19 @@ td.navtabHL { background-color: var(--nav-menu-active-bg); } +div.alphasepar:before{ + content: " | " ; + width: 14px; + display: inline-block; + text-align: center; + line-height: 140%; + font-size: 130%; +} + +div.alphasepar{ + display: inline-block; +} + div.qindex{ text-align: center; width: 100%; @@ -2508,22 +2521,29 @@ details > summary::-webkit-details-marker { } details>summary::before { - content: "\25ba"; - padding-right:4px; - font-size: 80%; + content: "\25bc"; + padding-right:4px; + font-size: 80%; + display: inline-block; + transform: rotate(-90deg); } details[open]>summary::before { - content: "\25bc"; - padding-right:4px; - font-size: 80%; + content: "\25bc"; + padding-right:4px; + font-size: 80%; + display: inline-block; + transform: rotate(0deg); } - :root { scrollbar-width: thin; scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); } +:root.dark-mode { + color-scheme: dark; +} + ::-webkit-scrollbar { background-color: var(--scrollbar-background-color); height: 12px; diff --git a/docs/html/doxygen_crawl.html b/docs/html/doxygen_crawl.html index 773232da..859e3ab0 100644 --- a/docs/html/doxygen_crawl.html +++ b/docs/html/doxygen_crawl.html @@ -4,7 +4,7 @@ Validator / crawler helper - + @@ -408,7 +408,6 @@ - @@ -450,6 +449,7 @@ + diff --git a/docs/html/enabling_buffer_device_address.html b/docs/html/enabling_buffer_device_address.html index 6aed2892..42e012af 100644 --- a/docs/html/enabling_buffer_device_address.html +++ b/docs/html/enabling_buffer_device_address.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Enabling buffer device address - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/faq.html b/docs/html/faq.html index 60ab2d7f..26af3f6f 100644 --- a/docs/html/faq.html +++ b/docs/html/faq.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Frequently asked questions - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/files.html b/docs/html/files.html index b0e12362..0a0bd8b2 100644 --- a/docs/html/files.html +++ b/docs/html/files.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: File List - - + + @@ -31,22 +35,45 @@ - + - + +
      @@ -75,15 +102,15 @@
      Here is a list of all files with brief descriptions:
      -
      [detail level 12]
      - +
       
      include
      +
       include
       
      vk_mem_alloc.h
      diff --git a/docs/html/functions.html b/docs/html/functions.html index 0930b3eb..85862983 100644 --- a/docs/html/functions.html +++ b/docs/html/functions.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Class Members - - + + @@ -31,22 +35,45 @@ - + - + +
      @@ -71,7 +98,9 @@
      -
      Here is a list of all class members with links to the classes they belong to:
      +
      Here is a list of all class members with links to the classes they belong to:

      + +

      - a -

      diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html index 1a0f69a4..8efc4031 100644 --- a/docs/html/functions_vars.html +++ b/docs/html/functions_vars.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Class Members - Variables - - + + @@ -31,22 +35,45 @@ - + - + +
      @@ -71,7 +98,9 @@
      -
      Here is a list of all variables with links to the classes they belong to:
      +
      Here is a list of all variables with links to the classes they belong to:

      + +

      - a -

      diff --git a/docs/html/general_considerations.html b/docs/html/general_considerations.html index 65c29c8b..7835853d 100644 --- a/docs/html/general_considerations.html +++ b/docs/html/general_considerations.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: General considerations - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/globals.html b/docs/html/globals.html index 9d989cc5..b6fc60e4 100644 --- a/docs/html/globals.html +++ b/docs/html/globals.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: File Members - - + + @@ -31,22 +35,45 @@ - + - + +
      @@ -71,7 +98,9 @@
      -
      Here is a list of all file members with links to the files they belong to:
      +
      Here is a list of all file members with links to the files they belong to:

      + +

      - p -

      diff --git a/docs/html/globals_defs.html b/docs/html/globals_defs.html index dc6912ea..38179419 100644 --- a/docs/html/globals_defs.html +++ b/docs/html/globals_defs.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: File Members - - + + @@ -31,22 +35,45 @@ - + - + +
      @@ -71,13 +98,16 @@
      -
      Here is a list of all macros with links to the files they belong to:
        +
        Here is a list of all macros with links to the files they belong to:

        + +
      diff --git a/docs/html/globals_enum.html b/docs/html/globals_enum.html index 4115a80f..fcb107a4 100644 --- a/docs/html/globals_enum.html +++ b/docs/html/globals_enum.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: File Members - - + + @@ -31,22 +35,45 @@ - + - + +
      @@ -71,7 +98,9 @@
      -
      Here is a list of all enums with links to the files they belong to:
        +
        Here is a list of all enums with links to the files they belong to:

        + +
      diff --git a/docs/html/globals_eval.html b/docs/html/globals_eval.html index 4e9bc5a6..188bde43 100644 --- a/docs/html/globals_eval.html +++ b/docs/html/globals_eval.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: File Members - - + + @@ -31,22 +35,45 @@ - + - + +
      @@ -71,7 +98,9 @@
      -
      Here is a list of all enum values with links to the files they belong to:
      +
      Here is a list of all enum values with links to the files they belong to:

      + +

      - v -

      • VMA_ALLOCATION_CREATE_CAN_ALIAS_BIT : vk_mem_alloc.h
      • @@ -140,7 +169,7 @@

        - v -

      diff --git a/docs/html/globals_func.html b/docs/html/globals_func.html index 1e5408ad..7ab5d4b7 100644 --- a/docs/html/globals_func.html +++ b/docs/html/globals_func.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: File Members - - + + @@ -31,22 +35,45 @@ - + - + +
      @@ -71,7 +98,9 @@
      -
      Here is a list of all functions with links to the files they belong to:
      +
      Here is a list of all functions with links to the files they belong to:

      + +

      - v -

      • vmaAllocateDedicatedMemory() : vk_mem_alloc.h
      • @@ -154,7 +183,7 @@

        - v -

      diff --git a/docs/html/globals_type.html b/docs/html/globals_type.html index b9ffc9ad..d62e0a62 100644 --- a/docs/html/globals_type.html +++ b/docs/html/globals_type.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: File Members - - + + @@ -31,22 +35,45 @@ - + - + +
      @@ -71,7 +98,9 @@
      -
      Here is a list of all typedefs with links to the files they belong to:
      +
      Here is a list of all typedefs with links to the files they belong to:

      + +

      - p -

      • PFN_vmaAllocateDeviceMemoryFunction : vk_mem_alloc.h
      • @@ -118,7 +147,7 @@

        - v -

      diff --git a/docs/html/group__group__alloc.html b/docs/html/group__group__alloc.html index b06c4cf0..34e6c0fb 100644 --- a/docs/html/group__group__alloc.html +++ b/docs/html/group__group__alloc.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Memory allocation - - + + @@ -31,22 +35,45 @@ - + - + +
      @@ -2839,7 +2866,7 @@

      diff --git a/docs/html/group__group__init.html b/docs/html/group__group__init.html index ef883591..a605bc02 100644 --- a/docs/html/group__group__init.html +++ b/docs/html/group__group__init.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Library initialization - - + + @@ -31,22 +35,45 @@ - + - + +
      @@ -566,18 +593,18 @@

      // Check res...

      VkResult vmaCreateAllocator(const VmaAllocatorCreateInfo *pCreateInfo, VmaAllocator *pAllocator)
      Creates VmaAllocator object.
      VkResult vmaImportVulkanFunctionsFromVolk(const VmaAllocatorCreateInfo *pAllocatorCreateInfo, VmaVulkanFunctions *pDstVulkanFunctions)
      Fully initializes pDstVulkanFunctions structure with Vulkan functions needed by VMA using volk librar...
      -
      @ VMA_ALLOCATOR_CREATE_KHR_EXTERNAL_MEMORY_WIN32_BIT
      Definition vk_mem_alloc.h:486
      -
      @ VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT
      Definition vk_mem_alloc.h:410
      -
      @ VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT
      Definition vk_mem_alloc.h:463
      -
      Description of a Allocator to be created.
      Definition vk_mem_alloc.h:1071
      -
      VkPhysicalDevice physicalDevice
      Vulkan physical device.
      Definition vk_mem_alloc.h:1076
      -
      VmaAllocatorCreateFlags flags
      Flags for created allocator. Use VmaAllocatorCreateFlagBits enum.
      Definition vk_mem_alloc.h:1073
      -
      const VmaVulkanFunctions * pVulkanFunctions
      Pointers to Vulkan functions. Can be null.
      Definition vk_mem_alloc.h:1119
      -
      VkInstance instance
      Handle to Vulkan instance object.
      Definition vk_mem_alloc.h:1124
      -
      VkDevice device
      Vulkan device.
      Definition vk_mem_alloc.h:1079
      -
      uint32_t vulkanApiVersion
      Optional. Vulkan version that the application uses.
      Definition vk_mem_alloc.h:1135
      +
      @ VMA_ALLOCATOR_CREATE_KHR_EXTERNAL_MEMORY_WIN32_BIT
      Definition vk_mem_alloc.h:496
      +
      @ VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT
      Definition vk_mem_alloc.h:420
      +
      @ VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT
      Definition vk_mem_alloc.h:473
      +
      Description of a Allocator to be created.
      Definition vk_mem_alloc.h:1085
      +
      VkPhysicalDevice physicalDevice
      Vulkan physical device.
      Definition vk_mem_alloc.h:1090
      +
      VmaAllocatorCreateFlags flags
      Flags for created allocator. Use VmaAllocatorCreateFlagBits enum.
      Definition vk_mem_alloc.h:1087
      +
      const VmaVulkanFunctions * pVulkanFunctions
      Pointers to Vulkan functions. Can be null.
      Definition vk_mem_alloc.h:1133
      +
      VkInstance instance
      Handle to Vulkan instance object.
      Definition vk_mem_alloc.h:1138
      +
      VkDevice device
      Vulkan device.
      Definition vk_mem_alloc.h:1093
      +
      uint32_t vulkanApiVersion
      Optional. Vulkan version that the application uses.
      Definition vk_mem_alloc.h:1149
      Represents main object of this library initialized.
      -
      Pointers to some Vulkan functions - a subset used by the library.
      Definition vk_mem_alloc.h:1018
      +
      Pointers to some Vulkan functions - a subset used by the library.
      Definition vk_mem_alloc.h:1028

      Internally in this function, pointers to functions related to the entire Vulkan instance are fetched using global function definitions, while pointers to functions related to the Vulkan device are fetched using volkLoadDeviceTable() for given pAllocatorCreateInfo->device.

      @@ -608,7 +635,7 @@

      diff --git a/docs/html/group__group__stats.html b/docs/html/group__group__stats.html index fe60bbbc..eee3c794 100644 --- a/docs/html/group__group__stats.html +++ b/docs/html/group__group__stats.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Statistics - - + + @@ -31,22 +35,45 @@ - + - + +
      @@ -448,7 +475,7 @@

      diff --git a/docs/html/group__group__virtual.html b/docs/html/group__group__virtual.html index 538bc6cf..93621acd 100644 --- a/docs/html/group__group__virtual.html +++ b/docs/html/group__group__virtual.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Virtual allocator - - + + @@ -31,22 +35,45 @@ - + - + +
      @@ -593,7 +620,7 @@

      diff --git a/docs/html/index.html b/docs/html/index.html index 87e6a53d..ca817b7a 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Vulkan Memory Allocator - - + + @@ -31,22 +35,45 @@ - + - + +
      @@ -74,7 +101,7 @@
      Vulkan Memory Allocator
      -

      Version 3.4.0-development

      +

      Version 3.4.0

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

      @@ -181,7 +208,7 @@
      diff --git a/docs/html/memory_mapping.html b/docs/html/memory_mapping.html index ea1c337f..72f86933 100644 --- a/docs/html/memory_mapping.html +++ b/docs/html/memory_mapping.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Memory mapping - - + + @@ -31,22 +35,45 @@
      - + - + +
      vmaCopyMemoryToAllocation(allocator, &constantBufferData, alloc, 0, sizeof(ConstantBuffer));
      VkResult vmaCopyMemoryToAllocation(VmaAllocator allocator, const void *pSrcHostPointer, VmaAllocation dstAllocation, VkDeviceSize dstAllocationLocalOffset, VkDeviceSize size)
      Maps the allocation temporarily if needed, copies data from specified host pointer to it,...
      VkResult vmaCreateBuffer(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkBuffer *pBuffer, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)
      Creates a new VkBuffer, allocates and binds memory for it.
      -
      @ VMA_MEMORY_USAGE_AUTO
      Definition vk_mem_alloc.h:553
      -
      @ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT
      Definition vk_mem_alloc.h:662
      -
      Parameters of new VmaAllocation.
      Definition vk_mem_alloc.h:1294
      -
      VmaMemoryUsage usage
      Intended usage of memory.
      Definition vk_mem_alloc.h:1302
      -
      VmaAllocationCreateFlags flags
      Use VmaAllocationCreateFlagBits enum.
      Definition vk_mem_alloc.h:1296
      +
      @ VMA_MEMORY_USAGE_AUTO
      Definition vk_mem_alloc.h:563
      +
      @ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT
      Definition vk_mem_alloc.h:672
      +
      Parameters of new VmaAllocation.
      Definition vk_mem_alloc.h:1308
      +
      VmaMemoryUsage usage
      Intended usage of memory.
      Definition vk_mem_alloc.h:1316
      +
      VmaAllocationCreateFlags flags
      Use VmaAllocationCreateFlagBits enum.
      Definition vk_mem_alloc.h:1310
      Represents single memory allocation.

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

      @@ -156,9 +183,9 @@

      // Buffer is already mapped. You can access its memory.
      memcpy(allocInfo.pMappedData, &constantBufferData, sizeof(constantBufferData));
      -
      @ VMA_ALLOCATION_CREATE_MAPPED_BIT
      Set this flag to use a memory that will be persistently mapped and retrieve pointer to it.
      Definition vk_mem_alloc.h:613
      -
      Definition vk_mem_alloc.h:1432
      -
      void * pMappedData
      Pointer to the beginning of this allocation as mapped data.
      Definition vk_mem_alloc.h:1474
      +
      @ VMA_ALLOCATION_CREATE_MAPPED_BIT
      Set this flag to use a memory that will be persistently mapped and retrieve pointer to it.
      Definition vk_mem_alloc.h:623
      +
      Definition vk_mem_alloc.h:1446
      +
      void * pMappedData
      Pointer to the beginning of this allocation as mapped data.
      Definition vk_mem_alloc.h:1488
      Note
      VMA_ALLOCATION_CREATE_MAPPED_BIT by itself doesn't guarantee that the allocation will end up in a mappable memory type. For this, you need to also specify VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT or VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT. VMA_ALLOCATION_CREATE_MAPPED_BIT only guarantees that if the memory is HOST_VISIBLE, the allocation will be mapped on creation. For an example of how to make use of this fact, see section Advanced data uploading.

      Cache flush and invalidate

      @@ -169,7 +196,7 @@

      diff --git a/docs/html/menu.js b/docs/html/menu.js index 15f9c522..8172efef 100644 --- a/docs/html/menu.js +++ b/docs/html/menu.js @@ -22,11 +22,71 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { - function makeTree(data,relPath) { +function initMenu(relPath,treeview) { + + const SHOW_DELAY = 250; // 250ms delay before showing + const HIDE_DELAY = 500; // 500ms delay before hiding + const SLIDE_DELAY = 250; // 250ms slide up/down delay + const WHEEL_STEP = 30; // 30 pixel per mouse wheel tick + const ARROW_STEP = 5; // 5 pixel when hovering arrow up/down + const ARROW_POLL_INTERVAL = 20; // 20ms per arrow up/down check + const MOBILE_WIDTH = 768; // switch point for mobile/desktop mode + + // Helper function for slideDown animation + function slideDown(element, duration, callback) { + if (element.dataset.animating) return; + element.dataset.animating = 'true'; + + element.style.removeProperty('display'); + let display = window.getComputedStyle(element).display; + if (display === 'none') display = 'block'; + element.style.display = display; + const height = element.offsetHeight; + element.style.overflow = 'hidden'; + element.style.height = 0; + element.offsetHeight; // force reflow + element.style.transitionProperty = 'height'; + element.style.transitionDuration = duration + 'ms'; + element.style.height = height + 'px'; + window.setTimeout(() => { + element.style.removeProperty('height'); + element.style.removeProperty('overflow'); + element.style.removeProperty('transition-duration'); + element.style.removeProperty('transition-property'); + delete element.dataset.animating; + if (callback) callback(); + }, duration); + } + + // Helper function for slideUp animation + function slideUp(element, duration, callback) { + if (element.dataset.animating) return; + element.dataset.animating = 'true'; + + element.style.transitionProperty = 'height'; + element.style.transitionDuration = duration + 'ms'; + element.style.height = element.offsetHeight + 'px'; + element.offsetHeight; // force reflow + element.style.overflow = 'hidden'; + element.style.height = 0; + window.setTimeout(() => { + element.style.display = 'none'; + element.style.removeProperty('height'); + element.style.removeProperty('overflow'); + element.style.removeProperty('transition-duration'); + element.style.removeProperty('transition-property'); + delete element.dataset.animating; + if (callback) callback(); + }, duration); + } + + // Helper to create the menu tree structure + function makeTree(data,relPath,topLevel=false) { let result=''; if ('children' in data) { - result+='
        '; + if (!topLevel) { + result+='
          '; + } for (let i in data.children) { let url; const link = data.children[i].url; @@ -39,93 +99,471 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { data.children[i].text+''+ makeTree(data.children[i],relPath)+''; } - result+='
        '; + if (!topLevel) { + result+='
      '; + } } return result; } - let searchBoxHtml; - if (searchEnabled) { - if (serverSide) { - searchBoxHtml='
      '+ - '
      '+ - '
      '+ - ''+ - '
      '+ - '
      '+ - '
      '+ - '
      '; - } else { - searchBoxHtml='
      '+ - ''+ - ''+ - ''+ - ''+ - ''+ - '
      '+ - '
      '+ - '
      '; - } + + const mainNav = document.getElementById('main-nav'); + if (mainNav && mainNav.children.length > 0) { + const firstChild = mainNav.children[0]; + firstChild.insertAdjacentHTML('afterbegin', makeTree(menudata, relPath, true)); } - $('#main-nav').before('
      '+ - ''+ - ''+ - '
      '); - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - $('#main-menu').append('
    • '); - const $mainMenuState = $('#main-menu-state'); + const searchBoxPos2 = document.getElementById('searchBoxPos2'); + let searchBoxContents = searchBoxPos2 ? searchBoxPos2.innerHTML : ''; + const mainMenuState = document.getElementById('main-menu-state'); let prevWidth = 0; - if ($mainMenuState.length) { - const initResizableIfExists = function() { - if (typeof initResizable==='function') initResizable(treeview); - } - // animate mobile menu - $mainMenuState.change(function() { - const $menu = $('#main-menu'); - let options = { duration: 250, step: initResizableIfExists }; + + const initResizableIfExists = function() { + if (typeof initResizableFunc === 'function') initResizableFunc(treeview); + } + + // Dropdown menu functionality to replace smartmenus + let closeAllDropdowns = null; // Will be set by initDropdownMenu + + const isMobile = () => window.innerWidth < MOBILE_WIDTH; + + if (mainMenuState) { + const mainMenu = document.getElementById('main-menu'); + const searchBoxPos1 = document.getElementById('searchBoxPos1'); + + // animate mobile main menu + mainMenuState.addEventListener('change', function() { if (this.checked) { - options['complete'] = () => $menu.css('display', 'block'); - $menu.hide().slideDown(options); + slideDown(mainMenu, SLIDE_DELAY, () => { + mainMenu.style.display = 'block'; + initResizableIfExists(); + }); } else { - options['complete'] = () => $menu.css('display', 'none'); - $menu.show().slideUp(options); + slideUp(mainMenu, SLIDE_DELAY, () => { + mainMenu.style.display = 'none'; + }); } }); + // set default menu visibility const resetState = function() { - const $menu = $('#main-menu'); - const newWidth = $(window).outerWidth(); - if (newWidth!=prevWidth) { - if ($(window).outerWidth()<768) { - $mainMenuState.prop('checked',false); $menu.hide(); - $('#searchBoxPos1').html(searchBoxHtml); - $('#searchBoxPos2').hide(); + const newWidth = window.innerWidth; + if (newWidth !== prevWidth) { + // Close all open dropdown menus when switching between mobile/desktop modes + if (closeAllDropdowns) { + closeAllDropdowns(); + } + + if (newWidth < MOBILE_WIDTH) { + mainMenuState.checked = false; + mainMenu.style.display = 'none'; + if (searchBoxPos2) { + searchBoxPos2.innerHTML = ''; + searchBoxPos2.style.display = 'none'; + } + if (searchBoxPos1) { + searchBoxPos1.innerHTML = searchBoxContents; + searchBoxPos1.style.display = ''; + } } else { - $menu.show(); - $('#searchBoxPos1').empty(); - $('#searchBoxPos2').html(searchBoxHtml); - $('#searchBoxPos2').show(); + mainMenu.style.display = ''; + if (searchBoxPos1) { + searchBoxPos1.innerHTML = ''; + searchBoxPos1.style.display = 'none'; + } + if (searchBoxPos2) { + searchBoxPos2.innerHTML = searchBoxContents; + searchBoxPos2.style.display = ''; + } } - if (typeof searchBox!=='undefined') { + if (typeof searchBox !== 'undefined') { searchBox.CloseResultsWindow(); } prevWidth = newWidth; } } - $(window).ready(function() { resetState(); initResizableIfExists(); }); - $(window).resize(resetState); + + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', function() { + resetState(); + initResizableIfExists(); + }); + } else { + resetState(); + initResizableIfExists(); + } + window.addEventListener('resize', resetState); + } else { + initResizableIfExists(); } - $('#main-menu').smartmenus(); + + function initDropdownMenu() { + const mainMenu = document.getElementById('main-menu'); + if (!mainMenu) return; + + const menuItems = mainMenu.querySelectorAll('li'); + + // Helper function to position nested submenu with viewport checking + function positionNestedSubmenu(submenu, link) { + const viewport = { + height: window.innerHeight, + scrollY: window.scrollY + }; + + // Set initial position - top aligned with parent (next to arrow) + submenu.style.top = '0'; + if (isMobile()) { + submenu.style.marginLeft = 0; + } else { + submenu.style.marginLeft = link.offsetWidth + 'px'; + } + + // Get submenu dimensions and position + const submenuRect = submenu.getBoundingClientRect(); + const submenuHeight = submenuRect.height; + const submenuTop = submenuRect.top; + const submenuBottom = submenuRect.bottom+1; // add space for border + + // Check if submenu fits in viewport + const fitsAbove = submenuTop >= 0; + const fitsBelow = submenuBottom <= viewport.height; + + if (!fitsAbove || !fitsBelow) { + // Submenu doesn't fit - try to adjust position + // Overflows bottom, try to shift up + const overflow = submenuBottom - viewport.height; + const newTop = Math.max(0, submenuTop-overflow)-submenuTop; + submenu.style.top = newTop + 'px'; + + // Re-check after adjustment + const adjustedRect = submenu.getBoundingClientRect(); + if (adjustedRect.height > viewport.height) { + // Still doesn't fit - enable scrolling + enableSubmenuScrolling(submenu, link); + } + } + } + + // Helper function to enable scrolling for tall submenus + function enableSubmenuScrolling(submenu, link) { + // Check if scroll arrows already exist + if (submenu.dataset.scrollEnabled) return; + + submenu.dataset.scrollEnabled = 'true'; + + const viewport = { + height: window.innerHeight, + scrollY: window.scrollY + }; + + // Position submenu to fill available viewport space + const parentRect = link.getBoundingClientRect(); + const availableHeight = viewport.height - 2; // Leave some margin + + submenu.style.maxHeight = availableHeight + 'px'; + submenu.style.overflow = 'hidden'; + submenu.style.position = 'absolute'; + + // Create scroll arrows + const scrollUpArrow = document.createElement('div'); + scrollUpArrow.className = 'submenu-scroll-arrow submenu-scroll-up'; + scrollUpArrow.innerHTML = '';//'â–²'; + scrollUpArrow.style.cssText = 'position:absolute;top:0;left:0;right:0;height:30px;background:transparent;text-align:center;line-height:30px;color:#fff;cursor:pointer;z-index:1000;display:none;'; + + const scrollDownArrow = document.createElement('div'); + scrollDownArrow.className = 'submenu-scroll-arrow submenu-scroll-down'; + scrollDownArrow.innerHTML = ''; + scrollDownArrow.style.cssText = 'position:absolute;bottom:0;left:0;right:0;height:30px;background:transparent;text-align:center;line-height:30px;color:#fff;cursor:pointer;z-index:1000;'; + + // Create wrapper for submenu content + const scrollWrapper = document.createElement('div'); + scrollWrapper.className = 'submenu-scroll-wrapper'; + scrollWrapper.style.cssText = 'height:100vh;overflow:hidden;position:relative;'; + + // Move submenu children to wrapper + while (submenu.firstChild) { + scrollWrapper.appendChild(submenu.firstChild); + } + + submenu.appendChild(scrollUpArrow); + submenu.appendChild(scrollWrapper); + submenu.appendChild(scrollDownArrow); + + let scrollPosition = 0; + let scrollInterval = null; + + function updateScrollArrows() { + const maxScroll = scrollWrapper.scrollHeight - availableHeight; + scrollUpArrow.style.display = scrollPosition > 0 ? 'block' : 'none'; + scrollDownArrow.style.display = scrollPosition < maxScroll ? 'block' : 'none'; + } + + function startScrolling(direction) { + if (scrollInterval) return; + + scrollInterval = setInterval(() => { + const maxScroll = scrollWrapper.scrollHeight - availableHeight; + + if (direction === 'up') { + scrollPosition = Math.max(0, scrollPosition - ARROW_STEP); + } else { + scrollPosition = Math.min(maxScroll, scrollPosition + ARROW_STEP); + } + + scrollWrapper.scrollTop = scrollPosition; + updateScrollArrows(); + + if ((direction === 'up' && scrollPosition === 0) || + (direction === 'down' && scrollPosition === maxScroll)) { + stopScrolling(); + } + }, ARROW_POLL_INTERVAL); + } + + function stopScrolling() { + if (scrollInterval) { + clearInterval(scrollInterval); + scrollInterval = null; + } + } + + scrollUpArrow.addEventListener('mouseenter', () => startScrolling('up')); + scrollUpArrow.addEventListener('mouseleave', stopScrolling); + scrollDownArrow.addEventListener('mouseenter', () => startScrolling('down')); + scrollDownArrow.addEventListener('mouseleave', stopScrolling); + + function wheelEvent(e) { + e.preventDefault(); + e.stopPropagation(); + + const maxScroll = scrollWrapper.scrollHeight - availableHeight; + const wheelDelta = e.deltaY; + const scrollAmount = wheelDelta > 0 ? WHEEL_STEP : -WHEEL_STEP; // Scroll 30px per wheel tick + + scrollPosition = Math.max(0, Math.min(maxScroll, scrollPosition + scrollAmount)); + scrollWrapper.scrollTop = scrollPosition; + updateScrollArrows(); + } + + // Add mouse wheel scrolling support + scrollWrapper.addEventListener('wheel', (e) => wheelEvent(e)); + + // Also add wheel event to submenu itself to catch events + submenu.addEventListener('wheel', function(e) { + // Only handle if scrolling is enabled + if (submenu.dataset.scrollEnabled) { + wheelEvent(e); + } + }); + + // Initial arrow state + updateScrollArrows(); + } + + // Helper function to clean up scroll arrows + function disableSubmenuScrolling(submenu) { + if (!submenu.dataset.scrollEnabled) return; + + delete submenu.dataset.scrollEnabled; + + // Find and remove scroll elements + const scrollArrows = submenu.querySelectorAll('.submenu-scroll-arrow'); + const scrollWrapper = submenu.querySelector('.submenu-scroll-wrapper'); + + if (scrollWrapper) { + // Move children back to submenu + while (scrollWrapper.firstChild) { + submenu.appendChild(scrollWrapper.firstChild); + } + scrollWrapper.remove(); + } + + scrollArrows.forEach(arrow => arrow.remove()); + + // Reset styles + submenu.style.maxHeight = ''; + submenu.style.overflow = ''; + } + + menuItems.forEach(item => { + const submenu = item.querySelector('ul'); + if (submenu) { + const link = item.querySelector('a'); + if (link) { + // Add class and ARIA attributes for accessibility + link.classList.add('has-submenu'); + link.setAttribute('aria-haspopup', 'true'); + link.setAttribute('aria-expanded', 'false'); + + // Add sub-arrow indicator + const span = document.createElement('span'); + span.classList.add('sub-arrow'); + link.append(span); + + // Calculate nesting level for z-index + // Root menu (main-menu) is level 200 (above the search box at 102), + // first submenus are level 201, etc. + let nestingLevel = 200; + let currentElement = item.parentElement; + while (currentElement && currentElement.id !== 'main-menu') { + if (currentElement.tagName === 'UL') { + nestingLevel++; + } + currentElement = currentElement.parentElement; + } + + // Apply z-index based on nesting level + // This ensures child menus with shadows appear above parent menus + submenu.style.zIndex = nestingLevel + 1; + + // Check if this is a level 2+ submenu (nested within another dropdown) + const isNestedSubmenu = item.parentElement && item.parentElement.id !== 'main-menu'; + + // Timeout management for smooth menu navigation + let showTimeout = null; + let hideTimeout = null; + + // Desktop: show on hover + item.addEventListener('mouseenter', function() { + if (!isMobile()) { + // Clear any pending hide timeout + if (hideTimeout) { + clearTimeout(hideTimeout); + hideTimeout = null; + } + + // Set show timeout + showTimeout = setTimeout(() => { + // Hide all sibling menus at the same level before showing this one + const parentElement = item.parentElement; + if (parentElement) { + const siblings = parentElement.querySelectorAll(':scope > li'); + siblings.forEach(sibling => { + if (sibling !== item) { + const siblingSubmenu = sibling.querySelector('ul'); + const siblingLink = sibling.querySelector('a'); + if (siblingSubmenu && siblingLink) { + siblingSubmenu.style.display = 'none'; + siblingLink.setAttribute('aria-expanded', 'false'); + disableSubmenuScrolling(siblingSubmenu); + } + } + }); + } + + submenu.style.display = 'block'; + // Only apply positioning for nested submenus (level 2+) + if (isNestedSubmenu) { + positionNestedSubmenu(submenu, link); + } + link.setAttribute('aria-expanded', 'true'); + showTimeout = null; + }, SHOW_DELAY); + } + }); + + item.addEventListener('mouseleave', function() { + if (!isMobile()) { + // Clear any pending show timeout + if (showTimeout) { + clearTimeout(showTimeout); + showTimeout = null; + } + + // Set hide timeout + hideTimeout = setTimeout(() => { + submenu.style.display = 'none'; + link.setAttribute('aria-expanded', 'false'); + // Clean up scrolling if enabled + disableSubmenuScrolling(submenu); + hideTimeout = null; + }, HIDE_DELAY); + } + }); + + if (isMobile() && isNestedSubmenu) { + positionNestedSubmenu(submenu, link); + } + + function toggleMenu() { + const isExpanded = link.getAttribute('aria-expanded') === 'true'; + if (isExpanded) { + slideUp(submenu, SLIDE_DELAY, () => { + submenu.style.display = 'none'; + link.setAttribute('aria-expanded', 'false'); + link.classList.remove('highlighted') + disableSubmenuScrolling(submenu); + }); + } else { + slideDown(submenu, SLIDE_DELAY, () => { + submenu.style.display = 'block'; + link.classList.add('highlighted') + link.setAttribute('aria-expanded', 'true'); + }); + } + } + + // Mobile/Touch: toggle on click + link.addEventListener('click', function(e) { + if (isMobile()) { + e.preventDefault(); + toggleMenu(); + } + }); + + // Keyboard navigation + link.addEventListener('keydown', function(e) { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + toggleMenu(); + } else if (e.key === 'Escape') { + submenu.style.display = 'none'; + link.setAttribute('aria-expanded', 'false'); + disableSubmenuScrolling(submenu); + link.focus(); + } + }); + } + } + }); + + // Helper function to close all open dropdown menus + closeAllDropdowns = function() { + menuItems.forEach(item => { + const submenu = item.querySelector('ul'); + const link = item.querySelector('a.has-submenu'); + if (submenu && link) { + disableSubmenuScrolling(submenu); + submenu.style.display = 'none'; + submenu.style.marginLeft = 0; + link.setAttribute('aria-expanded', 'false'); + link.classList.remove('highlighted'); + } + }); + }; + + // Close all dropdown menus when clicking a link (navigation to new page or anchor) + const allLinks = mainMenu.querySelectorAll('a'); + allLinks.forEach(link => { + link.addEventListener('click', function() { + // Close dropdowns when navigating (unless it's a has-submenu link in mobile mode) + if (!link.classList.contains('has-submenu') || !isMobile()) { + if (closeAllDropdowns) { + closeAllDropdowns(); + } + } + }); + }); + } + + // Initialize dropdown menu behavior + initDropdownMenu(); + + // Close all open menus when browser back button is pressed + window.addEventListener('popstate', function() { + if (closeAllDropdowns) { + closeAllDropdowns(); + } + }); } + /* @license-end */ diff --git a/docs/html/other_api_interop.html b/docs/html/other_api_interop.html index c2ca2924..92b365f8 100644 --- a/docs/html/other_api_interop.html +++ b/docs/html/other_api_interop.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Interop with other graphics APIs - - + + @@ -31,22 +35,45 @@ - + - + +
      void vmaDestroyPool(VmaAllocator allocator, VmaPool pool)
      Destroys VmaPool object and frees Vulkan device memory.
      VkResult vmaCreatePool(VmaAllocator allocator, const VmaPoolCreateInfo *pCreateInfo, VmaPool *pPool)
      Allocates Vulkan device memory and creates VmaPool object.
      VkResult vmaFindMemoryTypeIndexForBufferInfo(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, uint32_t *pMemoryTypeIndex)
      Helps to find memoryTypeIndex, given VkBufferCreateInfo and VmaAllocationCreateInfo.
      -
      @ VMA_MEMORY_USAGE_AUTO
      Definition vk_mem_alloc.h:553
      -
      Parameters of new VmaAllocation.
      Definition vk_mem_alloc.h:1294
      -
      VmaMemoryUsage usage
      Intended usage of memory.
      Definition vk_mem_alloc.h:1302
      -
      Describes parameter of created VmaPool.
      Definition vk_mem_alloc.h:1358
      -
      uint32_t memoryTypeIndex
      Vulkan memory type index to allocate this pool from.
      Definition vk_mem_alloc.h:1361
      -
      void *VkMemoryAllocateInfo pMemoryAllocateNext
      Additional pNext chain to be attached to VkMemoryAllocateInfo used for every allocation made by this ...
      Definition vk_mem_alloc.h:1416
      +
      @ VMA_MEMORY_USAGE_AUTO
      Definition vk_mem_alloc.h:563
      +
      Parameters of new VmaAllocation.
      Definition vk_mem_alloc.h:1308
      +
      VmaMemoryUsage usage
      Intended usage of memory.
      Definition vk_mem_alloc.h:1316
      +
      Describes parameter of created VmaPool.
      Definition vk_mem_alloc.h:1372
      +
      uint32_t memoryTypeIndex
      Vulkan memory type index to allocate this pool from.
      Definition vk_mem_alloc.h:1375
      +
      void *VkMemoryAllocateInfo pMemoryAllocateNext
      Additional pNext chain to be attached to VkMemoryAllocateInfo used for every allocation made by this ...
      Definition vk_mem_alloc.h:1430
      Represents custom memory pool.

      Note that the structure passed as VmaPoolCreateInfo::pMemoryAllocateNext must remain alive and unchanged for the whole lifetime of the custom pool, because it will be used when the pool allocates a new device memory block. No copy is made internally. This is why variable exportMemAllocInfo is defined as static.

      If you want to export all memory allocated by VMA from certain memory types, including dedicated allocations and allocations made from default pools, an alternative solution is to fill in VmaAllocatorCreateInfo::pTypeExternalMemoryHandleTypes. It should point to an array with VkExternalMemoryHandleTypeFlagsKHR to be automatically passed by the library through VkExportMemoryAllocateInfoKHR on each allocation made from a specific memory type. You should not mix these two methods in a way that allows to apply both to the same memory type. Otherwise, VkExportMemoryAllocateInfoKHR structure would be attached twice to the pNext chain of VkMemoryAllocateInfo.

      @@ -173,7 +200,7 @@

      vmaDestroyBuffer(g_Allocator, buf, alloc);
      void vmaDestroyBuffer(VmaAllocator allocator, VkBuffer buffer, VmaAllocation allocation)
      Destroys Vulkan buffer and frees allocated memory.
      VkResult vmaCreateBuffer(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkBuffer *pBuffer, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)
      Creates a new VkBuffer, allocates and binds memory for it.
      -
      VmaPool pool
      Pool that this allocation should be created in.
      Definition vk_mem_alloc.h:1326
      +
      VmaPool pool
      Pool that this allocation should be created in.
      Definition vk_mem_alloc.h:1340
      Represents single memory allocation.

      If you need each allocation to have its own device memory block and start at offset 0, you can still do by using VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT flag. It works also with custom pools.

      Alternatively, you can use convenient functions vmaCreateDedicatedBuffer(), vmaCreateDedicatedImage() that always allocate dedicated memory for the buffer/image created, and also allow specifying custom pNext chain for the VkMemoryAllocateInfo structure.

      @@ -237,7 +264,7 @@

      diff --git a/docs/html/pages.html b/docs/html/pages.html index ff608a58..df0fb97d 100644 --- a/docs/html/pages.html +++ b/docs/html/pages.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Related Pages - - + + @@ -31,22 +35,45 @@ - + - + +
      @@ -82,7 +109,7 @@
      diff --git a/docs/html/quick_start.html b/docs/html/quick_start.html index aa775942..5dabec46 100644 --- a/docs/html/quick_start.html +++ b/docs/html/quick_start.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Quick start - - + + @@ -31,22 +35,45 @@ - + - + +
      VkResult vmaCreateAllocator(const VmaAllocatorCreateInfo *pCreateInfo, VmaAllocator *pAllocator)
      Creates VmaAllocator object.
      void vmaDestroyAllocator(VmaAllocator allocator)
      Destroys allocator object.
      -
      @ VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT
      Definition vk_mem_alloc.h:410
      -
      Description of a Allocator to be created.
      Definition vk_mem_alloc.h:1071
      -
      VkPhysicalDevice physicalDevice
      Vulkan physical device.
      Definition vk_mem_alloc.h:1076
      -
      VmaAllocatorCreateFlags flags
      Flags for created allocator. Use VmaAllocatorCreateFlagBits enum.
      Definition vk_mem_alloc.h:1073
      -
      const VmaVulkanFunctions * pVulkanFunctions
      Pointers to Vulkan functions. Can be null.
      Definition vk_mem_alloc.h:1119
      -
      VkInstance instance
      Handle to Vulkan instance object.
      Definition vk_mem_alloc.h:1124
      -
      VkDevice device
      Vulkan device.
      Definition vk_mem_alloc.h:1079
      -
      uint32_t vulkanApiVersion
      Optional. Vulkan version that the application uses.
      Definition vk_mem_alloc.h:1135
      +
      @ VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT
      Definition vk_mem_alloc.h:420
      +
      Description of a Allocator to be created.
      Definition vk_mem_alloc.h:1085
      +
      VkPhysicalDevice physicalDevice
      Vulkan physical device.
      Definition vk_mem_alloc.h:1090
      +
      VmaAllocatorCreateFlags flags
      Flags for created allocator. Use VmaAllocatorCreateFlagBits enum.
      Definition vk_mem_alloc.h:1087
      +
      const VmaVulkanFunctions * pVulkanFunctions
      Pointers to Vulkan functions. Can be null.
      Definition vk_mem_alloc.h:1133
      +
      VkInstance instance
      Handle to Vulkan instance object.
      Definition vk_mem_alloc.h:1138
      +
      VkDevice device
      Vulkan device.
      Definition vk_mem_alloc.h:1093
      +
      uint32_t vulkanApiVersion
      Optional. Vulkan version that the application uses.
      Definition vk_mem_alloc.h:1149
      Represents main object of this library initialized.

      Other configuration options

      @@ -220,9 +247,9 @@

      VmaAllocation allocation;
      vmaCreateBuffer(allocator, &bufferInfo, &allocInfo, &buffer, &allocation, nullptr);
      VkResult vmaCreateBuffer(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkBuffer *pBuffer, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)
      Creates a new VkBuffer, allocates and binds memory for it.
      -
      @ VMA_MEMORY_USAGE_AUTO
      Definition vk_mem_alloc.h:553
      -
      Parameters of new VmaAllocation.
      Definition vk_mem_alloc.h:1294
      -
      VmaMemoryUsage usage
      Intended usage of memory.
      Definition vk_mem_alloc.h:1302
      +
      @ VMA_MEMORY_USAGE_AUTO
      Definition vk_mem_alloc.h:563
      +
      Parameters of new VmaAllocation.
      Definition vk_mem_alloc.h:1308
      +
      VmaMemoryUsage usage
      Intended usage of memory.
      Definition vk_mem_alloc.h:1316
      Represents single memory allocation.

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

      vmaDestroyBuffer(allocator, buffer, allocation);
      @@ -232,7 +259,7 @@

      diff --git a/docs/html/resource_aliasing.html b/docs/html/resource_aliasing.html index efa0a320..1d036218 100644 --- a/docs/html/resource_aliasing.html +++ b/docs/html/resource_aliasing.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Resource aliasing (overlap) - - + + @@ -31,22 +35,45 @@ - + - + +
      void vmaFreeMemory(VmaAllocator allocator, VmaAllocation allocation)
      Frees memory previously allocated using vmaAllocateMemory(), vmaAllocateMemoryForBuffer(),...
      VkResult vmaBindImageMemory(VmaAllocator allocator, VmaAllocation allocation, VkImage image)
      Binds image to allocation.
      VkResult vmaAllocateMemory(VmaAllocator allocator, const VkMemoryRequirements *pVkMemoryRequirements, const VmaAllocationCreateInfo *pCreateInfo, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)
      General purpose memory allocation.
      -
      Parameters of new VmaAllocation.
      Definition vk_mem_alloc.h:1294
      -
      VkMemoryPropertyFlags preferredFlags
      Flags that preferably should be set in a memory type chosen for an allocation.
      Definition vk_mem_alloc.h:1312
      +
      Parameters of new VmaAllocation.
      Definition vk_mem_alloc.h:1308
      +
      VkMemoryPropertyFlags preferredFlags
      Flags that preferably should be set in a memory type chosen for an allocation.
      Definition vk_mem_alloc.h:1326
      Represents single memory allocation.

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

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

      @@ -164,7 +191,7 @@ diff --git a/docs/html/search/all_14.js b/docs/html/search/all_14.js index c6c08bc2..cf3b2374 100644 --- a/docs/html/search/all_14.js +++ b/docs/html/search/all_14.js @@ -32,49 +32,49 @@ var searchData= ['vkgetinstanceprocaddr_29',['vkGetInstanceProcAddr',['../struct_vma_vulkan_functions.html#a3eafa102f5f8915f093f40675636b849',1,'VmaVulkanFunctions']]], ['vkgetmemorywin32handlekhr_30',['vkGetMemoryWin32HandleKHR',['../struct_vma_vulkan_functions.html#af45d10a2b47971f4cf5bcacf1d331f86',1,'VmaVulkanFunctions']]], ['vkgetphysicaldevicememoryproperties_31',['vkGetPhysicalDeviceMemoryProperties',['../struct_vma_vulkan_functions.html#a60d25c33bba06bb8592e6875cbaa9830',1,'VmaVulkanFunctions']]], - ['vkgetphysicaldevicememoryproperties2khr_32',['vkGetPhysicalDeviceMemoryProperties2KHR',['../struct_vma_vulkan_functions.html#a0d992896e6ffcf92b9d7ea049fa5c445',1,'VmaVulkanFunctions']]], - ['vkgetphysicaldeviceproperties_33',['vkGetPhysicalDeviceProperties',['../struct_vma_vulkan_functions.html#a77b7a74082823e865dd6546623468f96',1,'VmaVulkanFunctions']]], - ['vkinvalidatemappedmemoryranges_34',['vkInvalidateMappedMemoryRanges',['../struct_vma_vulkan_functions.html#a5c1093bc32386a8060c37c9f282078a1',1,'VmaVulkanFunctions']]], - ['vkmapmemory_35',['vkMapMemory',['../struct_vma_vulkan_functions.html#ab5c1f38dea3a2cf00dc9eb4f57218c49',1,'VmaVulkanFunctions']]], - ['vkunmapmemory_36',['vkUnmapMemory',['../struct_vma_vulkan_functions.html#acc798589736f0becb317fc2196c1d8b9',1,'VmaVulkanFunctions']]], - ['vma_5fallocation_5fcreate_5fcan_5falias_5fbit_37',['VMA_ALLOCATION_CREATE_CAN_ALIAS_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597afb0ee060cd733aaa5e249704ff589ad6',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fdedicated_5fmemory_5fbit_38',['VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a3fc311d855c2ff53f1090ef5c722b38f',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fdont_5fbind_5fbit_39',['VMA_ALLOCATION_CREATE_DONT_BIND_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a2310568c62208af432724305fe29ccea',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum_40',['VMA_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597ae5633ec569f4899cf8f29e7385b2f882',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fhost_5faccess_5fallow_5ftransfer_5finstead_5fbit_41',['VMA_ALLOCATION_CREATE_HOST_ACCESS_ALLOW_TRANSFER_INSTEAD_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a11337f96eacf34c1016c339eac165cad',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fhost_5faccess_5frandom_5fbit_42',['VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597add61238d98e20917b9a06c617763f492',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fhost_5faccess_5fsequential_5fwrite_5fbit_43',['VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a9be224df3bfc1cfa06203aed689a30c5',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fmapped_5fbit_44',['VMA_ALLOCATION_CREATE_MAPPED_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a11da372cc3a82931c5e5d6146cd9dd1f',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fnever_5fallocate_5fbit_45',['VMA_ALLOCATION_CREATE_NEVER_ALLOCATE_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a89759603401014eb325eb22a3839f2ff',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fstrategy_5fbest_5ffit_5fbit_46',['VMA_ALLOCATION_CREATE_STRATEGY_BEST_FIT_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a839826775c62319466441f86496f036d',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fstrategy_5ffirst_5ffit_5fbit_47',['VMA_ALLOCATION_CREATE_STRATEGY_FIRST_FIT_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a33eb2052674f3ad92386c714a65fb777',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fstrategy_5fmask_48',['VMA_ALLOCATION_CREATE_STRATEGY_MASK',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a8e16845d81ae3d27c47106d4770d5c7e',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_49',['VMA_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a8af1210cf591784afa026d94998f735d',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_50',['VMA_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a8099acedc0d04cdccaaddcfe37fd227d',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_51',['VMA_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a0729e932b7ea170e3a128cad96c5cf6d',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fupper_5faddress_5fbit_52',['VMA_ALLOCATION_CREATE_UPPER_ADDRESS_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a42ba3a2d2c7117953210b7c3ef8da0df',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fuser_5fdata_5fcopy_5fstring_5fbit_53',['VMA_ALLOCATION_CREATE_USER_DATA_COPY_STRING_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597aa6f24f821cd6a7c5e4a443f7bf59c520',1,'vk_mem_alloc.h']]], - ['vma_5fallocation_5fcreate_5fwithin_5fbudget_5fbit_54',['VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597ab8b1764f3e9022368e440c057783b92d',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5famd_5fdevice_5fcoherent_5fmemory_5fbit_55',['VMA_ALLOCATOR_CREATE_AMD_DEVICE_COHERENT_MEMORY_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca2acce4886d8078552efa38878413970f',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fbuffer_5fdevice_5faddress_5fbit_56',['VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca5f1b28b0414319d1687e1f2b30ab0089',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fext_5fmemory_5fbudget_5fbit_57',['VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca4d4687863f7bd4b418c6006dc04400b0',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fext_5fmemory_5fpriority_5fbit_58',['VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7caffdd7a5169be3dbd7cbf6b3619e4f78a',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fexternally_5fsynchronized_5fbit_59',['VMA_ALLOCATOR_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca4816ddaed324ba110172ca608a20f29d',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fflag_5fbits_5fmax_5fenum_60',['VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7cae4d5ad929caba5f23eb502b13bd5286c',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fkhr_5fbind_5fmemory2_5fbit_61',['VMA_ALLOCATOR_CREATE_KHR_BIND_MEMORY2_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca8fb75bf07cd184ab903596295e863dee',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fkhr_5fdedicated_5fallocation_5fbit_62',['VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7cace7da7cc6e71a625dfa763c55a597878',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fkhr_5fexternal_5fmemory_5fwin32_5fbit_63',['VMA_ALLOCATOR_CREATE_KHR_EXTERNAL_MEMORY_WIN32_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca4897d1181a186e327f4dadd680ad00ac',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fkhr_5fmaintenance4_5fbit_64',['VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE4_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7caa2566e7f75e19ae7ec9c4fa509fea5fb',1,'vk_mem_alloc.h']]], - ['vma_5fallocator_5fcreate_5fkhr_5fmaintenance5_5fbit_65',['VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE5_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7caca82d4ce40bdb59d3da52a539c21d6b8',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5fbalanced_5fbit_66',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50caec35a4138111605a6ff32ca61aa871b6',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5fextensive_5fbit_67',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cae45a9469e5337731627758671741e412',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5ffast_5fbit_68',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5ffull_5fbit_69',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cafa162eac5be800bcdd4011427a71156d',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5falgorithm_5fmask_70',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cabcbbdb3bfd53c4c3ab4eaeb5fd4894e9',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fflag_5fbits_5fmax_5fenum_71',['VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cab87ec33154803bfeb5ac2b379f1d6a97',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fmove_5foperation_5fcopy_72',['VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad4a06ac46c4cb1c67b0ebc1edfab9f18',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fmove_5foperation_5fdestroy_73',['VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257a9786f8492a9be2c03bd26395e352ab85',1,'vk_mem_alloc.h']]], - ['vma_5fdefragmentation_5fmove_5foperation_5fignore_74',['VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad25bc6f816b226b4fd5170e845f218d2',1,'vk_mem_alloc.h']]], + ['vkgetphysicaldeviceproperties_32',['vkGetPhysicalDeviceProperties',['../struct_vma_vulkan_functions.html#a77b7a74082823e865dd6546623468f96',1,'VmaVulkanFunctions']]], + ['vkinvalidatemappedmemoryranges_33',['vkInvalidateMappedMemoryRanges',['../struct_vma_vulkan_functions.html#a5c1093bc32386a8060c37c9f282078a1',1,'VmaVulkanFunctions']]], + ['vkmapmemory_34',['vkMapMemory',['../struct_vma_vulkan_functions.html#ab5c1f38dea3a2cf00dc9eb4f57218c49',1,'VmaVulkanFunctions']]], + ['vkunmapmemory_35',['vkUnmapMemory',['../struct_vma_vulkan_functions.html#acc798589736f0becb317fc2196c1d8b9',1,'VmaVulkanFunctions']]], + ['vma_5fallocation_5fcreate_5fcan_5falias_5fbit_36',['VMA_ALLOCATION_CREATE_CAN_ALIAS_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597afb0ee060cd733aaa5e249704ff589ad6',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fdedicated_5fmemory_5fbit_37',['VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a3fc311d855c2ff53f1090ef5c722b38f',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fdont_5fbind_5fbit_38',['VMA_ALLOCATION_CREATE_DONT_BIND_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a2310568c62208af432724305fe29ccea',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum_39',['VMA_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597ae5633ec569f4899cf8f29e7385b2f882',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fhost_5faccess_5fallow_5ftransfer_5finstead_5fbit_40',['VMA_ALLOCATION_CREATE_HOST_ACCESS_ALLOW_TRANSFER_INSTEAD_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a11337f96eacf34c1016c339eac165cad',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fhost_5faccess_5frandom_5fbit_41',['VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597add61238d98e20917b9a06c617763f492',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fhost_5faccess_5fsequential_5fwrite_5fbit_42',['VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a9be224df3bfc1cfa06203aed689a30c5',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fmapped_5fbit_43',['VMA_ALLOCATION_CREATE_MAPPED_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a11da372cc3a82931c5e5d6146cd9dd1f',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fnever_5fallocate_5fbit_44',['VMA_ALLOCATION_CREATE_NEVER_ALLOCATE_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a89759603401014eb325eb22a3839f2ff',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fstrategy_5fbest_5ffit_5fbit_45',['VMA_ALLOCATION_CREATE_STRATEGY_BEST_FIT_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a839826775c62319466441f86496f036d',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fstrategy_5ffirst_5ffit_5fbit_46',['VMA_ALLOCATION_CREATE_STRATEGY_FIRST_FIT_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a33eb2052674f3ad92386c714a65fb777',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fstrategy_5fmask_47',['VMA_ALLOCATION_CREATE_STRATEGY_MASK',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a8e16845d81ae3d27c47106d4770d5c7e',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fstrategy_5fmin_5fmemory_5fbit_48',['VMA_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a8af1210cf591784afa026d94998f735d',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fstrategy_5fmin_5foffset_5fbit_49',['VMA_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a8099acedc0d04cdccaaddcfe37fd227d',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fstrategy_5fmin_5ftime_5fbit_50',['VMA_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a0729e932b7ea170e3a128cad96c5cf6d',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fupper_5faddress_5fbit_51',['VMA_ALLOCATION_CREATE_UPPER_ADDRESS_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a42ba3a2d2c7117953210b7c3ef8da0df',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fuser_5fdata_5fcopy_5fstring_5fbit_52',['VMA_ALLOCATION_CREATE_USER_DATA_COPY_STRING_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597aa6f24f821cd6a7c5e4a443f7bf59c520',1,'vk_mem_alloc.h']]], + ['vma_5fallocation_5fcreate_5fwithin_5fbudget_5fbit_53',['VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT',['../group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597ab8b1764f3e9022368e440c057783b92d',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5famd_5fdevice_5fcoherent_5fmemory_5fbit_54',['VMA_ALLOCATOR_CREATE_AMD_DEVICE_COHERENT_MEMORY_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca2acce4886d8078552efa38878413970f',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fbuffer_5fdevice_5faddress_5fbit_55',['VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca5f1b28b0414319d1687e1f2b30ab0089',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fext_5fmemory_5fbudget_5fbit_56',['VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca4d4687863f7bd4b418c6006dc04400b0',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fext_5fmemory_5fpriority_5fbit_57',['VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7caffdd7a5169be3dbd7cbf6b3619e4f78a',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fexternally_5fsynchronized_5fbit_58',['VMA_ALLOCATOR_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca4816ddaed324ba110172ca608a20f29d',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fflag_5fbits_5fmax_5fenum_59',['VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7cae4d5ad929caba5f23eb502b13bd5286c',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fkhr_5fbind_5fmemory2_5fbit_60',['VMA_ALLOCATOR_CREATE_KHR_BIND_MEMORY2_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca8fb75bf07cd184ab903596295e863dee',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fkhr_5fdedicated_5fallocation_5fbit_61',['VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7cace7da7cc6e71a625dfa763c55a597878',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fkhr_5fexternal_5fmemory_5fwin32_5fbit_62',['VMA_ALLOCATOR_CREATE_KHR_EXTERNAL_MEMORY_WIN32_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7ca4897d1181a186e327f4dadd680ad00ac',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fkhr_5fmaintenance4_5fbit_63',['VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE4_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7caa2566e7f75e19ae7ec9c4fa509fea5fb',1,'vk_mem_alloc.h']]], + ['vma_5fallocator_5fcreate_5fkhr_5fmaintenance5_5fbit_64',['VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE5_BIT',['../group__group__init.html#gga4f87c9100d154a65a4ad495f7763cf7caca82d4ce40bdb59d3da52a539c21d6b8',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5fbalanced_5fbit_65',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50caec35a4138111605a6ff32ca61aa871b6',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5fextensive_5fbit_66',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cae45a9469e5337731627758671741e412',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5ffast_5fbit_67',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50ca2e6469bcf5a094776ceb5d118263f04b',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5ffull_5fbit_68',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cafa162eac5be800bcdd4011427a71156d',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5falgorithm_5fmask_69',['VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cabcbbdb3bfd53c4c3ab4eaeb5fd4894e9',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fflag_5fbits_5fmax_5fenum_70',['VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM',['../group__group__alloc.html#gga6552a65b71d16f378c6994b3ceaef50cab87ec33154803bfeb5ac2b379f1d6a97',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fmove_5foperation_5fcopy_71',['VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad4a06ac46c4cb1c67b0ebc1edfab9f18',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fmove_5foperation_5fdestroy_72',['VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257a9786f8492a9be2c03bd26395e352ab85',1,'vk_mem_alloc.h']]], + ['vma_5fdefragmentation_5fmove_5foperation_5fignore_73',['VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE',['../group__group__alloc.html#ggada9e3861caf96f08894b0bcc160ec257ad25bc6f816b226b4fd5170e845f218d2',1,'vk_mem_alloc.h']]], + ['vma_5fget_5fphysical_5fdevice_5fproperties2_74',['VMA_GET_PHYSICAL_DEVICE_PROPERTIES2',['../vk__mem__alloc_8h.html#a024abdb7917e063f94f398936a931887',1,'vk_mem_alloc.h']]], ['vma_5fmemory_5fusage_5fauto_75',['VMA_MEMORY_USAGE_AUTO',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca27cde9026a84d34d525777baa41fce6e',1,'vk_mem_alloc.h']]], ['vma_5fmemory_5fusage_5fauto_5fprefer_5fdevice_76',['VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305ccae2adb696d6a73c18bb20c23666661327',1,'vk_mem_alloc.h']]], ['vma_5fmemory_5fusage_5fauto_5fprefer_5fhost_77',['VMA_MEMORY_USAGE_AUTO_PREFER_HOST',['../group__group__alloc.html#ggaa5846affa1e9da3800e3e78fae2305cca9b422585242160b8ed3418310ee6664d',1,'vk_mem_alloc.h']]], diff --git a/docs/html/search/defines_0.js b/docs/html/search/defines_0.js index bc8aed4b..50a18fa0 100644 --- a/docs/html/search/defines_0.js +++ b/docs/html/search/defines_0.js @@ -1,4 +1,5 @@ var searchData= [ - ['vma_5fversion_0',['VMA_VERSION',['../vk__mem__alloc_8h.html#acb14074601291f583de581ed204fd8c1',1,'vk_mem_alloc.h']]] + ['vma_5fget_5fphysical_5fdevice_5fproperties2_0',['VMA_GET_PHYSICAL_DEVICE_PROPERTIES2',['../vk__mem__alloc_8h.html#a024abdb7917e063f94f398936a931887',1,'vk_mem_alloc.h']]], + ['vma_5fversion_1',['VMA_VERSION',['../vk__mem__alloc_8h.html#acb14074601291f583de581ed204fd8c1',1,'vk_mem_alloc.h']]] ]; diff --git a/docs/html/search/variables_c.js b/docs/html/search/variables_c.js index 3cd226f1..2e06a2b8 100644 --- a/docs/html/search/variables_c.js +++ b/docs/html/search/variables_c.js @@ -22,10 +22,9 @@ var searchData= ['vkgetinstanceprocaddr_19',['vkGetInstanceProcAddr',['../struct_vma_vulkan_functions.html#a3eafa102f5f8915f093f40675636b849',1,'VmaVulkanFunctions']]], ['vkgetmemorywin32handlekhr_20',['vkGetMemoryWin32HandleKHR',['../struct_vma_vulkan_functions.html#af45d10a2b47971f4cf5bcacf1d331f86',1,'VmaVulkanFunctions']]], ['vkgetphysicaldevicememoryproperties_21',['vkGetPhysicalDeviceMemoryProperties',['../struct_vma_vulkan_functions.html#a60d25c33bba06bb8592e6875cbaa9830',1,'VmaVulkanFunctions']]], - ['vkgetphysicaldevicememoryproperties2khr_22',['vkGetPhysicalDeviceMemoryProperties2KHR',['../struct_vma_vulkan_functions.html#a0d992896e6ffcf92b9d7ea049fa5c445',1,'VmaVulkanFunctions']]], - ['vkgetphysicaldeviceproperties_23',['vkGetPhysicalDeviceProperties',['../struct_vma_vulkan_functions.html#a77b7a74082823e865dd6546623468f96',1,'VmaVulkanFunctions']]], - ['vkinvalidatemappedmemoryranges_24',['vkInvalidateMappedMemoryRanges',['../struct_vma_vulkan_functions.html#a5c1093bc32386a8060c37c9f282078a1',1,'VmaVulkanFunctions']]], - ['vkmapmemory_25',['vkMapMemory',['../struct_vma_vulkan_functions.html#ab5c1f38dea3a2cf00dc9eb4f57218c49',1,'VmaVulkanFunctions']]], - ['vkunmapmemory_26',['vkUnmapMemory',['../struct_vma_vulkan_functions.html#acc798589736f0becb317fc2196c1d8b9',1,'VmaVulkanFunctions']]], - ['vulkanapiversion_27',['vulkanApiVersion',['../struct_vma_allocator_create_info.html#ae0ffc55139b54520a6bb704b29ffc285',1,'VmaAllocatorCreateInfo']]] + ['vkgetphysicaldeviceproperties_22',['vkGetPhysicalDeviceProperties',['../struct_vma_vulkan_functions.html#a77b7a74082823e865dd6546623468f96',1,'VmaVulkanFunctions']]], + ['vkinvalidatemappedmemoryranges_23',['vkInvalidateMappedMemoryRanges',['../struct_vma_vulkan_functions.html#a5c1093bc32386a8060c37c9f282078a1',1,'VmaVulkanFunctions']]], + ['vkmapmemory_24',['vkMapMemory',['../struct_vma_vulkan_functions.html#ab5c1f38dea3a2cf00dc9eb4f57218c49',1,'VmaVulkanFunctions']]], + ['vkunmapmemory_25',['vkUnmapMemory',['../struct_vma_vulkan_functions.html#acc798589736f0becb317fc2196c1d8b9',1,'VmaVulkanFunctions']]], + ['vulkanapiversion_26',['vulkanApiVersion',['../struct_vma_allocator_create_info.html#ae0ffc55139b54520a6bb704b29ffc285',1,'VmaAllocatorCreateInfo']]] ]; diff --git a/docs/html/statistics.html b/docs/html/statistics.html index 61c48205..7c98d44e 100644 --- a/docs/html/statistics.html +++ b/docs/html/statistics.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Statistics - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/staying_within_budget.html b/docs/html/staying_within_budget.html index 6c898ffc..c8bda417 100644 --- a/docs/html/staying_within_budget.html +++ b/docs/html/staying_within_budget.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Staying within budget - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_allocation.html b/docs/html/struct_vma_allocation.html index a3e4990e..5e5991ee 100644 --- a/docs/html/struct_vma_allocation.html +++ b/docs/html/struct_vma_allocation.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaAllocation Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_allocation_create_info-members.html b/docs/html/struct_vma_allocation_create_info-members.html index f896a6f9..c9595eca 100644 --- a/docs/html/struct_vma_allocation_create_info-members.html +++ b/docs/html/struct_vma_allocation_create_info-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_allocation_create_info.html b/docs/html/struct_vma_allocation_create_info.html index 56cab8a7..c4b3b928 100644 --- a/docs/html/struct_vma_allocation_create_info.html +++ b/docs/html/struct_vma_allocation_create_info.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaAllocationCreateInfo Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_allocation_info-members.html b/docs/html/struct_vma_allocation_info-members.html index 43fd1fa8..78ca460a 100644 --- a/docs/html/struct_vma_allocation_info-members.html +++ b/docs/html/struct_vma_allocation_info-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_allocation_info.html b/docs/html/struct_vma_allocation_info.html index a246a929..59e8b318 100644 --- a/docs/html/struct_vma_allocation_info.html +++ b/docs/html/struct_vma_allocation_info.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaAllocationInfo Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_allocation_info2-members.html b/docs/html/struct_vma_allocation_info2-members.html index 72804f07..4bd73392 100644 --- a/docs/html/struct_vma_allocation_info2-members.html +++ b/docs/html/struct_vma_allocation_info2-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_allocation_info2.html b/docs/html/struct_vma_allocation_info2.html index e783a5f5..622656e9 100644 --- a/docs/html/struct_vma_allocation_info2.html +++ b/docs/html/struct_vma_allocation_info2.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaAllocationInfo2 Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_allocator.html b/docs/html/struct_vma_allocator.html index 8e1c1db0..8beb0adc 100644 --- a/docs/html/struct_vma_allocator.html +++ b/docs/html/struct_vma_allocator.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaAllocator Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_allocator_create_info-members.html b/docs/html/struct_vma_allocator_create_info-members.html index ba952113..3fcbc6fb 100644 --- a/docs/html/struct_vma_allocator_create_info-members.html +++ b/docs/html/struct_vma_allocator_create_info-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_allocator_create_info.html b/docs/html/struct_vma_allocator_create_info.html index 9dba66e3..f619b8e4 100644 --- a/docs/html/struct_vma_allocator_create_info.html +++ b/docs/html/struct_vma_allocator_create_info.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaAllocatorCreateInfo Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_allocator_info-members.html b/docs/html/struct_vma_allocator_info-members.html index 95961ce9..34780c05 100644 --- a/docs/html/struct_vma_allocator_info-members.html +++ b/docs/html/struct_vma_allocator_info-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_allocator_info.html b/docs/html/struct_vma_allocator_info.html index 476df2a0..1d646061 100644 --- a/docs/html/struct_vma_allocator_info.html +++ b/docs/html/struct_vma_allocator_info.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaAllocatorInfo Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_budget-members.html b/docs/html/struct_vma_budget-members.html index e441346a..91044886 100644 --- a/docs/html/struct_vma_budget-members.html +++ b/docs/html/struct_vma_budget-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_budget.html b/docs/html/struct_vma_budget.html index bf82b0d2..25d1a505 100644 --- a/docs/html/struct_vma_budget.html +++ b/docs/html/struct_vma_budget.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaBudget Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_defragmentation_context.html b/docs/html/struct_vma_defragmentation_context.html index d8db9426..4387ace5 100644 --- a/docs/html/struct_vma_defragmentation_context.html +++ b/docs/html/struct_vma_defragmentation_context.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaDefragmentationContext Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_defragmentation_info-members.html b/docs/html/struct_vma_defragmentation_info-members.html index 928c1108..5b1888fb 100644 --- a/docs/html/struct_vma_defragmentation_info-members.html +++ b/docs/html/struct_vma_defragmentation_info-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_defragmentation_info.html b/docs/html/struct_vma_defragmentation_info.html index 2758b77b..7c1ec453 100644 --- a/docs/html/struct_vma_defragmentation_info.html +++ b/docs/html/struct_vma_defragmentation_info.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaDefragmentationInfo Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_defragmentation_move-members.html b/docs/html/struct_vma_defragmentation_move-members.html index f884a6e3..391aa746 100644 --- a/docs/html/struct_vma_defragmentation_move-members.html +++ b/docs/html/struct_vma_defragmentation_move-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_defragmentation_move.html b/docs/html/struct_vma_defragmentation_move.html index 71c59127..0fdd25e7 100644 --- a/docs/html/struct_vma_defragmentation_move.html +++ b/docs/html/struct_vma_defragmentation_move.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaDefragmentationMove Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_defragmentation_pass_move_info-members.html b/docs/html/struct_vma_defragmentation_pass_move_info-members.html index 30edc01c..4e646833 100644 --- a/docs/html/struct_vma_defragmentation_pass_move_info-members.html +++ b/docs/html/struct_vma_defragmentation_pass_move_info-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_defragmentation_pass_move_info.html b/docs/html/struct_vma_defragmentation_pass_move_info.html index 55732959..f07f6ed3 100644 --- a/docs/html/struct_vma_defragmentation_pass_move_info.html +++ b/docs/html/struct_vma_defragmentation_pass_move_info.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaDefragmentationPassMoveInfo Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_defragmentation_stats-members.html b/docs/html/struct_vma_defragmentation_stats-members.html index cc8a9340..33e65c51 100644 --- a/docs/html/struct_vma_defragmentation_stats-members.html +++ b/docs/html/struct_vma_defragmentation_stats-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_defragmentation_stats.html b/docs/html/struct_vma_defragmentation_stats.html index 0ef7e610..f5f03894 100644 --- a/docs/html/struct_vma_defragmentation_stats.html +++ b/docs/html/struct_vma_defragmentation_stats.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaDefragmentationStats Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_detailed_statistics-members.html b/docs/html/struct_vma_detailed_statistics-members.html index f1b69fe2..9e351e43 100644 --- a/docs/html/struct_vma_detailed_statistics-members.html +++ b/docs/html/struct_vma_detailed_statistics-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_detailed_statistics.html b/docs/html/struct_vma_detailed_statistics.html index f0525c6a..89fc66ad 100644 --- a/docs/html/struct_vma_detailed_statistics.html +++ b/docs/html/struct_vma_detailed_statistics.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaDetailedStatistics Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_device_memory_callbacks-members.html b/docs/html/struct_vma_device_memory_callbacks-members.html index ebec0868..f89bb8eb 100644 --- a/docs/html/struct_vma_device_memory_callbacks-members.html +++ b/docs/html/struct_vma_device_memory_callbacks-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_device_memory_callbacks.html b/docs/html/struct_vma_device_memory_callbacks.html index d94fb159..7f91362d 100644 --- a/docs/html/struct_vma_device_memory_callbacks.html +++ b/docs/html/struct_vma_device_memory_callbacks.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaDeviceMemoryCallbacks Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_pool.html b/docs/html/struct_vma_pool.html index a46c3f67..f6356a88 100644 --- a/docs/html/struct_vma_pool.html +++ b/docs/html/struct_vma_pool.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaPool Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_pool_create_info-members.html b/docs/html/struct_vma_pool_create_info-members.html index f66ccc85..33ad3527 100644 --- a/docs/html/struct_vma_pool_create_info-members.html +++ b/docs/html/struct_vma_pool_create_info-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_pool_create_info.html b/docs/html/struct_vma_pool_create_info.html index 4c255980..3c4371cc 100644 --- a/docs/html/struct_vma_pool_create_info.html +++ b/docs/html/struct_vma_pool_create_info.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaPoolCreateInfo Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_statistics-members.html b/docs/html/struct_vma_statistics-members.html index 59d62fa3..e2347d85 100644 --- a/docs/html/struct_vma_statistics-members.html +++ b/docs/html/struct_vma_statistics-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_statistics.html b/docs/html/struct_vma_statistics.html index 55bddd00..fc6f9ba7 100644 --- a/docs/html/struct_vma_statistics.html +++ b/docs/html/struct_vma_statistics.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaStatistics Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_total_statistics-members.html b/docs/html/struct_vma_total_statistics-members.html index 97a3eb04..0cdb6ae0 100644 --- a/docs/html/struct_vma_total_statistics-members.html +++ b/docs/html/struct_vma_total_statistics-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_total_statistics.html b/docs/html/struct_vma_total_statistics.html index 3f13d9e8..7dc0a5d8 100644 --- a/docs/html/struct_vma_total_statistics.html +++ b/docs/html/struct_vma_total_statistics.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaTotalStatistics Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_virtual_allocation.html b/docs/html/struct_vma_virtual_allocation.html index 035524c4..04d13316 100644 --- a/docs/html/struct_vma_virtual_allocation.html +++ b/docs/html/struct_vma_virtual_allocation.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaVirtualAllocation Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_virtual_allocation_create_info-members.html b/docs/html/struct_vma_virtual_allocation_create_info-members.html index f8455e50..6114051b 100644 --- a/docs/html/struct_vma_virtual_allocation_create_info-members.html +++ b/docs/html/struct_vma_virtual_allocation_create_info-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_virtual_allocation_create_info.html b/docs/html/struct_vma_virtual_allocation_create_info.html index fd7dad4f..3b93a3cb 100644 --- a/docs/html/struct_vma_virtual_allocation_create_info.html +++ b/docs/html/struct_vma_virtual_allocation_create_info.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaVirtualAllocationCreateInfo Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_virtual_allocation_info-members.html b/docs/html/struct_vma_virtual_allocation_info-members.html index fc02b0df..0c960005 100644 --- a/docs/html/struct_vma_virtual_allocation_info-members.html +++ b/docs/html/struct_vma_virtual_allocation_info-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_virtual_allocation_info.html b/docs/html/struct_vma_virtual_allocation_info.html index c6705563..28dce310 100644 --- a/docs/html/struct_vma_virtual_allocation_info.html +++ b/docs/html/struct_vma_virtual_allocation_info.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaVirtualAllocationInfo Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_virtual_block.html b/docs/html/struct_vma_virtual_block.html index a88bc1bd..ed54d966 100644 --- a/docs/html/struct_vma_virtual_block.html +++ b/docs/html/struct_vma_virtual_block.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaVirtualBlock Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_virtual_block_create_info-members.html b/docs/html/struct_vma_virtual_block_create_info-members.html index d973974e..19c79b0b 100644 --- a/docs/html/struct_vma_virtual_block_create_info-members.html +++ b/docs/html/struct_vma_virtual_block_create_info-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_virtual_block_create_info.html b/docs/html/struct_vma_virtual_block_create_info.html index a065dd9f..c5e8efb8 100644 --- a/docs/html/struct_vma_virtual_block_create_info.html +++ b/docs/html/struct_vma_virtual_block_create_info.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaVirtualBlockCreateInfo Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
      diff --git a/docs/html/struct_vma_vulkan_functions-members.html b/docs/html/struct_vma_vulkan_functions-members.html index 3c536946..e6bcec36 100644 --- a/docs/html/struct_vma_vulkan_functions-members.html +++ b/docs/html/struct_vma_vulkan_functions-members.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Member List - - + + @@ -31,22 +35,45 @@ - + - + + diff --git a/docs/html/struct_vma_vulkan_functions.html b/docs/html/struct_vma_vulkan_functions.html index 5173de86..0081ca94 100644 --- a/docs/html/struct_vma_vulkan_functions.html +++ b/docs/html/struct_vma_vulkan_functions.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VmaVulkanFunctions Struct Reference - - + + @@ -31,22 +35,45 @@ - + - + +
       Fetch "vkBindBufferMemory2" on Vulkan >= 1.1, fetch "vkBindBufferMemory2KHR" when using VK_KHR_bind_memory2 extension.
      PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR  Fetch "vkBindImageMemory2" on Vulkan >= 1.1, fetch "vkBindImageMemory2KHR" when using VK_KHR_bind_memory2 extension.
      -PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR - Fetch from "vkGetPhysicalDeviceMemoryProperties2" on Vulkan >= 1.1, but you can also fetch it from "vkGetPhysicalDeviceMemoryProperties2KHR" if you enabled extension VK_KHR_get_physical_device_properties2.
      PFN_vkGetDeviceBufferMemoryRequirementsKHR vkGetDeviceBufferMemoryRequirements  Fetch from "vkGetDeviceBufferMemoryRequirements" on Vulkan >= 1.3, but you can also fetch it from "vkGetDeviceBufferMemoryRequirementsKHR" if you enabled extension VK_KHR_maintenance4.
      PFN_vkGetDeviceImageMemoryRequirementsKHR vkGetDeviceImageMemoryRequirements @@ -446,22 +471,6 @@

      -

      - - -

      ◆ vkGetPhysicalDeviceMemoryProperties2KHR

      - -
      -
      - - - - -
      PFN_vkGetPhysicalDeviceMemoryProperties2KHR VmaVulkanFunctions::vkGetPhysicalDeviceMemoryProperties2KHR
      -
      - -

      Fetch from "vkGetPhysicalDeviceMemoryProperties2" on Vulkan >= 1.1, but you can also fetch it from "vkGetPhysicalDeviceMemoryProperties2KHR" if you enabled extension VK_KHR_get_physical_device_properties2.

      -
      @@ -526,7 +535,7 @@

      diff --git a/docs/html/tabs.css b/docs/html/tabs.css index 84f33ae7..5b84c153 100644 --- a/docs/html/tabs.css +++ b/docs/html/tabs.css @@ -1 +1,482 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-color:var(--nav-menu-background-color)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;line-height:36px;text-decoration:none;color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-color:var(--nav-menu-active-bg);border-radius:5px}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-color:var(--nav-menu-active-bg);border-radius:5px}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-color:var(--nav-menu-background-color);line-height:36px}.sm-dox a span.sub-arrow{top:15px;right:10px;box-sizing:content-box;padding:0;margin:0;display:inline-block;width:5px;height:5px;background-color:var(--nav-menu-background-color);border-right:2px solid var(--nav-arrow-color);border-bottom:2px solid var(--nav-arrow-color);transform:rotate(45deg);-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 6px}.sm-dox a:hover{background-color:var(--nav-menu-active-bg);border-radius:5px !important}.sm-dox a:hover span.sub-arrow{background-color:var(--nav-menu-active-bg);border-right:2px solid var(--nav-arrow-selected-color);border-bottom:2px solid var(--nav-arrow-selected-color)}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0;padding:3px}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{transform:rotate(-45deg)}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-color:var(--nav-menu-active-bg);border-radius:5px}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:6px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:6px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} +.sm { + position: relative; + z-index: 9999 +} + +.sm,.sm li,.sm ul { + list-style: none; + margin: 0; + padding: 0; + line-height: normal; + direction: ltr; + text-align: left; + -webkit-tap-highlight-color: transparent +} + +.sm,.sm li { + display: block +} + +.sm-rtl,.sm-rtl li,.sm-rtl ul { + direction: rtl; + text-align: right +} + +.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6 { + margin: 0; + padding: 0 +} + +.sm ul { + display: none +} + +.sm a,.sm li { + position: relative +} + +.sm a,.sm:after { + display: block +} + +.sm a.disabled { + cursor: not-allowed +} + +.sm:after { + content: " "; + height: 0; + font: 0/0 serif; + clear: both; + visibility: hidden; + overflow: hidden +} + +.sm,.sm *,.sm :after,.sm :before { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.main-menu-btn { + position: relative; + display: inline-block; + width: 36px; + height: 36px; + text-indent: 36px; + margin-left: 8px; + white-space: nowrap; + overflow: hidden; + cursor: pointer; + -webkit-tap-highlight-color: transparent +} + +.main-menu-btn-icon { + top: 50%; + left: 2px +} + +.main-menu-btn-icon,.main-menu-btn-icon:after,.main-menu-btn-icon:before { + position: absolute; + height: 2px; + width: 24px; + background: var(--nav-menu-button-color); + -webkit-transition: all .25s; + transition: all .25s +} + +.main-menu-btn-icon:before { + content: ""; + top: -7px; + left: 0 +} + +.main-menu-btn-icon:after { + content: ""; + top: 7px; + left: 0 +} + +#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon { + height: 0 +} + +#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before { + top: 0; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg) +} + +#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after { + top: 0; + -webkit-transform: rotate(45deg); + transform: rotate(45deg) +} + +#main-menu-state { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + border: 0; + padding: 0; + overflow: hidden; + clip: rect(1px,1px,1px,1px) +} + +#main-menu-state:not(:checked)~#main-menu { + display: none +} + +#main-menu-state:checked~#main-menu { + display: block +} + +@media (min-width:768px) { + .main-menu-btn { + position: absolute; + top: -99999px + } + + #main-menu-state:not(:checked)~#main-menu { + display: block + } +} + +.sm-dox { + background-color: var(--nav-menu-background-color) +} + +.sm-dox a,.sm-dox a:active,.sm-dox a:focus,.sm-dox a:hover { + padding: 0 43px 0 12px; + font-family: var(--font-family-nav); + font-size: 13px; + line-height: 36px; + text-decoration: none; + color: var(--nav-text-normal-color); + outline: 0 +} + +.sm-dox a:hover { + background-color: var(--nav-menu-active-bg); + border-radius: 5px +} + +.sm-dox a.current { + color: #d23600 +} + +.sm-dox a.disabled { + color: #bbb +} + +.sm-dox a span.sub-arrow { + position: absolute; + top: 50%; + margin-top: -14px; + left: auto; + right: 3px; + width: 28px; + height: 28px; + overflow: hidden; + font: 700 12px/28px monospace!important; + text-align: center; + text-shadow: none; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px +} + +.sm-dox a span.sub-arrow:before { + display: block; + content: "+" +} + +.sm-dox a.highlighted span.sub-arrow:before { + display: block; + content: "-" +} + +.sm-dox>li:first-child>:not(ul) a,.sm-dox>li:first-child>a { + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px; + border-radius: 5px 5px 0 0 +} + +.sm-dox>li:last-child>:not(ul) a,.sm-dox>li:last-child>a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0; + border-radius: 0 0 5px 5px +} + +.sm-dox>li:last-child>:not(ul) a.highlighted,.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0 +} + +.sm-dox ul { + background: var(--nav-menu-background-color) +} + +.sm-dox ul a,.sm-dox ul a:active,.sm-dox ul a:focus,.sm-dox ul a:hover { + font-size: 12px; + border-left: 8px solid transparent; + line-height: 36px; + text-shadow: none; + background-color: var(--nav-menu-background-color); + background-image: none +} + +.sm-dox ul a:hover { + background-color: var(--nav-menu-active-bg); + border-radius: 5px +} + +.sm-dox ul ul a,.sm-dox ul ul a:active,.sm-dox ul ul a:focus,.sm-dox ul ul a:hover { + border-left: 16px solid transparent +} + +.sm-dox ul ul ul a,.sm-dox ul ul ul a:active,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:hover { + border-left: 24px solid transparent +} + +.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:active,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:hover { + border-left: 32px solid transparent +} + +.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:active,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:hover { + border-left: 40px solid transparent +} + +@media (min-width:768px) { +.sm-dox ul { + position: absolute; + width: 12em; + border: 1px solid #bbb; + padding: 5px 0; + background: var(--nav-menu-background-color); + -moz-border-radius: 5px!important; + -webkit-border-radius: 5px; + border-radius: 5px!important; + -moz-box-shadow: 0 5px 9px rgba(0,0,0,.2); + -webkit-box-shadow: 0 5px 9px rgba(0,0,0,.2); + box-shadow: 0 5px 9px rgba(0,0,0,.2) +} + +.sm-dox li { + float: left; + border-top: 0; + padding: 3px +} + +.sm-dox.sm-rtl li { + float: right +} + +.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li { + float: none +} + +.sm-dox a { + white-space: nowrap +} + +.sm-dox ul a,.sm-dox.sm-vertical a { + white-space: normal +} + +.sm-dox .sm-nowrap>li>:not(ul) a,.sm-dox .sm-nowrap>li>a { + white-space: nowrap +} + +.sm-dox,.sm-dox a span.sub-arrow { + background-color: var(--nav-menu-background-color) +} + +.sm-dox { + padding: 0 10px; + line-height: 36px +} + +.sm-dox a span.sub-arrow { + top: 15px; + right: 10px; + box-sizing: content-box; + padding: 0; + margin: 0; + display: inline-block; + width: 5px; + height: 5px; + border-right: 2px solid var(--nav-arrow-color); + border-bottom: 2px solid var(--nav-arrow-color); + transform: rotate(45deg); + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0 +} + +.sm-dox a,.sm-dox a.highlighted,.sm-dox a:active,.sm-dox a:focus,.sm-dox a:hover { + padding: 0 6px +} + +.sm-dox a:hover { + background-color: var(--nav-menu-active-bg); + border-radius: 5px!important +} + +.sm-dox a:hover span.sub-arrow { + background-color: var(--nav-menu-active-bg); + border-right: 2px solid var(--nav-arrow-selected-color); + border-bottom: 2px solid var(--nav-arrow-selected-color) +} + +.sm-dox a.has-submenu { + padding-right: 24px +} + +.sm-dox>li>ul:after,.sm-dox>li>ul:before { + content: ""; + position: absolute; + top: -18px; + left: 30px; + width: 0; + height: 0; + overflow: hidden; + border-width: 9px; + border-style: dashed dashed solid; + border-color: transparent transparent #bbb +} + +.sm-dox>li>ul:after { + top: -16px; + left: 31px; + border-width: 8px; + border-color: transparent transparent var(--nav-menu-background-color) transparent +} + +.sm-dox ul a span.sub-arrow { + transform: rotate(-45deg); + top: 3px; +} + +.sm-dox ul a,.sm-dox ul a.highlighted,.sm-dox ul a:active,.sm-dox ul a:focus,.sm-dox ul a:hover { + color: var(--nav-menu-foreground-color); + background-image: none; + line-height: normal; + border: 0!important +} + +.sm-dox ul a:hover { + background-color: var(--nav-menu-active-bg); + border-radius: 5px +} + +.sm-dox span.scroll-down,.sm-dox span.scroll-up { + position: absolute; + display: none; + visibility: hidden; + overflow: hidden; + background: var(--nav-menu-background-color); + height: 36px +} + +.sm-dox span.scroll-down:hover,.sm-dox span.scroll-up:hover { + background: #eee +} + +.sm-dox span.scroll-up:hover span.scroll-down-arrow,.sm-dox span.scroll-up:hover span.scroll-up-arrow { + border-color: transparent transparent #d23600 +} + +.sm-dox span.scroll-down:hover span.scroll-down-arrow { + border-color: #d23600 transparent transparent +} + +.sm-dox span.scroll-down-arrow,.sm-dox span.scroll-up-arrow { + position: absolute; + top: 0; + left: 50%; + margin-left: -6px; + width: 0; + height: 0; + overflow: hidden; + border-width: 6px; + border-style: dashed dashed solid; + border-color: transparent transparent var(--nav-menu-foreground-color) transparent +} + +.sm-dox span.scroll-down-arrow { + top: 8px; + border-style: solid dashed dashed; + border-color: var(--nav-menu-foreground-color) transparent transparent transparent +} + +.sm-dox.sm-rtl a.has-submenu { + padding-right: 6px; + padding-left: 24px +} + +.sm-dox.sm-rtl a span.sub-arrow { + right: auto; + left: 6px +} + +.sm-dox.sm-rtl.sm-vertical a.has-submenu,.sm-dox.sm-vertical a,.sm-dox.sm-vertical ul a { + padding: 10px 20px +} + +.sm-dox.sm-rtl ul a span.sub-arrow,.sm-dox.sm-rtl.sm-vertical a span.sub-arrow { + right: auto; + left: 8px; + border-style: dashed solid dashed dashed; + border-color: transparent #555 transparent transparent +} + +.sm-dox.sm-rtl>li>ul:before { + left: auto; + right: 30px +} + +.sm-dox.sm-rtl>li>ul:after { + left: auto; + right: 31px +} + +.sm-dox.sm-rtl ul a.has-submenu { + padding: 10px 20px!important +} + +.sm-dox.sm-vertical { + padding: 10px 0; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px +} + +.sm-dox.sm-vertical a.highlighted,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:hover { + background: #fff +} + +.sm-dox.sm-vertical a span.sub-arrow { + right: 8px; + top: 50%; + margin-top: -5px; + border-width: 5px; + border-style: dashed dashed dashed solid; + border-color: transparent transparent transparent #555 +} + +.sm-dox.sm-vertical>li>ul:after,.sm-dox.sm-vertical>li>ul:before { + display: none +} + +.sm-dox.sm-vertical ul a.highlighted,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:hover { + background: #eee +} + +.sm-dox.sm-vertical ul a.disabled { + background: var(--nav-menu-background-color) +} +} + diff --git a/docs/html/topics.html b/docs/html/topics.html index 6abff124..55386895 100644 --- a/docs/html/topics.html +++ b/docs/html/topics.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Topics - - + + @@ -31,22 +35,45 @@ - + - + +
      @@ -85,7 +112,7 @@
      diff --git a/docs/html/usage_patterns.html b/docs/html/usage_patterns.html index 9c8a0a79..0b43738e 100644 --- a/docs/html/usage_patterns.html +++ b/docs/html/usage_patterns.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Recommended usage patterns - - + + @@ -31,22 +35,45 @@ - + - + +
      vmaCreateImage(allocator, &imgCreateInfo, &allocCreateInfo, &img, &alloc, nullptr);
      VkResult vmaCreateImage(VmaAllocator allocator, const VkImageCreateInfo *pImageCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkImage *pImage, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)
      Function similar to vmaCreateBuffer() but for images.
      -
      @ VMA_MEMORY_USAGE_AUTO
      Definition vk_mem_alloc.h:553
      -
      @ VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT
      Set this flag if the allocation should have its own memory block.
      Definition vk_mem_alloc.h:592
      -
      Parameters of new VmaAllocation.
      Definition vk_mem_alloc.h:1294
      -
      float priority
      A floating-point value between 0 and 1, indicating the priority of the allocation relative to other m...
      Definition vk_mem_alloc.h:1340
      -
      VmaMemoryUsage usage
      Intended usage of memory.
      Definition vk_mem_alloc.h:1302
      -
      VmaAllocationCreateFlags flags
      Use VmaAllocationCreateFlagBits enum.
      Definition vk_mem_alloc.h:1296
      +
      @ VMA_MEMORY_USAGE_AUTO
      Definition vk_mem_alloc.h:563
      +
      @ VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT
      Set this flag if the allocation should have its own memory block.
      Definition vk_mem_alloc.h:602
      +
      Parameters of new VmaAllocation.
      Definition vk_mem_alloc.h:1308
      +
      float priority
      A floating-point value between 0 and 1, indicating the priority of the allocation relative to other m...
      Definition vk_mem_alloc.h:1354
      +
      VmaMemoryUsage usage
      Intended usage of memory.
      Definition vk_mem_alloc.h:1316
      +
      VmaAllocationCreateFlags flags
      Use VmaAllocationCreateFlagBits enum.
      Definition vk_mem_alloc.h:1310
      Represents single memory allocation.

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

      @@ -136,10 +163,10 @@

      memcpy(allocInfo.pMappedData, myData, myDataSize);
      VkResult vmaCreateBuffer(VmaAllocator allocator, const VkBufferCreateInfo *pBufferCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkBuffer *pBuffer, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)
      Creates a new VkBuffer, allocates and binds memory for it.
      -
      @ VMA_ALLOCATION_CREATE_MAPPED_BIT
      Set this flag to use a memory that will be persistently mapped and retrieve pointer to it.
      Definition vk_mem_alloc.h:613
      -
      @ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT
      Definition vk_mem_alloc.h:662
      -
      Definition vk_mem_alloc.h:1432
      -
      void * pMappedData
      Pointer to the beginning of this allocation as mapped data.
      Definition vk_mem_alloc.h:1474
      +
      @ VMA_ALLOCATION_CREATE_MAPPED_BIT
      Set this flag to use a memory that will be persistently mapped and retrieve pointer to it.
      Definition vk_mem_alloc.h:623
      +
      @ VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT
      Definition vk_mem_alloc.h:672
      +
      Definition vk_mem_alloc.h:1446
      +
      void * pMappedData
      Pointer to the beginning of this allocation as mapped data.
      Definition vk_mem_alloc.h:1488

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

      Readback

      @@ -162,7 +189,7 @@

      ...
      const float* downloadedData = (const float*)allocInfo.pMappedData;
      -
      @ VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT
      Definition vk_mem_alloc.h:674
      +
      @ VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT
      Definition vk_mem_alloc.h:684

      Advanced data uploading

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

      @@ -277,7 +304,7 @@

      }
      VkResult vmaCopyMemoryToAllocation(VmaAllocator allocator, const void *pSrcHostPointer, VmaAllocation dstAllocation, VkDeviceSize dstAllocationLocalOffset, VkDeviceSize size)
      Maps the allocation temporarily if needed, copies data from specified host pointer to it,...
      void vmaGetAllocationMemoryProperties(VmaAllocator allocator, VmaAllocation allocation, VkMemoryPropertyFlags *pFlags)
      Given an allocation, returns Property Flags of its memory type.
      -
      @ VMA_ALLOCATION_CREATE_HOST_ACCESS_ALLOW_TRANSFER_INSTEAD_BIT
      Definition vk_mem_alloc.h:686
      +
      @ VMA_ALLOCATION_CREATE_HOST_ACCESS_ALLOW_TRANSFER_INSTEAD_BIT
      Definition vk_mem_alloc.h:696

      Other use cases

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

      @@ -303,7 +330,7 @@

      diff --git a/docs/html/virtual_allocator.html b/docs/html/virtual_allocator.html index 8ba94b77..a99fb421 100644 --- a/docs/html/virtual_allocator.html +++ b/docs/html/virtual_allocator.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: Virtual allocator - - + + @@ -31,22 +35,45 @@ - + - + +
      VkResult res = vmaCreateVirtualBlock(&blockCreateInfo, &block);
      VkResult vmaCreateVirtualBlock(const VmaVirtualBlockCreateInfo *pCreateInfo, VmaVirtualBlock *pVirtualBlock)
      Creates new VmaVirtualBlock object.
      -
      Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock().
      Definition vk_mem_alloc.h:1621
      -
      VkDeviceSize size
      Total size of the virtual block.
      Definition vk_mem_alloc.h:1627
      +
      Parameters of created VmaVirtualBlock object to be passed to vmaCreateVirtualBlock().
      Definition vk_mem_alloc.h:1635
      +
      VkDeviceSize size
      Total size of the virtual block.
      Definition vk_mem_alloc.h:1641
      Handle to a virtual block object that allows to use core allocation algorithm without allocating any ...

      Making virtual allocations

      @@ -120,8 +147,8 @@

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

      Deallocation

      @@ -149,8 +176,8 @@

      vmaVirtualFree(block, alloc);
      void vmaGetVirtualAllocationInfo(VmaVirtualBlock virtualBlock, VmaVirtualAllocation allocation, VmaVirtualAllocationInfo *pVirtualAllocInfo)
      Returns information about a specific virtual allocation within a virtual block, like its size and pUs...
      -
      Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo().
      Definition vk_mem_alloc.h:1665
      -
      void * pUserData
      Custom pointer associated with the allocation.
      Definition vk_mem_alloc.h:1680
      +
      Parameters of an existing virtual allocation, returned by vmaGetVirtualAllocationInfo().
      Definition vk_mem_alloc.h:1679
      +
      void * pUserData
      Custom pointer associated with the allocation.
      Definition vk_mem_alloc.h:1694

      Alignment and units

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

      @@ -160,7 +187,7 @@

      res = vmaVirtualAllocate(block, &allocCreateInfo, &alloc, nullptr);
      -
      VkDeviceSize alignment
      Required alignment of the allocation. Optional.
      Definition vk_mem_alloc.h:1652
      +
      VkDeviceSize alignment
      Required alignment of the allocation. Optional.
      Definition vk_mem_alloc.h:1666

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

      • VmaVirtualBlockCreateInfo::size
      • @@ -175,9 +202,9 @@

        printf("My virtual block has %llu bytes used by %u virtual allocations\n",
        void vmaGetVirtualBlockStatistics(VmaVirtualBlock virtualBlock, VmaStatistics *pStats)
        Calculates and returns statistics about virtual allocations and memory usage in given VmaVirtualBlock...
        -
        Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool,...
        Definition vk_mem_alloc.h:1183
        -
        VkDeviceSize allocationBytes
        Total number of bytes occupied by all VmaAllocation objects.
        Definition vk_mem_alloc.h:1205
        -
        uint32_t allocationCount
        Number of VmaAllocation objects allocated.
        Definition vk_mem_alloc.h:1191
        +
        Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool,...
        Definition vk_mem_alloc.h:1197
        +
        VkDeviceSize allocationBytes
        Total number of bytes occupied by all VmaAllocation objects.
        Definition vk_mem_alloc.h:1219
        +
        uint32_t allocationCount
        Number of VmaAllocation objects allocated.
        Definition vk_mem_alloc.h:1205

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

        Additional considerations

        @@ -188,7 +215,7 @@

        diff --git a/docs/html/vk__mem__alloc_8h.html b/docs/html/vk__mem__alloc_8h.html index 4e2a25f3..d9f29a63 100644 --- a/docs/html/vk__mem__alloc_8h.html +++ b/docs/html/vk__mem__alloc_8h.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: C:/Code/VulkanMemoryAllocator/REPO/include/vk_mem_alloc.h File Reference - - + + @@ -31,22 +35,45 @@ - + - + +

        Macros

        #define VMA_VERSION   (VK_MAKE_VERSION(3, 4, 0)) +#define VMA_GET_PHYSICAL_DEVICE_PROPERTIES2   1 @@ -457,6 +485,20 @@

        Typedefs

        void vmaFreeStatsString (VmaAllocator allocator, char *pStatsString)

        Macro Definition Documentation

        + +

        ◆ VMA_GET_PHYSICAL_DEVICE_PROPERTIES2

        + +
        +
        + + + + +
        #define VMA_GET_PHYSICAL_DEVICE_PROPERTIES2   1
        +
        + +
        +

        ◆ VMA_VERSION

        @@ -474,7 +516,7 @@

        diff --git a/docs/html/vk_amd_device_coherent_memory.html b/docs/html/vk_amd_device_coherent_memory.html index 06e8e8b7..fecce442 100644 --- a/docs/html/vk_amd_device_coherent_memory.html +++ b/docs/html/vk_amd_device_coherent_memory.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VK_AMD_device_coherent_memory - - + + @@ -31,22 +35,45 @@ - + - + +
        diff --git a/docs/html/vk_ext_memory_priority.html b/docs/html/vk_ext_memory_priority.html index 929ef528..c2dc37b8 100644 --- a/docs/html/vk_ext_memory_priority.html +++ b/docs/html/vk_ext_memory_priority.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VK_EXT_memory_priority - - + + @@ -31,22 +35,45 @@ - + - + +
        vmaCreateImage(allocator, &imgCreateInfo, &allocCreateInfo, &img, &alloc, nullptr);
        VkResult vmaCreateImage(VmaAllocator allocator, const VkImageCreateInfo *pImageCreateInfo, const VmaAllocationCreateInfo *pAllocationCreateInfo, VkImage *pImage, VmaAllocation *pAllocation, VmaAllocationInfo *pAllocationInfo)
        Function similar to vmaCreateBuffer() but for images.
        -
        @ VMA_MEMORY_USAGE_AUTO
        Definition vk_mem_alloc.h:553
        -
        @ VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT
        Set this flag if the allocation should have its own memory block.
        Definition vk_mem_alloc.h:592
        -
        Parameters of new VmaAllocation.
        Definition vk_mem_alloc.h:1294
        -
        float priority
        A floating-point value between 0 and 1, indicating the priority of the allocation relative to other m...
        Definition vk_mem_alloc.h:1340
        -
        VmaMemoryUsage usage
        Intended usage of memory.
        Definition vk_mem_alloc.h:1302
        -
        VmaAllocationCreateFlags flags
        Use VmaAllocationCreateFlagBits enum.
        Definition vk_mem_alloc.h:1296
        +
        @ VMA_MEMORY_USAGE_AUTO
        Definition vk_mem_alloc.h:563
        +
        @ VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT
        Set this flag if the allocation should have its own memory block.
        Definition vk_mem_alloc.h:602
        +
        Parameters of new VmaAllocation.
        Definition vk_mem_alloc.h:1308
        +
        float priority
        A floating-point value between 0 and 1, indicating the priority of the allocation relative to other m...
        Definition vk_mem_alloc.h:1354
        +
        VmaMemoryUsage usage
        Intended usage of memory.
        Definition vk_mem_alloc.h:1316
        +
        VmaAllocationCreateFlags flags
        Use VmaAllocationCreateFlagBits enum.
        Definition vk_mem_alloc.h:1310
        Represents single memory allocation.

        priority member is ignored in the following situations:

          @@ -135,7 +162,7 @@

          diff --git a/docs/html/vk_khr_dedicated_allocation.html b/docs/html/vk_khr_dedicated_allocation.html index 39de208c..2769daab 100644 --- a/docs/html/vk_khr_dedicated_allocation.html +++ b/docs/html/vk_khr_dedicated_allocation.html @@ -3,17 +3,21 @@ - + Vulkan Memory Allocator: VK_KHR_dedicated_allocation - - + + @@ -31,22 +35,45 @@ - + - + +
          vmaCreateAllocator(&allocatorInfo, &allocator);
          VkResult vmaCreateAllocator(const VmaAllocatorCreateInfo *pCreateInfo, VmaAllocator *pAllocator)
          Creates VmaAllocator object.
          -
          @ VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT
          Enables usage of VK_KHR_dedicated_allocation extension.
          Definition vk_mem_alloc.h:383
          +
          @ VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT
          Enables usage of VK_KHR_dedicated_allocation extension.
          Definition vk_mem_alloc.h:393

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

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

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

          @@ -106,7 +133,7 @@ diff --git a/include/vk_mem_alloc.h b/include/vk_mem_alloc.h index d09d613b..f2b58bf6 100644 --- a/include/vk_mem_alloc.h +++ b/include/vk_mem_alloc.h @@ -25,7 +25,7 @@ /** \mainpage Vulkan Memory Allocator -Version 3.4.0-development +Version 3.4.0 Copyright (c) 2017-2026 Advanced Micro Devices, Inc. All rights reserved. \n License: MIT \n diff --git a/src/VulkanSample.cpp b/src/VulkanSample.cpp index 564e59d4..3fd6e9f1 100644 --- a/src/VulkanSample.cpp +++ b/src/VulkanSample.cpp @@ -36,8 +36,8 @@ static const char* const SHADER_PATH1 = "./Shaders/"; static const char* const SHADER_PATH2 = "../bin/"; static const wchar_t* const WINDOW_CLASS_NAME = L"VULKAN_MEMORY_ALLOCATOR_SAMPLE"; static const char* const VALIDATION_LAYER_NAME = "VK_LAYER_KHRONOS_validation"; -static const char* const APP_TITLE_A = "Vulkan Memory Allocator Sample 3.3.0"; -static const wchar_t* const APP_TITLE_W = L"Vulkan Memory Allocator Sample 3.3.0"; +static const char* const APP_TITLE_A = "Vulkan Memory Allocator Sample 3.4.0"; +static const wchar_t* const APP_TITLE_W = L"Vulkan Memory Allocator Sample 3.4.0"; static const bool VSYNC = true; static const uint32_t COMMAND_BUFFER_COUNT = 2;