VkQueryPoolCreateInfo(3)

# VkQueryPoolCreateInfo(3) Manual Page

## Name

VkQueryPoolCreateInfo - Structure specifying parameters of a newly created query pool

## C Specification

The `VkQueryPoolCreateInfo` structure is defined as:

    // Provided by VK_VERSION_1_0
    typedef struct VkQueryPoolCreateInfo {
        VkStructureType                  sType;
        const void*                      pNext;
        VkQueryPoolCreateFlags           flags;
        VkQueryType                      queryType;
        uint32_t                         queryCount;
        VkQueryPipelineStatisticFlags    pipelineStatistics;
    } VkQueryPoolCreateInfo;

## Members

- `sType` is a VkStructureType value identifying this structure.

- `pNext` is `NULL` or a pointer to a structure extending this structure.

- `flags` is a bitmask of VkQueryPoolCreateFlagBits

- `queryType` is a VkQueryType value specifying the type of queries managed by the pool.

- `queryCount` is the number of queries managed by the pool.

- `pipelineStatistics` is a bitmask of VkQueryPipelineStatisticFlagBits specifying which counters will be returned in queries on the new pool, as described below in https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-pipestats. `pipelineStatistics` is ignored if `queryType` is not VK_QUERY_TYPE_PIPELINE_STATISTICS.

## Description

Valid Usage

- VUID-VkQueryPoolCreateInfo-queryType-00791
  If the `pipelineStatisticsQuery` feature is not enabled, `queryType` must not be VK_QUERY_TYPE_PIPELINE_STATISTICS

- VUID-VkQueryPoolCreateInfo-queryType-12416
  If the elapsedTimerQuery feature is not enabled, `queryType` must not be VK_QUERY_TYPE_TIME_ELAPSED_QCOM

- VUID-VkQueryPoolCreateInfo-meshShaderQueries-07068
  If the `meshShaderQueries` feature is not enabled, `queryType` must not be VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT

- VUID-VkQueryPoolCreateInfo-meshShaderQueries-07069
  If the `meshShaderQueries` feature is not enabled, and `queryType` is VK_QUERY_TYPE_PIPELINE_STATISTICS, `pipelineStatistics` must not contain VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT or VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT

- VUID-VkQueryPoolCreateInfo-queryType-00792
  If `queryType` is VK_QUERY_TYPE_PIPELINE_STATISTICS, `pipelineStatistics` must be a valid combination of VkQueryPipelineStatisticFlagBits values

- VUID-VkQueryPoolCreateInfo-queryType-09534
  If `queryType` is VK_QUERY_TYPE_PIPELINE_STATISTICS, `pipelineStatistics` must not be zero

- VUID-VkQueryPoolCreateInfo-queryType-03222
  If `queryType` is VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR, the `pNext` chain must include a VkQueryPoolPerformanceCreateInfoKHR structure

- VUID-VkQueryPoolCreateInfo-queryCount-02763
  `queryCount` must be greater than 0

- VUID-VkQueryPoolCreateInfo-queryType-11839
  If `queryType` is VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR, then at least one of the queue families of the device must support result status queries, as indicated by VkQueueFamilyQueryResultStatusPropertiesKHR::`queryResultStatusSupport`

- VUID-VkQueryPoolCreateInfo-pNext-10779
  If the `pNext` chain includes a VkVideoProfileInfoKHR structure and its `videoCodecOperation` member is VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR, then the `videoDecodeVP9` feature must be enabled

- VUID-VkQueryPoolCreateInfo-queryType-07133
  If `queryType` is VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR, then the `pNext` chain must include a VkVideoProfileInfoKHR structure with `videoCodecOperation` specifying an encode operation

- VUID-VkQueryPoolCreateInfo-queryType-07906
  If `queryType` is VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR, then the `pNext` chain must include a VkQueryPoolVideoEncodeFeedbackCreateInfoKHR structure

- VUID-VkQueryPoolCreateInfo-queryType-07907
  If `queryType` is VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR, and the `pNext` chain includes a VkVideoProfileInfoKHR structure and a VkQueryPoolVideoEncodeFeedbackCreateInfoKHR structure, then VkQueryPoolVideoEncodeFeedbackCreateInfoKHR::`encodeFeedbackFlags` must not contain any bits that are not set in VkVideoEncodeCapabilitiesKHR::`supportedEncodeFeedbackFlags`, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the video profile described by VkVideoProfileInfoKHR and its `pNext` chain

