C Specification

Data describing a descriptor buffer binding is passed in a VkDescriptorBufferBindingInfoEXT structure:

// Provided by VK_EXT_descriptor_buffer
typedef struct VkDescriptorBufferBindingInfoEXT {
    VkStructureType       sType;
    void*                 pNext;
    VkDeviceAddress       address;
    VkBufferUsageFlags    usage;
} VkDescriptorBufferBindingInfoEXT;


  • sType is a VkStructureType value identifying this structure.

  • pNext is NULL or a pointer to a structure extending this structure.

  • address is a VkDeviceAddress specifying the device address defining the descriptor buffer to be bound.

  • usage is a bitmask of VkBufferUsageFlagBits specifying the VkBufferCreateInfo::usage for the buffer from which address was queried.


If a VkPipelineCreateFlags2CreateInfoKHR structure is present in the pNext chain, VkPipelineCreateFlags2CreateInfoKHR::flags from that structure is used instead of flags from this structure.

Valid Usage
  • VUID-VkDescriptorBufferBindingInfoEXT-bufferlessPushDescriptors-08056
    If VkPhysicalDeviceDescriptorBufferPropertiesEXT::bufferlessPushDescriptors is VK_FALSE, and usage contains VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT, then the pNext chain must include a VkDescriptorBufferBindingPushDescriptorBufferHandleEXT structure

  • VUID-VkDescriptorBufferBindingInfoEXT-address-08057
    address must be aligned to VkPhysicalDeviceDescriptorBufferPropertiesEXT::descriptorBufferOffsetAlignment

  • VUID-VkDescriptorBufferBindingInfoEXT-usage-08122
    If usage includes VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT, address must be an address within a valid buffer that was created with VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT

  • VUID-VkDescriptorBufferBindingInfoEXT-usage-08123
    If usage includes VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT, address must be an address within a valid buffer that was created with VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT

  • VUID-VkDescriptorBufferBindingInfoEXT-usage-08124
    If usage includes VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT, address must be an address within a valid buffer that was created with VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT

Valid Usage (Implicit)
  • VUID-VkDescriptorBufferBindingInfoEXT-sType-sType

  • VUID-VkDescriptorBufferBindingInfoEXT-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 VkBufferUsageFlags2CreateInfoKHR or VkDescriptorBufferBindingPushDescriptorBufferHandleEXT

  • VUID-VkDescriptorBufferBindingInfoEXT-sType-unique
    The sType value of each struct in the pNext chain must be unique

  • VUID-VkDescriptorBufferBindingInfoEXT-usage-parameter
    usage must be a valid combination of VkBufferUsageFlagBits values

  • VUID-VkDescriptorBufferBindingInfoEXT-usage-requiredbitmask
    usage must not be 0

See Also

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 2014-2023 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0