VkRenderPassCreateInfo2
The VkRenderPassCreateInfo2 structure is defined as:
typedef struct VkRenderPassCreateInfo2 {
VkStructureType sType;
const void* pNext;
VkRenderPassCreateFlags flags;
uint32_t attachmentCount;
const VkAttachmentDescription2* pAttachments;
uint32_t subpassCount;
const VkSubpassDescription2* pSubpasses;
uint32_t dependencyCount;
const VkSubpassDependency2* pDependencies;
uint32_t correlatedViewMaskCount;
const uint32_t* pCorrelatedViewMasks;
} VkRenderPassCreateInfo2;
pub struct RenderPassCreateInfo2 {
s_type: vk::StructureType,
p_next: *const c_void,
flags: vk::RenderPassCreateFlags,
attachment_count: u32,
p_attachments: *const vk::AttachmentDescription2,
subpass_count: u32,
p_subpasses: *const vk::SubpassDescription2,
dependency_count: u32,
p_dependencies: *const vk::SubpassDependency2,
correlated_view_mask_count: u32,
p_correlated_view_masks: *const u32,
}
typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR;
type RenderPassCreateInfo2KHR = vk::RenderPassCreateInfo2;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.flagsis a bitmask of VkRenderPassCreateFlagBitsattachmentCountis the number of attachments used by this render pass.pAttachmentsis a pointer to an array ofattachmentCount
VkAttachmentDescription2 structures describing the attachments used by the render pass.subpassCountis the number of subpasses to create.pSubpassesis a pointer to an array ofsubpassCount
VkSubpassDescription2 structures describing each subpass.dependencyCountis the number of dependencies between pairs of subpasses.pDependenciesis a pointer to an array ofdependencyCount
VkSubpassDependency2 structures describing dependencies between pairs of subpasses.correlatedViewMaskCountis the number of correlation masks.pCorrelatedViewMasksis a pointer to an array of view masks indicating sets of views that may be more efficient to render concurrently.
Parameters defined by this structure with the same name as those in
VkRenderPassCreateInfo have the identical effect to those parameters;
the child structures are variants of those used in
VkRenderPassCreateInfo which add sType and pNext
parameters, allowing them to be extended.
If the VkSubpassDescription2::viewMask member of any element of
pSubpasses is not zero, multiview functionality is considered to be
enabled for this render pass.
correlatedViewMaskCount and pCorrelatedViewMasks have the same
effect as VkRenderPassMultiviewCreateInfo::correlationMaskCount
and VkRenderPassMultiviewCreateInfo::pCorrelationMasks,
respectively.
Valid Usage
VUID-VkRenderPassCreateInfo2-None-03049
If any two subpasses operate on attachments with overlapping ranges of
the same VkDeviceMemory object, and at least one subpass writes to
that area of VkDeviceMemory, a subpass dependency must be
included (either directly or via some intermediate subpasses) between
them
VUID-VkRenderPassCreateInfo2-attachment-03050
If the attachment member of any element of
pInputAttachments, pColorAttachments,
pResolveAttachments or pDepthStencilAttachment, or the
attachment indexed by any element of pPreserveAttachments in any
element of pSubpasses is bound to a range of a
VkDeviceMemory object that overlaps with any other attachment in
any subpass (including the same subpass), the
VkAttachmentDescription2 structures describing them must include
VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT in flags
VUID-VkRenderPassCreateInfo2-attachment-03051
If the attachment member of any element of
pInputAttachments, pColorAttachments,
pResolveAttachments or pDepthStencilAttachment, or any
element of pPreserveAttachments in any element of pSubpasses
is not VK_ATTACHMENT_UNUSED, then it must be less than
attachmentCount
VUID-VkRenderPassCreateInfo2-fragmentDensityMapAttachment-06472
If the pNext chain includes a
VkRenderPassFragmentDensityMapCreateInfoEXT structure and the
fragmentDensityMapAttachment member is not
VK_ATTACHMENT_UNUSED, then attachment must be less than
attachmentCount
VUID-VkRenderPassCreateInfo2-fragmentDensityMapLayered-10829
If the fragmentDensityMapLayered feature is not enabled, flagsmust not contain
VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE
VUID-VkRenderPassCreateInfo2-pSubpasses-06473
If the pSubpasses pNext chain includes a
VkSubpassDescriptionDepthStencilResolve structure and the
pDepthStencilResolveAttachment member is not NULL and does not
have the value VK_ATTACHMENT_UNUSED, then attachment must
be less than attachmentCount
VUID-VkRenderPassCreateInfo2-pAttachments-02522
For any member of pAttachments with a loadOp equal to
VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
must not specify a layout equal to
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, or
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
VUID-VkRenderPassCreateInfo2-pAttachments-02523
For any member of pAttachments with a stencilLoadOp equal to
VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
must not specify a layout equal to
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, or
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
VUID-VkRenderPassCreateInfo2-pDependencies-03054
For each element of pDependencies, if the srcSubpass is not
VK_SUBPASS_EXTERNAL, all stage flags included in the
srcStageMask member of that dependency must be
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT or a pipeline stage supported
by the pipeline identified by
the pipelineBindPoint member of the source subpass
VUID-VkRenderPassCreateInfo2-pDependencies-03055
For each element of pDependencies, if the dstSubpass is not
VK_SUBPASS_EXTERNAL, all stage flags included in the
dstStageMask member of that dependency must be
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT or a pipeline stage supported
by the pipeline identified by
the pipelineBindPoint member of the destination subpass
VUID-VkRenderPassCreateInfo2-pCorrelatedViewMasks-03056
The set of bits included in any element of pCorrelatedViewMasksmust not overlap with the set of bits included in any other element of
pCorrelatedViewMasks
VUID-VkRenderPassCreateInfo2-viewMask-03057
If the VkSubpassDescription2::viewMask member of all
elements of pSubpasses is 0, correlatedViewMaskCount must
be 0
VUID-VkRenderPassCreateInfo2-viewMask-03058
The VkSubpassDescription2::viewMask member of all elements
of pSubpasses must either all be 0, or all not be 0
VUID-VkRenderPassCreateInfo2-viewMask-03059
If the VkSubpassDescription2::viewMask member of all
elements of pSubpasses is 0, the dependencyFlags member of
any element of pDependencies must not include
VK_DEPENDENCY_VIEW_LOCAL_BIT
VUID-VkRenderPassCreateInfo2-pDependencies-03060
For each element of pDependencies where its srcSubpass
member equals its dstSubpass member, if the viewMask member
of the corresponding element of pSubpasses includes more than one
bit, its dependencyFlags member must include
VK_DEPENDENCY_VIEW_LOCAL_BIT
VUID-VkRenderPassCreateInfo2-attachment-02525
If the attachment member of any element of the
pInputAttachments member of any element of pSubpasses is not
VK_ATTACHMENT_UNUSED, the aspectMask member of that element
of pInputAttachments must only include aspects that are present
in images of the format specified by the element of pAttachments
specified by attachment
VUID-VkRenderPassCreateInfo2-srcSubpass-02526
The srcSubpass member of each element of pDependencies must
be less than subpassCount
VUID-VkRenderPassCreateInfo2-dstSubpass-02527
The dstSubpass member of each element of pDependencies must
be less than subpassCount
VUID-VkRenderPassCreateInfo2-pAttachments-04585
If any element of pAttachments is used as a fragment shading rate
attachment in any subpass, it must not be used as any other attachment
in the render pass
VUID-VkRenderPassCreateInfo2-pAttachments-09387
If any element of pAttachments is used as a fragment shading rate
attachment, the loadOp for that attachment must not be
VK_ATTACHMENT_LOAD_OP_CLEAR
VUID-VkRenderPassCreateInfo2-flags-04521
If flags includes VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM,
an element of pSubpasses includes an instance of
VkFragmentShadingRateAttachmentInfoKHR in its pNext chain,
and the pFragmentShadingRateAttachment member of that structure is
not equal to NULL, the attachment member of
pFragmentShadingRateAttachment must be VK_ATTACHMENT_UNUSED
VUID-VkRenderPassCreateInfo2-pAttachments-04586
If any element of pAttachments is used as a fragment shading rate
attachment in any subpass, it must have an image format whose
potential format features contain
VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
VUID-VkRenderPassCreateInfo2-attachment-06244
If the attachment member of the pDepthStencilAttachment
member of an element of pSubpasses is not
VK_ATTACHMENT_UNUSED, the layout member of that same
structure is either VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL or
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, and the pNext chain
of that structure does not include a
VkAttachmentReferenceStencilLayout structure, then the element of
pAttachments with an index equal to attachment must not
have a format that includes both depth and stencil components
VUID-VkRenderPassCreateInfo2-attachment-06245
If the attachment member of the pDepthStencilAttachment
member of an element of pSubpasses is not
VK_ATTACHMENT_UNUSED and the layout member of that same
structure is either VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL or
VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, then the element of
pAttachments with an index equal to attachment must have a
format that includes only a stencil component
VUID-VkRenderPassCreateInfo2-attachment-06246
If the attachment member of the pDepthStencilAttachment
member of an element of pSubpasses is not
VK_ATTACHMENT_UNUSED and the layout member of that same
structure is either VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL or
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, then the element of
pAttachments with an index equal to attachment must not
have a format that includes only a stencil component
VUID-VkRenderPassCreateInfo2-pResolveAttachments-09331
If any element of pResolveAttachments of any element of
pSubpasses references an attachment description with a format of
VK_FORMAT_UNDEFINED,
VkRenderPassFragmentDensityMapCreateInfoEXT::fragmentDensityMapAttachment→attachmentmust be VK_ATTACHMENT_UNUSED
VUID-VkRenderPassCreateInfo2-pResolveAttachments-10650
If any element of pResolveAttachments of any element of
pSubpasses references an attachment description with a format of
VK_FORMAT_UNDEFINED,
VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM must not be included
in VkRenderPassTileShadingCreateInfoQCOM::flags
VUID-VkRenderPassCreateInfo2-fragmentDensityMapAttachment-10651
If
VkRenderPassFragmentDensityMapCreateInfoEXT::fragmentDensityMapAttachment
is not VK_ATTACHMENT_UNUSED,
VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM must not be included
in VkRenderPassTileShadingCreateInfoQCOM::flags
VUID-VkRenderPassCreateInfo2-None-10916
If any subpass preserves an attachment, there must be a subpass dependency from a prior subpass which uses or preserves that attachment
Valid Usage (Implicit)
VUID-VkRenderPassCreateInfo2-sType-sType
sType must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2
VUID-VkRenderPassCreateInfo2-pNext-pNext
Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkRenderPassCreationControlEXT, VkRenderPassCreationFeedbackCreateInfoEXT, VkRenderPassFragmentDensityMapCreateInfoEXT, VkRenderPassTileShadingCreateInfoQCOM, or VkTileMemorySizeInfoQCOM
VUID-VkRenderPassCreateInfo2-sType-unique
The sType value of each structure in the pNext chain must be unique
VUID-VkRenderPassCreateInfo2-flags-parameter
flags must be a valid combination of VkRenderPassCreateFlagBits values
VUID-VkRenderPassCreateInfo2-pAttachments-parameter
If attachmentCount is not 0, pAttachments must be a valid pointer to an array of attachmentCount valid VkAttachmentDescription2 structures
VUID-VkRenderPassCreateInfo2-pSubpasses-parameter
pSubpasses must be a valid pointer to an array of subpassCount valid VkSubpassDescription2 structures
VUID-VkRenderPassCreateInfo2-pDependencies-parameter
If dependencyCount is not 0, pDependencies must be a valid pointer to an array of dependencyCount valid VkSubpassDependency2 structures
VUID-VkRenderPassCreateInfo2-pCorrelatedViewMasks-parameter
If correlatedViewMaskCount is not 0, pCorrelatedViewMasks must be a valid pointer to an array of correlatedViewMaskCount uint32_t values
VUID-VkRenderPassCreateInfo2-subpassCount-arraylength
subpassCount must be greater than 0