VkRenderPassPerformanceCountersByRegionBeginInfoARM(3)

Name

VkRenderPassPerformanceCountersByRegionBeginInfoARM - Structure specifying per region performance counters

C Specification

The VkRenderPassPerformanceCountersByRegionBeginInfoARM structure is defined as:

// Provided by VK_ARM_performance_counters_by_region
typedef struct VkRenderPassPerformanceCountersByRegionBeginInfoARM {
    VkStructureType           sType;
    void*                     pNext;
    uint32_t                  counterAddressCount;
    const VkDeviceAddress*    pCounterAddresses;
    VkBool32                  serializeRegions;
    uint32_t                  counterIndexCount;
    uint32_t*                 pCounterIndices;
} VkRenderPassPerformanceCountersByRegionBeginInfoARM;

Members

  • sType is a VkStructureType value identifying this structure.

  • pNext is NULL or a pointer to a structure extending this structure.

  • counterAddressCount is the number of entries in the pCounterAddresses array.

  • pCounterAddresses is a pointer to an array of VkDeviceAddress where performance counter data will be written.

  • serializeRegions controls whether the implementation serializes the execution of each region.

  • counterIndexCount is the number of entries in the pCounterIndices array.

  • pCounterIndices is a pointer to an array of VkPerformanceCounterARM::counterID values, as enumerated by vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM, to enable in this render pass instance.

Description

Performance counters values are written to each element of pCounterAddresses in an implementation-dependent manner. These writes execute in the VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT pipeline stage.

The index into this array is calculated as:

uint32_t index = s * L + l;

where s is the physical subpass index, L is the maximum number of views or layers in the current render pass instance, and l is the index of the current view or layer.

When using a render pass object with multiple subpasses, an implementation may merge one more subpasses. The physical subpass index represents the index into the set of subpasses that remain after such merge operations are done.

The VK_EXT_subpass_merge_feedback extension can be used to determine which if any subpasses have been merged. The physical subpass index is equal to the postMergeIndex value provided in VkRenderPassSubpassFeedbackInfoEXT.

Within each element of pCounterAddresses, counter values are written in framebuffer-space order if VkPhysicalDevicePerformanceCountersByRegionPropertiesARM::identityTransformOrder is VK_TRUE.

Each counter value is written as an unsigned 32-bit integer value.

If the render pass has a fragment density map, performance counter values are only written for regions where the fragment area is unchanged.

Valid Usage
  • VUID-VkRenderPassPerformanceCountersByRegionBeginInfoARM-counterAddressCount-11815
    counterAddressCount must be equal to S × L, where S is the number of subpasses in the current render pass instance, and L is the number of layers in the current render pass instance or the index of the most significant bit of any view mask in the current render pass instance

  • VUID-VkRenderPassPerformanceCountersByRegionBeginInfoARM-pCounterAddresses-11816
    For any element of pCounterAddresses that is not 0, if the buffer from which it was queried is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object

  • VUID-VkRenderPassPerformanceCountersByRegionBeginInfoARM-pCounterAddresses-11817
    For any element of pCounterAddresses[i], all device addresses between pCounterAddresses[i] and pCounterAddresses[i] plus N - 1, must be in the buffer device address range of the same buffer, where N is given by \(N = \mathbin{align}\left(\left\lceil w/rsw \right\rceil \times \mathbin{align}\left(c \times sizeof(uint32\_t), ra\right), rsa\right) \times \left\lceil h/rsh \right\rceil\), where w is the value of VkRenderingInfo::renderArea.extent.width, h is the value of VkRenderingInfo::renderArea.extent.height, rsw is the value of VkPhysicalDevicePerformanceCountersByRegionPropertiesARM::performanceCounterRegionSize.width, rsh is the value of VkPhysicalDevicePerformanceCountersByRegionPropertiesARM::performanceCounterRegionSize.height, c is the value of counterIndexCount, ra is the value of VkPhysicalDevicePerformanceCountersByRegionPropertiesARM::regionAlignment, and rsa is the value of VkPhysicalDevicePerformanceCountersByRegionPropertiesARM::rowStrideAlignment

  • VUID-VkRenderPassPerformanceCountersByRegionBeginInfoARM-counterIndexCount-11818
    counterIndexCount must be less than or equal to VkPhysicalDevicePerformanceCountersByRegionPropertiesARM::maxPerRegionPerformanceCounters

Valid Usage (Implicit)
  • VUID-VkRenderPassPerformanceCountersByRegionBeginInfoARM-sType-sType
    sType must be VK_STRUCTURE_TYPE_RENDER_PASS_PERFORMANCE_COUNTERS_BY_REGION_BEGIN_INFO_ARM

  • VUID-VkRenderPassPerformanceCountersByRegionBeginInfoARM-pCounterAddresses-parameter
    pCounterAddresses must be a valid pointer to a valid VkDeviceAddress value

  • VUID-VkRenderPassPerformanceCountersByRegionBeginInfoARM-pCounterIndices-parameter
    pCounterIndices must be a valid pointer to a uint32_t value

See Also

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.