VkRenderPassFragmentDensityMapOffsetEndInfoEXT
If the VkSubpassEndInfo::pNext
chain
or VkRenderingEndInfoEXT::pNext
chain
includes a VkRenderPassFragmentDensityMapOffsetEndInfoEXT
structure,
then that structure includes an array of fragment density map offsets per
layer for the render pass.
The VkRenderPassFragmentDensityMapOffsetEndInfoEXT
structure is
defined as:
typedef struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT {
VkStructureType sType;
const void* pNext;
uint32_t fragmentDensityOffsetCount;
const VkOffset2D* pFragmentDensityOffsets;
} VkRenderPassFragmentDensityMapOffsetEndInfoEXT;
or the equivalent:
typedef VkRenderPassFragmentDensityMapOffsetEndInfoEXT VkSubpassFragmentDensityMapOffsetEndInfoQCOM;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
or a pointer to a structure extending this structure.fragmentDensityOffsetCount
is the number of offsets being specified.pFragmentDensityOffsets
is a pointer to an array of VkOffset2D structs, each of which describes the offset per layer.
The array elements are given per layer
as defined by
Fetch Density Value, where
index = layer.
Each (x,y) offset is in framebuffer pixels and shifts the fetch of the
fragment density map by that amount.
Offsets can be positive or negative.
Offset values specified for any subpass that is not the last subpass in the
render pass are ignored.
If neither the VkSubpassEndInfo::pNext
chain for the last
subpass of a render pass nor the VkRenderingEndInfoEXT::pNext
chain of a dynamic render pass include
VkRenderPassFragmentDensityMapOffsetEndInfoEXT
, or if
fragmentDensityOffsetCount
is zero, then the offset (0,0) is
used for Fetch Density Value.
If the render pass instance was begun with
VK_RENDERING_SUSPENDING_BIT
, then any
VkRenderPassFragmentDensityMapOffsetEndInfoEXT
structure is ignored.
If the render pass instance was begun with VK_RENDERING_RESUMING_BIT
but not VK_RENDERING_SUSPENDING_BIT
, then the offsets in
VkRenderPassFragmentDensityMapOffsetEndInfoEXT
apply to all of the
preceding suspended render pass instances in
submission order.
Valid Usage
VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-fragmentDensityMapOffsets-06503
If the fragmentDensityMapOffset
feature is not enabled or fragment
density map is not enabled in the render pass,
fragmentDensityOffsetCount
must equal 0
VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-fragmentDensityMapAttachment-06504
If
VkRenderPassFragmentDensityMapCreateInfoEXT::fragmentDensityMapAttachment
is not VK_ATTACHMENT_UNUSED
and was not created with
VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT
,
fragmentDensityOffsetCount
must equal 0
VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-pDepthStencilAttachment-06505
If the depth or stencil attachments for the render pass are used and
were not created with
VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT
,
fragmentDensityOffsetCount
must equal 0
VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-pInputAttachments-06506
If any used input attachments for the render pass were not created with
VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT
,
fragmentDensityOffsetCount
must equal 0
VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-pColorAttachments-06507
If any used color attachments for the render pass were not created with
VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT
,
fragmentDensityOffsetCount
must equal 0
VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-pResolveAttachments-06508
If any used resolve attachments for the render pass were not created
with VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT
,
fragmentDensityOffsetCount
must equal 0
VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-pPreserveAttachments-06509
If any used preserve attachments for the render pass were not created
with VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT
,
fragmentDensityOffsetCount
must equal 0
VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-fragmentDensityOffsetCount-06510
If fragmentDensityOffsetCount
is not 0
and multiview is enabled
for the render pass, fragmentDensityOffsetCount
must equal the
layerCount
that was specified in creating the fragment density map
attachment view
VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-fragmentDensityOffsetCount-06511
If fragmentDensityOffsetCount
is not 0
and multiview is not
enabled for the render pass, fragmentDensityOffsetCount
must
equal 1
VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-x-06512
The x
component of each element of pFragmentDensityOffsets
must be an integer multiple of
fragmentDensityOffsetGranularity.width
VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-y-06513
The y
component of each element of pFragmentDensityOffsets
must be an integer multiple of
fragmentDensityOffsetGranularity.height
Valid Usage (Implicit)
VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-sType-sType
sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT
VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-pFragmentDensityOffsets-parameter
If fragmentDensityOffsetCount
is not 0
, pFragmentDensityOffsets
must be a valid pointer to an array of fragmentDensityOffsetCount
VkOffset2D structures