VkDescriptorBufferInfo
The VkDescriptorBufferInfo
structure is defined as:
typedef struct VkDescriptorBufferInfo {
VkBuffer buffer;
VkDeviceSize offset;
VkDeviceSize range;
} VkDescriptorBufferInfo;
buffer
is VK_NULL_HANDLE or the buffer resource.offset
is the offset in bytes from the start ofbuffer
. 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, orVK_WHOLE_SIZE
to use the range fromoffset
to the end of the buffer.When setting
range
toVK_WHOLE_SIZE
, the effective range must not be larger than the maximum range for the descriptor type (maxUniformBufferRange
ormaxStorageBufferRange
). This means thatVK_WHOLE_SIZE
is 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