Structures

VkDeviceQueueCreateInfo

Structure specifying parameters of a newly created device queue

The VkDeviceQueueCreateInfo structure is defined as:

typedef struct VkDeviceQueueCreateInfo {
    VkStructureType sType;
    const void* pNext;
    VkDeviceQueueCreateFlags flags;
    uint32_t queueFamilyIndex;
    uint32_t queueCount;
    const float* pQueuePriorities;
} VkDeviceQueueCreateInfo;
  • 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.

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::schedulingControlsFlagsmust contain VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM

VUID-VkDeviceQueueCreateInfo-internallySynchronizedQueues-12348

If the internallySynchronizedQueues feature is not enabled, flagsmust 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-pQueuePriorities-parameter

pQueuePriorities must be a valid pointer to an array of queueCount float values