## C Specification

The VkDescriptorBufferInfo structure is defined as:

// Provided by VK_VERSION_1_0
typedef struct VkDescriptorBufferInfo {
VkBuffer        buffer;
VkDeviceSize    offset;
VkDeviceSize    range;
} VkDescriptorBufferInfo;

## Members

• buffer is VK_NULL_HANDLE or the buffer resource.

• offset is the offset in bytes from the start of buffer. Access to buffer memory via this descriptor uses addressing that is relative to this starting offset.

• range is the size in bytes that is used for this descriptor update, or VK_WHOLE_SIZE to use the range from offset to the end of the buffer.

## Description

 Note When setting range to VK_WHOLE_SIZE, the effective range must not be larger than the maximum range for the descriptor type (maxUniformBufferRange or maxStorageBufferRange). This means that VK_WHOLE_SIZE is not typically useful in the common case where uniform buffer descriptors are suballocated from a buffer that is much larger than maxUniformBufferRange.

For VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC and VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC descriptor types, offset is the base offset from which the dynamic offset is applied and range is the static size used for all dynamic offsets.

Valid Usage
• VUID-VkDescriptorBufferInfo-offset-00340
offset must be less than the size of buffer

• VUID-VkDescriptorBufferInfo-range-00341
If range is not equal to VK_WHOLE_SIZE, range must be greater than 0

• VUID-VkDescriptorBufferInfo-range-00342
If range is not equal to VK_WHOLE_SIZE, range must be less than or equal to the size of buffer minus offset

• VUID-VkDescriptorBufferInfo-buffer-02998
If the nullDescriptor feature is not enabled, buffer must not be VK_NULL_HANDLE

• VUID-VkDescriptorBufferInfo-buffer-02999
If buffer is VK_NULL_HANDLE, offset must be zero and range must be VK_WHOLE_SIZE

Valid Usage (Implicit)
• VUID-VkDescriptorBufferInfo-buffer-parameter
If buffer is not VK_NULL_HANDLE, buffer must be a valid VkBuffer handle

VkBuffer, VkDeviceSize, VkWriteDescriptorSet