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;
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.

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.

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

VUID-VkRenderPassFragmentDensityMapOffsetEndInfoEXT-pFragmentDensityOffsets-10730

Each element of pFragmentDensityOffsets must be identical for every vkCmdEndRendering2KHR call made in a render pass

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