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.