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

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

=== Other Extension Metadata

*Last Modified Date*::
    2019-06-25
*Interactions and External Dependencies*::
  - Promoted to Vulkan 1.2 Core
*Contributors*::
  - Daniel Koch, NVIDIA
  - Jeff Bolz, NVIDIA
  - Jesse Barker, Unity
  - Tobias Hector, AMD

=== Description

This extension allows image memory barriers for depth/stencil images to have
just one of the ename:VK_IMAGE_ASPECT_DEPTH_BIT or
ename:VK_IMAGE_ASPECT_STENCIL_BIT aspect bits set, rather than require both.
This allows their layouts to be set independently.
To support depth/stencil images with different layouts for the depth and
stencil aspects, the depth/stencil attachment interface has been updated to
support a separate layout for stencil.

=== Promotion to Vulkan 1.2

All functionality in this extension is included in core Vulkan 1.2, 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_separate_depth_stencil_layouts.txt[]

=== Version History

  * Revision 1, 2019-06-25 (Piers Daniell)
    - Internal revisions
