Adam Sawicki edited this page Dec 12, 2018 · 7 revisions

Welcome to the Vulkan Memory Allocator wiki! This wiki describes development and contribution process for the library. For technical documentation, see Vulkan Memory Allocator documentation.

Development model

Continuous development happens in this GitHub repository, with incremental changes committed and pushed immediately. Branching model:

  • Stable releases are marked with Git tags and added as Releases.
    • They have version number updated, continuous integration and tests passing, HTML documentation regenerated from Doxygen comments, and binaries rebuilt.
    • Using latest release is recommended if you need a stable version of this library that you don't want to update too often.
  • "master" branch contains latest version of the code with incremental, standalone updates (bugfixes, additions etc.) since the last release.
    • It is subject to continuous integration builds on Windows and Linux.
    • Online browsable documentation comes from this branch.
    • Theoretically it may be unstable, have bugs, compatibility issues with various compilers, and it subject to change any time, but in practice most of the time it builds and works correctly and it is backward compatible with latest release.
    • It may have version number not bumped. It may also have HTML documentation and binaries not updated, so it is recommended to update them manually if needed.
    • Using head of this branch is recommended if you want to have version of the library with latest bugfixes and features.
  • Additional branches are used for development of more complex features that take long time and many commits to finish, or changes that are not yet decided if they are going to be included into the library in the exact form as they are implemented.
    • They are occasionally updated with latest code from "master" and they are eventually merged into "master" and deleted.
    • Using them is recommended only if you need a certain feature before its development is finished.

The library uses Semantic Versioning for version numbers. Releases with MINOR and not MAJOR version changed are backward-compatible, but they may include new members added to structures, so please consider API to be compatible on C language level not binary-compatible and always initialize your structures to zeros before using.


Contributions to the project are welcomed. Any bugs, compatibility issues, suggestions for improvement, new ideas, or just questions about the library can be submitted as:

Please note that there is a list of features deliberately left out of scope of this project - see Features not supported documentation section. VMA is a C++ library with C interface. Bindings or ports to different programming languages are welcomed as external projects and are not going to be included into this repository.


Adam Sawicki (Developer Technology Engineer, AMD)
E-mail: adam <dot> sawicki <at> amd <dot> com
Twitter: @Reg__

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.