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;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
or a pointer to a structure extending this structure.renderPass
is the render pass to begin an instance of.framebuffer
is the framebuffer containing the attachments that are used with the render pass.renderArea
is the render area that is affected by the render pass instance, and is described in more detail below.clearValueCount
is the number of elements inpClearValues
.pClearValues
is a pointer to an array ofclearValueCount
VkClearValue structures containing clear values for each attachment, if the attachment uses aloadOp
value ofVK_ATTACHMENT_LOAD_OP_CLEAR
or if the attachment has a depth/stencil format and uses astencilLoadOp
value ofVK_ATTACHMENT_LOAD_OP_CLEAR
. The array is indexed by attachment number. Only elements corresponding to cleared attachments are used. Other elements ofpClearValues
are 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.width
must 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.height
must 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::transform
must 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 renderArea
must 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
VkRenderPassStripeInfoARM::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 struct 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