VK_KHR_depth_stencil_resolve(3)

# VK_KHR_depth_stencil_resolve(3) Manual Page

## Name

VK_KHR_depth_stencil_resolve - device extension

## Registered Extension Number

200

## Revision

1

## Ratification Status

Ratified

## Extension and Version Dependencies

VK_KHR_create_renderpass2
or
Vulkan Version 1.2

## Deprecation State

- Promoted to Vulkan 1.2

## Contact

- Jan-Harald Fredriksen [GitHub]janharald

## Other Extension Metadata

Last Modified Date

  2018-04-09

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 `pResolveAttachments` entries corresponding to the `pColorAttachments` array entries. This does not allow for a way to map the resolve attachments to the depth/stencil attachment. The 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 `VkSubpassDescription2` in this extension allows an application to add a `pDepthStencilResolveAttachment`, that is similar to the color `pResolveAttachments`, that the `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 VkResolveModeFlagBits enum. The 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.

## New Structures

- Extending VkPhysicalDeviceProperties2:

  - VkPhysicalDeviceDepthStencilResolvePropertiesKHR

- Extending VkSubpassDescription2:

  - VkSubpassDescriptionDepthStencilResolveKHR

## New Enums

- VkResolveModeFlagBitsKHR

## New Bitmasks

- VkResolveModeFlagsKHR

## New Enum Constants

- `VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME`

- `VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION`

- Extending VkResolveModeFlagBits:

  - VK_RESOLVE_MODE_AVERAGE_BIT_KHR

  - VK_RESOLVE_MODE_MAX_BIT_KHR

  - VK_RESOLVE_MODE_MIN_BIT_KHR

  - VK_RESOLVE_MODE_NONE_KHR

  - VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR

- Extending VkStructureType:

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR

  - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR

## Additional Resources

- GDC 2019

  - `video`

  - `slides`

## Version History

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

  - Initial revision

## See Also

No cross-references are available

## Document Notes

For more information, see the Vulkan Specification.

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

## Copyright

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0