VkRenderPassPerformanceCountersByRegionBeginInfoARM
The VkRenderPassPerformanceCountersByRegionBeginInfoARM structure is
defined as:
typedef struct VkRenderPassPerformanceCountersByRegionBeginInfoARM {
VkStructureType sType;
void* pNext;
uint32_t counterAddressCount;
const VkDeviceAddress* pCounterAddresses;
VkBool32 serializeRegions;
uint32_t counterIndexCount;
uint32_t* pCounterIndices;
} VkRenderPassPerformanceCountersByRegionBeginInfoARM;
pub struct RenderPassPerformanceCountersByRegionBeginInfoARM {
s_type: vk::StructureType,
p_next: *mut c_void, // Pointer to next structure
counter_address_count: u32,
p_counter_addresses: *const vk::DeviceAddress,
serialize_regions: vk::Bool32,
counter_index_count: u32,
p_counter_indices: *mut u32,
}
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.counterAddressCountis the number of entries in thepCounterAddressesarray.pCounterAddressesis a pointer to an array of VkDeviceAddress where performance counter data will be written.serializeRegionscontrols whether the implementation serializes the execution of each region.counterIndexCountis the number of entries in thepCounterIndicesarray.pCounterIndicesis a pointer to an array of VkPerformanceCounterARM::counterIDvalues, as enumerated by vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM, to enable in this render pass instance.
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.
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 each 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 each 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 , 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 an array of counterAddressCount VkDeviceAddress values
VUID-VkRenderPassPerformanceCountersByRegionBeginInfoARM-pCounterIndices-parameter
pCounterIndices must be a valid pointer to an array of counterIndexCount uint32_t values
VUID-VkRenderPassPerformanceCountersByRegionBeginInfoARM-counterAddressCount-arraylength
counterAddressCount must be greater than 0
VUID-VkRenderPassPerformanceCountersByRegionBeginInfoARM-counterIndexCount-arraylength
counterIndexCount must be greater than 0