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;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.fragmentDensityOffsetCountis the number of offsets being specified.pFragmentDensityOffsetsis 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 pFragmentDensityOffsetsmust be an integer multiple of
fragmentDensityOffsetGranularity.width
VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-y-06513
The y component of each element of pFragmentDensityOffsetsmust 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