VulkanMemoryAllocator/docs/html/group__group__buffer__suballocation.html
Adam Sawicki c195e40baa More development of buffer suballocation
Introduced dedicated suballocations - always used for now.
Started writing documentation.
2023-02-02 17:57:04 +01:00

777 lines
59 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.5"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Vulkan Memory Allocator: Buffer suballocation</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">Vulkan Memory Allocator
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.5 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">Buffer suballocation</div></div>
</div><!--header-->
<div class="contents">
<p>API elements related to the mechanism of <a class="el" href="buffer_suballocation.html">Buffer suballocation</a> - allocating parts of larger buffers that allocator can create implicitly.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_allocator_create_info.html">VmaBufferAllocatorCreateInfo</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="Represent main object that can allocate parts of larger Vulkan buffers.">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>. <a href="struct_vma_buffer_allocator_create_info.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_suballocation_create_info.html">VmaBufferSuballocationCreateInfo</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="Represents a single sub-allocation - allocated part of a larger Vulkan buffer.">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>. <a href="struct_vma_buffer_suballocation_create_info.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_suballocation_info.html">VmaBufferSuballocationInfo</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a> or <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>. <a href="struct_vma_buffer_suballocation_info.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a single sub-allocation - allocated part of a larger Vulkan buffer. <a href="struct_vma_buffer_suballocation.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represent main object that can allocate parts of larger Vulkan buffers. <a href="struct_vma_buffer_allocator.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:gab59dc80be7e88530693d2140c7e4baa9"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08">VmaBufferAllocatorCreateFlagBits</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#gab59dc80be7e88530693d2140c7e4baa9">VmaBufferAllocatorCreateFlagBits</a></td></tr>
<tr class="memdesc:gab59dc80be7e88530693d2140c7e4baa9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="Flags - use VmaBufferAllocatorCreateFlagBits.">VmaBufferAllocatorCreateInfo::flags</a>. <a href="group__group__buffer__suballocation.html#gab59dc80be7e88530693d2140c7e4baa9">More...</a><br /></td></tr>
<tr class="separator:gab59dc80be7e88530693d2140c7e4baa9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga524fc82795862079781317e33be657e1"><td class="memItemLeft" align="right" valign="top">typedef VkFlags&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga524fc82795862079781317e33be657e1">VmaBufferAllocatorCreateFlags</a></td></tr>
<tr class="memdesc:ga524fc82795862079781317e33be657e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="Flags - use VmaBufferAllocatorCreateFlagBits.">VmaBufferAllocatorCreateInfo::flags</a>. See <a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08" title="Flags to be passed as VmaBufferAllocatorCreateInfo::flags.">VmaBufferAllocatorCreateFlagBits</a>. <a href="group__group__buffer__suballocation.html#ga524fc82795862079781317e33be657e1">More...</a><br /></td></tr>
<tr class="separator:ga524fc82795862079781317e33be657e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab4d54a73919432f9d90f5e8cb1752fb0"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb">VmaBufferSuballocationCreateFlagBits</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#gab4d54a73919432f9d90f5e8cb1752fb0">VmaBufferSuballocationCreateFlagBits</a></td></tr>
<tr class="memdesc:gab4d54a73919432f9d90f5e8cb1752fb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_virtual_allocation_create_info.html#ab10e16956cc4bf20ced9de77d1129ea4" title="Use combination of VmaVirtualAllocationCreateFlagBits.">VmaVirtualAllocationCreateInfo::flags</a>. <a href="group__group__buffer__suballocation.html#gab4d54a73919432f9d90f5e8cb1752fb0">More...</a><br /></td></tr>
<tr class="separator:gab4d54a73919432f9d90f5e8cb1752fb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7445a51cdb572ba54e795c74d8abc2b4"><td class="memItemLeft" align="right" valign="top">typedef VkFlags&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga7445a51cdb572ba54e795c74d8abc2b4">VmaBufferSuballocationCreateFlags</a></td></tr>
<tr class="memdesc:ga7445a51cdb572ba54e795c74d8abc2b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_suballocation_create_info.html#ac30a8d28fe7248a2133885f663fdb5e0" title="TODO document! TODO implement!">VmaBufferSuballocationCreateInfo::flags</a>. See <a class="el" href="group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb" title="Flags to be passed as VmaVirtualAllocationCreateInfo::flags.">VmaBufferSuballocationCreateFlagBits</a>. <a href="group__group__buffer__suballocation.html#ga7445a51cdb572ba54e795c74d8abc2b4">More...</a><br /></td></tr>
<tr class="separator:ga7445a51cdb572ba54e795c74d8abc2b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga07daea3c55e292b9ea9cdbe481f6d598"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_buffer_allocator_create_info.html">VmaBufferAllocatorCreateInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga07daea3c55e292b9ea9cdbe481f6d598">VmaBufferAllocatorCreateInfo</a></td></tr>
<tr class="memdesc:ga07daea3c55e292b9ea9cdbe481f6d598"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="Represent main object that can allocate parts of larger Vulkan buffers.">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>. <a href="group__group__buffer__suballocation.html#ga07daea3c55e292b9ea9cdbe481f6d598">More...</a><br /></td></tr>
<tr class="separator:ga07daea3c55e292b9ea9cdbe481f6d598"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0ee2c81ee2378cc43620c0d577175935"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_buffer_suballocation_create_info.html">VmaBufferSuballocationCreateInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga0ee2c81ee2378cc43620c0d577175935">VmaBufferSuballocationCreateInfo</a></td></tr>
<tr class="memdesc:ga0ee2c81ee2378cc43620c0d577175935"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="Represents a single sub-allocation - allocated part of a larger Vulkan buffer.">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>. <a href="group__group__buffer__suballocation.html#ga0ee2c81ee2378cc43620c0d577175935">More...</a><br /></td></tr>
<tr class="separator:ga0ee2c81ee2378cc43620c0d577175935"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga18bf3079703d3188bb268b5838bb9c22"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_buffer_suballocation_info.html">VmaBufferSuballocationInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga18bf3079703d3188bb268b5838bb9c22">VmaBufferSuballocationInfo</a></td></tr>
<tr class="memdesc:ga18bf3079703d3188bb268b5838bb9c22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a> or <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>. <a href="group__group__buffer__suballocation.html#ga18bf3079703d3188bb268b5838bb9c22">More...</a><br /></td></tr>
<tr class="separator:ga18bf3079703d3188bb268b5838bb9c22"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga57862e1ba87f2baa7e4b9d2af2cc1c08"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08">VmaBufferAllocatorCreateFlagBits</a> { <a class="el" href="group__group__buffer__suballocation.html#gga57862e1ba87f2baa7e4b9d2af2cc1c08a7e65ee5a47b8f6073dcc7d22020327c1">VMA_BUFFER_ALLOCATOR_CREATE_LINEAR_ALGORITHM_BIT</a> = 0x00000001
, <a class="el" href="group__group__buffer__suballocation.html#gga57862e1ba87f2baa7e4b9d2af2cc1c08ae474b5be5f4211f75e953b620f2c493e">VMA_BUFFER_ALLOCATOR_CREATE_ALGORITHM_MASK</a>
, <a class="el" href="group__group__buffer__suballocation.html#gga57862e1ba87f2baa7e4b9d2af2cc1c08a386b94573003558b4103d9bbb430d49a">VMA_BUFFER_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM</a> = 0x7FFFFFFF
}</td></tr>
<tr class="memdesc:ga57862e1ba87f2baa7e4b9d2af2cc1c08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="Flags - use VmaBufferAllocatorCreateFlagBits.">VmaBufferAllocatorCreateInfo::flags</a>. <a href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08">More...</a><br /></td></tr>
<tr class="separator:ga57862e1ba87f2baa7e4b9d2af2cc1c08"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga79ecf879da8900036ea0ea5b2e7adceb"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb">VmaBufferSuballocationCreateFlagBits</a> { <br />
&#160;&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a">VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT</a> = 0x00000001
, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaa891857e2a3c8307408b4e0763c158f2">VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT</a> = 0x00000002
, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012">VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT</a> = 0x00000004
, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd">VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT</a> = 0x00000008
, <br />
&#160;&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb">VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT</a> = 0x00010000
, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30">VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT</a> = 0x00020000
, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099">VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT</a> = 0x00040000
, <a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388">VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK</a>
, <br />
&#160;&#160;<a class="el" href="group__group__buffer__suballocation.html#gga79ecf879da8900036ea0ea5b2e7adcebaec0e2b1cec0f2337ad134cec5aead0df">VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM</a> = 0x7FFFFFFF
<br />
}</td></tr>
<tr class="memdesc:ga79ecf879da8900036ea0ea5b2e7adceb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags to be passed as <a class="el" href="struct_vma_virtual_allocation_create_info.html#ab10e16956cc4bf20ced9de77d1129ea4" title="Use combination of VmaVirtualAllocationCreateFlagBits.">VmaVirtualAllocationCreateInfo::flags</a>. <a href="group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb">More...</a><br /></td></tr>
<tr class="separator:ga79ecf879da8900036ea0ea5b2e7adceb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga03c157c99d4505b0c753c68e636dca66"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66">vmaCreateBufferAllocator</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, const <a class="el" href="struct_vma_buffer_allocator_create_info.html">VmaBufferAllocatorCreateInfo</a> *pCreateInfo, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> *pBufferAllocator)</td></tr>
<tr class="memdesc:ga03c157c99d4505b0c753c68e636dca66"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document! <a href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66">More...</a><br /></td></tr>
<tr class="separator:ga03c157c99d4505b0c753c68e636dca66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0583fc4a16f1b38d02b2d57a46a20183"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga0583fc4a16f1b38d02b2d57a46a20183">vmaDestroyBufferAllocator</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator)</td></tr>
<tr class="memdesc:ga0583fc4a16f1b38d02b2d57a46a20183"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document! <a href="group__group__buffer__suballocation.html#ga0583fc4a16f1b38d02b2d57a46a20183">More...</a><br /></td></tr>
<tr class="separator:ga0583fc4a16f1b38d02b2d57a46a20183"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga40f2d170f68291d7b9dc32c130b60c39"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39">vmaBufferAllocatorAllocate</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, const <a class="el" href="struct_vma_buffer_suballocation_create_info.html">VmaBufferSuballocationCreateInfo</a> *pCreateInfo, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> *pBufferSuballocation, <a class="el" href="struct_vma_buffer_suballocation_info.html">VmaBufferSuballocationInfo</a> *pBufferSuballocationInfo)</td></tr>
<tr class="memdesc:ga40f2d170f68291d7b9dc32c130b60c39"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document! <a href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39">More...</a><br /></td></tr>
<tr class="separator:ga40f2d170f68291d7b9dc32c130b60c39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaffeae9a3b55e1f1ccaf4dd97d9e74a5f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#gaffeae9a3b55e1f1ccaf4dd97d9e74a5f">vmaBufferAllocatorFree</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation)</td></tr>
<tr class="memdesc:gaffeae9a3b55e1f1ccaf4dd97d9e74a5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document! <a href="group__group__buffer__suballocation.html#gaffeae9a3b55e1f1ccaf4dd97d9e74a5f">More...</a><br /></td></tr>
<tr class="separator:gaffeae9a3b55e1f1ccaf4dd97d9e74a5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8fd69c9c2dc254b99875604d6a08cea6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6">vmaGetBufferSuballocationInfo</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation, <a class="el" href="struct_vma_buffer_suballocation_info.html">VmaBufferSuballocationInfo</a> *pBufferSuballocationInfo)</td></tr>
<tr class="memdesc:ga8fd69c9c2dc254b99875604d6a08cea6"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document! <a href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6">More...</a><br /></td></tr>
<tr class="separator:ga8fd69c9c2dc254b99875604d6a08cea6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga859ffc45110bced385384044572b227c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga859ffc45110bced385384044572b227c">vmaSetBufferSuballocationUserData</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation, void *pUserData)</td></tr>
<tr class="memdesc:ga859ffc45110bced385384044572b227c"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document! <a href="group__group__buffer__suballocation.html#ga859ffc45110bced385384044572b227c">More...</a><br /></td></tr>
<tr class="separator:ga859ffc45110bced385384044572b227c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5559d88f4181d96baa2671a9b5bbb195"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga5559d88f4181d96baa2671a9b5bbb195">vmaMapBufferSuballocation</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation, void **ppData)</td></tr>
<tr class="memdesc:ga5559d88f4181d96baa2671a9b5bbb195"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document! <a href="group__group__buffer__suballocation.html#ga5559d88f4181d96baa2671a9b5bbb195">More...</a><br /></td></tr>
<tr class="separator:ga5559d88f4181d96baa2671a9b5bbb195"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabd39fc17fc5c76e1dc4f95a3753446d4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#gabd39fc17fc5c76e1dc4f95a3753446d4">vmaUnmapBufferSuballocation</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation)</td></tr>
<tr class="memdesc:gabd39fc17fc5c76e1dc4f95a3753446d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document! <a href="group__group__buffer__suballocation.html#gabd39fc17fc5c76e1dc4f95a3753446d4">More...</a><br /></td></tr>
<tr class="separator:gabd39fc17fc5c76e1dc4f95a3753446d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga662e8386b36dc17573da63796713b50a"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga662e8386b36dc17573da63796713b50a">vmaFlushBufferSuballocation</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation, VkDeviceSize suballocationLocalOffset, VkDeviceSize size)</td></tr>
<tr class="memdesc:ga662e8386b36dc17573da63796713b50a"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document! <a href="group__group__buffer__suballocation.html#ga662e8386b36dc17573da63796713b50a">More...</a><br /></td></tr>
<tr class="separator:ga662e8386b36dc17573da63796713b50a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1aa4e38503fae280262527ce41af6920"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__buffer__suballocation.html#ga1aa4e38503fae280262527ce41af6920">vmaInvalidateBufferSuballocation</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> bufferAllocator, <a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> bufferSuballocation, VkDeviceSize suballocationLocalOffset, VkDeviceSize size)</td></tr>
<tr class="memdesc:ga1aa4e38503fae280262527ce41af6920"><td class="mdescLeft">&#160;</td><td class="mdescRight">TODO implement! TODO document! <a href="group__group__buffer__suballocation.html#ga1aa4e38503fae280262527ce41af6920">More...</a><br /></td></tr>
<tr class="separator:ga1aa4e38503fae280262527ce41af6920"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p >API elements related to the mechanism of <a class="el" href="buffer_suballocation.html">Buffer suballocation</a> - allocating parts of larger buffers that allocator can create implicitly. </p>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="gab59dc80be7e88530693d2140c7e4baa9" name="gab59dc80be7e88530693d2140c7e4baa9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab59dc80be7e88530693d2140c7e4baa9">&#9670;&#160;</a></span>VmaBufferAllocatorCreateFlagBits</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef enum <a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08">VmaBufferAllocatorCreateFlagBits</a> <a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08">VmaBufferAllocatorCreateFlagBits</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="Flags - use VmaBufferAllocatorCreateFlagBits.">VmaBufferAllocatorCreateInfo::flags</a>. </p>
</div>
</div>
<a id="ga524fc82795862079781317e33be657e1" name="ga524fc82795862079781317e33be657e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga524fc82795862079781317e33be657e1">&#9670;&#160;</a></span>VmaBufferAllocatorCreateFlags</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef VkFlags <a class="el" href="group__group__buffer__suballocation.html#ga524fc82795862079781317e33be657e1">VmaBufferAllocatorCreateFlags</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="Flags - use VmaBufferAllocatorCreateFlagBits.">VmaBufferAllocatorCreateInfo::flags</a>. See <a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08" title="Flags to be passed as VmaBufferAllocatorCreateInfo::flags.">VmaBufferAllocatorCreateFlagBits</a>. </p>
</div>
</div>
<a id="ga07daea3c55e292b9ea9cdbe481f6d598" name="ga07daea3c55e292b9ea9cdbe481f6d598"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga07daea3c55e292b9ea9cdbe481f6d598">&#9670;&#160;</a></span>VmaBufferAllocatorCreateInfo</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="struct_vma_buffer_allocator_create_info.html">VmaBufferAllocatorCreateInfo</a> <a class="el" href="struct_vma_buffer_allocator_create_info.html">VmaBufferAllocatorCreateInfo</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Parameters of created <a class="el" href="struct_vma_buffer_allocator.html" title="Represent main object that can allocate parts of larger Vulkan buffers.">VmaBufferAllocator</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga03c157c99d4505b0c753c68e636dca66" title="TODO implement! TODO document!">vmaCreateBufferAllocator()</a>. </p>
</div>
</div>
<a id="gab4d54a73919432f9d90f5e8cb1752fb0" name="gab4d54a73919432f9d90f5e8cb1752fb0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab4d54a73919432f9d90f5e8cb1752fb0">&#9670;&#160;</a></span>VmaBufferSuballocationCreateFlagBits</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef enum <a class="el" href="group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb">VmaBufferSuballocationCreateFlagBits</a> <a class="el" href="group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb">VmaBufferSuballocationCreateFlagBits</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Flags to be passed as <a class="el" href="struct_vma_virtual_allocation_create_info.html#ab10e16956cc4bf20ced9de77d1129ea4" title="Use combination of VmaVirtualAllocationCreateFlagBits.">VmaVirtualAllocationCreateInfo::flags</a>. </p>
</div>
</div>
<a id="ga7445a51cdb572ba54e795c74d8abc2b4" name="ga7445a51cdb572ba54e795c74d8abc2b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7445a51cdb572ba54e795c74d8abc2b4">&#9670;&#160;</a></span>VmaBufferSuballocationCreateFlags</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef VkFlags <a class="el" href="group__group__buffer__suballocation.html#ga7445a51cdb572ba54e795c74d8abc2b4">VmaBufferSuballocationCreateFlags</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Flags to be passed as <a class="el" href="struct_vma_buffer_suballocation_create_info.html#ac30a8d28fe7248a2133885f663fdb5e0" title="TODO document! TODO implement!">VmaBufferSuballocationCreateInfo::flags</a>. See <a class="el" href="group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb" title="Flags to be passed as VmaVirtualAllocationCreateInfo::flags.">VmaBufferSuballocationCreateFlagBits</a>. </p>
</div>
</div>
<a id="ga0ee2c81ee2378cc43620c0d577175935" name="ga0ee2c81ee2378cc43620c0d577175935"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0ee2c81ee2378cc43620c0d577175935">&#9670;&#160;</a></span>VmaBufferSuballocationCreateInfo</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="struct_vma_buffer_suballocation_create_info.html">VmaBufferSuballocationCreateInfo</a> <a class="el" href="struct_vma_buffer_suballocation_create_info.html">VmaBufferSuballocationCreateInfo</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Parameters of created <a class="el" href="struct_vma_buffer_suballocation.html" title="Represents a single sub-allocation - allocated part of a larger Vulkan buffer.">VmaBufferSuballocation</a> object to be passed to <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a>. </p>
</div>
</div>
<a id="ga18bf3079703d3188bb268b5838bb9c22" name="ga18bf3079703d3188bb268b5838bb9c22"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga18bf3079703d3188bb268b5838bb9c22">&#9670;&#160;</a></span>VmaBufferSuballocationInfo</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="struct_vma_buffer_suballocation_info.html">VmaBufferSuballocationInfo</a> <a class="el" href="struct_vma_buffer_suballocation_info.html">VmaBufferSuballocationInfo</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Parameters of an existing buffer suballocation, returned by <a class="el" href="group__group__buffer__suballocation.html#ga40f2d170f68291d7b9dc32c130b60c39" title="TODO implement! TODO document!">vmaBufferAllocatorAllocate()</a> or <a class="el" href="group__group__buffer__suballocation.html#ga8fd69c9c2dc254b99875604d6a08cea6" title="TODO implement! TODO document!">vmaGetBufferSuballocationInfo()</a>. </p>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="ga57862e1ba87f2baa7e4b9d2af2cc1c08" name="ga57862e1ba87f2baa7e4b9d2af2cc1c08"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga57862e1ba87f2baa7e4b9d2af2cc1c08">&#9670;&#160;</a></span>VmaBufferAllocatorCreateFlagBits</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__group__buffer__suballocation.html#ga57862e1ba87f2baa7e4b9d2af2cc1c08">VmaBufferAllocatorCreateFlagBits</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Flags to be passed as <a class="el" href="struct_vma_buffer_allocator_create_info.html#ad6ea3d17d437bea0a131f40233b3f296" title="Flags - use VmaBufferAllocatorCreateFlagBits.">VmaBufferAllocatorCreateInfo::flags</a>. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga57862e1ba87f2baa7e4b9d2af2cc1c08a7e65ee5a47b8f6073dcc7d22020327c1" name="gga57862e1ba87f2baa7e4b9d2af2cc1c08a7e65ee5a47b8f6073dcc7d22020327c1"></a>VMA_BUFFER_ALLOCATOR_CREATE_LINEAR_ALGORITHM_BIT&#160;</td><td class="fielddoc"><p >Enables alternative, linear allocation algorithm in this virtual block.</p>
<p >Specify this flag to enable linear allocation algorithm, which always creates new allocations after last one and doesn't reuse space from allocations freed in between. It trades memory consumption for simplified algorithm and data structure, which has better performance and uses less memory for metadata.</p>
<p >By using this flag, you can achieve behavior of free-at-once, stack, ring buffer, and double stack. For details, see documentation chapter <a class="el" href="custom_memory_pools.html#linear_algorithm">Linear allocation algorithm</a>.</p>
<p >Internally it uses a <a class="el" href="virtual_allocator.html">Virtual allocator</a> with flag <a class="el" href="group__group__virtual.html#gga88bcf8c1cd3bb1610ff7343811c65bcaae6423e2fa2f3c9211b21c819e3f10f96" title="Enables alternative, linear allocation algorithm in this virtual block.">VMA_VIRTUAL_BLOCK_CREATE_LINEAR_ALGORITHM_BIT</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga57862e1ba87f2baa7e4b9d2af2cc1c08ae474b5be5f4211f75e953b620f2c493e" name="gga57862e1ba87f2baa7e4b9d2af2cc1c08ae474b5be5f4211f75e953b620f2c493e"></a>VMA_BUFFER_ALLOCATOR_CREATE_ALGORITHM_MASK&#160;</td><td class="fielddoc"><p >Bit mask to extract only <code>ALGORITHM</code> bits from entire set of flags. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga57862e1ba87f2baa7e4b9d2af2cc1c08a386b94573003558b4103d9bbb430d49a" name="gga57862e1ba87f2baa7e4b9d2af2cc1c08a386b94573003558b4103d9bbb430d49a"></a>VMA_BUFFER_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<a id="ga79ecf879da8900036ea0ea5b2e7adceb" name="ga79ecf879da8900036ea0ea5b2e7adceb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga79ecf879da8900036ea0ea5b2e7adceb">&#9670;&#160;</a></span>VmaBufferSuballocationCreateFlagBits</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__group__buffer__suballocation.html#ga79ecf879da8900036ea0ea5b2e7adceb">VmaBufferSuballocationCreateFlagBits</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Flags to be passed as <a class="el" href="struct_vma_virtual_allocation_create_info.html#ab10e16956cc4bf20ced9de77d1129ea4" title="Use combination of VmaVirtualAllocationCreateFlagBits.">VmaVirtualAllocationCreateInfo::flags</a>. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a" name="gga79ecf879da8900036ea0ea5b2e7adceba682790a9dabe6b13811f9128f0fe5c6a"></a>VMA_BUFFER_SUBALLOCATION_CREATE_DEDICATED_BUFFER_BIT&#160;</td><td class="fielddoc"><p >Always creates a separate <code>VkBuffer</code> dedicated for this suballocation. Suballocation will then always have buffer-local offset 0. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adcebaa891857e2a3c8307408b4e0763c158f2" name="gga79ecf879da8900036ea0ea5b2e7adcebaa891857e2a3c8307408b4e0763c158f2"></a>VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_CREATE_BUFFER_BIT&#160;</td><td class="fielddoc"><p >Never creates a new <code>VkBuffer</code> or allocates new Vulkan memory. Tries to create the suballocation in a free space of an existing buffer. If not possible, returns <code>VK_ERROR_OUT_OF_DEVICE_MEMORY</code>. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012" name="gga79ecf879da8900036ea0ea5b2e7adceba5785c36847358a0b78278c1d68bf8012"></a>VMA_BUFFER_SUBALLOCATION_CREATE_NEVER_ALLOCATE_BIT&#160;</td><td class="fielddoc"><p >Never allocates new Vulkan memory. Tries to create the suballocation in a free space of an existing buffer. If not possible, tries to create a new buffer but in existing memory blocks, internally using <a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a89759603401014eb325eb22a3839f2ff" title="Set this flag to only try to allocate from existing VkDeviceMemory blocks and never create new such b...">VMA_ALLOCATION_CREATE_NEVER_ALLOCATE_BIT</a>. If not possible, returns <code>VK_ERROR_OUT_OF_DEVICE_MEMORY</code>. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd" name="gga79ecf879da8900036ea0ea5b2e7adceba70a0a2b46fd3c4ccacd10a6567028acd"></a>VMA_BUFFER_SUBALLOCATION_CREATE_WITHIN_BUDGET_BIT&#160;</td><td class="fielddoc"><p >Creates suballocation only if additional Vulkan memory required for it, if any, won't exceed memory budget. Otherwise return <code>VK_ERROR_OUT_OF_DEVICE_MEMORY</code>. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb" name="gga79ecf879da8900036ea0ea5b2e7adceba72025b18b08e8327620ccb91cd8876eb"></a>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT&#160;</td><td class="fielddoc"><p >Allocation strategy that chooses smallest possible empty space for the suballocation to minimize memory usage and fragmentation, possibly at the expense of allocation time. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30" name="gga79ecf879da8900036ea0ea5b2e7adcebaee5d60ef3f90607e9db9ef4f0c71ae30"></a>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT&#160;</td><td class="fielddoc"><p >Allocation strategy that chooses first suitable empty space for the suballocation - not necessarily in terms of the smallest offset but the one that is easiest and fastest to find to minimize allocation time, possibly at the expense of allocation quality. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099" name="gga79ecf879da8900036ea0ea5b2e7adceba44f7cfc69580aea568889eb2f6b8e099"></a>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT&#160;</td><td class="fielddoc"><p >Allocation strategy that chooses always the lowest offset in available space. This is not the most efficient strategy but achieves highly packed data. Not recommended or useful, provided just for completeness. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388" name="gga79ecf879da8900036ea0ea5b2e7adcebab4ce7f35b541b17e06c396c26c913388"></a>VMA_BUFFER_SUBALLOCATION_CREATE_STRATEGY_MASK&#160;</td><td class="fielddoc"><p >A bit mask to extract only <code>STRATEGY</code> bits from entire set of flags. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga79ecf879da8900036ea0ea5b2e7adcebaec0e2b1cec0f2337ad134cec5aead0df" name="gga79ecf879da8900036ea0ea5b2e7adcebaec0e2b1cec0f2337ad134cec5aead0df"></a>VMA_BUFFER_SUBALLOCATION_CREATE_FLAG_BITS_MAX_ENUM&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga40f2d170f68291d7b9dc32c130b60c39" name="ga40f2d170f68291d7b9dc32c130b60c39"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga40f2d170f68291d7b9dc32c130b60c39">&#9670;&#160;</a></span>vmaBufferAllocatorAllocate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VkResult vmaBufferAllocatorAllocate </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a>&#160;</td>
<td class="paramname"><em>allocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a>&#160;</td>
<td class="paramname"><em>bufferAllocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="struct_vma_buffer_suballocation_create_info.html">VmaBufferSuballocationCreateInfo</a> *&#160;</td>
<td class="paramname"><em>pCreateInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a> *&#160;</td>
<td class="paramname"><em>pBufferSuballocation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_suballocation_info.html">VmaBufferSuballocationInfo</a> *&#160;</td>
<td class="paramname"><em>pBufferSuballocationInfo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>TODO implement! TODO document! </p>
</div>
</div>
<a id="gaffeae9a3b55e1f1ccaf4dd97d9e74a5f" name="gaffeae9a3b55e1f1ccaf4dd97d9e74a5f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaffeae9a3b55e1f1ccaf4dd97d9e74a5f">&#9670;&#160;</a></span>vmaBufferAllocatorFree()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void vmaBufferAllocatorFree </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a>&#160;</td>
<td class="paramname"><em>allocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a>&#160;</td>
<td class="paramname"><em>bufferAllocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a>&#160;</td>
<td class="paramname"><em>bufferSuballocation</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>TODO implement! TODO document! </p>
</div>
</div>
<a id="ga03c157c99d4505b0c753c68e636dca66" name="ga03c157c99d4505b0c753c68e636dca66"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga03c157c99d4505b0c753c68e636dca66">&#9670;&#160;</a></span>vmaCreateBufferAllocator()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VkResult vmaCreateBufferAllocator </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a>&#160;</td>
<td class="paramname"><em>allocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="struct_vma_buffer_allocator_create_info.html">VmaBufferAllocatorCreateInfo</a> *&#160;</td>
<td class="paramname"><em>pCreateInfo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a> *&#160;</td>
<td class="paramname"><em>pBufferAllocator</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>TODO implement! TODO document! </p>
</div>
</div>
<a id="ga0583fc4a16f1b38d02b2d57a46a20183" name="ga0583fc4a16f1b38d02b2d57a46a20183"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0583fc4a16f1b38d02b2d57a46a20183">&#9670;&#160;</a></span>vmaDestroyBufferAllocator()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void vmaDestroyBufferAllocator </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a>&#160;</td>
<td class="paramname"><em>allocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a>&#160;</td>
<td class="paramname"><em>bufferAllocator</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>TODO implement! TODO document! </p>
</div>
</div>
<a id="ga662e8386b36dc17573da63796713b50a" name="ga662e8386b36dc17573da63796713b50a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga662e8386b36dc17573da63796713b50a">&#9670;&#160;</a></span>vmaFlushBufferSuballocation()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VkResult vmaFlushBufferSuballocation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a>&#160;</td>
<td class="paramname"><em>allocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a>&#160;</td>
<td class="paramname"><em>bufferAllocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a>&#160;</td>
<td class="paramname"><em>bufferSuballocation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">VkDeviceSize&#160;</td>
<td class="paramname"><em>suballocationLocalOffset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">VkDeviceSize&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>TODO implement! TODO document! </p>
</div>
</div>
<a id="ga8fd69c9c2dc254b99875604d6a08cea6" name="ga8fd69c9c2dc254b99875604d6a08cea6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8fd69c9c2dc254b99875604d6a08cea6">&#9670;&#160;</a></span>vmaGetBufferSuballocationInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void vmaGetBufferSuballocationInfo </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a>&#160;</td>
<td class="paramname"><em>allocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a>&#160;</td>
<td class="paramname"><em>bufferAllocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a>&#160;</td>
<td class="paramname"><em>bufferSuballocation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_suballocation_info.html">VmaBufferSuballocationInfo</a> *&#160;</td>
<td class="paramname"><em>pBufferSuballocationInfo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>TODO implement! TODO document! </p>
</div>
</div>
<a id="ga1aa4e38503fae280262527ce41af6920" name="ga1aa4e38503fae280262527ce41af6920"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1aa4e38503fae280262527ce41af6920">&#9670;&#160;</a></span>vmaInvalidateBufferSuballocation()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VkResult vmaInvalidateBufferSuballocation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a>&#160;</td>
<td class="paramname"><em>allocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a>&#160;</td>
<td class="paramname"><em>bufferAllocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a>&#160;</td>
<td class="paramname"><em>bufferSuballocation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">VkDeviceSize&#160;</td>
<td class="paramname"><em>suballocationLocalOffset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">VkDeviceSize&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>TODO implement! TODO document! </p>
</div>
</div>
<a id="ga5559d88f4181d96baa2671a9b5bbb195" name="ga5559d88f4181d96baa2671a9b5bbb195"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5559d88f4181d96baa2671a9b5bbb195">&#9670;&#160;</a></span>vmaMapBufferSuballocation()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VkResult vmaMapBufferSuballocation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a>&#160;</td>
<td class="paramname"><em>allocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a>&#160;</td>
<td class="paramname"><em>bufferAllocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a>&#160;</td>
<td class="paramname"><em>bufferSuballocation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void **&#160;</td>
<td class="paramname"><em>ppData</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>TODO implement! TODO document! </p>
</div>
</div>
<a id="ga859ffc45110bced385384044572b227c" name="ga859ffc45110bced385384044572b227c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga859ffc45110bced385384044572b227c">&#9670;&#160;</a></span>vmaSetBufferSuballocationUserData()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void vmaSetBufferSuballocationUserData </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a>&#160;</td>
<td class="paramname"><em>allocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a>&#160;</td>
<td class="paramname"><em>bufferAllocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a>&#160;</td>
<td class="paramname"><em>bufferSuballocation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>pUserData</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>TODO implement! TODO document! </p>
</div>
</div>
<a id="gabd39fc17fc5c76e1dc4f95a3753446d4" name="gabd39fc17fc5c76e1dc4f95a3753446d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabd39fc17fc5c76e1dc4f95a3753446d4">&#9670;&#160;</a></span>vmaUnmapBufferSuballocation()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void vmaUnmapBufferSuballocation </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a>&#160;</td>
<td class="paramname"><em>allocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_allocator.html">VmaBufferAllocator</a>&#160;</td>
<td class="paramname"><em>bufferAllocator</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_vma_buffer_suballocation.html">VmaBufferSuballocation</a>&#160;</td>
<td class="paramname"><em>bufferSuballocation</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>TODO implement! TODO document! </p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.5
</small></address>
</body>
</html>