VkRenderPassBeginInfo
The VkRenderPassBeginInfo structure is defined as:
typedef struct VkRenderPassBeginInfo {
VkStructureType sType;
const void* pNext;
VkRenderPass renderPass;
VkFramebuffer framebuffer;
VkRect2D renderArea;
uint32_t clearValueCount;
const VkClearValue* pClearValues;
} VkRenderPassBeginInfo;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.renderPassis the render pass to begin an instance of.framebufferis the framebuffer containing the attachments that are used with the render pass.renderAreais the render area that is affected by the render pass instance, and is described in more detail below.clearValueCountis the number of elements inpClearValues.pClearValuesis a pointer to an array ofclearValueCount
VkClearValue structures containing clear values for each attachment, if the attachment uses aloadOpvalue ofVK_ATTACHMENT_LOAD_OP_CLEARor if the attachment has a depth/stencil format and uses astencilLoadOpvalue ofVK_ATTACHMENT_LOAD_OP_CLEAR. The array is indexed by attachment number. Only elements corresponding to cleared attachments are used. Other elements ofpClearValuesare ignored.
renderArea is the render area that is affected by the render pass
instance.
The effects of attachment load, store and multisample resolve operations are
restricted to the pixels whose x and y coordinates fall within the render
area on all attachments.
The render area extends to all layers of framebuffer.
The application must ensure (using scissor if necessary) that all rendering
is contained within the render area.
The render area, after any transform specified by
VkRenderPassTransformBeginInfoQCOM::transform is applied, must
be contained within the framebuffer dimensions.
If render pass transform is
enabled, then renderArea must equal the framebuffer pre-transformed
dimensions.
After renderArea has been transformed by
VkRenderPassTransformBeginInfoQCOM::transform, the resulting
render area must be equal to the framebuffer dimensions.
If multiview is enabled in renderPass, and
multiviewPerViewRenderAreas
feature is enabled, and there is an instance of
VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM included in the
pNext chain with perViewRenderAreaCount not equal to 0, then
the elements of
VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM::pPerViewRenderAreas
override renderArea and define a render area for each view.
In this case, renderArea must be an area at least as large as the
union of all the per-view render areas.
If the subpassShading feature is enabled,
then renderArea must equal the framebuffer dimensions.
There may be a performance cost for using a render area smaller than the framebuffer, unless it matches the render area granularity for the render pass.
Valid Usage
VUID-VkRenderPassBeginInfo-clearValueCount-00902
clearValueCount must be greater than the largest attachment index
in renderPass specifying a loadOp (or stencilLoadOp,
if the attachment has a depth/stencil format) of
VK_ATTACHMENT_LOAD_OP_CLEAR
VUID-VkRenderPassBeginInfo-clearValueCount-04962
If clearValueCount is not 0, pClearValues must be a valid
pointer to an array of clearValueCount VkClearValue unions
VUID-VkRenderPassBeginInfo-renderPass-00904
renderPass must be compatible with
the renderPass member of the VkFramebufferCreateInfo
structure specified when creating framebuffer
VUID-VkRenderPassBeginInfo-None-08996
If the pNext chain does not contain
VkDeviceGroupRenderPassBeginInfo or its
deviceRenderAreaCount member is equal to 0,
renderArea.extent.width must be greater than 0
VUID-VkRenderPassBeginInfo-None-08997
If the pNext chain does not contain
VkDeviceGroupRenderPassBeginInfo or its
deviceRenderAreaCount member is equal to 0,
renderArea.extent.height must be greater than 0
VUID-VkRenderPassBeginInfo-pNext-02850
If the pNext chain does not contain
VkDeviceGroupRenderPassBeginInfo or its
deviceRenderAreaCount member is equal to 0,
renderArea.offset.x must be greater than or equal to 0
VUID-VkRenderPassBeginInfo-pNext-02851
If the pNext chain does not contain
VkDeviceGroupRenderPassBeginInfo or its
deviceRenderAreaCount member is equal to 0,
renderArea.offset.y must be greater than or equal to 0
VUID-VkRenderPassBeginInfo-pNext-02852
If the pNext chain does not contain
VkDeviceGroupRenderPassBeginInfo or its
deviceRenderAreaCount member is equal to 0,
renderArea.offset.x + renderArea.extent.widthmust be less than or equal to
VkFramebufferCreateInfo::width the framebuffer was
created with
VUID-VkRenderPassBeginInfo-pNext-02853
If the pNext chain does not contain
VkDeviceGroupRenderPassBeginInfo or its
deviceRenderAreaCount member is equal to 0,
renderArea.offset.y + renderArea.extent.heightmust be less than or equal to
VkFramebufferCreateInfo::height the framebuffer was
created with
VUID-VkRenderPassBeginInfo-pNext-02856
If the pNext chain contains
VkDeviceGroupRenderPassBeginInfo, offset.x +
extent.width of each element of pDeviceRenderAreas must be
less than or equal to VkFramebufferCreateInfo::width the
framebuffer was created with
VUID-VkRenderPassBeginInfo-pNext-02857
If the pNext chain contains
VkDeviceGroupRenderPassBeginInfo, offset.y +
extent.height of each element of pDeviceRenderAreas must
be less than or equal to VkFramebufferCreateInfo::height the
framebuffer was created with
VUID-VkRenderPassBeginInfo-framebuffer-03207
If framebuffer was created with a
VkFramebufferCreateInfo::flags value that did not include
VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, and the pNext chain
includes a VkRenderPassAttachmentBeginInfo structure, its
attachmentCount must be zero
VUID-VkRenderPassBeginInfo-framebuffer-03208
If framebuffer was created with a
VkFramebufferCreateInfo::flags value that included
VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, the attachmentCount of
a VkRenderPassAttachmentBeginInfo structure included in the
pNext chain must be equal to the value of
VkFramebufferAttachmentsCreateInfo::attachmentImageInfoCount
used to create framebuffer
VUID-VkRenderPassBeginInfo-framebuffer-02780
If framebuffer was created with a
VkFramebufferCreateInfo::flags value that included
VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of the
pAttachments member of a VkRenderPassAttachmentBeginInfo
structure included in the pNext chain must have been created on
the same VkDevice as framebuffer and renderPass
VUID-VkRenderPassBeginInfo-framebuffer-03209
If framebuffer was created with a
VkFramebufferCreateInfo::flags value that included
VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of the
pAttachments member of a VkRenderPassAttachmentBeginInfo
structure included in the pNext chain must be a VkImageView
of an image created with a value of VkImageCreateInfo::flags
equal to the flags member of the corresponding element of
VkFramebufferAttachmentsCreateInfo::pAttachmentImageInfos
used to create framebuffer
VUID-VkRenderPassBeginInfo-framebuffer-04627
If framebuffer was created with a
VkFramebufferCreateInfo::flags value that included
VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of the
pAttachments member of a VkRenderPassAttachmentBeginInfo
structure included in the pNext chain must be a VkImageView
with an inherited usage equal to
the usage member of the corresponding element of
VkFramebufferAttachmentsCreateInfo::pAttachmentImageInfos
used to create framebuffer
VUID-VkRenderPassBeginInfo-framebuffer-03211
If framebuffer was created with a
VkFramebufferCreateInfo::flags value that included
VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of the
pAttachments member of a VkRenderPassAttachmentBeginInfo
structure included in the pNext chain must be a VkImageView
with a width equal to the width member of the corresponding
element of
VkFramebufferAttachmentsCreateInfo::pAttachmentImageInfos
used to create framebuffer
VUID-VkRenderPassBeginInfo-framebuffer-03212
If framebuffer was created with a
VkFramebufferCreateInfo::flags value that included
VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of the
pAttachments member of a VkRenderPassAttachmentBeginInfo
structure included in the pNext chain must be a VkImageView
with a height equal to the height member of the corresponding
element of
VkFramebufferAttachmentsCreateInfo::pAttachmentImageInfos
used to create framebuffer
VUID-VkRenderPassBeginInfo-framebuffer-03213
If framebuffer was created with a
VkFramebufferCreateInfo::flags value that included
VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of the
pAttachments member of a VkRenderPassAttachmentBeginInfo
structure included in the pNext chain must be a VkImageView
of an image created with a value of
VkImageViewCreateInfo::subresourceRange.layerCount equal to
the layerCount member of the corresponding element of
VkFramebufferAttachmentsCreateInfo::pAttachmentImageInfos
used to create framebuffer
VUID-VkRenderPassBeginInfo-framebuffer-03214
If framebuffer was created with a
VkFramebufferCreateInfo::flags value that included
VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of the
pAttachments member of a VkRenderPassAttachmentBeginInfo
structure included in the pNext chain must be a VkImageView
of an image created with a value of
VkImageFormatListCreateInfo::viewFormatCount equal to the
viewFormatCount member of the corresponding element of
VkFramebufferAttachmentsCreateInfo::pAttachmentImageInfos
used to create framebuffer
VUID-VkRenderPassBeginInfo-framebuffer-03215
If framebuffer was created with a
VkFramebufferCreateInfo::flags value that included
VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of the
pAttachments member of a VkRenderPassAttachmentBeginInfo
structure included in the pNext chain must be a VkImageView
of an image created with a set of elements in
VkImageFormatListCreateInfo::pViewFormats equal to the set
of elements in the pViewFormats member of the corresponding
element of
VkFramebufferAttachmentsCreateInfo::pAttachmentImageInfos
used to create framebuffer
VUID-VkRenderPassBeginInfo-framebuffer-03216
If framebuffer was created with a
VkFramebufferCreateInfo::flags value that included
VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of the
pAttachments member of a VkRenderPassAttachmentBeginInfo
structure included in the pNext chain must be a VkImageView
of an image created with a value of
VkImageViewCreateInfo::format equal to the corresponding
value of VkAttachmentDescription::format in renderPass
VUID-VkRenderPassBeginInfo-framebuffer-09353
If framebuffer was created with a
VkFramebufferCreateInfo::flags value that included
VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, and the
nullColorAttachmentWithExternalFormatResolve is VK_FALSE,
the format of the color attachment for each subpass that includes an
external format image as a resolve attachment must have a format equal
to the value of
VkAndroidHardwareBufferFormatResolvePropertiesANDROID::colorAttachmentFormat
as returned by a call to
vkGetAndroidHardwareBufferPropertiesANDROID for the Android
hardware buffer that was used to create the image view use as its
resolve attachment
VUID-VkRenderPassBeginInfo-framebuffer-09354
If framebuffer was created with a
VkFramebufferCreateInfo::flags value that included
VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of the
pAttachments member of a VkRenderPassAttachmentBeginInfo
structure included in the pNext chain must be a VkImageView
of an image created with a value of
VkExternalFormatANDROID::externalFormat equal to
VkExternalFormatANDROID::externalFormat in the pNext
chain of the corresponding VkAttachmentDescription2 structure used
to create renderPass
VUID-VkRenderPassBeginInfo-framebuffer-09047
If framebuffer was created with a
VkFramebufferCreateInfo::flags value that included
VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of the
pAttachments member of a VkRenderPassAttachmentBeginInfo
structure included in the pNext chain must be a VkImageView
of an image created with a value of
VkImageCreateInfo::samples equal to the corresponding value
of VkAttachmentDescription::samples in renderPass
, or VK_SAMPLE_COUNT_1_BIT if renderPass was created with
VkMultisampledRenderToSingleSampledInfoEXT structure in the
pNext chain with multisampledRenderToSingleSampledEnable
equal to VK_TRUE
VUID-VkRenderPassBeginInfo-pNext-02869
If the pNext chain includes
VkRenderPassTransformBeginInfoQCOM, renderArea.offset must
equal (0,0)
VUID-VkRenderPassBeginInfo-pNext-02870
If the pNext chain includes
VkRenderPassTransformBeginInfoQCOM, renderArea.extent
transformed by VkRenderPassTransformBeginInfoQCOM::transformmust equal the framebuffer dimensions
VUID-VkRenderPassBeginInfo-perViewRenderAreaCount-07859
If the perViewRenderAreaCount member of a
VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM structure
included in the pNext chain is not 0, then the
multiviewPerViewRenderAreas feature must be enabled
VUID-VkRenderPassBeginInfo-perViewRenderAreaCount-07860
If the perViewRenderAreaCount member of a
VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM structure
included in the pNext chain is not 0, then renderAreamust specify a render area that includes the union of all per view
render areas
VUID-VkRenderPassBeginInfo-pNext-09539
If the pNext chain contains a VkRenderPassStripeBeginInfoARM
structure, the union of stripe areas defined by the elements of
VkRenderPassStripeBeginInfoARM::pStripeInfos must cover the
renderArea
Valid Usage (Implicit)
VUID-VkRenderPassBeginInfo-sType-sType
sType must be VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
VUID-VkRenderPassBeginInfo-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 VkDeviceGroupRenderPassBeginInfo, VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM, VkRenderPassAttachmentBeginInfo, VkRenderPassSampleLocationsBeginInfoEXT, VkRenderPassStripeBeginInfoARM, or VkRenderPassTransformBeginInfoQCOM
VUID-VkRenderPassBeginInfo-sType-unique
The sType value of each structure in the pNext chain must be unique
VUID-VkRenderPassBeginInfo-renderPass-parameter
renderPass must be a valid VkRenderPass handle
VUID-VkRenderPassBeginInfo-framebuffer-parameter
framebuffer must be a valid VkFramebuffer handle
VUID-VkRenderPassBeginInfo-commonparent
Both of framebuffer, and renderPass must have been created, allocated, or retrieved from the same VkDevice