VkDeviceQueueCreateInfo(3)

# VkDeviceQueueCreateInfo(3) Manual Page

## Name

VkDeviceQueueCreateInfo - Structure specifying parameters of a newly created device queue

## C Specification

The `VkDeviceQueueCreateInfo` structure is defined as:

    // Provided by VK_VERSION_1_0
    typedef struct VkDeviceQueueCreateInfo {
        VkStructureType             sType;
        const void*                 pNext;
        VkDeviceQueueCreateFlags    flags;
        uint32_t                    queueFamilyIndex;
        uint32_t                    queueCount;
        const float*                pQueuePriorities;
    } VkDeviceQueueCreateInfo;

## 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 indicating behavior of the queues.

- `queueFamilyIndex` is an unsigned integer indicating the index of the queue family in which to create the queues on this device. This index corresponds to the index of an element of the `pQueueFamilyProperties` array that was returned by `vkGetPhysicalDeviceQueueFamilyProperties`.

- `queueCount` is an unsigned integer specifying the number of queues to create in the queue family indicated by `queueFamilyIndex`, and with the behavior specified by `flags`.

- `pQueuePriorities` is a pointer to an array of `queueCount` normalized floating-point values, specifying priorities of work that will be submitted to each created queue. See Queue Priority for more information.

## Description

Some queue families support functionality which requires a device feature or extension to be enabled, as indicated by the VkQueueFamilyProperties::`queueFlags` member. Applications may create such queues and submit queue submission commands to them without enabling the corresponding feature or extension, but must not utilize the specific functionality that they did not enable.

For example, sparse memory management operations can be performed on queues from queue families exposing the VK_QUEUE_SPARSE_BINDING_BIT bit, provided the sparseBinding feature is enabled. If a queue family supports both the VK_QUEUE_SPARSE_BINDING_BIT and VK_QUEUE_TRANSFER_BIT bits, applications may create a queue from this family and issue transfer operations without enabling the sparseBinding feature.

Valid Usage

- VUID-VkDeviceQueueCreateInfo-queueFamilyIndex-00381
  `queueFamilyIndex` must be less than `pQueueFamilyPropertyCount` returned by `vkGetPhysicalDeviceQueueFamilyProperties`

- VUID-VkDeviceQueueCreateInfo-queueCount-00382
  `queueCount` must be less than or equal to the `queueCount` member of the `VkQueueFamilyProperties` structure, as returned by `vkGetPhysicalDeviceQueueFamilyProperties` in the `pQueueFamilyProperties`[queueFamilyIndex]

- VUID-VkDeviceQueueCreateInfo-pQueuePriorities-00383
  Each element of `pQueuePriorities` must be between `0.0` and `1.0` inclusive

- VUID-VkDeviceQueueCreateInfo-flags-02861
  If the `protectedMemory` feature is not enabled, the VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT bit of `flags` must not be set

- VUID-VkDeviceQueueCreateInfo-flags-06449
  If `flags` includes VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT, `queueFamilyIndex` must be the index of a queue family that includes the VK_QUEUE_PROTECTED_BIT capability

- VUID-VkDeviceQueueCreateInfo-pNext-09398
  If the `pNext` chain includes a VkDeviceQueueShaderCoreControlCreateInfoARM structure then VkPhysicalDeviceSchedulingControlsPropertiesARM::`schedulingControlsFlags` must contain VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM

- VUID-VkDeviceQueueCreateInfo-internallySynchronizedQueues-12348
  If the `internallySynchronizedQueues` feature is not enabled, `flags` must not include VK_DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR

Valid Usage (Implicit)

- VUID-VkDeviceQueueCreateInfo-sType-sType
  `sType` must be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO

- VUID-VkDeviceQueueCreateInfo-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 VkDeviceQueueGlobalPriorityCreateInfo or VkDeviceQueueShaderCoreControlCreateInfoARM

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

- VUID-VkDeviceQueueCreateInfo-flags-parameter
  `flags` must be a valid combination of VkDeviceQueueCreateFlagBits values

- VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter
  `pQueuePriorities` must be a valid pointer to an array of `queueCount` `float` values

- VUID-VkDeviceQueueCreateInfo-queueCount-arraylength
  `queueCount` must be greater than `0`

## See Also

VK_VERSION_1_0, VkDeviceCreateInfo, VkDeviceQueueCreateFlags, VkStructureType

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