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

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

=== Other Extension Metadata

*Last Modified Date*::
    2018-04-09
*Interactions and External Dependencies*::
  - Promoted to Vulkan 1.2 Core
*Contributors*::
  - Jan-Harald Fredriksen, Arm
  - Andrew Garrard, Samsung Electronics
  - Soowan Park, Samsung Electronics
  - Jeff Bolz, NVIDIA
  - Daniel Rakos, AMD

=== Description

This extension adds support for automatically resolving multisampled
depth/stencil attachments in a subpass in a similar manner as for color
attachments.

Multisampled color attachments can be resolved at the end of a subpass by
specifying pname:pResolveAttachments entries corresponding to the
pname:pColorAttachments array entries.
This does not allow for a way to map the resolve attachments to the
depth/stencil attachment.
The flink:vkCmdResolveImage command does not allow for depth/stencil images.
While there are other ways to resolve the depth/stencil attachment, they can
give sub-optimal performance.
Extending the sname:VkSubpassDescription2 in this extension allows an
application to add a pname:pDepthStencilResolveAttachment, that is similar
to the color pname:pResolveAttachments, that the
pname:pDepthStencilAttachment can be resolved into.

Depth and stencil samples are resolved to a single value based on the
resolve mode.
The set of possible resolve modes is defined in the
elink:VkResolveModeFlagBits enum.
The ename:VK_RESOLVE_MODE_SAMPLE_ZERO_BIT mode is the only mode that is
required of all implementations (that support the extension or support
Vulkan 1.2 or higher).
Some implementations may also support averaging (the same as color sample
resolve) or taking the minimum or maximum sample, which may be more suitable
for depth/stencil resolve.

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

=== Version History

 * Revision 1, 2018-04-09 (Jan-Harald Fredriksen)
   - Initial revision

ifdef::isrefpage[]

=== Additional Resources

* GDC 2019
** https://www.youtube.com/watch?v=GnnEmJFFC7Q&feature=youtu.be&t=1983[`video`]
** https://www.khronos.org/assets/uploads/developers/library/2019-gdc/Vulkan-Depth-Stencil-Resolve-GDC-Mar19.pdf[`slides`]

endif::isrefpage[]
