VkDescriptorBufferInfo
The VkDescriptorBufferInfo structure is defined as:
typedef struct VkDescriptorBufferInfo {
VkBuffer buffer;
VkDeviceSize offset;
VkDeviceSize range;
} VkDescriptorBufferInfo;
bufferis VK_NULL_HANDLE or the buffer resource.offsetis the offset in bytes from the start ofbuffer. Access to buffer memory via this descriptor uses addressing that is relative to this starting offset.rangeis the size in bytes that is used for this descriptor update, orVK_WHOLE_SIZEto use the range fromoffsetto the end of the buffer.When setting
rangetoVK_WHOLE_SIZE, the effective range must not be larger than the maximum range for the descriptor type (maxUniformBufferRangeormaxStorageBufferRange). This means thatVK_WHOLE_SIZEis not typically useful in the common case where uniform buffer descriptors are suballocated from a buffer that is much larger thanmaxUniformBufferRange.
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.
When range is VK_WHOLE_SIZE the effective range is calculated at
vkUpdateDescriptorSets is by taking the size of buffer minus the
offset.
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