Vulkan Memory Allocator

Drivers, SDKs and Libraries

The Vulkan Memory Allocator (VMA) library provides a simple and easy to integrate API to help you allocate memory for Vulkan buffer and image storage.

Currently at version 2.3.0, VMA has the following key features:

  • Easy allocation of buffer and image storage
  • Well documented single header file for the API
  • STL-compatible containers to ease integration
  • Working with Vulkan 1.0 as well as 1.1
  • Support for many extensions, including VK_EXT_memory_budget
  • Support for custom memory pools
  • Support for defragmenting allocations
  • Support for a linear allocation strategy on custom pools
  • Detailed statistics, internal state dump in JSON format and a tool for its visualisation
  • Record and replay allocations, for in-depth analysis of memory usage, resource transitions, etc.
  • Support for non-coherent memory and flushing/invalidating allocations
  • Support for attempting to detect incorrect mapped memory usage

The library is battle tested by virtue of its integration into a majority of Vulkan game titles on PC, and also the Google Filament rendering engine, the official Khronos® Group Vulkan Samples, and many other open source projects for Android, Linux, MacOS and Windows. VMA is MIT licensed.

The GitHub repository also includes a sample that shows how the library can be used.

Read the v2.3.0 for more information and example code!