// Copyright 2018-2021 The Khronos Group, Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_EXT_memory_budget.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2018-10-08
*Contributors*::
  - Jeff Bolz, NVIDIA
  - Jeff Juliano, NVIDIA

=== Description

While running a Vulkan application, other processes on the machine might
also be attempting to use the same device memory, which can pose problems.
This extension adds support for querying the amount of memory used and the
total memory budget for a memory heap.
The values returned by this query are implementation-dependent and can
depend on a variety of factors including operating system and system load.

The slink:VkPhysicalDeviceMemoryBudgetPropertiesEXT::pname:heapBudget values
can be used as a guideline for how much total memory from each heap the
**current process** can use at any given time, before allocations may start
failing or causing performance degradation.
The values may change based on other activity in the system that is outside
the scope and control of the Vulkan implementation.

The slink:VkPhysicalDeviceMemoryBudgetPropertiesEXT::pname:heapUsage will
display the **current process** estimated heap usage.

With this information, the idea is for an application at some interval (once
per frame, per few seconds, etc) to query pname:heapBudget and
pname:heapUsage.
From here the application can notice if it is over budget and decide how it
wants to handle the memory situation (free it, move to host memory, changing
mipmap levels, etc).
This extension is designed to be used in concert with
`apiext:VK_EXT_memory_priority` to help with this part of memory management.

include::{generated}/interfaces/VK_EXT_memory_budget.txt[]

=== Version History

 * Revision 1, 2018-10-08 (Jeff Bolz)
   - Initial revision