- VUID-VkQueryPoolCreateInfo-queryType-12437
  If `queryType` is VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR and the `pNext` chain includes a VkQueryPoolVideoEncodeFeedbackCreateInfoKHR structure with its `encodeFeedbackFlags` member containing VK_VIDEO_ENCODE_FEEDBACK_AVERAGE_QUANTIZATION_BIT_KHR, VK_VIDEO_ENCODE_FEEDBACK_MIN_QUANTIZATION_BIT_KHR, VK_VIDEO_ENCODE_FEEDBACK_MAX_QUANTIZATION_BIT_KHR, VK_VIDEO_ENCODE_FEEDBACK_INTRA_PIXELS_BIT_KHR, VK_VIDEO_ENCODE_FEEDBACK_INTER_PIXELS_BIT_KHR, VK_VIDEO_ENCODE_FEEDBACK_SKIPPED_PIXELS_BIT_KHR, or VK_VIDEO_ENCODE_FEEDBACK_PICTURE_PARTITION_COUNT_BIT_KHR, then `videoEncodeFeedback2` must be enabled

- VUID-VkQueryPoolCreateInfo-queryType-12438
  If `queryType` is VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR and the `pNext` chain includes a VkQueryPoolVideoEncodePerPartitionFeedbackCreateInfoKHR structure with a non-zero `maxPerPartitionFeedbackEntries` member, then `videoEncodeFeedback2` must be enabled

- VUID-VkQueryPoolCreateInfo-queryType-12439
  If `queryType` is VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR and the `pNext` chain includes a VkQueryPoolVideoEncodePerPartitionFeedbackCreateInfoKHR structure with a non-zero `maxPerPartitionFeedbackEntries` member, then VkQueryPoolVideoEncodePerPartitionFeedbackCreateInfoKHR::`perPartitionEncodeFeedbackFlags` must not be zero

- VUID-VkQueryPoolCreateInfo-queryType-12440
  If `queryType` is VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR and the `pNext` chain includes a VkQueryPoolVideoEncodePerPartitionFeedbackCreateInfoKHR structure, then its `maxPerPartitionFeedbackEntries` must be less than or equal to VkVideoEncodeFeedback2CapabilitiesKHR::`maxPerPartitionFeedbackEntries`, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the video profile described by VkVideoProfileInfoKHR and its `pNext` chain

- VUID-VkQueryPoolCreateInfo-queryType-12441
  If `queryType` is VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR and the `pNext` chain includes a VkQueryPoolVideoEncodePerPartitionFeedbackCreateInfoKHR structure, then its `perPartitionEncodeFeedbackFlags` must not contain any bits that are not set in VkVideoEncodeFeedback2CapabilitiesKHR::`supportedPerPartitionEncodeFeedbackFlags`, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the video profile described by VkVideoProfileInfoKHR and its `pNext` chain

- VUID-VkQueryPoolCreateInfo-pNext-10248
  If the `pNext` chain includes a VkVideoProfileInfoKHR structure and its `videoCodecOperation` member is VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR, then the `videoEncodeAV1` feature must be enabled

- VUID-VkQueryPoolCreateInfo-pNext-10918
  If the `pNext` chain includes a VkVideoEncodeProfileRgbConversionInfoVALVE structure, then the `videoEncodeRgbConversion` feature must be enabled

Valid Usage (Implicit)

- VUID-VkQueryPoolCreateInfo-sType-sType
  `sType` must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO

- VUID-VkQueryPoolCreateInfo-pNext-pNext
  Each `pNext` member of any structure (including this one) in the `pNext` chain must be either `NULL` or a pointer to a valid instance of VkQueryPoolPerformanceCreateInfoKHR, VkQueryPoolPerformanceQueryCreateInfoINTEL, VkQueryPoolVideoEncodeFeedbackCreateInfoKHR, VkQueryPoolVideoEncodePerPartitionFeedbackCreateInfoKHR, VkVideoDecodeAV1ProfileInfoKHR, VkVideoDecodeH264ProfileInfoKHR, VkVideoDecodeH265ProfileInfoKHR, VkVideoDecodeUsageInfoKHR, VkVideoDecodeVP9ProfileInfoKHR, VkVideoEncodeAV1ProfileInfoKHR, VkVideoEncodeH264ProfileInfoKHR, VkVideoEncodeH265ProfileInfoKHR, VkVideoEncodeUsageInfoKHR, or VkVideoProfileInfoKHR

- VUID-VkQueryPoolCreateInfo-sType-unique
  The `sType` value of each structure in the `pNext` chain must be unique

- VUID-VkQueryPoolCreateInfo-flags-parameter
  `flags` must be a valid combination of VkQueryPoolCreateFlagBits values

- VUID-VkQueryPoolCreateInfo-queryType-parameter
  `queryType` must be a valid VkQueryType value

## See Also

VK_VERSION_1_0, VkQueryPipelineStatisticFlags, VkQueryPoolCreateFlags, VkQueryType, VkStructureType, vkCreateQueryPool

## 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.

## Copyright

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0