Function Prototype

vkCmdResetQueryPool

Reset queries in a query pool
primary / secondary
outside
graphics / compute / decode / encode / opticalflow
action

To reset a range of queries in a query pool on a queue, call:

void vkCmdResetQueryPool(
    VkCommandBuffer commandBuffer,
    VkQueryPool queryPool,
    uint32_t firstQuery,
    uint32_t queryCount);
  • commandBuffer is the command buffer into which this command will be recorded.
  • queryPool is the handle of the query pool managing the queries being reset.
  • firstQuery is the initial query index to reset.
  • queryCount is the number of queries to reset.

When executed on a queue, this command sets the status of query indices [firstQuery, firstQuery + queryCount - 1] to unavailable.

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 firstQuery and queryCount that occur earlier in submission order.

The second synchronization scope includes all commands which reference the queries in queryPool indicated by firstQuery and queryCount that occur later in submission order.

The operation of this command happens after the first scope and happens before the second scope.

If the queryType used to create queryPool was VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR, this command sets the status of query indices [firstQuery, firstQuery + queryCount - 1] to unavailable for each pass of queryPool, as indicated by a call to vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR.

Because vkCmdResetQueryPool resets all the passes of the indicated queries, applications must not record a vkCmdResetQueryPool command for a queryPool created with VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR in a command buffer that needs to be submitted multiple times as indicated by a call to vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR. Otherwise applications will never be able to complete the recorded queries.

Valid Usage

VUID-vkCmdResetQueryPool-firstQuery-09436

firstQuery must be less than the number of queries in queryPool

VUID-vkCmdResetQueryPool-firstQuery-09437

The sum of firstQuery and queryCount must be less than or equal to the number of queries in queryPool

VUID-vkCmdResetQueryPool-None-02841

All queries used by the command must not be active

VUID-vkCmdResetQueryPool-firstQuery-02862

If queryPool was created with 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 begin commands for a query from the set of queries [firstQuery, firstQuery + queryCount - 1]

Valid Usage (Implicit)

VUID-vkCmdResetQueryPool-commandBuffer-cmdpool

The VkCommandPool that commandBuffer was allocated from must support graphics, compute, decode, encode, or optical flow operations

VUID-vkCmdResetQueryPool-renderpass

This command must only be called outside of a render pass instance

VUID-vkCmdResetQueryPool-videocoding

This command must only be called outside of a video coding scope

VUID-vkCmdResetQueryPool-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 that commandBuffer was allocated from must be externally synchronized ::