vkCmdBeginQueryIndexedEXT
To begin an indexed query, call:
void vkCmdBeginQueryIndexedEXT(
VkCommandBuffer commandBuffer,
VkQueryPool queryPool,
uint32_t query,
VkQueryControlFlags flags,
uint32_t index);
commandBufferis the command buffer into which this command will be recorded.queryPoolis the query pool that will manage the results of the query.queryis the query index within the query pool that will contain the results.flagsis a bitmask of VkQueryControlFlagBits specifying constraints on the types of queries that can be performed.indexis the query type specific index. When the query type isVK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXTorVK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT, the index represents the vertex stream.
The vkCmdBeginQueryIndexedEXT command operates the same as the
vkCmdBeginQuery command, except that it also accepts a query type
specific index parameter.
This command defines an execution dependency between other query commands that reference the same query index.
The first synchronization scope
includes all commands which reference the queries in queryPool
indicated by query and index that occur earlier in
submission order.
The second synchronization scope
includes all commands which reference the queries in queryPool
indicated by query and index that occur later in
submission order.
The operation of this command happens after the first scope and happens before the second scope.
Valid Usage
VUID-vkCmdBeginQueryIndexedEXT-None-00807
All queries used by the command must be unavailable
VUID-vkCmdBeginQueryIndexedEXT-queryType-02804
The queryType used to create queryPool must not be
VK_QUERY_TYPE_TIMESTAMP
VUID-vkCmdBeginQueryIndexedEXT-queryType-04728
The queryType used to create queryPool must not be
VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR or
VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
VUID-vkCmdBeginQueryIndexedEXT-queryType-06741
The queryType used to create queryPool must not be
VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR or
VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR
VUID-vkCmdBeginQueryIndexedEXT-queryType-04729
The queryType used to create queryPool must not be
VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV
VUID-vkCmdBeginQueryIndexedEXT-queryType-00800
If the occlusionQueryPrecise
feature is not enabled, or the queryType used to create
queryPool was not VK_QUERY_TYPE_OCCLUSION, flags must
not contain VK_QUERY_CONTROL_PRECISE_BIT
VUID-vkCmdBeginQueryIndexedEXT-query-00802
query must be less than the number of queries in queryPool
VUID-vkCmdBeginQueryIndexedEXT-queryType-00803
If the queryType used to create queryPool was
VK_QUERY_TYPE_OCCLUSION, the VkCommandPool that
commandBuffer was allocated from must support graphics operations
VUID-vkCmdBeginQueryIndexedEXT-queryType-00804
If the queryType used to create queryPool was
VK_QUERY_TYPE_PIPELINE_STATISTICS and any of the
pipelineStatistics indicate graphics operations, the
VkCommandPool that commandBuffer was allocated from must
support graphics operations
VUID-vkCmdBeginQueryIndexedEXT-queryType-00805
If the queryType used to create queryPool was
VK_QUERY_TYPE_PIPELINE_STATISTICS and any of the
pipelineStatistics indicate compute operations, the
VkCommandPool that commandBuffer was allocated from must
support compute operations
VUID-vkCmdBeginQueryIndexedEXT-query-00808
If called within a render pass instance, the sum of query and the
number of bits set in the current subpass’s view mask must be less than
or equal to the number of queries in queryPool
VUID-vkCmdBeginQueryIndexedEXT-queryType-07126
If the queryType used to create queryPool was
VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR, then the VkCommandPool
that commandBuffer was allocated from must have been created with
a queue family index that supports result
status queries, as indicated by
VkQueueFamilyQueryResultStatusPropertiesKHR::queryResultStatusSupport
VUID-vkCmdBeginQueryIndexedEXT-None-07127
If there is a bound video session, then there must be no active queries
VUID-vkCmdBeginQueryIndexedEXT-None-08370
If there is a bound video session, then it must not have been created
with VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR
VUID-vkCmdBeginQueryIndexedEXT-queryType-07128
If the queryType used to create queryPool was
VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR and there is a bound video
session, then queryPool must have been created with a
VkVideoProfileInfoKHR structure included in the pNext chain
of VkQueryPoolCreateInfo identical to the one specified in
VkVideoSessionCreateInfoKHR::pVideoProfile the bound video
session was created with
VUID-vkCmdBeginQueryIndexedEXT-queryType-07129
If the queryType used to create queryPool was
VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR, then there must be a
bound video session
VUID-vkCmdBeginQueryIndexedEXT-queryType-07130
If the queryType used to create queryPool was
VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR and there is a bound video
session, then queryPool must have been created with a
VkVideoProfileInfoKHR structure included in the pNext chain
of VkQueryPoolCreateInfo identical to the one specified in
VkVideoSessionCreateInfoKHR::pVideoProfile the bound video
session was created with
VUID-vkCmdBeginQueryIndexedEXT-queryType-07131
If the queryType used to create queryPool was not
VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR
or VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR,
then there must be no bound video session
VUID-vkCmdBeginQueryIndexedEXT-None-10681
This command must not be recorded when per-tile execution model is enabled
VUID-vkCmdBeginQueryIndexedEXT-queryPool-04753
If the queryPool was created with the same queryType as that
of another active query within
commandBuffer, then index must not match the index used for
the active query
VUID-vkCmdBeginQueryIndexedEXT-queryType-02338
If the queryType used to create queryPool was
VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT the
VkCommandPool that commandBuffer was allocated from must
support graphics operations
VUID-vkCmdBeginQueryIndexedEXT-queryType-02339
If the queryType used to create queryPool was
VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT the index
parameter must be less than
VkPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackStreams
VUID-vkCmdBeginQueryIndexedEXT-queryType-06692
If the queryType used to create queryPool was not
VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
and not VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT,
the index must be zero
VUID-vkCmdBeginQueryIndexedEXT-queryType-06689
If the queryType used to create queryPool was
VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT the VkCommandPool
that commandBuffer was allocated from must support graphics
operations
VUID-vkCmdBeginQueryIndexedEXT-queryType-06690
If the queryType used to create queryPool was
VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT the index parameter
must be less than
VkPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackStreams
VUID-vkCmdBeginQueryIndexedEXT-queryType-06691
If the queryType used to create queryPool was
VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT and the
primitivesGeneratedQueryWithNonZeroStreams feature is not
enabled, the index parameter must be zero
VUID-vkCmdBeginQueryIndexedEXT-queryType-06693
If the queryType used to create queryPool was
VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT then
primitivesGeneratedQuerymust be enabled
VUID-vkCmdBeginQueryIndexedEXT-queryType-02341
If the queryType used to create queryPool was
VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT then
VkPhysicalDeviceTransformFeedbackPropertiesEXT::transformFeedbackQueriesmust be supported
VUID-vkCmdBeginQueryIndexedEXT-queryType-07071
The queryType used to create queryPool must not be
VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT
VUID-vkCmdBeginQueryIndexedEXT-queryPool-07289
If queryPool was created with a queryType of
VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR, then the
VkQueryPoolPerformanceCreateInfoKHR::queueFamilyIndex
queryPool was created with must equal the queue family index of
the VkCommandPool that commandBuffer was allocated from
VUID-vkCmdBeginQueryIndexedEXT-queryPool-03223
If queryPool was created with a queryType of
VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR, the profiling lock must have been held before vkBeginCommandBuffer
was called on commandBuffer
VUID-vkCmdBeginQueryIndexedEXT-queryPool-03224
If queryPool was created with a queryType of
VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR and one of the counters used
to create queryPool was
VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR, the query begin
must be the first recorded command in commandBuffer
VUID-vkCmdBeginQueryIndexedEXT-queryPool-03225
If queryPool was created with a queryType of
VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR and one of the counters used
to create queryPool was
VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR, the begin command
must not be recorded within a render pass instance
VUID-vkCmdBeginQueryIndexedEXT-queryPool-03226
If queryPool was created with a queryType of
VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR and another query pool with a
queryType VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR has been used
within commandBuffer, its parent primary command buffer or
secondary command buffer recorded within the same parent primary command
buffer as commandBuffer, the
performanceCounterMultipleQueryPools feature must be enabled
VUID-vkCmdBeginQueryIndexedEXT-None-02863
If queryPool was created with a queryType of
VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR, this command must not be
recorded in a command buffer that, either directly or through secondary
command buffers, also contains a vkCmdResetQueryPool command
affecting the same query
Valid Usage (Implicit)
VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter
commandBuffer must be a valid VkCommandBuffer handle
VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter
queryPool must be a valid VkQueryPool handle
VUID-vkCmdBeginQueryIndexedEXT-flags-parameter
flags must be a valid combination of VkQueryControlFlagBits values
VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-recording
commandBuffer must be in the recording state
VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-cmdpool
The VkCommandPool that commandBuffer was allocated from must support graphics, compute, decode, or encode operations
VUID-vkCmdBeginQueryIndexedEXT-videocoding
This command must only be called outside of a video coding scope
VUID-vkCmdBeginQueryIndexedEXT-commonparent
Both of commandBuffer, and queryPool must have been created, allocated, or retrieved from the same VkDevice
Host Synchronization
- Host access to
commandBuffermust be externally synchronized - Host access to the
VkCommandPoolthatcommandBufferwas allocated from must be externally synchronized ::