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

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

=== Other Extension Metadata

*Last Modified Date*::
    2017-09-05
*IP Status*::
    No known IP claims.
*Interactions and External Dependencies*::
  - Promoted to Vulkan 1.1 Core
*Contributors*::
  - Jason Ekstrand, Intel
  - Jeff Bolz, NVIDIA
  - Jesse Hall, Google

=== Description

This extension provides new entry points to query memory requirements of
images and buffers in a way that can be easily extended by other extensions,
without introducing any further entry points.
The Vulkan 1.0 slink:VkMemoryRequirements and
slink:VkSparseImageMemoryRequirements structures do not include pname:sType
and pname:pNext members.
This extension wraps them in new structures with these members, so an
application can query a chain of memory requirements structures by
constructing the chain and letting the implementation fill them in.
A new command is added for each ftext:vkGet*MemoryRequrements command in
core Vulkan 1.0.

=== Promotion to Vulkan 1.1

All functionality in this extension is included in core Vulkan 1.1, with the
KHR suffix omitted.
The original type, enum and command names are still available as aliases of
the core functionality.

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

=== Version History

 * Revision 1, 2017-03-23 (Jason Ekstrand)
   - Internal revisions
