Major release after a year of development in “master” branch and feature branches. Notable new features: supporting Vulkan 1.1, supporting query for memory budget.
Major changes:
VmaAllocatorCreateInfo::vulkanApiVersion.vmaGetBudget, structure VmaBudget. This can also serve as simple statistics, more efficient than vmaCalculateStats.VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT flag and VmaAllocatorCreateInfo::instance member.VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT that fails an allocation if it would exceed the budget.VMA_MEMORY_USAGE_CPU_COPY for memory that is preferably not DEVICE_LOCAL but not guaranteed to be HOST_VISIBLE.VMA_MEMORY_USAGE_GPU_LAZILY_ALLOCATED for memory that is LAZILY_ALLOCATED.VMA_ALLOCATION_CREATE_DONT_BIND_BIT flag that lets you create both buffer/image and allocation, but don't bind them together.VMA_ALLOCATOR_CREATE_KHR_BIND_MEMORY2_BIT, functions vmaBindBufferMemory2, vmaBindImageMemory2 that let you specify additional local offset and pNext pointer while binding.vmaSetPoolName, vmaGetPoolName that let you assign string names to custom pools. JSON dump file format and VmaDumpVis tool is updated to show these names.VK_IMAGE_TILING_LINEAR. This is due to the way it is currently implemented in the library and the restrictions of the Vulkan specification. Clarified documentation in this regard. See discussion in #59.Minor changes:
vmaResizeAllocation function deprecated, always returning failure.HOST_VISIBLE or HOST_COHERENT if it's not stated as always ensured by some VMA_MEMORY_USAGE_* flag.VMA_CALL_PRE, VMA_CALL_POST that let you decorate declarations of all library functions if you want to e.g. export/import them as dynamically linked library.VmaAllocation objects to be allocated out of an internal free-list allocator. This makes allocation and deallocation causing 0 dynamic CPU heap allocations on average.Major release after many months of development in “master” branch and feature branches. Notable new features: defragmentation of GPU memory, buddy algorithm, convenience functions for sparse binding.
Major changes:
VmaDefragmentationInfo2, functions vmaDefragmentationBegin, vmaDefragmentationEnd.memmove, so it can move data to overlapping regions.HOST_VISIBLE but not HOST_COHERENT.VmaVulkanFunctions::vkCmdCopyBuffer.--DefragmentAfterLine, --DefragmentationFlags.VmaDefragmentationInfo, function vmaDefragment) is now deprecated.VMA_POOL_CREATE_BUDDY_ALGORITHM_BIT.vmaAllocateMemoryPages, vmaFreeMemoryPages.vmaResizeAllocation.VMA_ALLOCATION_CREATE_STRATEGY_BEST_FIT_BIT, VMA_ALLOCATION_CREATE_STRATEGY_WORST_FIT_BIT, VMA_ALLOCATION_CREATE_STRATEGY_FIRST_FIT_BIT, and their aliases: VMA_ALLOCATION_CREATE_STRATEGY_MIN_MEMORY_BIT, VMA_ALLOCATION_CREATE_STRATEGY_MIN_TIME_BIT, VMA_ALLOCATION_CREATE_STRATEGY_MIN_FRAGMENTATION_BIT.Minor changes:
VK_ERROR_VALIDATION_FAILED_EXT when trying to allocate memory of size 0, create buffer with size 0, or image with one of the dimensions 0.Minor bugfixes.
Major release after many months of development in “development” branch and features branches. Many new features added, some bugs fixed. API stays backward-compatible.
Major changes:
VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT, VMA_ALLOCATION_CREATE_UPPER_ADDRESS_BIT.VmaAllocatorCreateInfo::pRecordSettings.vmaFlushAllocation, vmaInvalidateAllocation.nonCoherentAtomSize is now respected automatically.VmaVulkanFunctions::vkFlushMappedMemoryRanges, vkInvalidateMappedMemoryRanges.VMA_DEBUG_DETECT_CORRUPTION, functions vmaCheckCorruption, vmaCheckPoolCorruption.VMA_DEBUG_INITIALIZE_ALLOCATIONS to initialize contents of allocations with a bit pattern.VMA_DEBUG_MARGIN macro - it now adds margin also before first and after last allocation in a block.vmaBuildStatsString (not backward compatible!).vmaGetAllocationInfo and vmaTouchAllocation to update allocation.lastUseFrameIndex even if allocation cannot become lost.Minor changes:
VmaPoolStats::blockCount.VmaPoolCreateInfo::blockSize = 0 (default) - it now means that pool may use variable block sizes, just like default pools do.vmaFindMemoryTypeIndex for some cases, especially integrated GPUs.VMA_DEDICATED_ALLOCATION, for compatibility with Android.A major release with many compatibility-breaking changes.
Notable new features:
VmaAllocation handle that you must retrieve from allocation functions and pass to deallocation functions next to normal VkBuffer and VkImage.VmaAllocationInfo structure that you can retrieve from VmaAllocation handle to access parameters of the allocation (like VkDeviceMemory and offset) instead of retrieving them directly from allocation functions.vmaMapMemory, VMA_ALLOCATION_CREATE_MAPPED_BIT.VmaPool handle, VmaPoolCreateInfo structure, vmaCreatePool function.vmaDefragment and related structures.First public release.