VkAttachmentDescription2KHR(3)

# VkAttachmentDescription2KHR(3) Manual Page

## Name

VkAttachmentDescription2KHR - Structure specifying an attachment description

## C Specification

The `VkAttachmentDescription2KHR` structure is defined as:

    typedef struct VkAttachmentDescription2KHR {
        VkStructureType                 sType;
        const void*                     pNext;
        VkAttachmentDescriptionFlags    flags;
        VkFormat                        format;
        VkSampleCountFlagBits           samples;
        VkAttachmentLoadOp              loadOp;
        VkAttachmentStoreOp             storeOp;
        VkAttachmentLoadOp              stencilLoadOp;
        VkAttachmentStoreOp             stencilStoreOp;
        VkImageLayout                   initialLayout;
        VkImageLayout                   finalLayout;
    } VkAttachmentDescription2KHR;

## Members

- `sType` is the type of this structure.

- `pNext` is `NULL` or a pointer to an extension-specific structure.

- `flags` is a bitmask of VkAttachmentDescriptionFlagBits specifying additional properties of the attachment.

- `format` is a VkFormat value specifying the format of the image that will be used for the attachment.

- `samples` is the number of samples of the image as defined in VkSampleCountFlagBits.

- `loadOp` is a VkAttachmentLoadOp value specifying how the contents of color and depth components of the attachment are treated at the beginning of the subpass where it is first used.

- `storeOp` is a VkAttachmentStoreOp value specifying how the contents of color and depth components of the attachment are treated at the end of the subpass where it is last used.

- `stencilLoadOp` is a VkAttachmentLoadOp value specifying how the contents of stencil components of the attachment are treated at the beginning of the subpass where it is first used.

- `stencilStoreOp` is a VkAttachmentStoreOp value specifying how the contents of stencil components of the attachment are treated at the end of the last subpass where it is used.

- `initialLayout` is the layout the attachment image subresource will be in when a render pass instance begins.

- `finalLayout` is the layout the attachment image subresource will be transitioned to when a render pass instance ends.

## Description

Parameters defined by this structure with the same name as those in VkAttachmentDescription have the identical effect to those parameters.

If the `separateDepthStencilLayouts` feature is enabled, and `format` is a depth/stencil format, `initialLayout` and `finalLayout` can be set to a layout that only specifies the layout of the depth aspect.

If `format` is a depth/stencil format, and `initialLayout` only specifies the initial layout of the depth aspect of the attachment, the initial layout of the stencil aspect is specified by the `stencilInitialLayout` member of a VkAttachmentDescriptionStencilLayoutKHR structure included in the `pNext` chain. Otherwise, `initialLayout` describes the initial layout for all relevant image aspects.

If `format` is a depth/stencil format, and `finalLayout` only specifies the final layout of the depth aspect of the attachment, the final layout of the stencil aspect is specified by the `stencilFinalLayout` member of a VkAttachmentDescriptionStencilLayoutKHR structure included in the `pNext` chain. Otherwise, `finalLayout` describes the final layout for all relevant image aspects.

Valid Usage

- `finalLayout` must not be `VK_IMAGE_LAYOUT_UNDEFINED` or `VK_IMAGE_LAYOUT_PREINITIALIZED`

- If `format` is a color format, name:initialLayout must not be `VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL`, `VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL`, `VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL`, or `VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL`

- If `format` is a depth/stencil format, name:initialLayout must not be `VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL`

- If `format` is a color format, name:finalLayout must not be `VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL`, `VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL`, `VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL`, or `VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL`

- If `format` is a depth/stencil format, name:finalLayout must not be `VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL`

- If the `separateDepthStencilLayouts` feature is not enabled, `initialLayout` must not be `VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR`, `VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR`, `VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR` or `VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR`

- If the `separateDepthStencilLayouts` feature is not enabled, `finalLayout` must not be `VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR`, `VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR`, `VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR` or `VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR`

- If `format` is a color format, `initialLayout` must not be `VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR`, `VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR`, `VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR` or `VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR`

- If `format` is a color format, `finalLayout` must not be `VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR`, `VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR`, `VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR` or `VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR`

- If `format` is a depth/stencil format which includes both depth and stencil aspects, and `initialLayout` is `VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR` or `VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR`, the `pNext` chain must include a VkAttachmentDescriptionStencilLayoutKHR structure

- If `format` is a depth/stencil format which includes both depth and stencil aspects, and `finalLayout` is `VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR` or `VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR`, the `pNext` chain must include a VkAttachmentDescriptionStencilLayoutKHR structure

- If `format` is a depth/stencil format which includes only the depth aspect, `initialLayout` must not be `VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR` or `VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR`

- If `format` is a depth/stencil format which includes only the depth aspect, `finalLayout` must not be `VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR` or `VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR`

- If `format` is a depth/stencil format which includes only the stencil aspect, `initialLayout` must not be `VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR` or `VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR`

- If `format` is a depth/stencil format which includes only the stencil aspect, `finalLayout` must not be `VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR` or `VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR`

Valid Usage (Implicit)

- `sType` must be `VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR`

- `flags` must be a valid combination of VkAttachmentDescriptionFlagBits values

- `format` must be a valid VkFormat value

- `samples` must be a valid VkSampleCountFlagBits value

- `loadOp` must be a valid VkAttachmentLoadOp value

- `storeOp` must be a valid VkAttachmentStoreOp value

- `stencilLoadOp` must be a valid VkAttachmentLoadOp value

- `stencilStoreOp` must be a valid VkAttachmentStoreOp value

- `initialLayout` must be a valid VkImageLayout value

- `finalLayout` must be a valid VkImageLayout value

## See Also

VkAttachmentDescriptionFlags, VkAttachmentLoadOp, VkAttachmentStoreOp, VkFormat, VkImageLayout, VkRenderPassCreateInfo2KHR, VkSampleCountFlagBits, 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 (c) 2014-2019 Khronos Group. This work is licensed under a Creative Commons Attribution 4.0 International License.