# VkSubpassFragmentDensityMapOffsetEndInfoQCOM(3) Manual Page

## Name

VkSubpassFragmentDensityMapOffsetEndInfoQCOM - Structure specifying fragment density map offset subpass end information

Loading… please wait.

## C Specification

If the VkSubpassEndInfo::`pNext` chain includes a `VkSubpassFragmentDensityMapOffsetEndInfoQCOM` structure, then that structure includes an array of fragment density map offsets per layer for the render pass.

The `VkSubpassFragmentDensityMapOffsetEndInfoQCOM` structure is defined as:

    // Provided by VK_QCOM_fragment_density_map_offset
    typedef struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM {
        VkStructureType      sType;
        const void*          pNext;
        uint32_t             fragmentDensityOffsetCount;
        const VkOffset2D*    pFragmentDensityOffsets;
    } VkSubpassFragmentDensityMapOffsetEndInfoQCOM;

## Members

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

## Description

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 the VkSubpassEndInfo::`pNext` chain for the last subpass of a render pass does not include `VkSubpassFragmentDensityMapOffsetEndInfoQCOM`, or if `fragmentDensityOffsetCount` is zero, then the offset (0,0) is used for Fetch Density Value.

Valid Usage

- VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-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-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-fragmentDensityMapAttachment-06504
  If `VkSubpassDescription`::`fragmentDensityMapAttachment` is not is not `VK_ATTACHMENT_UNUSED` and was not created with `VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM`, `fragmentDensityOffsetCount` must equal `0`

- VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pDepthStencilAttachment-06505
  If `VkSubpassDescription`::`pDepthStencilAttachment` is not is not `VK_ATTACHMENT_UNUSED` and was not created with `VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM`, `fragmentDensityOffsetCount` must equal `0`

- VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pInputAttachments-06506
  If any element of `VkSubpassDescription`::`pInputAttachments` is not is not `VK_ATTACHMENT_UNUSED` and was not created with `VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM`, `fragmentDensityOffsetCount` must equal `0`

- VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pColorAttachments-06507
  If any element of `VkSubpassDescription`::`pColorAttachments` is not is not `VK_ATTACHMENT_UNUSED` and was not created with `VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM`, `fragmentDensityOffsetCount` must equal `0`

- VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pResolveAttachments-06508
  If any element of `VkSubpassDescription`::`pResolveAttachments` is not is not `VK_ATTACHMENT_UNUSED` and was not created with `VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM`, `fragmentDensityOffsetCount` must equal `0`

- VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pPreserveAttachments-06509
  If any element of `VkSubpassDescription`::`pPreserveAttachments` is not is not `VK_ATTACHMENT_UNUSED` and was not created with `VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM`, `fragmentDensityOffsetCount` must equal `0`

- VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-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-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-fragmentDensityOffsetCount-06511
  If `fragmentDensityOffsetCount` is not `0` and multiview is not enabled for the render pass, `fragmentDensityOffsetCount` must equal `1`

- VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-x-06512
  The `x` component of each element of `pFragmentDensityOffsets` must be an integer multiple of `fragmentDensityOffsetGranularity.width`

- VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-y-06513
  The `y` component of each element of `pFragmentDensityOffsets` must be an integer multiple of `fragmentDensityOffsetGranularity.height`

Valid Usage (Implicit)

- VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-sType-sType
  `sType` must be `VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM`

- VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pFragmentDensityOffsets-parameter
  If `fragmentDensityOffsetCount` is not `0`, `pFragmentDensityOffsets` must be a valid pointer to an array of `fragmentDensityOffsetCount` VkOffset2D structures

## See Also

VK_QCOM_fragment_density_map_offset, VkOffset2D, VkStructureType

## Document Notes

For more information, see the Vulkan Specification

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright 2014-2024 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0