VKQUEUEFAMILYPROPERT(3)

NAME
VkQueueFamilyProperties - Structure providing information about a queue family.

C SPECIFICATION

The VkQueueFamilyProperties structure is defined as:

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

MEMBERS

    • queueFlags contains flags indicating the capabilities of the queues in this queue family.

    • queueCount is the unsigned integer count of queues in this queue family.

    • timestampValidBits is the unsigned integer count of meaningful bits in the timestamps written via vkCmdWriteTimestamp. The valid range for the count is 36..64 bits, or a value of 0, indicating no support for timestamps. Bits outside the valid range are guaranteed to be zeros.

    • minImageTransferGranularity is the minimum granularity supported for image transfer operations on the queues in this queue family.

DESCRIPTION

The bits specified in queueFlags are:

    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 VK_QUEUE_GRAPHICS_BIT is set, then the queues in this queue family support graphics operations.

    • if VK_QUEUE_COMPUTE_BIT is set, then the queues in this queue family support compute operations.

    • if VK_QUEUE_TRANSFER_BIT is set, then the queues in this queue family support transfer operations.

    • if VK_QUEUE_SPARSE_BINDING_BIT is set, then the queues in this queue family support sparse memory management operations (see Sparse Resources). If any of the sparse resource features are enabled, then at least one queue family must support this bit.

If an implementation exposes any queue family that supports graphics operations, at least one queue family of at least one physical device exposed by the implementation must support both graphics and compute operations.

    Note

    All commands that are allowed on a queue that supports transfer operations are also allowed on a queue that supports either graphics or compute operations thus if the capabilities of a queue family include VK_QUEUE_GRAPHICS_BIT or VK_QUEUE_COMPUTE_BIT then reporting the VK_QUEUE_TRANSFER_BIT capability separately for that queue family is optional.

For further details see Queues.

The value returned in minImageTransferGranularity has a unit of compressed texel blocks for images having a block-compressed format, and a unit of texels otherwise.

Possible values of minImageTransferGranularity are:

    • [ $(0,0,0)$ ] which indicates that only whole mip levels must be transferred using the image transfer operations on the corresponding queues. In this case, the following restrictions apply to all offset and extent parameters of image transfer operations:

        • The x, y, and z members of a VkOffset3D parameter must always be zero.

        • The width, height, and depth members of a VkExtent3D parameter must always match the width, height, and depth of the image subresource corresponding to the parameter, respectively.

    • [ $(Ax, Ay, Az)$ ] where [ $Ax$ ], [ $Ay$ ], and [ $Az$ ] are all integer powers of two. In this case the following restrictions apply to all image transfer operations:

        • x, y, and z of a VkOffset3D parameter must be integer multiples of [ $Ax$ ], [ $Ay$ ], and [ $Az$ ], respectively.

        • width of a VkExtent3D parameter must be an integer multiple of [ $Ax$ ], or else [ $(x + width)$ ] must equal the width of the image subresource corresponding to the parameter.

        • height of a VkExtent3D parameter must be an integer multiple of [ $Ay$ ], or else [ $(y + height)$ ] must equal the height of the image subresource corresponding to the parameter.

        • depth of a VkExtent3D parameter must be an integer multiple of [ $Az$ ], or else [ $(z + depth)$ ] must equal the depth of the image subresource corresponding to the parameter.

        • If the format of the image corresponding to the parameters is one of the block-compressed formats then for the purposes of the above calculations the granularity must be scaled up by the compressed texel block dimensions.

Queues supporting graphics and/or compute operations must report [ $(1,1,1)$ ] in minImageTransferGranularity, meaning that there are no additional restrictions on the granularity of image transfer operations for these queues. Other queues supporting image transfer operations are only required to support whole mip level transfers, thus minImageTransferGranularity for queues belonging to such queue families may be [ $(0,0,0)$ ].

SEE ALSO

VkExtent3D, VkQueueFlags, vkGetPhysicalDeviceQueueFamilyProperties

DOCUMENT NOTES

For more information, see the Vulkan Specification at URL

https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#VkQueueFamilyProperties

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification,not directly.

COPYRIGHT

Copyright (c) 2014-2016 Khronos Group. This work is licensed under a Creative Commons Attribution 4.0 International License.

AUTHOR

Khronos Group
    Author.