VkSubpassDescriptionDepthStencilResolve(3)

# VkSubpassDescriptionDepthStencilResolve(3) Manual Page

## Name

VkSubpassDescriptionDepthStencilResolve - Structure specifying depth/stencil resolve operations for a subpass

Loading… please wait.

## C Specification

The `VkSubpassDescriptionDepthStencilResolve` structure is defined as:

    // Provided by VK_VERSION_1_2
    typedef struct VkSubpassDescriptionDepthStencilResolve {
        VkStructureType                  sType;
        const void*                      pNext;
        VkResolveModeFlagBits            depthResolveMode;
        VkResolveModeFlagBits            stencilResolveMode;
        const VkAttachmentReference2*    pDepthStencilResolveAttachment;
    } VkSubpassDescriptionDepthStencilResolve;

or the equivalent

    // Provided by VK_KHR_depth_stencil_resolve
    typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR;

## Members

- `sType` is a VkStructureType value identifying this structure.

- `pNext` is `NULL` or a pointer to a structure extending this structure.

- `depthResolveMode` is a VkResolveModeFlagBits value describing the depth resolve mode.

- `stencilResolveMode` is a VkResolveModeFlagBits value describing the stencil resolve mode.

- `pDepthStencilResolveAttachment` is `NULL` or a pointer to a VkAttachmentReference2 structure defining the depth/stencil resolve attachment for this subpass and its layout.

## Description

If the `pNext` chain of VkSubpassDescription2 includes a `VkSubpassDescriptionDepthStencilResolve` structure, then that structure describes multisample resolve operations for the depth/stencil attachment in a subpass. If this structure is not included in the `pNext` chain of VkSubpassDescription2, or if it is and either `pDepthStencilResolveAttachment` is `NULL` or its attachment index is `VK_ATTACHMENT_UNUSED`, it indicates that no depth/stencil resolve attachment will be used in the subpass.

Valid Usage

- VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03177
  If `pDepthStencilResolveAttachment` is not `NULL` and does not have the value `VK_ATTACHMENT_UNUSED`, `pDepthStencilAttachment` must not be `NULL` or have the value `VK_ATTACHMENT_UNUSED`

- VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03179
  If `pDepthStencilResolveAttachment` is not `NULL` and does not have the value `VK_ATTACHMENT_UNUSED`, `pDepthStencilAttachment` must not have a sample count of `VK_SAMPLE_COUNT_1_BIT`

- VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03180
  If `pDepthStencilResolveAttachment` is not `NULL` and does not have the value `VK_ATTACHMENT_UNUSED`, `pDepthStencilResolveAttachment` must have a sample count of `VK_SAMPLE_COUNT_1_BIT`

- VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-02651
  If `pDepthStencilResolveAttachment` is not `NULL` and does not have the value `VK_ATTACHMENT_UNUSED` then it must have an image format whose potential format features contain `VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT`

- VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03181
  If `pDepthStencilResolveAttachment` is not `NULL` and does not have the value `VK_ATTACHMENT_UNUSED` and VkFormat of `pDepthStencilResolveAttachment` has a depth component, then the VkFormat of `pDepthStencilAttachment` must have a depth component with the same number of bits and numeric format

- VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03182
  If `pDepthStencilResolveAttachment` is not `NULL` and does not have the value `VK_ATTACHMENT_UNUSED`, and VkFormat of `pDepthStencilResolveAttachment` has a stencil component, then the VkFormat of `pDepthStencilAttachment` must have a stencil component with the same number of bits and numeric format

- VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03178
  If `pDepthStencilResolveAttachment` is not `NULL` and does not have the value `VK_ATTACHMENT_UNUSED`, `depthResolveMode` and `stencilResolveMode` must not both be `VK_RESOLVE_MODE_NONE`

- VUID-VkSubpassDescriptionDepthStencilResolve-depthResolveMode-03183
  If `pDepthStencilResolveAttachment` is not `NULL` and does not have the value `VK_ATTACHMENT_UNUSED` and the VkFormat of `pDepthStencilResolveAttachment` has a depth component, then the value of `depthResolveMode` must be one of the bits set in VkPhysicalDeviceDepthStencilResolveProperties::`supportedDepthResolveModes` or `VK_RESOLVE_MODE_NONE`

- VUID-VkSubpassDescriptionDepthStencilResolve-stencilResolveMode-03184
  If `pDepthStencilResolveAttachment` is not `NULL` and does not have the value `VK_ATTACHMENT_UNUSED` and the VkFormat of `pDepthStencilResolveAttachment` has a stencil component, then the value of `stencilResolveMode` must be one of the bits set in VkPhysicalDeviceDepthStencilResolveProperties::`supportedStencilResolveModes` or `VK_RESOLVE_MODE_NONE`

- VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03185
  If `pDepthStencilResolveAttachment` is not `NULL` and does not have the value `VK_ATTACHMENT_UNUSED`, the VkFormat of `pDepthStencilResolveAttachment` has both depth and stencil components, VkPhysicalDeviceDepthStencilResolveProperties::`independentResolve` is `VK_FALSE`, and VkPhysicalDeviceDepthStencilResolveProperties::`independentResolveNone` is `VK_FALSE`, then the values of `depthResolveMode` and `stencilResolveMode` must be identical

- VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03186
  If `pDepthStencilResolveAttachment` is not `NULL` and does not have the value `VK_ATTACHMENT_UNUSED`, the VkFormat of `pDepthStencilResolveAttachment` has both depth and stencil components, VkPhysicalDeviceDepthStencilResolveProperties::`independentResolve` is `VK_FALSE` and VkPhysicalDeviceDepthStencilResolveProperties::`independentResolveNone` is `VK_TRUE`, then the values of `depthResolveMode` and `stencilResolveMode` must be identical or one of them must be `VK_RESOLVE_MODE_NONE`

- VUID-VkSubpassDescriptionDepthStencilResolve-pNext-06873
  If the `pNext` chain of VkSubpassDescription2 includes a `VkMultisampledRenderToSingleSampledInfoEXT` structure, the `multisampledRenderToSingleSampledEnable` field is `VK_TRUE`, and `pDepthStencilAttachment` is not `NULL` and does not have the value `VK_ATTACHMENT_UNUSED`, `depthResolveMode` and `stencilResolveMode` must not both be `VK_RESOLVE_MODE_NONE`

- VUID-VkSubpassDescriptionDepthStencilResolve-pNext-06874
  If the `pNext` chain of VkSubpassDescription2 includes a `VkMultisampledRenderToSingleSampledInfoEXT` structure whose `multisampledRenderToSingleSampledEnable` field is `VK_TRUE`, and `pDepthStencilAttachment` is not `NULL`, does not have the value `VK_ATTACHMENT_UNUSED`, and has a VkFormat that has a depth component, then the value of `depthResolveMode` must be one of the bits set in VkPhysicalDeviceDepthStencilResolveProperties::`supportedDepthResolveModes` or `VK_RESOLVE_MODE_NONE`

- VUID-VkSubpassDescriptionDepthStencilResolve-pNext-06875
  If the `pNext` chain of VkSubpassDescription2 includes a `VkMultisampledRenderToSingleSampledInfoEXT` structure whose `multisampledRenderToSingleSampledEnable` field is `VK_TRUE`, and `pDepthStencilAttachment` is not `NULL`, does not have the value `VK_ATTACHMENT_UNUSED`, and has a VkFormat with a stencil component, then the value of `stencilResolveMode` must be one of the bits set in VkPhysicalDeviceDepthStencilResolveProperties::`supportedStencilResolveModes` or `VK_RESOLVE_MODE_NONE`

- VUID-VkSubpassDescriptionDepthStencilResolve-pNext-06876
  If the `pNext` chain of VkSubpassDescription2 includes a `VkMultisampledRenderToSingleSampledInfoEXT` structure whose `multisampledRenderToSingleSampledEnable` field is `VK_TRUE`, `pDepthStencilAttachment` is not `NULL`, does not have the value `VK_ATTACHMENT_UNUSED`, and has a VkFormat with both depth and stencil components, and both VkPhysicalDeviceDepthStencilResolveProperties::`independentResolve` and VkPhysicalDeviceDepthStencilResolveProperties::`independentResolveNone` are `VK_FALSE`, then the values of `depthResolveMode` and `stencilResolveMode` must be identical

- VUID-VkSubpassDescriptionDepthStencilResolve-pNext-06877
  If the `pNext` chain of VkSubpassDescription2 includes a `VkMultisampledRenderToSingleSampledInfoEXT` structure whose `multisampledRenderToSingleSampledEnable` field is `VK_TRUE`, `pDepthStencilAttachment` is not `NULL`, does not have the value `VK_ATTACHMENT_UNUSED`, and has a VkFormat with both depth and stencil components, VkPhysicalDeviceDepthStencilResolveProperties::`independentResolve` is `VK_FALSE`, and VkPhysicalDeviceDepthStencilResolveProperties::`independentResolveNone` is `VK_TRUE`, then the values of `depthResolveMode` and `stencilResolveMode` must be identical or one of them must be `VK_RESOLVE_MODE_NONE`

Valid Usage (Implicit)

- VUID-VkSubpassDescriptionDepthStencilResolve-sType-sType
  `sType` must be `VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE`

- VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-parameter
  If `pDepthStencilResolveAttachment` is not `NULL`, `pDepthStencilResolveAttachment` must be a valid pointer to a valid VkAttachmentReference2 structure

## See Also

VK_KHR_depth_stencil_resolve, VK_VERSION_1_2, VkAttachmentReference2, VkResolveModeFlagBits, VkStructureType

## Document Notes

For more information, see the Vulkan Specification

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright 2014-2024 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0