VkDescriptorBufferBindingInfoEXT(3)

# VkDescriptorBufferBindingInfoEXT(3) Manual Page

## Name

VkDescriptorBufferBindingInfoEXT - Structure specifying descriptor buffer binding information

## C Specification

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

Warning | This functionality is superseded by VK_EXT_descriptor_heap. See Legacy Functionality for more information.

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

## Members

- `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. Usage flags other than VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT, VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT, and VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT are ignored.

## Description

If the `pNext` chain includes a VkBufferUsageFlags2CreateInfo structure, VkBufferUsageFlags2CreateInfo::`usage` from that structure is used instead of `usage` from this structure.

Valid Usage

- VUID-VkDescriptorBufferBindingInfoEXT-None-09499
  If the `pNext` chain does not include a VkBufferUsageFlags2CreateInfo structure, `usage` must be a valid combination of VkBufferUsageFlagBits values

- VUID-VkDescriptorBufferBindingInfoEXT-None-09500
  If the `pNext` chain does not include a VkBufferUsageFlags2CreateInfo structure, `usage` must not be 0

- VUID-VkDescriptorBufferBindingInfoEXT-usage-10998
  The `usage` must include at least one of VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT, VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT, or VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT

- 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 a device address allocated to the application from a buffer created with the VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT usage flag set

- VUID-VkDescriptorBufferBindingInfoEXT-usage-08123
  If `usage` includes VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT, `address` must be a device address allocated to the application from a buffer created with the VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT usage flag set

- VUID-VkDescriptorBufferBindingInfoEXT-usage-08124
  If `usage` includes VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT, `address` must be a device address allocated to the application from a buffer created with the VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT usage flag set

Valid Usage (Implicit)

- VUID-VkDescriptorBufferBindingInfoEXT-sType-sType
  `sType` must be VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT

- 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 VkBufferUsageFlags2CreateInfo or VkDescriptorBufferBindingPushDescriptorBufferHandleEXT

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

- VUID-VkDescriptorBufferBindingInfoEXT-address-parameter
  `address` must be a valid VkDeviceAddress value

## See Also

VK_EXT_descriptor_buffer, VkBufferUsageFlags, VkDeviceAddress, VkStructureType, vkCmdBindDescriptorBuffersEXT

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