Structures

VkRenderPassFragmentDensityMapOffsetEndInfoEXT

Structure specifying fragment density map offset subpass end information

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 is NULL 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 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