VkCustomResolveCreateInfoEXT(3)

# VkCustomResolveCreateInfoEXT(3) Manual Page

## Name

VkCustomResolveCreateInfoEXT - Structure specifying format info for custom resolves

## C Specification

The `VkCustomResolveCreateInfoEXT` structure is defined as:

    // Provided by VK_EXT_custom_resolve with VK_KHR_dynamic_rendering or VK_VERSION_1_3
    typedef struct VkCustomResolveCreateInfoEXT {
        VkStructureType    sType;
        const void*        pNext;
        VkBool32           customResolve;
        uint32_t           colorAttachmentCount;
        const VkFormat*    pColorAttachmentFormats;
        VkFormat           depthAttachmentFormat;
        VkFormat           stencilAttachmentFormat;
    } VkCustomResolveCreateInfoEXT;

## Members

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

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

- `customResolve` indicates whether this pipeline will be used for a resolve operation.

- `colorAttachmentCount` is the number of entries in `pColorAttachmentFormats`.

- `pColorAttachmentFormats` is a pointer to an array of VkFormat values defining the format of color resolve attachments used in custom resolves in the same render pass.

- `depthAttachmentFormat` is a VkFormat value defining the format of the depth resolve attachment used in custom resolves in the same render pass.

- `stencilAttachmentFormat` is a VkFormat value defining the format of the stencil resolve attachment used in custom resolves in the same render pass.

## Description

If the `pNext` chain includes this structure for one of:

- a VkGraphicsPipelineCreateInfo for a pipeline created without a VkRenderPass

- a VkCommandBufferInheritanceInfo for a secondary command buffer within a render pass instance begun with vkCmdBeginRendering.

it specifies the formats used in custom resolves within the same render pass. It also specifies that the corresponding object will be used in a render pass which contains a custom resolve operation.

If the `pNext` chain includes this structure for a VkShaderCreateInfoEXT for a fragment shader object, it only specifies that the fragment shader will be used in a custom resolve operation.

If a graphics pipeline is created with a valid VkRenderPass, parameters of this structure are ignored.

If `customResolve` is VK_FALSE, the pipeline can only be used outside the custom resolve section. If `customResolve` is VK_TRUE, the pipeline can only be used inside the custom resolve section.

When a dynamic render pass instance contains a custom resolve operation and the `dynamicRenderingUnusedAttachments` feature is not enabled , all pipelines used to draw in such render pass must include this structure and have identical format information in it. When a dynamic render pass does not contain a custom resolve operation and the `dynamicRenderingUnusedAttachments` feature is not enabled , all pipelines used to draw in such render pass must not include this structure.

If the `dynamicRenderingUnusedAttachments` feature is enabled, then when this structure is not included in the `pNext` chain for VkGraphicsPipelineCreateInfo, `customResolve` is VK_FALSE, `colorAttachmentCount` is `0`, and `depthAttachmentFormat` and `stencilAttachmentFormat` are VK_FORMAT_UNDEFINED.

If `depthAttachmentFormat`, `stencilAttachmentFormat`, or any element of `pColorAttachmentFormats` is VK_FORMAT_UNDEFINED, it indicates that the corresponding attachment is unused within the resolve portion of the render pass. Valid formats indicate that an attachment can be used - but it is still valid to set the attachment to `NULL` when beginning rendering.

When passed as a `pNext` member to a VkShaderCreateInfoEXT struct for use with fragment density maps, the `colorAttachmentCount`, `pColorAttachmentFormats`, `depthAttachmentFormat`, and `stencilAttachmentFormat` members of this struct are ignored. When not passed as a `pNext` member, `customResolve` is VK_FALSE.

Valid Usage

- VUID-VkCustomResolveCreateInfoEXT-colorAttachmentCount-11507
  `colorAttachmentCount` must be less than or equal to `maxColorAttachments`

- VUID-VkCustomResolveCreateInfoEXT-depthAttachmentFormat-11508
  If `depthAttachmentFormat` is not VK_FORMAT_UNDEFINED, it must be a format that includes a depth component

- VUID-VkCustomResolveCreateInfoEXT-depthAttachmentFormat-11509
  If `depthAttachmentFormat` is not VK_FORMAT_UNDEFINED, it must be a format with potential format features that include VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT

- VUID-VkCustomResolveCreateInfoEXT-pColorAttachmentFormats-11510
  If any element of `pColorAttachmentFormats` is not VK_FORMAT_UNDEFINED, it must be a format with potential format features that include VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT , or VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV if the `linearColorAttachment` feature is enabled

- VUID-VkCustomResolveCreateInfoEXT-stencilAttachmentFormat-11511
  If `stencilAttachmentFormat` is not VK_FORMAT_UNDEFINED, it must be a format that includes a stencil aspect

- VUID-VkCustomResolveCreateInfoEXT-stencilAttachmentFormat-11512
  If `stencilAttachmentFormat` is not VK_FORMAT_UNDEFINED, it must be a format with potential format features that include VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT

- VUID-VkCustomResolveCreateInfoEXT-depthAttachmentFormat-11513
  If `depthAttachmentFormat` is not VK_FORMAT_UNDEFINED and `stencilAttachmentFormat` is not VK_FORMAT_UNDEFINED, `depthAttachmentFormat` must equal `stencilAttachmentFormat`

Valid Usage (Implicit)

- VUID-VkCustomResolveCreateInfoEXT-sType-sType
  `sType` must be VK_STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT

Structure Chaining

Extends the structures

  - VkCommandBufferInheritanceInfo

  - VkGraphicsPipelineCreateInfo

  - VkShaderCreateInfoEXT

## See Also

VK_EXT_custom_resolve, VK_KHR_dynamic_rendering, VK_VERSION_1_3, VkBool32, VkFormat, 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-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0