vkCmdEndQuery
To end a query after the set of desired drawing or dispatching commands is executed, call:
void vkCmdEndQuery(
VkCommandBuffer commandBuffer,
VkQueryPool queryPool,
uint32_t query);
commandBuffer
is the command buffer into which this command will be recorded.queryPool
is the query pool that is managing the results of the query.query
is the query index within the query pool where the result is stored.
The command completes the query in queryPool
identified by
query
, and marks it as available.
This command defines an execution dependency between other query commands that reference the same query.
The first synchronization scope
includes all commands which reference the queries in queryPool
indicated by query
that occur earlier in
submission order.
The second synchronization scope includes only the operation of this command.
Calling vkCmdEndQuery
is equivalent to calling
vkCmdEndQueryIndexedEXT with the index
parameter set to zero.
Valid Usage
VUID-vkCmdEndQuery-None-01923
All queries used by the command must be active
VUID-vkCmdEndQuery-query-00810
query
must be less than the number of queries in queryPool
VUID-vkCmdEndQuery-query-00812
If vkCmdEndQuery
is 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-vkCmdEndQuery-queryPool-03227
If queryPool
was created with a queryType
of
VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
and one or more of the
counters used to create queryPool
was
VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR
, the
vkCmdEndQuery must be the last recorded command in
commandBuffer
VUID-vkCmdEndQuery-queryPool-03228
If queryPool
was created with a queryType
of
VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
and one or more of the
counters used to create queryPool
was
VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR
, the
vkCmdEndQuery must not be recorded within a render pass instance
VUID-vkCmdEndQuery-None-07007
If called within a subpass of a render pass instance, the corresponding
vkCmdBeginQuery
* command must have been called previously within
the same subpass
Valid Usage (Implicit)
VUID-vkCmdEndQuery-commandBuffer-parameter
commandBuffer
must be a valid VkCommandBuffer handle
VUID-vkCmdEndQuery-queryPool-parameter
queryPool
must be a valid VkQueryPool handle
VUID-vkCmdEndQuery-commandBuffer-recording
commandBuffer
must be in the recording state
VUID-vkCmdEndQuery-commandBuffer-cmdpool
The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, decode, or encode operations
VUID-vkCmdEndQuery-commonparent
Both of commandBuffer
, and queryPool
must have been created, allocated, or retrieved from the same VkDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized - Host access to the
VkCommandPool
thatcommandBuffer
was allocated from must be externally synchronized ::