VkSetDescriptorBufferOffsetsInfoEXT
The VkSetDescriptorBufferOffsetsInfoEXT
structure is defined as:
typedef struct VkSetDescriptorBufferOffsetsInfoEXT {
VkStructureType sType;
const void* pNext;
VkShaderStageFlags stageFlags;
VkPipelineLayout layout;
uint32_t firstSet;
uint32_t setCount;
const uint32_t* pBufferIndices;
const VkDeviceSize* pOffsets;
} VkSetDescriptorBufferOffsetsInfoEXT;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
or a pointer to a structure extending this structure.stageFlags
is a bitmask of VkShaderStageFlagBits specifying the shader stages the descriptor sets will be bound tolayout
is a VkPipelineLayout object used to program the bindings. If thedynamicPipelineLayout
feature is enabled,layout
can be VK_NULL_HANDLE and the layout must be specified by chaining VkPipelineLayoutCreateInfo structure off thepNext
firstSet
is the number of the first set to be bound.setCount
is the number of elements in thepBufferIndices
andpOffsets
arrays.pBufferIndices
is a pointer to an array of indices into the descriptor buffer binding points set by vkCmdBindDescriptorBuffersEXT.pOffsets
is a pointer to an array of VkDeviceSize offsets to apply to the bound descriptor buffers.
If stageFlags
specifies a subset of all stages corresponding to one or
more pipeline bind points, the binding operation still affects all stages
corresponding to the given pipeline bind point(s) as if the equivalent
original version of this command had been called with the same parameters.
For example, specifying a stageFlags
value of
VK_SHADER_STAGE_VERTEX_BIT
| VK_SHADER_STAGE_FRAGMENT_BIT
|
VK_SHADER_STAGE_COMPUTE_BIT
is equivalent to calling the original
version of this command once with VK_PIPELINE_BIND_POINT_GRAPHICS
and
once with VK_PIPELINE_BIND_POINT_COMPUTE
.
Valid Usage
VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08061
The offsets in pOffsets
must be aligned to
VkPhysicalDeviceDescriptorBufferPropertiesEXT::descriptorBufferOffsetAlignment
VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08063
The offsets in pOffsets
must be small enough such that any
descriptor binding referenced by layout
without the VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT
flag
computes a valid address inside the underlying VkBuffer
VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08126
The offsets in pOffsets
must be small enough such that any
location accessed by a shader as a sampler descriptor must be within
VkPhysicalDeviceDescriptorBufferPropertiesEXT::maxSamplerDescriptorBufferRange
of the sampler descriptor buffer binding
VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08127
The offsets in pOffsets
must be small enough such that any
location accessed by a shader as a resource descriptor must be within
VkPhysicalDeviceDescriptorBufferPropertiesEXT::maxResourceDescriptorBufferRange
of the resource descriptor buffer binding
VUID-VkSetDescriptorBufferOffsetsInfoEXT-pBufferIndices-08064
Each element of pBufferIndices
must be less than
VkPhysicalDeviceDescriptorBufferPropertiesEXT::maxDescriptorBufferBindings
VUID-VkSetDescriptorBufferOffsetsInfoEXT-pBufferIndices-08065
Each element of pBufferIndices
must reference a valid descriptor
buffer binding set by a previous call to
vkCmdBindDescriptorBuffersEXT in commandBuffer
VUID-VkSetDescriptorBufferOffsetsInfoEXT-firstSet-08066
The sum of firstSet
and setCount
must be less than or equal
to VkPipelineLayoutCreateInfo::setLayoutCount
provided when
layout
was created
VUID-VkSetDescriptorBufferOffsetsInfoEXT-firstSet-09006
The VkDescriptorSetLayout for each set from firstSet
to
firstSet
+ setCount
when layout
was created
must have been created with the
VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
bit set
VUID-VkSetDescriptorBufferOffsetsInfoEXT-None-09495
If the dynamicPipelineLayout
feature is not enabled,
layout
must be a valid VkPipelineLayout handle
VUID-VkSetDescriptorBufferOffsetsInfoEXT-layout-09496
If layout
is VK_NULL_HANDLE, the pNext
chain must
include a valid VkPipelineLayoutCreateInfo structure
Valid Usage (Implicit)
VUID-VkSetDescriptorBufferOffsetsInfoEXT-sType-sType
sType
must be VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT
VUID-VkSetDescriptorBufferOffsetsInfoEXT-pNext-pNext
pNext
must be NULL
or a pointer to a valid instance of VkPipelineLayoutCreateInfo
VUID-VkSetDescriptorBufferOffsetsInfoEXT-sType-unique
The sType
value of each struct in the pNext
chain must be unique
VUID-VkSetDescriptorBufferOffsetsInfoEXT-stageFlags-parameter
stageFlags
must be a valid combination of VkShaderStageFlagBits values
VUID-VkSetDescriptorBufferOffsetsInfoEXT-stageFlags-requiredbitmask
stageFlags
must not be 0
VUID-VkSetDescriptorBufferOffsetsInfoEXT-layout-parameter
If layout
is not VK_NULL_HANDLE, layout
must be a valid VkPipelineLayout handle
VUID-VkSetDescriptorBufferOffsetsInfoEXT-pBufferIndices-parameter
pBufferIndices
must be a valid pointer to an array of setCount
uint32_t
values
VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-parameter
pOffsets
must be a valid pointer to an array of setCount
VkDeviceSize values
VUID-VkSetDescriptorBufferOffsetsInfoEXT-setCount-arraylength
setCount
must be greater than 0