Added structure VmaVulkanFunctions, macro VMA_STATIC_VULKAN_FUNCTIONS.

This commit is contained in:
Adam Sawicki 2017-09-22 16:57:38 +02:00
parent ee0ce0daf0
commit ab0b39a783
24 changed files with 1002 additions and 197 deletions

View File

@ -74,6 +74,7 @@ $(function() {
<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_pool_stats.html" target="_self">VmaPoolStats</a></td><td class="desc">Describes parameter of existing VmaPool </td></tr> <tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_pool_stats.html" target="_self">VmaPoolStats</a></td><td class="desc">Describes parameter of existing VmaPool </td></tr>
<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_stat_info.html" target="_self">VmaStatInfo</a></td><td class="desc"></td></tr> <tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_stat_info.html" target="_self">VmaStatInfo</a></td><td class="desc"></td></tr>
<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_stats.html" target="_self">VmaStats</a></td><td class="desc">General statistics from current state of Allocator </td></tr> <tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_stats.html" target="_self">VmaStats</a></td><td class="desc">General statistics from current state of Allocator </td></tr>
<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_vma_vulkan_functions.html" target="_self">VmaVulkanFunctions</a></td><td class="desc"></td></tr>
</table> </table>
</div><!-- directory --> </div><!-- directory -->
</div><!-- contents --> </div><!-- contents -->

View File

@ -65,7 +65,7 @@ $(function() {
<div class="qindex"><a class="qindex" href="#letter_v">v</a></div> <div class="qindex"><a class="qindex" href="#letter_v">v</a></div>
<table class="classindex"> <table class="classindex">
<tr><td rowspan="2" valign="bottom"><a name="letter_v"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;v&#160;&#160;</div></td></tr></table> <tr><td rowspan="2" valign="bottom"><a name="letter_v"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;v&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="struct_vma_allocation_info.html">VmaAllocationInfo</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_vma_defragmentation_stats.html">VmaDefragmentationStats</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_vma_pool_stats.html">VmaPoolStats</a>&#160;&#160;&#160;</td><td></td></tr> </td><td valign="top"><a class="el" href="struct_vma_allocation_info.html">VmaAllocationInfo</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_vma_defragmentation_stats.html">VmaDefragmentationStats</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_vma_pool_stats.html">VmaPoolStats</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_vma_device_memory_callbacks.html">VmaDeviceMemoryCallbacks</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_vma_stat_info.html">VmaStatInfo</a>&#160;&#160;&#160;</td><td></td></tr> <tr><td valign="top"><a class="el" href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_vma_device_memory_callbacks.html">VmaDeviceMemoryCallbacks</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_vma_stat_info.html">VmaStatInfo</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td valign="top"><a class="el" href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_vma_defragmentation_info.html">VmaDefragmentationInfo</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_vma_pool_create_info.html">VmaPoolCreateInfo</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_vma_stats.html">VmaStats</a>&#160;&#160;&#160;</td><td></td></tr> <tr><td valign="top"><a class="el" href="struct_vma_allocation_create_info.html">VmaAllocationCreateInfo</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_vma_defragmentation_info.html">VmaDefragmentationInfo</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_vma_pool_create_info.html">VmaPoolCreateInfo</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_vma_stats.html">VmaStats</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td></tr> <tr><td></td><td></td><td></td><td></td><td></td></tr>

View File

@ -195,6 +195,9 @@ $(function() {
: <a class="el" href="struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19">VmaAllocationCreateInfo</a> : <a class="el" href="struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19">VmaAllocationCreateInfo</a>
, <a class="el" href="struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13">VmaAllocationInfo</a> , <a class="el" href="struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13">VmaAllocationInfo</a>
</li> </li>
<li>pVulkanFunctions
: <a class="el" href="struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd">VmaAllocatorCreateInfo</a>
</li>
</ul> </ul>
@ -249,6 +252,52 @@ $(function() {
: <a class="el" href="struct_vma_stat_info.html#a86f82cb9cffd456b9da63eaf26c9ff04">VmaStatInfo</a> : <a class="el" href="struct_vma_stat_info.html#a86f82cb9cffd456b9da63eaf26c9ff04">VmaStatInfo</a>
</li> </li>
</ul> </ul>
<h3><a id="index_v"></a>- v -</h3><ul>
<li>vkAllocateMemory
: <a class="el" href="struct_vma_vulkan_functions.html#a2943bf99dfd784a0e8f599d987e22e6c">VmaVulkanFunctions</a>
</li>
<li>vkBindBufferMemory
: <a class="el" href="struct_vma_vulkan_functions.html#a94fc4f3a605d9880bb3c0ba2c2fc80b2">VmaVulkanFunctions</a>
</li>
<li>vkBindImageMemory
: <a class="el" href="struct_vma_vulkan_functions.html#a1338d96a128a5ade648b8d934907c637">VmaVulkanFunctions</a>
</li>
<li>vkCreateBuffer
: <a class="el" href="struct_vma_vulkan_functions.html#ae8084315a25006271a2edfc3a447519f">VmaVulkanFunctions</a>
</li>
<li>vkCreateImage
: <a class="el" href="struct_vma_vulkan_functions.html#a23ebe70be515b9b5010a1d691200e325">VmaVulkanFunctions</a>
</li>
<li>vkDestroyBuffer
: <a class="el" href="struct_vma_vulkan_functions.html#a7e054606faddb07f0e8556f3ed317d45">VmaVulkanFunctions</a>
</li>
<li>vkDestroyImage
: <a class="el" href="struct_vma_vulkan_functions.html#a90b898227039b1dcb3520f6e91f09ffa">VmaVulkanFunctions</a>
</li>
<li>vkFreeMemory
: <a class="el" href="struct_vma_vulkan_functions.html#a4c658701778564d62034255b5dda91b4">VmaVulkanFunctions</a>
</li>
<li>vkGetBufferMemoryRequirements
: <a class="el" href="struct_vma_vulkan_functions.html#a5b92901df89a4194b0d12f6071d4d143">VmaVulkanFunctions</a>
</li>
<li>vkGetImageMemoryRequirements
: <a class="el" href="struct_vma_vulkan_functions.html#a475f6f49f8debe4d10800592606d53f4">VmaVulkanFunctions</a>
</li>
<li>vkGetPhysicalDeviceMemoryProperties
: <a class="el" href="struct_vma_vulkan_functions.html#a60d25c33bba06bb8592e6875cbaa9830">VmaVulkanFunctions</a>
</li>
<li>vkGetPhysicalDeviceProperties
: <a class="el" href="struct_vma_vulkan_functions.html#a77b7a74082823e865dd6546623468f96">VmaVulkanFunctions</a>
</li>
<li>vkMapMemory
: <a class="el" href="struct_vma_vulkan_functions.html#ab5c1f38dea3a2cf00dc9eb4f57218c49">VmaVulkanFunctions</a>
</li>
<li>vkUnmapMemory
: <a class="el" href="struct_vma_vulkan_functions.html#acc798589736f0becb317fc2196c1d8b9">VmaVulkanFunctions</a>
</li>
</ul>
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>

View File

@ -195,6 +195,9 @@ $(function() {
: <a class="el" href="struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19">VmaAllocationCreateInfo</a> : <a class="el" href="struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19">VmaAllocationCreateInfo</a>
, <a class="el" href="struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13">VmaAllocationInfo</a> , <a class="el" href="struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13">VmaAllocationInfo</a>
</li> </li>
<li>pVulkanFunctions
: <a class="el" href="struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd">VmaAllocatorCreateInfo</a>
</li>
</ul> </ul>
@ -249,6 +252,52 @@ $(function() {
: <a class="el" href="struct_vma_stat_info.html#a86f82cb9cffd456b9da63eaf26c9ff04">VmaStatInfo</a> : <a class="el" href="struct_vma_stat_info.html#a86f82cb9cffd456b9da63eaf26c9ff04">VmaStatInfo</a>
</li> </li>
</ul> </ul>
<h3><a id="index_v"></a>- v -</h3><ul>
<li>vkAllocateMemory
: <a class="el" href="struct_vma_vulkan_functions.html#a2943bf99dfd784a0e8f599d987e22e6c">VmaVulkanFunctions</a>
</li>
<li>vkBindBufferMemory
: <a class="el" href="struct_vma_vulkan_functions.html#a94fc4f3a605d9880bb3c0ba2c2fc80b2">VmaVulkanFunctions</a>
</li>
<li>vkBindImageMemory
: <a class="el" href="struct_vma_vulkan_functions.html#a1338d96a128a5ade648b8d934907c637">VmaVulkanFunctions</a>
</li>
<li>vkCreateBuffer
: <a class="el" href="struct_vma_vulkan_functions.html#ae8084315a25006271a2edfc3a447519f">VmaVulkanFunctions</a>
</li>
<li>vkCreateImage
: <a class="el" href="struct_vma_vulkan_functions.html#a23ebe70be515b9b5010a1d691200e325">VmaVulkanFunctions</a>
</li>
<li>vkDestroyBuffer
: <a class="el" href="struct_vma_vulkan_functions.html#a7e054606faddb07f0e8556f3ed317d45">VmaVulkanFunctions</a>
</li>
<li>vkDestroyImage
: <a class="el" href="struct_vma_vulkan_functions.html#a90b898227039b1dcb3520f6e91f09ffa">VmaVulkanFunctions</a>
</li>
<li>vkFreeMemory
: <a class="el" href="struct_vma_vulkan_functions.html#a4c658701778564d62034255b5dda91b4">VmaVulkanFunctions</a>
</li>
<li>vkGetBufferMemoryRequirements
: <a class="el" href="struct_vma_vulkan_functions.html#a5b92901df89a4194b0d12f6071d4d143">VmaVulkanFunctions</a>
</li>
<li>vkGetImageMemoryRequirements
: <a class="el" href="struct_vma_vulkan_functions.html#a475f6f49f8debe4d10800592606d53f4">VmaVulkanFunctions</a>
</li>
<li>vkGetPhysicalDeviceMemoryProperties
: <a class="el" href="struct_vma_vulkan_functions.html#a60d25c33bba06bb8592e6875cbaa9830">VmaVulkanFunctions</a>
</li>
<li>vkGetPhysicalDeviceProperties
: <a class="el" href="struct_vma_vulkan_functions.html#a77b7a74082823e865dd6546623468f96">VmaVulkanFunctions</a>
</li>
<li>vkMapMemory
: <a class="el" href="struct_vma_vulkan_functions.html#ab5c1f38dea3a2cf00dc9eb4f57218c49">VmaVulkanFunctions</a>
</li>
<li>vkUnmapMemory
: <a class="el" href="struct_vma_vulkan_functions.html#acc798589736f0becb317fc2196c1d8b9">VmaVulkanFunctions</a>
</li>
</ul>
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>

View File

@ -257,12 +257,18 @@ $(function() {
<li>VmaStatInfo <li>VmaStatInfo
: <a class="el" href="group__general.html#ga810b009a788ee8aac72a25b42ffbe31c">vk_mem_alloc.h</a> : <a class="el" href="group__general.html#ga810b009a788ee8aac72a25b42ffbe31c">vk_mem_alloc.h</a>
</li> </li>
<li>VmaStats
: <a class="el" href="group__general.html#ga732be855fb4a7c248e6853d928a729af">vk_mem_alloc.h</a>
</li>
<li>vmaUnmapMemory() <li>vmaUnmapMemory()
: <a class="el" href="group__layer2.html#ga9bc268595cb33f6ec4d519cfce81ff45">vk_mem_alloc.h</a> : <a class="el" href="group__layer2.html#ga9bc268595cb33f6ec4d519cfce81ff45">vk_mem_alloc.h</a>
</li> </li>
<li>vmaUnmapPersistentlyMappedMemory() <li>vmaUnmapPersistentlyMappedMemory()
: <a class="el" href="group__layer2.html#ga26b87244491c1fe77f11fe9ab5779c27">vk_mem_alloc.h</a> : <a class="el" href="group__layer2.html#ga26b87244491c1fe77f11fe9ab5779c27">vk_mem_alloc.h</a>
</li> </li>
<li>VmaVulkanFunctions
: <a class="el" href="group__general.html#ga97064a1a271b0061ebfc3a079862d0c5">vk_mem_alloc.h</a>
</li>
</ul> </ul>
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->

View File

@ -113,6 +113,12 @@ $(function() {
<li>VmaStatInfo <li>VmaStatInfo
: <a class="el" href="group__general.html#ga810b009a788ee8aac72a25b42ffbe31c">vk_mem_alloc.h</a> : <a class="el" href="group__general.html#ga810b009a788ee8aac72a25b42ffbe31c">vk_mem_alloc.h</a>
</li> </li>
<li>VmaStats
: <a class="el" href="group__general.html#ga732be855fb4a7c248e6853d928a729af">vk_mem_alloc.h</a>
</li>
<li>VmaVulkanFunctions
: <a class="el" href="group__general.html#ga97064a1a271b0061ebfc3a079862d0c5">vk_mem_alloc.h</a>
</li>
</ul> </ul>
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->

View File

@ -74,6 +74,8 @@ 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_device_memory_callbacks.html">VmaDeviceMemoryCallbacks</a></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_device_memory_callbacks.html">VmaDeviceMemoryCallbacks</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set of callbacks that the library will call for vkAllocateMemory and vkFreeMemory. <a href="struct_vma_device_memory_callbacks.html#details">More...</a><br /></td></tr> <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set of callbacks that the library will call for vkAllocateMemory and vkFreeMemory. <a href="struct_vma_device_memory_callbacks.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</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_vulkan_functions.html">VmaVulkanFunctions</a></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_allocator_create_info.html">VmaAllocatorCreateInfo</a></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_allocator_create_info.html">VmaAllocatorCreateInfo</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Description of a Allocator to be created. <a href="struct_vma_allocator_create_info.html#details">More...</a><br /></td></tr> <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Description of a Allocator to be created. <a href="struct_vma_allocator_create_info.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -104,11 +106,16 @@ Typedefs</h2></td></tr>
<tr class="separator:gac51ae2c316ee760ec5aebbae06d31253"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gac51ae2c316ee760ec5aebbae06d31253"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6ffbcb80208bf4467a1104087396cf59"><td class="memItemLeft" align="right" valign="top">typedef VkFlags&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__general.html#ga6ffbcb80208bf4467a1104087396cf59">VmaAllocatorFlags</a></td></tr> <tr class="memitem:ga6ffbcb80208bf4467a1104087396cf59"><td class="memItemLeft" align="right" valign="top">typedef VkFlags&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__general.html#ga6ffbcb80208bf4467a1104087396cf59">VmaAllocatorFlags</a></td></tr>
<tr class="separator:ga6ffbcb80208bf4467a1104087396cf59"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga6ffbcb80208bf4467a1104087396cf59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga97064a1a271b0061ebfc3a079862d0c5"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__general.html#ga97064a1a271b0061ebfc3a079862d0c5">VmaVulkanFunctions</a></td></tr>
<tr class="separator:ga97064a1a271b0061ebfc3a079862d0c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae0f6d1d733dded220d28134da46b4283"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__general.html#gae0f6d1d733dded220d28134da46b4283">VmaAllocatorCreateInfo</a></td></tr> <tr class="memitem:gae0f6d1d733dded220d28134da46b4283"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__general.html#gae0f6d1d733dded220d28134da46b4283">VmaAllocatorCreateInfo</a></td></tr>
<tr class="memdesc:gae0f6d1d733dded220d28134da46b4283"><td class="mdescLeft">&#160;</td><td class="mdescRight">Description of a Allocator to be created. <a href="#gae0f6d1d733dded220d28134da46b4283">More...</a><br /></td></tr> <tr class="memdesc:gae0f6d1d733dded220d28134da46b4283"><td class="mdescLeft">&#160;</td><td class="mdescRight">Description of a Allocator to be created. <a href="#gae0f6d1d733dded220d28134da46b4283">More...</a><br /></td></tr>
<tr class="separator:gae0f6d1d733dded220d28134da46b4283"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gae0f6d1d733dded220d28134da46b4283"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga810b009a788ee8aac72a25b42ffbe31c"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_stat_info.html">VmaStatInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__general.html#ga810b009a788ee8aac72a25b42ffbe31c">VmaStatInfo</a></td></tr> <tr class="memitem:ga810b009a788ee8aac72a25b42ffbe31c"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_stat_info.html">VmaStatInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__general.html#ga810b009a788ee8aac72a25b42ffbe31c">VmaStatInfo</a></td></tr>
<tr class="separator:ga810b009a788ee8aac72a25b42ffbe31c"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga810b009a788ee8aac72a25b42ffbe31c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga732be855fb4a7c248e6853d928a729af"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_stats.html">VmaStats</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__general.html#ga732be855fb4a7c248e6853d928a729af">VmaStats</a></td></tr>
<tr class="memdesc:ga732be855fb4a7c248e6853d928a729af"><td class="mdescLeft">&#160;</td><td class="mdescRight">General statistics from current state of Allocator. <a href="#ga732be855fb4a7c248e6853d928a729af">More...</a><br /></td></tr>
<tr class="separator:ga732be855fb4a7c248e6853d928a729af"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls"> </table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr> Enumerations</h2></td></tr>
@ -269,6 +276,36 @@ Functions</h2></td></tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div>
</div>
<a id="ga732be855fb4a7c248e6853d928a729af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga732be855fb4a7c248e6853d928a729af">&#9670;&nbsp;</a></span>VmaStats</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="struct_vma_stats.html">VmaStats</a> <a class="el" href="struct_vma_stats.html">VmaStats</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>General statistics from current state of Allocator. </p>
</div>
</div>
<a id="ga97064a1a271b0061ebfc3a079862d0c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga97064a1a271b0061ebfc3a079862d0c5">&#9670;&nbsp;</a></span>VmaVulkanFunctions</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a> <a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a></td>
</tr>
</table>
</div><div class="memdoc">
</div> </div>
</div> </div>
<h2 class="groupheader">Enumeration Type Documentation</h2> <h2 class="groupheader">Enumeration Type Documentation</h2>

View File

@ -73,7 +73,8 @@ $(function() {
<li class="level2"><a href="#lost_allocations">Lost allocations</a></li> <li class="level2"><a href="#lost_allocations">Lost allocations</a></li>
</ul> </ul>
</li> </li>
<li class="level1"><a href="#configuration">Configuration</a><ul><li class="level2"><a href="#custom_memory_allocator">Custom host memory allocator</a></li> <li class="level1"><a href="#configuration">Configuration</a><ul><li class="level2"><a href="#config_Vulkan_functions">Pointers to Vulkan functions</a></li>
<li class="level2"><a href="#custom_memory_allocator">Custom host memory allocator</a></li>
<li class="level2"><a href="#allocation_callbacks">Device memory allocation callbacks</a></li> <li class="level2"><a href="#allocation_callbacks">Device memory allocation callbacks</a></li>
<li class="level2"><a href="#heap_memory_limit">Device heap memory limit</a></li> <li class="level2"><a href="#heap_memory_limit">Device heap memory limit</a></li>
</ul> </ul>
@ -298,6 +299,13 @@ void MyBuffer::EnsureBuffer()
<h1><a class="anchor" id="configuration"></a> <h1><a class="anchor" id="configuration"></a>
Configuration</h1> Configuration</h1>
<p>Please check "CONFIGURATION SECTION" in the code to find macros that you can define before each <code>#include</code> of this file or change directly in this file to provide your own implementation of basic facilities like assert, <code>min()</code> and <code>max()</code> functions, mutex etc. C++ STL is used by default, but changing these allows you to get rid of any STL usage if you want, as many game developers tend to do.</p> <p>Please check "CONFIGURATION SECTION" in the code to find macros that you can define before each <code>#include</code> of this file or change directly in this file to provide your own implementation of basic facilities like assert, <code>min()</code> and <code>max()</code> functions, mutex etc. C++ STL is used by default, but changing these allows you to get rid of any STL usage if you want, as many game developers tend to do.</p>
<h2><a class="anchor" id="config_Vulkan_functions"></a>
Pointers to Vulkan functions</h2>
<p>The library uses Vulkan functions straight from the <code>vulkan.h</code> header by default. If you want to provide your own pointers to these functions, e.g. fetched using <code>vkGetInstanceProcAddr</code> and <code>vkGetDeviceProcAddr</code>:</p>
<ol type="1">
<li>Remove macro <code>VMA_STATIC_VULKAN_FUNCTIONS</code> from "CONFIGURATION SECTION" section.</li>
<li>Provide valid pointers through <a class="el" href="struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd" title="Pointers to Vulkan functions. Can be null if you leave #define VMA_STATIC_VULKAN_FUNCTIONS 1...">VmaAllocatorCreateInfo::pVulkanFunctions</a>.</li>
</ol>
<h2><a class="anchor" id="custom_memory_allocator"></a> <h2><a class="anchor" id="custom_memory_allocator"></a>
Custom host memory allocator</h2> Custom host memory allocator</h2>
<p>If you use custom allocator for CPU memory rather than default operator <code>new</code> and <code>delete</code> from C++, you can make this library using your allocator as well by filling optional member <a class="el" href="struct_vma_allocator_create_info.html#a6e409087e3be55400d0e4ccbe43c608d" title="Custom CPU memory allocation callbacks. ">VmaAllocatorCreateInfo::pAllocationCallbacks</a>. These functions will be passed to Vulkan, as well as used by the library itself to make any CPU-side allocations.</p> <p>If you use custom allocator for CPU memory rather than default operator <code>new</code> and <code>delete</code> from C++, you can make this library using your allocator as well by filling optional member <a class="el" href="struct_vma_allocator_create_info.html#a6e409087e3be55400d0e4ccbe43c608d" title="Custom CPU memory allocation callbacks. ">VmaAllocatorCreateInfo::pAllocationCallbacks</a>. These functions will be passed to Vulkan, as well as used by the library itself to make any CPU-side allocations.</p>

View File

@ -16,7 +16,8 @@ var menudata={children:[
{text:"r",url:"functions.html#index_r"}, {text:"r",url:"functions.html#index_r"},
{text:"s",url:"functions.html#index_s"}, {text:"s",url:"functions.html#index_s"},
{text:"t",url:"functions.html#index_t"}, {text:"t",url:"functions.html#index_t"},
{text:"u",url:"functions.html#index_u"}]}, {text:"u",url:"functions.html#index_u"},
{text:"v",url:"functions.html#index_v"}]},
{text:"Variables",url:"functions_vars.html",children:[ {text:"Variables",url:"functions_vars.html",children:[
{text:"a",url:"functions_vars.html#index_a"}, {text:"a",url:"functions_vars.html#index_a"},
{text:"b",url:"functions_vars.html#index_b"}, {text:"b",url:"functions_vars.html#index_b"},
@ -28,7 +29,8 @@ var menudata={children:[
{text:"r",url:"functions_vars.html#index_r"}, {text:"r",url:"functions_vars.html#index_r"},
{text:"s",url:"functions_vars.html#index_s"}, {text:"s",url:"functions_vars.html#index_s"},
{text:"t",url:"functions_vars.html#index_t"}, {text:"t",url:"functions_vars.html#index_t"},
{text:"u",url:"functions_vars.html#index_u"}]}]}]}, {text:"u",url:"functions_vars.html#index_u"},
{text:"v",url:"functions_vars.html#index_v"}]}]}]},
{text:"Files",url:"files.html",children:[ {text:"Files",url:"files.html",children:[
{text:"File List",url:"files.html"}, {text:"File List",url:"files.html"},
{text:"File Members",url:"globals.html",children:[ {text:"File Members",url:"globals.html",children:[

View File

@ -13,5 +13,6 @@ var searchData=
['preferredflags',['preferredFlags',['../struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d',1,'VmaAllocationCreateInfo']]], ['preferredflags',['preferredFlags',['../struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d',1,'VmaAllocationCreateInfo']]],
['preferredlargeheapblocksize',['preferredLargeHeapBlockSize',['../struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a',1,'VmaAllocatorCreateInfo']]], ['preferredlargeheapblocksize',['preferredLargeHeapBlockSize',['../struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a',1,'VmaAllocatorCreateInfo']]],
['preferredsmallheapblocksize',['preferredSmallHeapBlockSize',['../struct_vma_allocator_create_info.html#ab435423d84d5ab26e2c347c51771f90a',1,'VmaAllocatorCreateInfo']]], ['preferredsmallheapblocksize',['preferredSmallHeapBlockSize',['../struct_vma_allocator_create_info.html#ab435423d84d5ab26e2c347c51771f90a',1,'VmaAllocatorCreateInfo']]],
['puserdata',['pUserData',['../struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19',1,'VmaAllocationCreateInfo::pUserData()'],['../struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13',1,'VmaAllocationInfo::pUserData()']]] ['puserdata',['pUserData',['../struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19',1,'VmaAllocationCreateInfo::pUserData()'],['../struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13',1,'VmaAllocationInfo::pUserData()']]],
['pvulkanfunctions',['pVulkanFunctions',['../struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd',1,'VmaAllocatorCreateInfo']]]
]; ];

View File

@ -2,6 +2,20 @@ var searchData=
[ [
['vulkan_20memory_20allocator',['Vulkan Memory Allocator',['../index.html',1,'']]], ['vulkan_20memory_20allocator',['Vulkan Memory Allocator',['../index.html',1,'']]],
['vk_5fmem_5falloc_2eh',['vk_mem_alloc.h',['../vk__mem__alloc_8h.html',1,'']]], ['vk_5fmem_5falloc_2eh',['vk_mem_alloc.h',['../vk__mem__alloc_8h.html',1,'']]],
['vkallocatememory',['vkAllocateMemory',['../struct_vma_vulkan_functions.html#a2943bf99dfd784a0e8f599d987e22e6c',1,'VmaVulkanFunctions']]],
['vkbindbuffermemory',['vkBindBufferMemory',['../struct_vma_vulkan_functions.html#a94fc4f3a605d9880bb3c0ba2c2fc80b2',1,'VmaVulkanFunctions']]],
['vkbindimagememory',['vkBindImageMemory',['../struct_vma_vulkan_functions.html#a1338d96a128a5ade648b8d934907c637',1,'VmaVulkanFunctions']]],
['vkcreatebuffer',['vkCreateBuffer',['../struct_vma_vulkan_functions.html#ae8084315a25006271a2edfc3a447519f',1,'VmaVulkanFunctions']]],
['vkcreateimage',['vkCreateImage',['../struct_vma_vulkan_functions.html#a23ebe70be515b9b5010a1d691200e325',1,'VmaVulkanFunctions']]],
['vkdestroybuffer',['vkDestroyBuffer',['../struct_vma_vulkan_functions.html#a7e054606faddb07f0e8556f3ed317d45',1,'VmaVulkanFunctions']]],
['vkdestroyimage',['vkDestroyImage',['../struct_vma_vulkan_functions.html#a90b898227039b1dcb3520f6e91f09ffa',1,'VmaVulkanFunctions']]],
['vkfreememory',['vkFreeMemory',['../struct_vma_vulkan_functions.html#a4c658701778564d62034255b5dda91b4',1,'VmaVulkanFunctions']]],
['vkgetbuffermemoryrequirements',['vkGetBufferMemoryRequirements',['../struct_vma_vulkan_functions.html#a5b92901df89a4194b0d12f6071d4d143',1,'VmaVulkanFunctions']]],
['vkgetimagememoryrequirements',['vkGetImageMemoryRequirements',['../struct_vma_vulkan_functions.html#a475f6f49f8debe4d10800592606d53f4',1,'VmaVulkanFunctions']]],
['vkgetphysicaldevicememoryproperties',['vkGetPhysicalDeviceMemoryProperties',['../struct_vma_vulkan_functions.html#a60d25c33bba06bb8592e6875cbaa9830',1,'VmaVulkanFunctions']]],
['vkgetphysicaldeviceproperties',['vkGetPhysicalDeviceProperties',['../struct_vma_vulkan_functions.html#a77b7a74082823e865dd6546623468f96',1,'VmaVulkanFunctions']]],
['vkmapmemory',['vkMapMemory',['../struct_vma_vulkan_functions.html#ab5c1f38dea3a2cf00dc9eb4f57218c49',1,'VmaVulkanFunctions']]],
['vkunmapmemory',['vkUnmapMemory',['../struct_vma_vulkan_functions.html#acc798589736f0becb317fc2196c1d8b9',1,'VmaVulkanFunctions']]],
['vma_5fallocation_5fcreate_5fcan_5fbecome_5flost_5fbit',['VMA_ALLOCATION_CREATE_CAN_BECOME_LOST_BIT',['../group__layer1.html#ggad9889c10c798b040d59c92f257cae597a5f436af6c8fe8540573a6d22627a6fd2',1,'vk_mem_alloc.h']]], ['vma_5fallocation_5fcreate_5fcan_5fbecome_5flost_5fbit',['VMA_ALLOCATION_CREATE_CAN_BECOME_LOST_BIT',['../group__layer1.html#ggad9889c10c798b040d59c92f257cae597a5f436af6c8fe8540573a6d22627a6fd2',1,'vk_mem_alloc.h']]],
['vma_5fallocation_5fcreate_5fcan_5fmake_5fother_5flost_5fbit',['VMA_ALLOCATION_CREATE_CAN_MAKE_OTHER_LOST_BIT',['../group__layer1.html#ggad9889c10c798b040d59c92f257cae597a68686d0ce9beb0d4d1b9f2b8b1389a7e',1,'vk_mem_alloc.h']]], ['vma_5fallocation_5fcreate_5fcan_5fmake_5fother_5flost_5fbit',['VMA_ALLOCATION_CREATE_CAN_MAKE_OTHER_LOST_BIT',['../group__layer1.html#ggad9889c10c798b040d59c92f257cae597a68686d0ce9beb0d4d1b9f2b8b1389a7e',1,'vk_mem_alloc.h']]],
['vma_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum',['VMA_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__layer1.html#ggad9889c10c798b040d59c92f257cae597ae5633ec569f4899cf8f29e7385b2f882',1,'vk_mem_alloc.h']]], ['vma_5fallocation_5fcreate_5fflag_5fbits_5fmax_5fenum',['VMA_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM',['../group__layer1.html#ggad9889c10c798b040d59c92f257cae597ae5633ec569f4899cf8f29e7385b2f882',1,'vk_mem_alloc.h']]],
@ -64,7 +78,8 @@ var searchData=
['vmasetallocationuserdata',['vmaSetAllocationUserData',['../group__layer2.html#gaf9147d31ffc11d62fc187bde283ed14f',1,'vk_mem_alloc.h']]], ['vmasetallocationuserdata',['vmaSetAllocationUserData',['../group__layer2.html#gaf9147d31ffc11d62fc187bde283ed14f',1,'vk_mem_alloc.h']]],
['vmasetcurrentframeindex',['vmaSetCurrentFrameIndex',['../group__general.html#gade56bf8dc9f5a5eaddf5f119ed525236',1,'vk_mem_alloc.h']]], ['vmasetcurrentframeindex',['vmaSetCurrentFrameIndex',['../group__general.html#gade56bf8dc9f5a5eaddf5f119ed525236',1,'vk_mem_alloc.h']]],
['vmastatinfo',['VmaStatInfo',['../struct_vma_stat_info.html',1,'VmaStatInfo'],['../group__general.html#ga810b009a788ee8aac72a25b42ffbe31c',1,'VmaStatInfo():&#160;vk_mem_alloc.h']]], ['vmastatinfo',['VmaStatInfo',['../struct_vma_stat_info.html',1,'VmaStatInfo'],['../group__general.html#ga810b009a788ee8aac72a25b42ffbe31c',1,'VmaStatInfo():&#160;vk_mem_alloc.h']]],
['vmastats',['VmaStats',['../struct_vma_stats.html',1,'']]], ['vmastats',['VmaStats',['../struct_vma_stats.html',1,'VmaStats'],['../group__general.html#ga732be855fb4a7c248e6853d928a729af',1,'VmaStats():&#160;vk_mem_alloc.h']]],
['vmaunmapmemory',['vmaUnmapMemory',['../group__layer2.html#ga9bc268595cb33f6ec4d519cfce81ff45',1,'vk_mem_alloc.h']]], ['vmaunmapmemory',['vmaUnmapMemory',['../group__layer2.html#ga9bc268595cb33f6ec4d519cfce81ff45',1,'vk_mem_alloc.h']]],
['vmaunmappersistentlymappedmemory',['vmaUnmapPersistentlyMappedMemory',['../group__layer2.html#ga26b87244491c1fe77f11fe9ab5779c27',1,'vk_mem_alloc.h']]] ['vmaunmappersistentlymappedmemory',['vmaUnmapPersistentlyMappedMemory',['../group__layer2.html#ga26b87244491c1fe77f11fe9ab5779c27',1,'vk_mem_alloc.h']]],
['vmavulkanfunctions',['VmaVulkanFunctions',['../struct_vma_vulkan_functions.html',1,'VmaVulkanFunctions'],['../group__general.html#ga97064a1a271b0061ebfc3a079862d0c5',1,'VmaVulkanFunctions():&#160;vk_mem_alloc.h']]]
]; ];

View File

@ -9,5 +9,6 @@ var searchData=
['vmapoolcreateinfo',['VmaPoolCreateInfo',['../struct_vma_pool_create_info.html',1,'']]], ['vmapoolcreateinfo',['VmaPoolCreateInfo',['../struct_vma_pool_create_info.html',1,'']]],
['vmapoolstats',['VmaPoolStats',['../struct_vma_pool_stats.html',1,'']]], ['vmapoolstats',['VmaPoolStats',['../struct_vma_pool_stats.html',1,'']]],
['vmastatinfo',['VmaStatInfo',['../struct_vma_stat_info.html',1,'']]], ['vmastatinfo',['VmaStatInfo',['../struct_vma_stat_info.html',1,'']]],
['vmastats',['VmaStats',['../struct_vma_stats.html',1,'']]] ['vmastats',['VmaStats',['../struct_vma_stats.html',1,'']]],
['vmavulkanfunctions',['VmaVulkanFunctions',['../struct_vma_vulkan_functions.html',1,'']]]
]; ];

View File

@ -4,7 +4,7 @@ var indexSectionsWithContent =
1: "v", 1: "v",
2: "v", 2: "v",
3: "v", 3: "v",
4: "abdfmoprstu", 4: "abdfmoprstuv",
5: "pv", 5: "pv",
6: "v", 6: "v",
7: "v", 7: "v",

View File

@ -15,5 +15,7 @@ var searchData=
['vmapoolcreateflags',['VmaPoolCreateFlags',['../group__layer2.html#ga2770e325ea42e087c1b91fdf46d0292a',1,'vk_mem_alloc.h']]], ['vmapoolcreateflags',['VmaPoolCreateFlags',['../group__layer2.html#ga2770e325ea42e087c1b91fdf46d0292a',1,'vk_mem_alloc.h']]],
['vmapoolcreateinfo',['VmaPoolCreateInfo',['../group__layer2.html#ga211706e9348dcee25a843ed4ea69bce7',1,'vk_mem_alloc.h']]], ['vmapoolcreateinfo',['VmaPoolCreateInfo',['../group__layer2.html#ga211706e9348dcee25a843ed4ea69bce7',1,'vk_mem_alloc.h']]],
['vmapoolstats',['VmaPoolStats',['../group__layer2.html#ga2e5612d871d64c5624087b837a338c34',1,'vk_mem_alloc.h']]], ['vmapoolstats',['VmaPoolStats',['../group__layer2.html#ga2e5612d871d64c5624087b837a338c34',1,'vk_mem_alloc.h']]],
['vmastatinfo',['VmaStatInfo',['../group__general.html#ga810b009a788ee8aac72a25b42ffbe31c',1,'vk_mem_alloc.h']]] ['vmastatinfo',['VmaStatInfo',['../group__general.html#ga810b009a788ee8aac72a25b42ffbe31c',1,'vk_mem_alloc.h']]],
['vmastats',['VmaStats',['../group__general.html#ga732be855fb4a7c248e6853d928a729af',1,'vk_mem_alloc.h']]],
['vmavulkanfunctions',['VmaVulkanFunctions',['../group__general.html#ga97064a1a271b0061ebfc3a079862d0c5',1,'vk_mem_alloc.h']]]
]; ];

View File

@ -11,5 +11,6 @@ var searchData=
['preferredflags',['preferredFlags',['../struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d',1,'VmaAllocationCreateInfo']]], ['preferredflags',['preferredFlags',['../struct_vma_allocation_create_info.html#a7fe8d81a1ad10b2a2faacacee5b15d6d',1,'VmaAllocationCreateInfo']]],
['preferredlargeheapblocksize',['preferredLargeHeapBlockSize',['../struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a',1,'VmaAllocatorCreateInfo']]], ['preferredlargeheapblocksize',['preferredLargeHeapBlockSize',['../struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a',1,'VmaAllocatorCreateInfo']]],
['preferredsmallheapblocksize',['preferredSmallHeapBlockSize',['../struct_vma_allocator_create_info.html#ab435423d84d5ab26e2c347c51771f90a',1,'VmaAllocatorCreateInfo']]], ['preferredsmallheapblocksize',['preferredSmallHeapBlockSize',['../struct_vma_allocator_create_info.html#ab435423d84d5ab26e2c347c51771f90a',1,'VmaAllocatorCreateInfo']]],
['puserdata',['pUserData',['../struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19',1,'VmaAllocationCreateInfo::pUserData()'],['../struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13',1,'VmaAllocationInfo::pUserData()']]] ['puserdata',['pUserData',['../struct_vma_allocation_create_info.html#a8259e85c272683434f4abb4ddddffe19',1,'VmaAllocationCreateInfo::pUserData()'],['../struct_vma_allocation_info.html#adc507656149c04de7ed95d0042ba2a13',1,'VmaAllocationInfo::pUserData()']]],
['pvulkanfunctions',['pVulkanFunctions',['../struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd',1,'VmaAllocatorCreateInfo']]]
]; ];

View File

@ -0,0 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_b.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
createResults();
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
--></script>
</div>
</body>
</html>

View File

@ -0,0 +1,17 @@
var searchData=
[
['vkallocatememory',['vkAllocateMemory',['../struct_vma_vulkan_functions.html#a2943bf99dfd784a0e8f599d987e22e6c',1,'VmaVulkanFunctions']]],
['vkbindbuffermemory',['vkBindBufferMemory',['../struct_vma_vulkan_functions.html#a94fc4f3a605d9880bb3c0ba2c2fc80b2',1,'VmaVulkanFunctions']]],
['vkbindimagememory',['vkBindImageMemory',['../struct_vma_vulkan_functions.html#a1338d96a128a5ade648b8d934907c637',1,'VmaVulkanFunctions']]],
['vkcreatebuffer',['vkCreateBuffer',['../struct_vma_vulkan_functions.html#ae8084315a25006271a2edfc3a447519f',1,'VmaVulkanFunctions']]],
['vkcreateimage',['vkCreateImage',['../struct_vma_vulkan_functions.html#a23ebe70be515b9b5010a1d691200e325',1,'VmaVulkanFunctions']]],
['vkdestroybuffer',['vkDestroyBuffer',['../struct_vma_vulkan_functions.html#a7e054606faddb07f0e8556f3ed317d45',1,'VmaVulkanFunctions']]],
['vkdestroyimage',['vkDestroyImage',['../struct_vma_vulkan_functions.html#a90b898227039b1dcb3520f6e91f09ffa',1,'VmaVulkanFunctions']]],
['vkfreememory',['vkFreeMemory',['../struct_vma_vulkan_functions.html#a4c658701778564d62034255b5dda91b4',1,'VmaVulkanFunctions']]],
['vkgetbuffermemoryrequirements',['vkGetBufferMemoryRequirements',['../struct_vma_vulkan_functions.html#a5b92901df89a4194b0d12f6071d4d143',1,'VmaVulkanFunctions']]],
['vkgetimagememoryrequirements',['vkGetImageMemoryRequirements',['../struct_vma_vulkan_functions.html#a475f6f49f8debe4d10800592606d53f4',1,'VmaVulkanFunctions']]],
['vkgetphysicaldevicememoryproperties',['vkGetPhysicalDeviceMemoryProperties',['../struct_vma_vulkan_functions.html#a60d25c33bba06bb8592e6875cbaa9830',1,'VmaVulkanFunctions']]],
['vkgetphysicaldeviceproperties',['vkGetPhysicalDeviceProperties',['../struct_vma_vulkan_functions.html#a77b7a74082823e865dd6546623468f96',1,'VmaVulkanFunctions']]],
['vkmapmemory',['vkMapMemory',['../struct_vma_vulkan_functions.html#ab5c1f38dea3a2cf00dc9eb4f57218c49',1,'VmaVulkanFunctions']]],
['vkunmapmemory',['vkUnmapMemory',['../struct_vma_vulkan_functions.html#acc798589736f0becb317fc2196c1d8b9',1,'VmaVulkanFunctions']]]
];

View File

@ -74,6 +74,7 @@ $(function() {
<tr class="even"><td class="entry"><a class="el" href="struct_vma_allocator_create_info.html#a08230f04ae6ccf8a78150a9e829a7156">physicalDevice</a></td><td class="entry"><a class="el" href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a></td><td class="entry"></td></tr> <tr class="even"><td class="entry"><a class="el" href="struct_vma_allocator_create_info.html#a08230f04ae6ccf8a78150a9e829a7156">physicalDevice</a></td><td class="entry"><a class="el" href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a">preferredLargeHeapBlockSize</a></td><td class="entry"><a class="el" href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a></td><td class="entry"></td></tr> <tr><td class="entry"><a class="el" href="struct_vma_allocator_create_info.html#a8e4714298e3121cdd8b214a1ae7a637a">preferredLargeHeapBlockSize</a></td><td class="entry"><a class="el" href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="struct_vma_allocator_create_info.html#ab435423d84d5ab26e2c347c51771f90a">preferredSmallHeapBlockSize</a></td><td class="entry"><a class="el" href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a></td><td class="entry"></td></tr> <tr class="even"><td class="entry"><a class="el" href="struct_vma_allocator_create_info.html#ab435423d84d5ab26e2c347c51771f90a">preferredSmallHeapBlockSize</a></td><td class="entry"><a class="el" href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd">pVulkanFunctions</a></td><td class="entry"><a class="el" href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a></td><td class="entry"></td></tr>
</table></div><!-- contents --> </table></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>

View File

@ -100,6 +100,9 @@ Public Attributes</h2></td></tr>
<tr class="memitem:a31c192aa6cbffa33279f6d9f0c47c44b"><td class="memItemLeft" align="right" valign="top">const VkDeviceSize *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_allocator_create_info.html#a31c192aa6cbffa33279f6d9f0c47c44b">pHeapSizeLimit</a></td></tr> <tr class="memitem:a31c192aa6cbffa33279f6d9f0c47c44b"><td class="memItemLeft" align="right" valign="top">const VkDeviceSize *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_allocator_create_info.html#a31c192aa6cbffa33279f6d9f0c47c44b">pHeapSizeLimit</a></td></tr>
<tr class="memdesc:a31c192aa6cbffa33279f6d9f0c47c44b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Either NULL or a pointer to an array of limits on maximum number of bytes that can be allocated out of particular Vulkan memory heap. <a href="#a31c192aa6cbffa33279f6d9f0c47c44b">More...</a><br /></td></tr> <tr class="memdesc:a31c192aa6cbffa33279f6d9f0c47c44b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Either NULL or a pointer to an array of limits on maximum number of bytes that can be allocated out of particular Vulkan memory heap. <a href="#a31c192aa6cbffa33279f6d9f0c47c44b">More...</a><br /></td></tr>
<tr class="separator:a31c192aa6cbffa33279f6d9f0c47c44b"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:a31c192aa6cbffa33279f6d9f0c47c44b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3dc197be3227da7338b1643f70db36bd"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd">pVulkanFunctions</a></td></tr>
<tr class="memdesc:a3dc197be3227da7338b1643f70db36bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointers to Vulkan functions. Can be null if you leave <code>#define VMA_STATIC_VULKAN_FUNCTIONS 1</code>. <a href="#a3dc197be3227da7338b1643f70db36bd">More...</a><br /></td></tr>
<tr class="separator:a3dc197be3227da7338b1643f70db36bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table> </table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Description of a Allocator to be created. </p> <div class="textblock"><p>Description of a Allocator to be created. </p>
@ -262,6 +265,24 @@ Public Attributes</h2></td></tr>
<p>Preferred size of a single <code>VkDeviceMemory</code> block to be allocated from small heaps &lt;= 512 MB. </p> <p>Preferred size of a single <code>VkDeviceMemory</code> block to be allocated from small heaps &lt;= 512 MB. </p>
<p>Set to 0 to use default, which is currently 64 MB. </p> <p>Set to 0 to use default, which is currently 64 MB. </p>
</div>
</div>
<a id="a3dc197be3227da7338b1643f70db36bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3dc197be3227da7338b1643f70db36bd">&#9670;&nbsp;</a></span>pVulkanFunctions</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a>* VmaAllocatorCreateInfo::pVulkanFunctions</td>
</tr>
</table>
</div><div class="memdoc">
<p>Pointers to Vulkan functions. Can be null if you leave <code>#define VMA_STATIC_VULKAN_FUNCTIONS 1</code>. </p>
<p>If you leave <code>#define VMA_STATIC_VULKAN_FUNCTIONS 1</code> in configuration section, you can pass null as this member, because the library will fetch pointers to Vulkan functions internally in a static way, like: </p><pre class="fragment">vulkanFunctions.vkAllocateMemory = &amp;vkAllocateMemory;
</pre><p>Fill this member if you want to provide your own pointers to Vulkan functions, e.g. fetched using <code>vkGetInstanceProcAddr</code> and <code>vkGetDeviceProcAddr</code>. </p>
</div> </div>
</div> </div>
<hr/>The documentation for this struct was generated from the following file:<ul> <hr/>The documentation for this struct was generated from the following file:<ul>

View File

@ -0,0 +1,90 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Vulkan Memory Allocator: Member List</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 style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Vulkan Memory Allocator
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- 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">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">VmaVulkanFunctions Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html#a2943bf99dfd784a0e8f599d987e22e6c">vkAllocateMemory</a></td><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html#a94fc4f3a605d9880bb3c0ba2c2fc80b2">vkBindBufferMemory</a></td><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html#a1338d96a128a5ade648b8d934907c637">vkBindImageMemory</a></td><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html#ae8084315a25006271a2edfc3a447519f">vkCreateBuffer</a></td><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html#a23ebe70be515b9b5010a1d691200e325">vkCreateImage</a></td><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html#a7e054606faddb07f0e8556f3ed317d45">vkDestroyBuffer</a></td><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html#a90b898227039b1dcb3520f6e91f09ffa">vkDestroyImage</a></td><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html#a4c658701778564d62034255b5dda91b4">vkFreeMemory</a></td><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html#a5b92901df89a4194b0d12f6071d4d143">vkGetBufferMemoryRequirements</a></td><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html#a475f6f49f8debe4d10800592606d53f4">vkGetImageMemoryRequirements</a></td><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html#a60d25c33bba06bb8592e6875cbaa9830">vkGetPhysicalDeviceMemoryProperties</a></td><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html#a77b7a74082823e865dd6546623468f96">vkGetPhysicalDeviceProperties</a></td><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html#ab5c1f38dea3a2cf00dc9eb4f57218c49">vkMapMemory</a></td><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html#acc798589736f0becb317fc2196c1d8b9">vkUnmapMemory</a></td><td class="entry"><a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View File

@ -0,0 +1,310 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Vulkan Memory Allocator: VmaVulkanFunctions Struct Reference</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 style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Vulkan Memory Allocator
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- 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">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="struct_vma_vulkan_functions-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">VmaVulkanFunctions Struct Reference<div class="ingroups"><a class="el" href="group__general.html">General</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="vk__mem__alloc_8h_source.html">vk_mem_alloc.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a77b7a74082823e865dd6546623468f96"><td class="memItemLeft" align="right" valign="top">PFN_vkGetPhysicalDeviceProperties&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_vulkan_functions.html#a77b7a74082823e865dd6546623468f96">vkGetPhysicalDeviceProperties</a></td></tr>
<tr class="separator:a77b7a74082823e865dd6546623468f96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60d25c33bba06bb8592e6875cbaa9830"><td class="memItemLeft" align="right" valign="top">PFN_vkGetPhysicalDeviceMemoryProperties&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_vulkan_functions.html#a60d25c33bba06bb8592e6875cbaa9830">vkGetPhysicalDeviceMemoryProperties</a></td></tr>
<tr class="separator:a60d25c33bba06bb8592e6875cbaa9830"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2943bf99dfd784a0e8f599d987e22e6c"><td class="memItemLeft" align="right" valign="top">PFN_vkAllocateMemory&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_vulkan_functions.html#a2943bf99dfd784a0e8f599d987e22e6c">vkAllocateMemory</a></td></tr>
<tr class="separator:a2943bf99dfd784a0e8f599d987e22e6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c658701778564d62034255b5dda91b4"><td class="memItemLeft" align="right" valign="top">PFN_vkFreeMemory&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_vulkan_functions.html#a4c658701778564d62034255b5dda91b4">vkFreeMemory</a></td></tr>
<tr class="separator:a4c658701778564d62034255b5dda91b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5c1f38dea3a2cf00dc9eb4f57218c49"><td class="memItemLeft" align="right" valign="top">PFN_vkMapMemory&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_vulkan_functions.html#ab5c1f38dea3a2cf00dc9eb4f57218c49">vkMapMemory</a></td></tr>
<tr class="separator:ab5c1f38dea3a2cf00dc9eb4f57218c49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc798589736f0becb317fc2196c1d8b9"><td class="memItemLeft" align="right" valign="top">PFN_vkUnmapMemory&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_vulkan_functions.html#acc798589736f0becb317fc2196c1d8b9">vkUnmapMemory</a></td></tr>
<tr class="separator:acc798589736f0becb317fc2196c1d8b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94fc4f3a605d9880bb3c0ba2c2fc80b2"><td class="memItemLeft" align="right" valign="top">PFN_vkBindBufferMemory&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_vulkan_functions.html#a94fc4f3a605d9880bb3c0ba2c2fc80b2">vkBindBufferMemory</a></td></tr>
<tr class="separator:a94fc4f3a605d9880bb3c0ba2c2fc80b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1338d96a128a5ade648b8d934907c637"><td class="memItemLeft" align="right" valign="top">PFN_vkBindImageMemory&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_vulkan_functions.html#a1338d96a128a5ade648b8d934907c637">vkBindImageMemory</a></td></tr>
<tr class="separator:a1338d96a128a5ade648b8d934907c637"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b92901df89a4194b0d12f6071d4d143"><td class="memItemLeft" align="right" valign="top">PFN_vkGetBufferMemoryRequirements&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_vulkan_functions.html#a5b92901df89a4194b0d12f6071d4d143">vkGetBufferMemoryRequirements</a></td></tr>
<tr class="separator:a5b92901df89a4194b0d12f6071d4d143"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a475f6f49f8debe4d10800592606d53f4"><td class="memItemLeft" align="right" valign="top">PFN_vkGetImageMemoryRequirements&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_vulkan_functions.html#a475f6f49f8debe4d10800592606d53f4">vkGetImageMemoryRequirements</a></td></tr>
<tr class="separator:a475f6f49f8debe4d10800592606d53f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8084315a25006271a2edfc3a447519f"><td class="memItemLeft" align="right" valign="top">PFN_vkCreateBuffer&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_vulkan_functions.html#ae8084315a25006271a2edfc3a447519f">vkCreateBuffer</a></td></tr>
<tr class="separator:ae8084315a25006271a2edfc3a447519f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e054606faddb07f0e8556f3ed317d45"><td class="memItemLeft" align="right" valign="top">PFN_vkDestroyBuffer&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_vulkan_functions.html#a7e054606faddb07f0e8556f3ed317d45">vkDestroyBuffer</a></td></tr>
<tr class="separator:a7e054606faddb07f0e8556f3ed317d45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23ebe70be515b9b5010a1d691200e325"><td class="memItemLeft" align="right" valign="top">PFN_vkCreateImage&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_vulkan_functions.html#a23ebe70be515b9b5010a1d691200e325">vkCreateImage</a></td></tr>
<tr class="separator:a23ebe70be515b9b5010a1d691200e325"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90b898227039b1dcb3520f6e91f09ffa"><td class="memItemLeft" align="right" valign="top">PFN_vkDestroyImage&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_vulkan_functions.html#a90b898227039b1dcb3520f6e91f09ffa">vkDestroyImage</a></td></tr>
<tr class="separator:a90b898227039b1dcb3520f6e91f09ffa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a2943bf99dfd784a0e8f599d987e22e6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2943bf99dfd784a0e8f599d987e22e6c">&#9670;&nbsp;</a></span>vkAllocateMemory</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PFN_vkAllocateMemory VmaVulkanFunctions::vkAllocateMemory</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a94fc4f3a605d9880bb3c0ba2c2fc80b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94fc4f3a605d9880bb3c0ba2c2fc80b2">&#9670;&nbsp;</a></span>vkBindBufferMemory</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PFN_vkBindBufferMemory VmaVulkanFunctions::vkBindBufferMemory</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1338d96a128a5ade648b8d934907c637"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1338d96a128a5ade648b8d934907c637">&#9670;&nbsp;</a></span>vkBindImageMemory</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PFN_vkBindImageMemory VmaVulkanFunctions::vkBindImageMemory</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae8084315a25006271a2edfc3a447519f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae8084315a25006271a2edfc3a447519f">&#9670;&nbsp;</a></span>vkCreateBuffer</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PFN_vkCreateBuffer VmaVulkanFunctions::vkCreateBuffer</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a23ebe70be515b9b5010a1d691200e325"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a23ebe70be515b9b5010a1d691200e325">&#9670;&nbsp;</a></span>vkCreateImage</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PFN_vkCreateImage VmaVulkanFunctions::vkCreateImage</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7e054606faddb07f0e8556f3ed317d45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e054606faddb07f0e8556f3ed317d45">&#9670;&nbsp;</a></span>vkDestroyBuffer</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PFN_vkDestroyBuffer VmaVulkanFunctions::vkDestroyBuffer</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a90b898227039b1dcb3520f6e91f09ffa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a90b898227039b1dcb3520f6e91f09ffa">&#9670;&nbsp;</a></span>vkDestroyImage</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PFN_vkDestroyImage VmaVulkanFunctions::vkDestroyImage</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4c658701778564d62034255b5dda91b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c658701778564d62034255b5dda91b4">&#9670;&nbsp;</a></span>vkFreeMemory</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PFN_vkFreeMemory VmaVulkanFunctions::vkFreeMemory</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5b92901df89a4194b0d12f6071d4d143"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5b92901df89a4194b0d12f6071d4d143">&#9670;&nbsp;</a></span>vkGetBufferMemoryRequirements</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PFN_vkGetBufferMemoryRequirements VmaVulkanFunctions::vkGetBufferMemoryRequirements</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a475f6f49f8debe4d10800592606d53f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a475f6f49f8debe4d10800592606d53f4">&#9670;&nbsp;</a></span>vkGetImageMemoryRequirements</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PFN_vkGetImageMemoryRequirements VmaVulkanFunctions::vkGetImageMemoryRequirements</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a60d25c33bba06bb8592e6875cbaa9830"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60d25c33bba06bb8592e6875cbaa9830">&#9670;&nbsp;</a></span>vkGetPhysicalDeviceMemoryProperties</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PFN_vkGetPhysicalDeviceMemoryProperties VmaVulkanFunctions::vkGetPhysicalDeviceMemoryProperties</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a77b7a74082823e865dd6546623468f96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77b7a74082823e865dd6546623468f96">&#9670;&nbsp;</a></span>vkGetPhysicalDeviceProperties</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PFN_vkGetPhysicalDeviceProperties VmaVulkanFunctions::vkGetPhysicalDeviceProperties</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab5c1f38dea3a2cf00dc9eb4f57218c49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5c1f38dea3a2cf00dc9eb4f57218c49">&#9670;&nbsp;</a></span>vkMapMemory</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PFN_vkMapMemory VmaVulkanFunctions::vkMapMemory</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acc798589736f0becb317fc2196c1d8b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc798589736f0becb317fc2196c1d8b9">&#9670;&nbsp;</a></span>vkUnmapMemory</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PFN_vkUnmapMemory VmaVulkanFunctions::vkUnmapMemory</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="vk__mem__alloc_8h_source.html">vk_mem_alloc.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>

View File

@ -77,6 +77,8 @@ 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_device_memory_callbacks.html">VmaDeviceMemoryCallbacks</a></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_device_memory_callbacks.html">VmaDeviceMemoryCallbacks</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set of callbacks that the library will call for vkAllocateMemory and vkFreeMemory. <a href="struct_vma_device_memory_callbacks.html#details">More...</a><br /></td></tr> <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set of callbacks that the library will call for vkAllocateMemory and vkFreeMemory. <a href="struct_vma_device_memory_callbacks.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</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_vulkan_functions.html">VmaVulkanFunctions</a></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_allocator_create_info.html">VmaAllocatorCreateInfo</a></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_allocator_create_info.html">VmaAllocatorCreateInfo</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Description of a Allocator to be created. <a href="struct_vma_allocator_create_info.html#details">More...</a><br /></td></tr> <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Description of a Allocator to be created. <a href="struct_vma_allocator_create_info.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -124,11 +126,16 @@ Typedefs</h2></td></tr>
<tr class="separator:gac51ae2c316ee760ec5aebbae06d31253"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gac51ae2c316ee760ec5aebbae06d31253"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6ffbcb80208bf4467a1104087396cf59"><td class="memItemLeft" align="right" valign="top">typedef VkFlags&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__general.html#ga6ffbcb80208bf4467a1104087396cf59">VmaAllocatorFlags</a></td></tr> <tr class="memitem:ga6ffbcb80208bf4467a1104087396cf59"><td class="memItemLeft" align="right" valign="top">typedef VkFlags&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__general.html#ga6ffbcb80208bf4467a1104087396cf59">VmaAllocatorFlags</a></td></tr>
<tr class="separator:ga6ffbcb80208bf4467a1104087396cf59"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga6ffbcb80208bf4467a1104087396cf59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga97064a1a271b0061ebfc3a079862d0c5"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__general.html#ga97064a1a271b0061ebfc3a079862d0c5">VmaVulkanFunctions</a></td></tr>
<tr class="separator:ga97064a1a271b0061ebfc3a079862d0c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae0f6d1d733dded220d28134da46b4283"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__general.html#gae0f6d1d733dded220d28134da46b4283">VmaAllocatorCreateInfo</a></td></tr> <tr class="memitem:gae0f6d1d733dded220d28134da46b4283"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__general.html#gae0f6d1d733dded220d28134da46b4283">VmaAllocatorCreateInfo</a></td></tr>
<tr class="memdesc:gae0f6d1d733dded220d28134da46b4283"><td class="mdescLeft">&#160;</td><td class="mdescRight">Description of a Allocator to be created. <a href="group__general.html#gae0f6d1d733dded220d28134da46b4283">More...</a><br /></td></tr> <tr class="memdesc:gae0f6d1d733dded220d28134da46b4283"><td class="mdescLeft">&#160;</td><td class="mdescRight">Description of a Allocator to be created. <a href="group__general.html#gae0f6d1d733dded220d28134da46b4283">More...</a><br /></td></tr>
<tr class="separator:gae0f6d1d733dded220d28134da46b4283"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gae0f6d1d733dded220d28134da46b4283"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga810b009a788ee8aac72a25b42ffbe31c"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_stat_info.html">VmaStatInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__general.html#ga810b009a788ee8aac72a25b42ffbe31c">VmaStatInfo</a></td></tr> <tr class="memitem:ga810b009a788ee8aac72a25b42ffbe31c"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_stat_info.html">VmaStatInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__general.html#ga810b009a788ee8aac72a25b42ffbe31c">VmaStatInfo</a></td></tr>
<tr class="separator:ga810b009a788ee8aac72a25b42ffbe31c"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga810b009a788ee8aac72a25b42ffbe31c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga732be855fb4a7c248e6853d928a729af"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_vma_stats.html">VmaStats</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__general.html#ga732be855fb4a7c248e6853d928a729af">VmaStats</a></td></tr>
<tr class="memdesc:ga732be855fb4a7c248e6853d928a729af"><td class="mdescLeft">&#160;</td><td class="mdescRight">General statistics from current state of Allocator. <a href="group__general.html#ga732be855fb4a7c248e6853d928a729af">More...</a><br /></td></tr>
<tr class="separator:ga732be855fb4a7c248e6853d928a729af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad63b2113c0bfdbeade1cb498f5a8580d"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="group__layer1.html#gaa5846affa1e9da3800e3e78fae2305cc">VmaMemoryUsage</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__layer1.html#gad63b2113c0bfdbeade1cb498f5a8580d">VmaMemoryUsage</a></td></tr> <tr class="memitem:gad63b2113c0bfdbeade1cb498f5a8580d"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="group__layer1.html#gaa5846affa1e9da3800e3e78fae2305cc">VmaMemoryUsage</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__layer1.html#gad63b2113c0bfdbeade1cb498f5a8580d">VmaMemoryUsage</a></td></tr>
<tr class="separator:gad63b2113c0bfdbeade1cb498f5a8580d"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gad63b2113c0bfdbeade1cb498f5a8580d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabf6bf6748c7a9fe7ce5b7835c0f56af4"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="group__layer1.html#gad9889c10c798b040d59c92f257cae597">VmaAllocationCreateFlagBits</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__layer1.html#gabf6bf6748c7a9fe7ce5b7835c0f56af4">VmaAllocationCreateFlagBits</a></td></tr> <tr class="memitem:gabf6bf6748c7a9fe7ce5b7835c0f56af4"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="group__layer1.html#gad9889c10c798b040d59c92f257cae597">VmaAllocationCreateFlagBits</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__layer1.html#gabf6bf6748c7a9fe7ce5b7835c0f56af4">VmaAllocationCreateFlagBits</a></td></tr>

File diff suppressed because one or more lines are too long

View File

@ -378,6 +378,15 @@ your own implementation of basic facilities like assert, `min()` and `max()` fun
mutex etc. C++ STL is used by default, but changing these allows you to get rid mutex etc. C++ STL is used by default, but changing these allows you to get rid
of any STL usage if you want, as many game developers tend to do. of any STL usage if you want, as many game developers tend to do.
\subsection config_Vulkan_functions Pointers to Vulkan functions
The library uses Vulkan functions straight from the `vulkan.h` header by default.
If you want to provide your own pointers to these functions, e.g. fetched using
`vkGetInstanceProcAddr()` and `vkGetDeviceProcAddr()`:
-# Remove macro `VMA_STATIC_VULKAN_FUNCTIONS` from "CONFIGURATION SECTION".
-# Provide valid pointers through VmaAllocatorCreateInfo::pVulkanFunctions.
\subsection custom_memory_allocator Custom host memory allocator \subsection custom_memory_allocator Custom host memory allocator
If you use custom allocator for CPU memory rather than default operator `new` If you use custom allocator for CPU memory rather than default operator `new`
@ -463,6 +472,23 @@ typedef enum VmaAllocatorFlagBits {
} VmaAllocatorFlagBits; } VmaAllocatorFlagBits;
typedef VkFlags VmaAllocatorFlags; typedef VkFlags VmaAllocatorFlags;
typedef struct VmaVulkanFunctions {
PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;
PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
PFN_vkAllocateMemory vkAllocateMemory;
PFN_vkFreeMemory vkFreeMemory;
PFN_vkMapMemory vkMapMemory;
PFN_vkUnmapMemory vkUnmapMemory;
PFN_vkBindBufferMemory vkBindBufferMemory;
PFN_vkBindImageMemory vkBindImageMemory;
PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;
PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
PFN_vkCreateBuffer vkCreateBuffer;
PFN_vkDestroyBuffer vkDestroyBuffer;
PFN_vkCreateImage vkCreateImage;
PFN_vkDestroyImage vkDestroyImage;
} VmaVulkanFunctions;
/// Description of a Allocator to be created. /// Description of a Allocator to be created.
typedef struct VmaAllocatorCreateInfo typedef struct VmaAllocatorCreateInfo
{ {
@ -518,6 +544,18 @@ typedef struct VmaAllocatorCreateInfo
value of this limit will be reported instead when using vmaGetMemoryProperties(). value of this limit will be reported instead when using vmaGetMemoryProperties().
*/ */
const VkDeviceSize* pHeapSizeLimit; const VkDeviceSize* pHeapSizeLimit;
/** \brief Pointers to Vulkan functions. Can be null if you leave `#define VMA_STATIC_VULKAN_FUNCTIONS 1`.
If you leave `#define VMA_STATIC_VULKAN_FUNCTIONS 1` in configuration section,
you can pass null as this member, because the library will fetch pointers to
Vulkan functions internally in a static way, like:
vulkanFunctions.vkAllocateMemory = &vkAllocateMemory;
Fill this member if you want to provide your own pointers to Vulkan functions,
e.g. fetched using `vkGetInstanceProcAddr()` and `vkGetDeviceProcAddr()`.
*/
const VmaVulkanFunctions* pVulkanFunctions;
} VmaAllocatorCreateInfo; } VmaAllocatorCreateInfo;
/// Creates Allocator object. /// Creates Allocator object.
@ -1226,6 +1264,17 @@ Define some of these macros before each #include of this header or change them
here if you need other then default behavior depending on your environment. here if you need other then default behavior depending on your environment.
*/ */
/*
Define this macro to 1 to make the library fetch pointers to Vulkan functions
internally, like:
vulkanFunctions.vkAllocateMemory = &vkAllocateMemory;
Remove this macro if you are going to provide you own pointers to Vulkan
functions via VmaAllocatorCreateInfo::pVulkanFunctions.
*/
#define VMA_STATIC_VULKAN_FUNCTIONS 1
// Define this macro to 1 to make the library use STL containers instead of its own implementation. // Define this macro to 1 to make the library use STL containers instead of its own implementation.
//#define VMA_USE_STL_CONTAINERS 1 //#define VMA_USE_STL_CONTAINERS 1
@ -2866,25 +2915,8 @@ public:
bool CanBecomeLost() const; bool CanBecomeLost() const;
VmaPool GetPool() const; VmaPool GetPool() const;
VkResult OwnAllocMapPersistentlyMappedMemory(VkDevice hDevice) VkResult OwnAllocMapPersistentlyMappedMemory(VmaAllocator hAllocator);
{ void OwnAllocUnmapPersistentlyMappedMemory(VmaAllocator hAllocator);
VMA_ASSERT(m_Type == ALLOCATION_TYPE_OWN);
if(m_OwnAllocation.m_PersistentMap)
{
return vkMapMemory(hDevice, m_OwnAllocation.m_hMemory, 0, VK_WHOLE_SIZE, 0, &m_OwnAllocation.m_pMappedData);
}
return VK_SUCCESS;
}
void OwnAllocUnmapPersistentlyMappedMemory(VkDevice hDevice)
{
VMA_ASSERT(m_Type == ALLOCATION_TYPE_OWN);
if(m_OwnAllocation.m_pMappedData)
{
VMA_ASSERT(m_OwnAllocation.m_PersistentMap);
vkUnmapMemory(hDevice, m_OwnAllocation.m_hMemory);
m_OwnAllocation.m_pMappedData = VMA_NULL;
}
}
uint32_t GetLastUseFrameIndex() const uint32_t GetLastUseFrameIndex() const
{ {
@ -3175,8 +3207,7 @@ struct VmaBlockVector
size_t* pLostAllocationCount); size_t* pLostAllocationCount);
VmaDefragmentator* EnsureDefragmentator( VmaDefragmentator* EnsureDefragmentator(
VkDevice hDevice, VmaAllocator hAllocator,
const VkAllocationCallbacks* pAllocationCallbacks,
uint32_t currentFrameIndex); uint32_t currentFrameIndex);
VkResult Defragment( VkResult Defragment(
@ -3237,8 +3268,7 @@ public:
class VmaDefragmentator class VmaDefragmentator
{ {
const VkDevice m_hDevice; const VmaAllocator m_hAllocator;
const VkAllocationCallbacks* const m_pAllocationCallbacks;
VmaBlockVector* const m_pBlockVector; VmaBlockVector* const m_pBlockVector;
uint32_t m_CurrentFrameIndex; uint32_t m_CurrentFrameIndex;
VMA_BLOCK_VECTOR_TYPE m_BlockVectorType; VMA_BLOCK_VECTOR_TYPE m_BlockVectorType;
@ -3295,36 +3325,8 @@ class VmaDefragmentator
VMA_SORT(m_Allocations.begin(), m_Allocations.end(), AllocationInfoSizeGreater()); VMA_SORT(m_Allocations.begin(), m_Allocations.end(), AllocationInfoSizeGreater());
} }
VkResult EnsureMapping(VkDevice hDevice, void** ppMappedData) VkResult EnsureMapping(VmaAllocator hAllocator, void** ppMappedData);
{ void Unmap(VmaAllocator hAllocator);
// It has already been mapped for defragmentation.
if(m_pMappedDataForDefragmentation)
{
*ppMappedData = m_pMappedDataForDefragmentation;
return VK_SUCCESS;
}
// It is persistently mapped.
if(m_pBlock->m_PersistentMap)
{
VMA_ASSERT(m_pBlock->m_pMappedData != VMA_NULL);
*ppMappedData = m_pBlock->m_pMappedData;
return VK_SUCCESS;
}
// Map on first usage.
VkResult res = vkMapMemory(hDevice, m_pBlock->m_hMemory, 0, VK_WHOLE_SIZE, 0, &m_pMappedDataForDefragmentation);
*ppMappedData = m_pMappedDataForDefragmentation;
return res;
}
void Unmap(VkDevice hDevice)
{
if(m_pMappedDataForDefragmentation != VMA_NULL)
{
vkUnmapMemory(hDevice, m_pBlock->m_hMemory);
}
}
private: private:
// Not null if mapped for defragmentation only, not persistently mapped. // Not null if mapped for defragmentation only, not persistently mapped.
@ -3378,8 +3380,7 @@ class VmaDefragmentator
public: public:
VmaDefragmentator( VmaDefragmentator(
VkDevice hDevice, VmaAllocator hAllocator,
const VkAllocationCallbacks* pAllocationCallbacks,
VmaBlockVector* pBlockVector, VmaBlockVector* pBlockVector,
uint32_t currentFrameIndex); uint32_t currentFrameIndex);
@ -3429,6 +3430,10 @@ struct VmaAllocator_T
{ {
return m_AllocationCallbacksSpecified ? &m_AllocationCallbacks : 0; return m_AllocationCallbacksSpecified ? &m_AllocationCallbacks : 0;
} }
const VmaVulkanFunctions& GetVulkanFunctions() const
{
return m_VulkanFunctions;
}
VkDeviceSize GetBufferImageGranularity() const VkDeviceSize GetBufferImageGranularity() const
{ {
@ -3500,6 +3505,10 @@ private:
// Protected by m_PoolsMutex. Sorted by pointer value. // Protected by m_PoolsMutex. Sorted by pointer value.
VmaVector<VmaPool, VmaStlAllocator<VmaPool> > m_Pools; VmaVector<VmaPool, VmaStlAllocator<VmaPool> > m_Pools;
VmaVulkanFunctions m_VulkanFunctions;
void ImportVulkanFunctions(const VmaVulkanFunctions* pVulkanFunctions);
VkDeviceSize CalcPreferredBlockSize(uint32_t memTypeIndex); VkDeviceSize CalcPreferredBlockSize(uint32_t memTypeIndex);
VkResult AllocateMemoryOfType( VkResult AllocateMemoryOfType(
@ -3999,6 +4008,33 @@ VmaPool VmaAllocation_T::GetPool() const
return m_BlockAllocation.m_hPool; return m_BlockAllocation.m_hPool;
} }
VkResult VmaAllocation_T::OwnAllocMapPersistentlyMappedMemory(VmaAllocator hAllocator)
{
VMA_ASSERT(m_Type == ALLOCATION_TYPE_OWN);
if(m_OwnAllocation.m_PersistentMap)
{
return (*hAllocator->GetVulkanFunctions().vkMapMemory)(
hAllocator->m_hDevice,
m_OwnAllocation.m_hMemory,
0,
VK_WHOLE_SIZE,
0,
&m_OwnAllocation.m_pMappedData);
}
return VK_SUCCESS;
}
void VmaAllocation_T::OwnAllocUnmapPersistentlyMappedMemory(VmaAllocator hAllocator)
{
VMA_ASSERT(m_Type == ALLOCATION_TYPE_OWN);
if(m_OwnAllocation.m_pMappedData)
{
VMA_ASSERT(m_OwnAllocation.m_PersistentMap);
(*hAllocator->GetVulkanFunctions().vkUnmapMemory)(hAllocator->m_hDevice, m_OwnAllocation.m_hMemory);
m_OwnAllocation.m_pMappedData = VMA_NULL;
}
}
bool VmaAllocation_T::MakeLost(uint32_t currentFrameIndex, uint32_t frameInUseCount) bool VmaAllocation_T::MakeLost(uint32_t currentFrameIndex, uint32_t frameInUseCount)
{ {
VMA_ASSERT(CanBecomeLost()); VMA_ASSERT(CanBecomeLost());
@ -4166,7 +4202,7 @@ void VmaDeviceMemoryBlock::Destroy(VmaAllocator allocator)
VMA_ASSERT(m_hMemory != VK_NULL_HANDLE); VMA_ASSERT(m_hMemory != VK_NULL_HANDLE);
if(m_pMappedData != VMA_NULL) if(m_pMappedData != VMA_NULL)
{ {
vkUnmapMemory(allocator->m_hDevice, m_hMemory); (allocator->GetVulkanFunctions().vkUnmapMemory)(allocator->m_hDevice, m_hMemory);
m_pMappedData = VMA_NULL; m_pMappedData = VMA_NULL;
} }
@ -5469,7 +5505,6 @@ VkResult VmaBlockVector::CreateBlock(VkDeviceSize blockSize, size_t* pNewBlockIn
VkMemoryAllocateInfo allocInfo = { VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO }; VkMemoryAllocateInfo allocInfo = { VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO };
allocInfo.memoryTypeIndex = m_MemoryTypeIndex; allocInfo.memoryTypeIndex = m_MemoryTypeIndex;
allocInfo.allocationSize = blockSize; allocInfo.allocationSize = blockSize;
const VkDevice hDevice = m_hAllocator->m_hDevice;
VkDeviceMemory mem = VK_NULL_HANDLE; VkDeviceMemory mem = VK_NULL_HANDLE;
VkResult res = m_hAllocator->AllocateVulkanMemory(&allocInfo, &mem); VkResult res = m_hAllocator->AllocateVulkanMemory(&allocInfo, &mem);
if(res < 0) if(res < 0)
@ -5484,7 +5519,13 @@ VkResult VmaBlockVector::CreateBlock(VkDeviceSize blockSize, size_t* pNewBlockIn
const bool persistentMap = (m_BlockVectorType == VMA_BLOCK_VECTOR_TYPE_MAPPED); const bool persistentMap = (m_BlockVectorType == VMA_BLOCK_VECTOR_TYPE_MAPPED);
if(persistentMap && m_hAllocator->m_UnmapPersistentlyMappedMemoryCounter == 0) if(persistentMap && m_hAllocator->m_UnmapPersistentlyMappedMemoryCounter == 0)
{ {
res = vkMapMemory(hDevice, mem, 0, VK_WHOLE_SIZE, 0, &pMappedData); res = (*m_hAllocator->GetVulkanFunctions().vkMapMemory)(
m_hAllocator->m_hDevice,
mem,
0,
VK_WHOLE_SIZE,
0,
&pMappedData);
if(res < 0) if(res < 0)
{ {
VMA_DEBUG_LOG(" vkMapMemory FAILED"); VMA_DEBUG_LOG(" vkMapMemory FAILED");
@ -5585,7 +5626,7 @@ void VmaBlockVector::UnmapPersistentlyMappedMemory()
if(pBlock->m_pMappedData != VMA_NULL) if(pBlock->m_pMappedData != VMA_NULL)
{ {
VMA_ASSERT(pBlock->m_PersistentMap != false); VMA_ASSERT(pBlock->m_PersistentMap != false);
vkUnmapMemory(m_hAllocator->m_hDevice, pBlock->m_hMemory); (m_hAllocator->GetVulkanFunctions().vkUnmapMemory)(m_hAllocator->m_hDevice, pBlock->m_hMemory);
pBlock->m_pMappedData = VMA_NULL; pBlock->m_pMappedData = VMA_NULL;
} }
} }
@ -5602,7 +5643,13 @@ VkResult VmaBlockVector::MapPersistentlyMappedMemory()
if(pBlock->m_PersistentMap) if(pBlock->m_PersistentMap)
{ {
VMA_ASSERT(pBlock->m_pMappedData == nullptr); VMA_ASSERT(pBlock->m_pMappedData == nullptr);
VkResult localResult = vkMapMemory(m_hAllocator->m_hDevice, pBlock->m_hMemory, 0, VK_WHOLE_SIZE, 0, &pBlock->m_pMappedData); VkResult localResult = (*m_hAllocator->GetVulkanFunctions().vkMapMemory)(
m_hAllocator->m_hDevice,
pBlock->m_hMemory,
0,
VK_WHOLE_SIZE,
0,
&pBlock->m_pMappedData);
if(localResult != VK_SUCCESS) if(localResult != VK_SUCCESS)
{ {
finalResult = localResult; finalResult = localResult;
@ -5613,15 +5660,13 @@ VkResult VmaBlockVector::MapPersistentlyMappedMemory()
} }
VmaDefragmentator* VmaBlockVector::EnsureDefragmentator( VmaDefragmentator* VmaBlockVector::EnsureDefragmentator(
VkDevice hDevice, VmaAllocator hAllocator,
const VkAllocationCallbacks* pAllocationCallbacks,
uint32_t currentFrameIndex) uint32_t currentFrameIndex)
{ {
if(m_pDefragmentator == VMA_NULL) if(m_pDefragmentator == VMA_NULL)
{ {
m_pDefragmentator = vma_new(m_hAllocator, VmaDefragmentator)( m_pDefragmentator = vma_new(m_hAllocator, VmaDefragmentator)(
hDevice, hAllocator,
pAllocationCallbacks,
this, this,
currentFrameIndex); currentFrameIndex);
} }
@ -5733,18 +5778,16 @@ void VmaBlockVector::AddStats(VmaStats* pStats)
// VmaDefragmentator members definition // VmaDefragmentator members definition
VmaDefragmentator::VmaDefragmentator( VmaDefragmentator::VmaDefragmentator(
VkDevice hDevice, VmaAllocator hAllocator,
const VkAllocationCallbacks* pAllocationCallbacks,
VmaBlockVector* pBlockVector, VmaBlockVector* pBlockVector,
uint32_t currentFrameIndex) : uint32_t currentFrameIndex) :
m_hDevice(hDevice), m_hAllocator(hAllocator),
m_pAllocationCallbacks(pAllocationCallbacks),
m_pBlockVector(pBlockVector), m_pBlockVector(pBlockVector),
m_CurrentFrameIndex(currentFrameIndex), m_CurrentFrameIndex(currentFrameIndex),
m_BytesMoved(0), m_BytesMoved(0),
m_AllocationsMoved(0), m_AllocationsMoved(0),
m_Allocations(VmaStlAllocator<AllocationInfo>(pAllocationCallbacks)), m_Allocations(VmaStlAllocator<AllocationInfo>(hAllocator->GetAllocationCallbacks())),
m_Blocks(VmaStlAllocator<BlockInfo*>(pAllocationCallbacks)) m_Blocks(VmaStlAllocator<BlockInfo*>(hAllocator->GetAllocationCallbacks()))
{ {
} }
@ -5752,7 +5795,7 @@ VmaDefragmentator::~VmaDefragmentator()
{ {
for(size_t i = m_Blocks.size(); i--; ) for(size_t i = m_Blocks.size(); i--; )
{ {
vma_delete(m_pAllocationCallbacks, m_Blocks[i]); vma_delete(m_hAllocator, m_Blocks[i]);
} }
} }
@ -5764,6 +5807,43 @@ void VmaDefragmentator::AddAllocation(VmaAllocation hAlloc, VkBool32* pChanged)
m_Allocations.push_back(allocInfo); m_Allocations.push_back(allocInfo);
} }
VkResult VmaDefragmentator::BlockInfo::EnsureMapping(VmaAllocator hAllocator, void** ppMappedData)
{
// It has already been mapped for defragmentation.
if(m_pMappedDataForDefragmentation)
{
*ppMappedData = m_pMappedDataForDefragmentation;
return VK_SUCCESS;
}
// It is persistently mapped.
if(m_pBlock->m_PersistentMap)
{
VMA_ASSERT(m_pBlock->m_pMappedData != VMA_NULL);
*ppMappedData = m_pBlock->m_pMappedData;
return VK_SUCCESS;
}
// Map on first usage.
VkResult res = (*hAllocator->GetVulkanFunctions().vkMapMemory)(
hAllocator->m_hDevice,
m_pBlock->m_hMemory,
0,
VK_WHOLE_SIZE,
0,
&m_pMappedDataForDefragmentation);
*ppMappedData = m_pMappedDataForDefragmentation;
return res;
}
void VmaDefragmentator::BlockInfo::Unmap(VmaAllocator hAllocator)
{
if(m_pMappedDataForDefragmentation != VMA_NULL)
{
(hAllocator->GetVulkanFunctions().vkUnmapMemory)(hAllocator->m_hDevice, m_pBlock->m_hMemory);
}
}
VkResult VmaDefragmentator::DefragmentRound( VkResult VmaDefragmentator::DefragmentRound(
VkDeviceSize maxBytesToMove, VkDeviceSize maxBytesToMove,
uint32_t maxAllocationsToMove) uint32_t maxAllocationsToMove)
@ -5836,14 +5916,14 @@ VkResult VmaDefragmentator::DefragmentRound(
} }
void* pDstMappedData = VMA_NULL; void* pDstMappedData = VMA_NULL;
VkResult res = pDstBlockInfo->EnsureMapping(m_hDevice, &pDstMappedData); VkResult res = pDstBlockInfo->EnsureMapping(m_hAllocator, &pDstMappedData);
if(res != VK_SUCCESS) if(res != VK_SUCCESS)
{ {
return res; return res;
} }
void* pSrcMappedData = VMA_NULL; void* pSrcMappedData = VMA_NULL;
res = pSrcBlockInfo->EnsureMapping(m_hDevice, &pSrcMappedData); res = pSrcBlockInfo->EnsureMapping(m_hAllocator, &pSrcMappedData);
if(res != VK_SUCCESS) if(res != VK_SUCCESS)
{ {
return res; return res;
@ -5908,7 +5988,7 @@ VkResult VmaDefragmentator::Defragment(
const size_t blockCount = m_pBlockVector->m_Blocks.size(); const size_t blockCount = m_pBlockVector->m_Blocks.size();
for(size_t blockIndex = 0; blockIndex < blockCount; ++blockIndex) for(size_t blockIndex = 0; blockIndex < blockCount; ++blockIndex)
{ {
BlockInfo* pBlockInfo = vma_new(m_pAllocationCallbacks, BlockInfo)(m_pAllocationCallbacks); BlockInfo* pBlockInfo = vma_new(m_hAllocator, BlockInfo)(m_hAllocator->GetAllocationCallbacks());
pBlockInfo->m_pBlock = m_pBlockVector->m_Blocks[blockIndex]; pBlockInfo->m_pBlock = m_pBlockVector->m_Blocks[blockIndex];
m_Blocks.push_back(pBlockInfo); m_Blocks.push_back(pBlockInfo);
} }
@ -5957,7 +6037,7 @@ VkResult VmaDefragmentator::Defragment(
// Unmap blocks that were mapped for defragmentation. // Unmap blocks that were mapped for defragmentation.
for(size_t blockIndex = 0; blockIndex < blockCount; ++blockIndex) for(size_t blockIndex = 0; blockIndex < blockCount; ++blockIndex)
{ {
m_Blocks[blockIndex]->Unmap(m_hDevice); m_Blocks[blockIndex]->Unmap(m_hAllocator);
} }
return result; return result;
@ -6018,8 +6098,10 @@ VmaAllocator_T::VmaAllocator_T(const VmaAllocatorCreateInfo* pCreateInfo) :
m_DeviceMemoryCallbacks.pfnFree = pCreateInfo->pDeviceMemoryCallbacks->pfnFree; m_DeviceMemoryCallbacks.pfnFree = pCreateInfo->pDeviceMemoryCallbacks->pfnFree;
} }
vkGetPhysicalDeviceProperties(m_PhysicalDevice, &m_PhysicalDeviceProperties); ImportVulkanFunctions(pCreateInfo->pVulkanFunctions);
vkGetPhysicalDeviceMemoryProperties(m_PhysicalDevice, &m_MemProps);
(*m_VulkanFunctions.vkGetPhysicalDeviceProperties)(m_PhysicalDevice, &m_PhysicalDeviceProperties);
(*m_VulkanFunctions.vkGetPhysicalDeviceMemoryProperties)(m_PhysicalDevice, &m_MemProps);
m_PreferredLargeHeapBlockSize = (pCreateInfo->preferredLargeHeapBlockSize != 0) ? m_PreferredLargeHeapBlockSize = (pCreateInfo->preferredLargeHeapBlockSize != 0) ?
pCreateInfo->preferredLargeHeapBlockSize : static_cast<VkDeviceSize>(VMA_DEFAULT_LARGE_HEAP_BLOCK_SIZE); pCreateInfo->preferredLargeHeapBlockSize : static_cast<VkDeviceSize>(VMA_DEFAULT_LARGE_HEAP_BLOCK_SIZE);
@ -6079,6 +6161,48 @@ VmaAllocator_T::~VmaAllocator_T()
} }
} }
void VmaAllocator_T::ImportVulkanFunctions(const VmaVulkanFunctions* pVulkanFunctions)
{
#if VMA_STATIC_VULKAN_FUNCTIONS
m_VulkanFunctions.vkGetPhysicalDeviceProperties = &vkGetPhysicalDeviceProperties;
m_VulkanFunctions.vkGetPhysicalDeviceMemoryProperties = &vkGetPhysicalDeviceMemoryProperties;
m_VulkanFunctions.vkAllocateMemory = &vkAllocateMemory;
m_VulkanFunctions.vkFreeMemory = &vkFreeMemory;
m_VulkanFunctions.vkMapMemory = &vkMapMemory;
m_VulkanFunctions.vkUnmapMemory = &vkUnmapMemory;
m_VulkanFunctions.vkBindBufferMemory = &vkBindBufferMemory;
m_VulkanFunctions.vkBindImageMemory = &vkBindImageMemory;
m_VulkanFunctions.vkGetBufferMemoryRequirements = &vkGetBufferMemoryRequirements;
m_VulkanFunctions.vkGetImageMemoryRequirements = &vkGetImageMemoryRequirements;
m_VulkanFunctions.vkCreateBuffer = &vkCreateBuffer;
m_VulkanFunctions.vkDestroyBuffer = &vkDestroyBuffer;
m_VulkanFunctions.vkCreateImage = &vkCreateImage;
m_VulkanFunctions.vkDestroyImage = &vkDestroyImage;
#endif // #if VMA_STATIC_VULKAN_FUNCTIONS
if(pVulkanFunctions != VMA_NULL)
{
m_VulkanFunctions = *pVulkanFunctions;
}
// If these asserts are hit, you must either #define VMA_STATIC_VULKAN_FUNCTIONS 1
// or pass valid pointers as VmaAllocatorCreateInfo::pVulkanFunctions.
VMA_ASSERT(m_VulkanFunctions.vkGetPhysicalDeviceProperties != VMA_NULL);
VMA_ASSERT(m_VulkanFunctions.vkGetPhysicalDeviceMemoryProperties != VMA_NULL);
VMA_ASSERT(m_VulkanFunctions.vkAllocateMemory != VMA_NULL);
VMA_ASSERT(m_VulkanFunctions.vkFreeMemory != VMA_NULL);
VMA_ASSERT(m_VulkanFunctions.vkMapMemory != VMA_NULL);
VMA_ASSERT(m_VulkanFunctions.vkUnmapMemory != VMA_NULL);
VMA_ASSERT(m_VulkanFunctions.vkBindBufferMemory != VMA_NULL);
VMA_ASSERT(m_VulkanFunctions.vkBindImageMemory != VMA_NULL);
VMA_ASSERT(m_VulkanFunctions.vkGetBufferMemoryRequirements != VMA_NULL);
VMA_ASSERT(m_VulkanFunctions.vkGetImageMemoryRequirements != VMA_NULL);
VMA_ASSERT(m_VulkanFunctions.vkCreateBuffer != VMA_NULL);
VMA_ASSERT(m_VulkanFunctions.vkDestroyBuffer != VMA_NULL);
VMA_ASSERT(m_VulkanFunctions.vkCreateImage != VMA_NULL);
VMA_ASSERT(m_VulkanFunctions.vkDestroyImage != VMA_NULL);
}
VkDeviceSize VmaAllocator_T::CalcPreferredBlockSize(uint32_t memTypeIndex) VkDeviceSize VmaAllocator_T::CalcPreferredBlockSize(uint32_t memTypeIndex)
{ {
const uint32_t heapIndex = MemoryTypeIndexToHeapIndex(memTypeIndex); const uint32_t heapIndex = MemoryTypeIndexToHeapIndex(memTypeIndex);
@ -6410,7 +6534,7 @@ void VmaAllocator_T::UnmapPersistentlyMappedMemory()
for(size_t ownAllocIndex = pOwnAllocationsVector->size(); ownAllocIndex--; ) for(size_t ownAllocIndex = pOwnAllocationsVector->size(); ownAllocIndex--; )
{ {
VmaAllocation hAlloc = (*pOwnAllocationsVector)[ownAllocIndex]; VmaAllocation hAlloc = (*pOwnAllocationsVector)[ownAllocIndex];
hAlloc->OwnAllocUnmapPersistentlyMappedMemory(m_hDevice); hAlloc->OwnAllocUnmapPersistentlyMappedMemory(this);
} }
} }
@ -6464,7 +6588,7 @@ VkResult VmaAllocator_T::MapPersistentlyMappedMemory()
for(size_t ownAllocIndex = 0, ownAllocCount = pAllocationsVector->size(); ownAllocIndex < ownAllocCount; ++ownAllocIndex) for(size_t ownAllocIndex = 0, ownAllocCount = pAllocationsVector->size(); ownAllocIndex < ownAllocCount; ++ownAllocIndex)
{ {
VmaAllocation hAlloc = (*pAllocationsVector)[ownAllocIndex]; VmaAllocation hAlloc = (*pAllocationsVector)[ownAllocIndex];
hAlloc->OwnAllocMapPersistentlyMappedMemory(m_hDevice); hAlloc->OwnAllocMapPersistentlyMappedMemory(this);
} }
} }
@ -6541,10 +6665,7 @@ VkResult VmaAllocator_T::Defragment(
pAllocBlockVector = m_pBlockVectors[memTypeIndex][hAlloc->GetBlockVectorType()]; pAllocBlockVector = m_pBlockVectors[memTypeIndex][hAlloc->GetBlockVectorType()];
} }
VmaDefragmentator* const pDefragmentator = pAllocBlockVector->EnsureDefragmentator( VmaDefragmentator* const pDefragmentator = pAllocBlockVector->EnsureDefragmentator(this, currentFrameIndex);
m_hDevice,
GetAllocationCallbacks(),
currentFrameIndex);
VkBool32* const pChanged = (pAllocationsChanged != VMA_NULL) ? VkBool32* const pChanged = (pAllocationsChanged != VMA_NULL) ?
&pAllocationsChanged[allocIndex] : VMA_NULL; &pAllocationsChanged[allocIndex] : VMA_NULL;
@ -6750,7 +6871,7 @@ VkResult VmaAllocator_T::AllocateVulkanMemory(const VkMemoryAllocateInfo* pAlloc
VmaMutexLock lock(m_HeapSizeLimitMutex, m_UseMutex); VmaMutexLock lock(m_HeapSizeLimitMutex, m_UseMutex);
if(m_HeapSizeLimit[heapIndex] >= pAllocateInfo->allocationSize) if(m_HeapSizeLimit[heapIndex] >= pAllocateInfo->allocationSize)
{ {
res = vkAllocateMemory(m_hDevice, pAllocateInfo, GetAllocationCallbacks(), pMemory); res = (*m_VulkanFunctions.vkAllocateMemory)(m_hDevice, pAllocateInfo, GetAllocationCallbacks(), pMemory);
if(res == VK_SUCCESS) if(res == VK_SUCCESS)
{ {
m_HeapSizeLimit[heapIndex] -= pAllocateInfo->allocationSize; m_HeapSizeLimit[heapIndex] -= pAllocateInfo->allocationSize;
@ -6763,7 +6884,7 @@ VkResult VmaAllocator_T::AllocateVulkanMemory(const VkMemoryAllocateInfo* pAlloc
} }
else else
{ {
res = vkAllocateMemory(m_hDevice, pAllocateInfo, GetAllocationCallbacks(), pMemory); res = (*m_VulkanFunctions.vkAllocateMemory)(m_hDevice, pAllocateInfo, GetAllocationCallbacks(), pMemory);
} }
if(res == VK_SUCCESS && m_DeviceMemoryCallbacks.pfnAllocate != VMA_NULL) if(res == VK_SUCCESS && m_DeviceMemoryCallbacks.pfnAllocate != VMA_NULL)
@ -6781,7 +6902,7 @@ void VmaAllocator_T::FreeVulkanMemory(uint32_t memoryType, VkDeviceSize size, Vk
(*m_DeviceMemoryCallbacks.pfnFree)(this, memoryType, hMemory, size); (*m_DeviceMemoryCallbacks.pfnFree)(this, memoryType, hMemory, size);
} }
vkFreeMemory(m_hDevice, hMemory, GetAllocationCallbacks()); (*m_VulkanFunctions.vkFreeMemory)(m_hDevice, hMemory, GetAllocationCallbacks());
const uint32_t heapIndex = MemoryTypeIndexToHeapIndex(memoryType); const uint32_t heapIndex = MemoryTypeIndexToHeapIndex(memoryType);
if(m_HeapSizeLimit[heapIndex] != VK_WHOLE_SIZE) if(m_HeapSizeLimit[heapIndex] != VK_WHOLE_SIZE)
@ -6931,7 +7052,7 @@ static VkResult AllocateMemoryForImage(
VMA_ASSERT(allocator && (image != VK_NULL_HANDLE) && pAllocationCreateInfo && pAllocation); VMA_ASSERT(allocator && (image != VK_NULL_HANDLE) && pAllocationCreateInfo && pAllocation);
VkMemoryRequirements vkMemReq = {}; VkMemoryRequirements vkMemReq = {};
vkGetImageMemoryRequirements(allocator->m_hDevice, image, &vkMemReq); (*allocator->GetVulkanFunctions().vkGetImageMemoryRequirements)(allocator->m_hDevice, image, &vkMemReq);
return allocator->AllocateMemory( return allocator->AllocateMemory(
vkMemReq, vkMemReq,
@ -7308,7 +7429,7 @@ VkResult vmaAllocateMemoryForBuffer(
VMA_DEBUG_GLOBAL_MUTEX_LOCK VMA_DEBUG_GLOBAL_MUTEX_LOCK
VkMemoryRequirements vkMemReq = {}; VkMemoryRequirements vkMemReq = {};
vkGetBufferMemoryRequirements(allocator->m_hDevice, buffer, &vkMemReq); (*allocator->GetVulkanFunctions().vkGetBufferMemoryRequirements)(allocator->m_hDevice, buffer, &vkMemReq);
VkResult result = allocator->AllocateMemory( VkResult result = allocator->AllocateMemory(
vkMemReq, vkMemReq,
@ -7477,12 +7598,16 @@ VkResult vmaCreateBuffer(
*pAllocation = VK_NULL_HANDLE; *pAllocation = VK_NULL_HANDLE;
// 1. Create VkBuffer. // 1. Create VkBuffer.
VkResult res = vkCreateBuffer(allocator->m_hDevice, pBufferCreateInfo, allocator->GetAllocationCallbacks(), pBuffer); VkResult res = (*allocator->GetVulkanFunctions().vkCreateBuffer)(
allocator->m_hDevice,
pBufferCreateInfo,
allocator->GetAllocationCallbacks(),
pBuffer);
if(res >= 0) if(res >= 0)
{ {
// 2. vkGetBufferMemoryRequirements. // 2. vkGetBufferMemoryRequirements.
VkMemoryRequirements vkMemReq = {}; VkMemoryRequirements vkMemReq = {};
vkGetBufferMemoryRequirements(allocator->m_hDevice, *pBuffer, &vkMemReq); (*allocator->GetVulkanFunctions().vkGetBufferMemoryRequirements)(allocator->m_hDevice, *pBuffer, &vkMemReq);
// 3. Allocate memory using allocator. // 3. Allocate memory using allocator.
res = allocator->AllocateMemory( res = allocator->AllocateMemory(
@ -7493,7 +7618,11 @@ VkResult vmaCreateBuffer(
if(res >= 0) if(res >= 0)
{ {
// 3. Bind buffer with memory. // 3. Bind buffer with memory.
res = vkBindBufferMemory(allocator->m_hDevice, *pBuffer, (*pAllocation)->GetMemory(), (*pAllocation)->GetOffset()); res = (*allocator->GetVulkanFunctions().vkBindBufferMemory)(
allocator->m_hDevice,
*pBuffer,
(*pAllocation)->GetMemory(),
(*pAllocation)->GetOffset());
if(res >= 0) if(res >= 0)
{ {
// All steps succeeded. // All steps succeeded.
@ -7507,7 +7636,7 @@ VkResult vmaCreateBuffer(
*pAllocation = VK_NULL_HANDLE; *pAllocation = VK_NULL_HANDLE;
return res; return res;
} }
vkDestroyBuffer(allocator->m_hDevice, *pBuffer, allocator->GetAllocationCallbacks()); (*allocator->GetVulkanFunctions().vkDestroyBuffer)(allocator->m_hDevice, *pBuffer, allocator->GetAllocationCallbacks());
*pBuffer = VK_NULL_HANDLE; *pBuffer = VK_NULL_HANDLE;
return res; return res;
} }
@ -7527,7 +7656,7 @@ void vmaDestroyBuffer(
VMA_DEBUG_GLOBAL_MUTEX_LOCK VMA_DEBUG_GLOBAL_MUTEX_LOCK
vkDestroyBuffer(allocator->m_hDevice, buffer, allocator->GetAllocationCallbacks()); (*allocator->GetVulkanFunctions().vkDestroyBuffer)(allocator->m_hDevice, buffer, allocator->GetAllocationCallbacks());
allocator->FreeMemory(allocation); allocator->FreeMemory(allocation);
} }
@ -7551,7 +7680,11 @@ VkResult vmaCreateImage(
*pAllocation = VK_NULL_HANDLE; *pAllocation = VK_NULL_HANDLE;
// 1. Create VkImage. // 1. Create VkImage.
VkResult res = vkCreateImage(allocator->m_hDevice, pImageCreateInfo, allocator->GetAllocationCallbacks(), pImage); VkResult res = (*allocator->GetVulkanFunctions().vkCreateImage)(
allocator->m_hDevice,
pImageCreateInfo,
allocator->GetAllocationCallbacks(),
pImage);
if(res >= 0) if(res >= 0)
{ {
VmaSuballocationType suballocType = pImageCreateInfo->tiling == VK_IMAGE_TILING_OPTIMAL ? VmaSuballocationType suballocType = pImageCreateInfo->tiling == VK_IMAGE_TILING_OPTIMAL ?
@ -7563,7 +7696,11 @@ VkResult vmaCreateImage(
if(res >= 0) if(res >= 0)
{ {
// 3. Bind image with memory. // 3. Bind image with memory.
res = vkBindImageMemory(allocator->m_hDevice, *pImage, (*pAllocation)->GetMemory(), (*pAllocation)->GetOffset()); res = (*allocator->GetVulkanFunctions().vkBindImageMemory)(
allocator->m_hDevice,
*pImage,
(*pAllocation)->GetMemory(),
(*pAllocation)->GetOffset());
if(res >= 0) if(res >= 0)
{ {
// All steps succeeded. // All steps succeeded.
@ -7577,7 +7714,7 @@ VkResult vmaCreateImage(
*pAllocation = VK_NULL_HANDLE; *pAllocation = VK_NULL_HANDLE;
return res; return res;
} }
vkDestroyImage(allocator->m_hDevice, *pImage, allocator->GetAllocationCallbacks()); (*allocator->GetVulkanFunctions().vkDestroyImage)(allocator->m_hDevice, *pImage, allocator->GetAllocationCallbacks());
*pImage = VK_NULL_HANDLE; *pImage = VK_NULL_HANDLE;
return res; return res;
} }
@ -7597,7 +7734,7 @@ void vmaDestroyImage(
VMA_DEBUG_GLOBAL_MUTEX_LOCK VMA_DEBUG_GLOBAL_MUTEX_LOCK
vkDestroyImage(allocator->m_hDevice, image, allocator->GetAllocationCallbacks()); (*allocator->GetVulkanFunctions().vkDestroyImage)(allocator->m_hDevice, image, allocator->GetAllocationCallbacks());
allocator->FreeMemory(allocation); allocator->FreeMemory(allocation);
} }