<trclass="memdesc:a53e844ee5633e229cf6daf14b2d9fff9"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Reserved for future use. Should be 0. <ahref="#a53e844ee5633e229cf6daf14b2d9fff9">More...</a><br/></td></tr>
<trclass="memdesc:a3cf86ab32c1da779b4923d301a3056ba"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Number of allocations in <code>pAllocations</code> array. <ahref="#a3cf86ab32c1da779b4923d301a3056ba">More...</a><br/></td></tr>
<trclass="memdesc:a8943f8d65969ce8e2189a1cdf3205e96"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Pointer to array of allocations that can be defragmented. <ahref="#a8943f8d65969ce8e2189a1cdf3205e96">More...</a><br/></td></tr>
<trclass="memdesc:a76d51a644dc7f5405d0cdd0025ecd0cc"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Optional, output. Pointer to array that will be filled with information whether the allocation at certain index has been changed during defragmentation. <ahref="#a76d51a644dc7f5405d0cdd0025ecd0cc">More...</a><br/></td></tr>
<trclass="memdesc:a7e70aa2a1081d849dcc7829b19d3ec9d"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Numer of pools in <code>pPools</code> array. <ahref="#a7e70aa2a1081d849dcc7829b19d3ec9d">More...</a><br/></td></tr>
<trclass="memdesc:a0b3effd57f3fcdeb2ed62210b4ef20e1"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Either null or pointer to array of pools to be defragmented. <ahref="#a0b3effd57f3fcdeb2ed62210b4ef20e1">More...</a><br/></td></tr>
<trclass="memdesc:af78e1ea40c22d85137b65f6b384a4d0a"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Maximum total numbers of bytes that can be copied while moving allocations to different places using transfers on CPU side, like <code>memcpy()</code>, <code>memmove()</code>. <ahref="#af78e1ea40c22d85137b65f6b384a4d0a">More...</a><br/></td></tr>
<trclass="memdesc:a94c2c7223d52878445a8cccce396b671"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Maximum number of allocations that can be moved to a different place using transfers on CPU side, like <code>memcpy()</code>, <code>memmove()</code>. <ahref="#a94c2c7223d52878445a8cccce396b671">More...</a><br/></td></tr>
<trclass="memdesc:a4ddbc898d0afe1518f863a3763628f08"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Maximum total numbers of bytes that can be copied while moving allocations to different places using transfers on GPU side, posted to <code>commandBuffer</code>. <ahref="#a4ddbc898d0afe1518f863a3763628f08">More...</a><br/></td></tr>
<trclass="memdesc:a40d53d33e71ba0b66f844ed63c05a3f6"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Maximum number of allocations that can be moved to a different place using transfers on GPU side, posted to <code>commandBuffer</code>. <ahref="#a40d53d33e71ba0b66f844ed63c05a3f6">More...</a><br/></td></tr>
<trclass="memdesc:a7f71f39590c5316771493d2333f9c1bd"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Optional. Command buffer where GPU copy commands will be posted. <ahref="#a7f71f39590c5316771493d2333f9c1bd">More...</a><br/></td></tr>
<divclass="textblock"><p>Parameters for defragmentation. </p>
<p>To be used with function <aclass="el"href="vk__mem__alloc_8h.html#a36ba776fd7fd5cb1e9359fdc0d8e6e8a"title="Begins defragmentation process. ">vmaDefragmentationBegin()</a>. </p>
</div><h2class="groupheader">Member Data Documentation</h2>
<p>Optional. Command buffer where GPU copy commands will be posted. </p>
<p>If not null, it must be a valid command buffer handle that supports Transfer queue type. It must be in the recording state and outside of a render pass instance. You need to submit it and make sure it finished execution before calling <aclass="el"href="vk__mem__alloc_8h.html#a8774e20e91e245aae959ba63efa15dd2"title="Ends defragmentation process. ">vmaDefragmentationEnd()</a>.</p>
<p>Passing null means that only CPU defragmentation will be performed. </p>
<p>Maximum number of allocations that can be moved to a different place using transfers on CPU side, like <code>memcpy()</code>, <code>memmove()</code>. </p>
<p>Maximum total numbers of bytes that can be copied while moving allocations to different places using transfers on CPU side, like <code>memcpy()</code>, <code>memmove()</code>. </p>
<p><code>VK_WHOLE_SIZE</code> means no limit. </p>
<p>Maximum total numbers of bytes that can be copied while moving allocations to different places using transfers on GPU side, posted to <code>commandBuffer</code>. </p>
<p><code>VK_WHOLE_SIZE</code> means no limit. </p>
<p>The array should have <code>allocationCount</code> elements. The array should not contain nulls. Elements in the array should be unique - same allocation cannot occur twice. It is safe to pass allocations that are in the lost state - they are ignored. All allocations not present in this array are considered non-moveable during this defragmentation. </p>
<p>Optional, output. Pointer to array that will be filled with information whether the allocation at certain index has been changed during defragmentation. </p>
<p>Either null or pointer to array of pools to be defragmented. </p>
<p>All the allocations in the specified pools can be moved during defragmentation and there is no way to check if they were really moved as in <code>pAllocationsChanged</code>, so you must query all the allocations in all these pools for new <code>VkDeviceMemory</code> and offset using <aclass="el"href="vk__mem__alloc_8h.html#a86dd08aba8633bfa4ad0df2e76481d8b"title="Returns current information about specified allocation and atomically marks it as used in current fra...">vmaGetAllocationInfo()</a> if you might need to recreate buffers and images bound to them.</p>
<p>The array should have <code>poolCount</code> elements. The array should not contain nulls. Elements in the array should be unique - same pool cannot occur twice.</p>
<p>Using this array is equivalent to specifying all allocations from the pools in <code>pAllocations</code>. It might be more efficient. </p>