VkBindDescriptorSetsInfo
The VkBindDescriptorSetsInfo structure is defined as:
typedef struct VkBindDescriptorSetsInfo {
    VkStructureType sType;
    const void* pNext;
    VkShaderStageFlags stageFlags;
    VkPipelineLayout layout;
    uint32_t firstSet;
    uint32_t descriptorSetCount;
    const VkDescriptorSet* pDescriptorSets;
    uint32_t dynamicOffsetCount;
    const uint32_t* pDynamicOffsets;
} VkBindDescriptorSetsInfo;
or the equivalent
typedef VkBindDescriptorSetsInfo VkBindDescriptorSetsInfoKHR;
- sTypeis a VkStructureType value identifying this structure.
- pNextis- NULLor a pointer to a structure extending this structure.
- stageFlagsis a bitmask of VkShaderStageFlagBits specifying the shader stages the descriptor sets will be bound to.
- layoutis a VkPipelineLayout object used to program the bindings. If the- dynamicPipelineLayoutfeature is enabled,- layoutcan be VK_NULL_HANDLE and the layout must be specified by chaining the VkPipelineLayoutCreateInfo structure off the- pNext
- firstSetis the set number of the first descriptor set to be bound.
- descriptorSetCountis the number of elements in the- pDescriptorSetsarray.
- pDescriptorSetsis a pointer to an array of handles to VkDescriptorSet objects describing the descriptor sets to bind to.
- dynamicOffsetCountis the number of dynamic offsets in the- pDynamicOffsetsarray.
- pDynamicOffsetsis a pointer to an array of- uint32_tvalues specifying dynamic offsets.
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-VkBindDescriptorSetsInfo-pDescriptorSets-00358
Each element of pDescriptorSets must have been allocated with a
VkDescriptorSetLayout that matches (is the same as, or identically
defined as) the VkDescriptorSetLayout at set n in layout,
where n is the sum of firstSet and the index into
pDescriptorSets
VUID-VkBindDescriptorSetsInfo-dynamicOffsetCount-00359
dynamicOffsetCount must be equal to the total number of dynamic
descriptors in pDescriptorSets
VUID-VkBindDescriptorSetsInfo-firstSet-00360
The sum of firstSet and descriptorSetCount must be less
than or equal to VkPipelineLayoutCreateInfo::setLayoutCount
provided when layout was created
VUID-VkBindDescriptorSetsInfo-pDynamicOffsets-01971
Each element of pDynamicOffsets which corresponds to a descriptor
binding with type VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC must
be a multiple of
VkPhysicalDeviceLimits::minUniformBufferOffsetAlignment
VUID-VkBindDescriptorSetsInfo-pDynamicOffsets-01972
Each element of pDynamicOffsets which corresponds to a descriptor
binding with type VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC must
be a multiple of
VkPhysicalDeviceLimits::minStorageBufferOffsetAlignment
VUID-VkBindDescriptorSetsInfo-pDescriptorSets-01979
For each dynamic uniform or storage buffer binding in
pDescriptorSets, the sum of the effective offset and the range of the binding must be less than or
equal to the size of the buffer
VUID-VkBindDescriptorSetsInfo-pDescriptorSets-06715
For each dynamic uniform or storage buffer binding in
pDescriptorSets, if the range was set with VK_WHOLE_SIZE
then pDynamicOffsets which corresponds to the descriptor binding
must be 0
VUID-VkBindDescriptorSetsInfo-pDescriptorSets-04616
Each element of pDescriptorSets must not have been allocated from
a VkDescriptorPool with the
VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT flag set
VUID-VkBindDescriptorSetsInfo-pDescriptorSets-06563
If the graphicsPipelineLibrary feature is not enabled, each
element of pDescriptorSets must be a valid VkDescriptorSet
VUID-VkBindDescriptorSetsInfo-pDescriptorSets-08010
Each element of pDescriptorSets must have been allocated with a
VkDescriptorSetLayout which was not created with
VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
VUID-VkBindDescriptorSetsInfo-None-09495
If the dynamicPipelineLayout
feature is not enabled,
layout must be a valid VkPipelineLayout handle
VUID-VkBindDescriptorSetsInfo-layout-09496
If layout is VK_NULL_HANDLE, the pNext chain must
include a valid VkPipelineLayoutCreateInfo structure
Valid Usage (Implicit)
VUID-VkBindDescriptorSetsInfo-sType-sType
sType must be VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO
VUID-VkBindDescriptorSetsInfo-pNext-pNext
pNext must be NULL or a pointer to a valid instance of VkPipelineLayoutCreateInfo
VUID-VkBindDescriptorSetsInfo-sType-unique
The sType value of each structure in the pNext chain must be unique
VUID-VkBindDescriptorSetsInfo-stageFlags-parameter
stageFlags must be a valid combination of VkShaderStageFlagBits values
VUID-VkBindDescriptorSetsInfo-stageFlags-requiredbitmask
stageFlags must not be 0
VUID-VkBindDescriptorSetsInfo-layout-parameter
If layout is not VK_NULL_HANDLE, layout must be a valid VkPipelineLayout handle
VUID-VkBindDescriptorSetsInfo-pDescriptorSets-parameter
pDescriptorSets must be a valid pointer to an array of descriptorSetCount valid VkDescriptorSet handles
VUID-VkBindDescriptorSetsInfo-pDynamicOffsets-parameter
If dynamicOffsetCount is not 0, and pDynamicOffsets is not NULL, pDynamicOffsets must be a valid pointer to an array of dynamicOffsetCount or VK_NULL_HANDLE uint32_t values
VUID-VkBindDescriptorSetsInfo-descriptorSetCount-arraylength
descriptorSetCount must be greater than 0
VUID-VkBindDescriptorSetsInfo-commonparent
Both of layout, and the elements of pDescriptorSets that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice