Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
9
9747765
  • Project overview
    • Project overview
    • Details
    • Activity
  • Issues 44
    • Issues 44
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Package Registry
  • Analytics
    • Analytics
    • CI / CD
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Create a new issue
  • Jobs
  • Issue Boards
  • Noreen Freitas
  • 9747765
  • Issues
  • #33

Closed
Open
Opened Sep 18, 2025 by Noreen Freitas@noreenfreitasMaintainer
  • Report abuse
  • New issue
Report abuse New issue

GitHub - GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator: Easy To Combine Vulkan Memory Allocation Library


Simple to integrate Vulkan memory allocation library. It requires a lot of boilerplate code, similar to everything else in Vulkan, because it's a low-level and excessive-performance API. There's additional level of indirection: VkDeviceMemory is allocated separately from creating VkBuffer/VkImage they usually have to be sure collectively. Driver have to be queried for supported memory heaps and memory types. Totally different GPU distributors provide several types of it. It is recommended to allocate greater chunks of memory and Memory Wave assign parts of them to specific assets, as there is a restrict on maximum variety of memory blocks that may be allotted. 1. Features that assist to decide on appropriate and optimal memory sort based mostly on intended utilization of the memory. Required or preferred traits of the memory are expressed using greater-stage description comparing to Vulkan flags. Library retains monitor of allotted memory blocks, used and unused ranges inside them, Memory Wave finds best matching unused ranges for brand new allocations, respects all the foundations of alignment and buffer/picture granularity.


3. Capabilities that can create an image/buffer, allocate memory for it and bind them collectively - multi functional name. Effectively-documented - description of all features and constructions provided, along with chapters that comprise common description and instance code. Thread-security: Library is designed to be used in multithreaded code. Entry to a single system memory block referred by different buffers and textures (binding, mapping) is synchronized internally. Memory mapping is reference-counted. Configuration: Fill non-compulsory members of VmaAllocatorCreateInfo construction to supply custom CPU memory allocator, pointers to Vulkan functions and other parameters. Customization and integration with custom engines: Predefine applicable macros to offer your individual implementation of all external amenities utilized by the library like assert, mutex, atomic. Help for memory mapping, reference-counted internally. Help for persistently mapped memory: Simply allocate with applicable flag and access the pointer to already mapped memory. Help for non-coherent memory. Capabilities that flush/invalidate memory. CoherentAtomSize is revered mechanically.
reference.com


Help for useful resource aliasing (overlap). Support for sparse binding and sparse residency: Comfort capabilities that allocate or free a number of memory pages directly. Custom memory pools: Create a pool with desired parameters (e.g. mounted or restricted most size) and allocate memory out of it. Linear allocator: Create a pool with linear algorithm and use it for much faster allocations and deallocations in free-at-as soon as, stack, double stack, or ring buffer trend. Just enable it and it will be used mechanically by the library. Used internally if out there to query for present usage and budget. If not available, it falls again to an estimation primarily based on memory heap sizes. KHR is robotically added to memory allocations the place wanted. Set precedence of allocations or custom pools and it will be set mechanically using this extension. Public interface in C, in similar convention as Vulkan API. Error handling carried out by returning VkResult error codes - identical means as in Vulkan.


Interface documented utilizing Doxygen-style comments. Platform-impartial, however developed and examined on Home windows utilizing Visual Studio. Steady integration setup for Windows and Linux. Used also on Android, MacOS, brainwave audio program and other platforms. Basic usage of this library is quite simple. Superior options are non-compulsory. VkDeviceMemory block is allocated if needed. 1. An unused region of the memory block is certain to this buffer. VmaAllocation is an object that represents memory assigned to this buffer. It may be queried for parameters like VkDeviceMemory handle and offset. On Windows it is suggested to make use of CMake GUI. This mechanically handles configuring the embody listing. For extra information on utilizing CMake visit the official CMake documentation. The VulkanMemoryAllocator port in vcpkg is saved up to date by Microsoft group members and neighborhood contributors. If the model is out of date, please create a problem or pull request on the vcpkg repository. The release comes with precompiled binary executable for "VulkanSample" software which accommodates check suite. Vulkan Samples - official Khronos Vulkan samples.

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: noreenfreitas/9747765#33