mirror of
https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
synced 2024-11-05 04:10:06 +00:00
92 lines
6.4 KiB
Markdown
92 lines
6.4 KiB
Markdown
# 2.2.0 (TODO)
|
|
|
|
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:
|
|
|
|
- New, more powerful defragmentation:
|
|
- Added structure `VmaDefragmentationInfo2`, functions `vmaDefragmentationBegin`, `vmaDefragmentationEnd`.
|
|
- Added support for defragmentation of GPU memory.
|
|
- Defragmentation of CPU memory now uses `memmove`, so it can move data to overlapping regions.
|
|
- Defragmentation of CPU memory is now available for memory types that are `HOST_VISIBLE` but not `HOST_COHERENT`.
|
|
- Added structure member `VmaVulkanFunctions::vkCmdCopyBuffer`.
|
|
- Major internal changes in defragmentation algorithm.
|
|
- VmaReplay: added parameters: `--DefragmentAfterLine`, `--DefragmentationFlags`.
|
|
- Old interface (structure `VmaDefragmentationInfo`, function `vmaDefragment`) is now deprecated.
|
|
- Added buddy algorithm, available for custom pools - flag `VMA_POOL_CREATE_BUDDY_ALGORITHM_BIT`.
|
|
- Added convenience functions for multiple allocations and deallocations at once, intended for sparse binding resources - functions `vmaAllocateMemoryPages`, `vmaFreeMemoryPages`.
|
|
- Added function that tries to resize existing allocation in place: `vmaResizeAllocation`.
|
|
- Added flags for allocation strategy: `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:
|
|
|
|
- Changed behavior of allocation functions to return `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.
|
|
- VmaReplay: Added support for Windows end of lines.
|
|
- Updated recording CSV file format version to 1.5, to support new functions.
|
|
- Internal optimization: using read-write mutex on some platforms.
|
|
- Many additions and fixes in documentation. Many compatibility fixes for various compilers. Other internal bugfixes, optimizations, refactoring, added more internal validation...
|
|
|
|
# 2.1.0 (2018-09-10)
|
|
|
|
Minor bugfixes.
|
|
|
|
# 2.1.0-beta.1 (2018-08-27)
|
|
|
|
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:
|
|
|
|
- Added linear allocation algorithm, accessible for custom pools, that can be used as free-at-once, stack, double stack, or ring buffer. See "Linear allocation algorithm" documentation chapter.
|
|
- Added `VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT`, `VMA_ALLOCATION_CREATE_UPPER_ADDRESS_BIT`.
|
|
- Added feature to record sequence of calls to the library to a file and replay it using dedicated application. See documentation chapter "Record and replay".
|
|
- Recording: added `VmaAllocatorCreateInfo::pRecordSettings`.
|
|
- Replaying: added VmaReplay project.
|
|
- Recording file format: added document "docs/Recording file format.md".
|
|
- Improved support for non-coherent memory.
|
|
- Added functions: `vmaFlushAllocation`, `vmaInvalidateAllocation`.
|
|
- `nonCoherentAtomSize` is now respected automatically.
|
|
- Added `VmaVulkanFunctions::vkFlushMappedMemoryRanges`, `vkInvalidateMappedMemoryRanges`.
|
|
- Improved debug features related to detecting incorrect mapped memory usage. See documentation chapter "Debugging incorrect memory usage".
|
|
- Added debug macro `VMA_DEBUG_DETECT_CORRUPTION`, functions `vmaCheckCorruption`, `vmaCheckPoolCorruption`.
|
|
- Added debug macro `VMA_DEBUG_INITIALIZE_ALLOCATIONS` to initialize contents of allocations with a bit pattern.
|
|
- Changed behavior of `VMA_DEBUG_MARGIN` macro - it now adds margin also before first and after last allocation in a block.
|
|
- Changed format of JSON dump returned by `vmaBuildStatsString` (not backward compatible!).
|
|
- Custom pools and memory blocks now have IDs that don't change after sorting.
|
|
- Added properties: "CreationFrameIndex", "LastUseFrameIndex", "Usage".
|
|
- Changed VmaDumpVis tool to use these new properties for better coloring.
|
|
- Changed behavior of `vmaGetAllocationInfo` and `vmaTouchAllocation` to update `allocation.lastUseFrameIndex` even if allocation cannot become lost.
|
|
|
|
Minor changes:
|
|
|
|
- Changes in custom pools:
|
|
- Added new structure member `VmaPoolStats::blockCount`.
|
|
- Changed behavior of `VmaPoolCreateInfo::blockSize` = 0 (default) - it now means that pool may use variable block sizes, just like default pools do.
|
|
- Improved logic of `vmaFindMemoryTypeIndex` for some cases, especially integrated GPUs.
|
|
- VulkanSample application: Removed dependency on external library MathFu. Added own vector and matrix structures.
|
|
- Changes that improve compatibility with various platforms, including: Visual Studio 2012, 32-bit code, C compilers.
|
|
- Changed usage of "VK_KHR_dedicated_allocation" extension in the code to be optional, driven by macro `VMA_DEDICATED_ALLOCATION`, for compatibility with Android.
|
|
- Many additions and fixes in documentation, including description of new features, as well as "Validation layer warnings".
|
|
- Other bugfixes.
|
|
|
|
# 2.0.0 (2018-03-19)
|
|
|
|
A major release with many compatibility-breaking changes.
|
|
|
|
Notable new features:
|
|
|
|
- Introduction of `VmaAllocation` handle that you must retrieve from allocation functions and pass to deallocation functions next to normal `VkBuffer` and `VkImage`.
|
|
- Introduction of `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.
|
|
- Support for reference-counted mapping and persistently mapped allocations - see `vmaMapMemory`, `VMA_ALLOCATION_CREATE_MAPPED_BIT`.
|
|
- Support for custom memory pools - see `VmaPool` handle, `VmaPoolCreateInfo` structure, `vmaCreatePool` function.
|
|
- Support for defragmentation (compaction) of allocations - see function `vmaDefragment` and related structures.
|
|
- Support for "lost allocations" - see appropriate chapter on documentation Main Page.
|
|
|
|
# 1.0.1 (2017-07-04)
|
|
|
|
- Fixes for Linux GCC compilation.
|
|
- Changed "CONFIGURATION SECTION" to contain #ifndef so you can define these macros before including this header, not necessarily change them in the file.
|
|
|
|
# 1.0.0 (2017-06-16)
|
|
|
|
First public release.
|