VKGETPHYSICALDEVICEQ(3)

NAME
vkGetPhysicalDeviceQueueFamilyProperties - Reports properties of the queues of the specified physical device.

C SPECIFICATION

    void vkGetPhysicalDeviceQueueFamilyProperties(
        VkPhysicalDevice                            physicalDevice,
        uint32_t*                                   pQueueFamilyPropertyCount,
        VkQueueFamilyProperties*                    pQueueFamilyProperties);

PARAMETERS

physicalDevice
    Physical device to query.

pQueueFamilyPropertyCount
    Count indicating number of VkQueueFamilyProperties pointed to by pQueueFamilyProperties.

pQueueFamilyProperties
    Pointer to an array of VkQueueFamilyProperties structures receiving the information about each particular queue family.

DESCRIPTION

vkGetPhysicalDeviceQueueFamilyProperties retrieves properties of the queues on a physical device whose handle is given in physicalDevice. pQueueFamilyPropertyCount must be set to the size of the array pointed to by pQueueFamilyProperties and thus specifies the number of queue families to retrieve information for. The pQueueFamilyProperties parameter should point to an array of VkQueueFamilyProperties structures to be filled out with the properties of the queue families. If pQueueFamilyProperties is NULL then vkGetPhysicalDeviceQueueFamilyProperties will update the value pointed by pQueueFamilyPropertyCount with the number of queue families available on the specified physical device.

The device will overwrite the entries of pQueueFamilyProperties with information about the supported queues, and will write the number of structures filled into the variable pointed to by pQueueFamilyPropertyCount. Each element of pQueueFamilyProperties is an instance of the VkQueueFamilyProperties structure, the definition of which is:

    typedef struct VkQueueFamilyProperties {
        VkQueueFlags    queueFlags;
        uint32_t        queueCount;
        uint32_t        timestampValidBits;
        VkExtent3D      minImageTransferGranularity;
    } VkQueueFamilyProperties;

The members of VkQueueFamilyProperties have the following meanings:

    • queueFlags is a bitfield made up from members of the VkQueueFlagBits enumeration indicating capabilities of the queue. The list of capabilities is described below.

    • queueCount contains the number of individual queues within the specified queue family. Queues within a single family are considered identical from a feature support perspective and are directly compatible with one another.

    • timestampValidBits contains the number of valid bits that will be written to timestamp by vkCmdWriteTimestamp. Timestamps are always 64-bit unsigned integers. However, less than 64 bits may actually be valid. Additional bits will contain zeros. If timestampValidBits is zero then the queue does not support timestamps and vkCmdWriteTimestamp may not be used in command buffers submitted to queues in this family. If timestampValidBits is non-zero, it must be at least 32, and may be as high as 64.

The valid bits that may be contained in queueFlags are comprised of the members of the VkQueueFlagBits enumeration, the definition of which is:

    typedef enum VkQueueFlagBits {
        VK_QUEUE_GRAPHICS_BIT = 0x00000001,
        VK_QUEUE_COMPUTE_BIT = 0x00000002,
        VK_QUEUE_TRANSFER_BIT = 0x00000004,
        VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
    } VkQueueFlagBits;

    • If a queue’s queueFlags member contains VK_QUEUE_GRAPHICS_BIT, then it supports graphics operations such as binding graphics state and graphics pipelines and executing drawing commands.

    • If a queue’s queueFlags member contains VK_QUEUE_COMPUTE_BIT, then it supports compute operations such as binding compute pipelines and executing compute dispatches.

    • If a queue’s queueFlags member contains VK_QUEUE_TRANSFER_BIT, then it supports transfer operations, which include copying data and images.

    • If a queue’s queueFlags member contains VK_QUEUE_SPARSE_BINDING_BIT, then it supports binding memory to sparse buffer and image resources.

All Vulkan implementations must expose at least one queue, each of which has at least one queue capability bit set. Note, though, that it is possible that new sets of capabilities are exposed by extensions or future API versions and so a queue may have none of the bits listed above set.

VALID USAGE

    • physicalDevice must be a valid VkPhysicalDevice handle

    • pQueueFamilyPropertyCount must be a pointer to a uint32_t value

    • If the value referenced by pQueueFamilyPropertyCount is not 0, and pQueueFamilyProperties is not NULL, pQueueFamilyProperties must be a pointer to an array of pQueueFamilyPropertyCount VkQueueFamilyProperties structures

SEE ALSO

vkGetPhysicalDeviceFeatures, vkGetPhysicalDeviceProperties, vkGetPhysicalDeviceMemoryProperties, VkQueueFamilyProperties

COPYRIGHT

Copyright © 2014-2016 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.

AUTHOR

Khronos Group
    Author.