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

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

=== Other Extension Metadata

*Last Modified Date*::
    2017-09-05
*Interactions and External Dependencies*::
  - Promoted to Vulkan 1.1 Core
*Contributors*::
  - Jeff Bolz, NVIDIA

=== Description

`VK_KHR_maintenance3` adds a collection of minor features that were
intentionally left out or overlooked from the original Vulkan 1.0 release.

The new features are as follows:

  * A limit on the maximum number of descriptors that are supported in a
    single descriptor set layout.
    Some implementations have a limit on the total size of descriptors in a
    set, which cannot be expressed in terms of the limits in Vulkan 1.0.
  * A limit on the maximum size of a single memory allocation.
    Some platforms have kernel interfaces that limit the maximum size of an
    allocation.

=== 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_maintenance3.txt[]

=== Version History

 * Revision 1, 2017-08-22
