vkUpdateDescriptorSets
Once allocated, descriptor sets can be updated with a combination of write and copy operations. To update descriptor sets, call:
void vkUpdateDescriptorSets(
VkDevice device,
uint32_t descriptorWriteCount,
const VkWriteDescriptorSet* pDescriptorWrites,
uint32_t descriptorCopyCount,
const VkCopyDescriptorSet* pDescriptorCopies);
device
is the logical device that updates the descriptor sets.descriptorWriteCount
is the number of elements in thepDescriptorWrites
array.pDescriptorWrites
is a pointer to an array of VkWriteDescriptorSet structures describing the descriptor sets to write to.descriptorCopyCount
is the number of elements in thepDescriptorCopies
array.pDescriptorCopies
is a pointer to an array of VkCopyDescriptorSet structures describing the descriptor sets to copy between.
The operations described by pDescriptorWrites
are performed first,
followed by the operations described by pDescriptorCopies
.
Within each array, the operations are performed in the order they appear in
the array.
Each element in the pDescriptorWrites
array describes an operation
updating the descriptor set using descriptors for resources specified in the
structure.
Each element in the pDescriptorCopies
array is a
VkCopyDescriptorSet structure describing an operation copying
descriptors between sets.
If the dstSet
member of any element of pDescriptorWrites
or
pDescriptorCopies
is bound, accessed, or modified by any command that
was recorded to a command buffer which is currently in the
recording or executable state,
and any of the descriptor bindings that are updated were not created with
the VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
or
VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT
bits set,
that command buffer becomes invalid.
Valid Usage
VUID-vkUpdateDescriptorSets-pDescriptorWrites-06236
For each element i where
pDescriptorWrites
[i].descriptorType
is
VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
or
VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
, elements of the
pTexelBufferView
member of pDescriptorWrites
[i] must have
been created on device
VUID-vkUpdateDescriptorSets-pDescriptorWrites-06237
For each element i where
pDescriptorWrites
[i].descriptorType
is
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
,
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
, or
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
, the buffer
member
of any element of the pBufferInfo
member of
pDescriptorWrites
[i] must have been created on device
VUID-vkUpdateDescriptorSets-pDescriptorWrites-06238
For each element i where
pDescriptorWrites
[i].descriptorType
is
VK_DESCRIPTOR_TYPE_SAMPLER
or
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, and dstSet
was
not allocated with a layout that included immutable samplers for
dstBinding
with descriptorType
, the sampler
member of
any element of the pImageInfo
member of pDescriptorWrites
[i]
must have been created on device
VUID-vkUpdateDescriptorSets-pDescriptorWrites-06239
For each element i where
pDescriptorWrites
[i].descriptorType
is
VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
,
VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
,
VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
, or
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
the imageView
member of any element of pDescriptorWrites
[i] must have been
created on device
VUID-vkUpdateDescriptorSets-pDescriptorWrites-06240
For each element i where
pDescriptorWrites
[i].descriptorType
is
VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
, elements of the
pAccelerationStructures
member of a
VkWriteDescriptorSetAccelerationStructureKHR structure in the
pNext
chain of pDescriptorWrites
[i] must have been created
on device
VUID-vkUpdateDescriptorSets-pDescriptorWrites-06241
For each element i where
pDescriptorWrites
[i].descriptorType
is
VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV
, elements of the
pAccelerationStructures
member of a
VkWriteDescriptorSetAccelerationStructureNV structure in the
pNext
chain of pDescriptorWrites
[i] must have been created
on device
VUID-vkUpdateDescriptorSets-pDescriptorWrites-06940
For each element i where
pDescriptorWrites
[i].descriptorType
is
VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
or
VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
, the imageView
member of any element of pDescriptorWrites
[i] must have been
created on device
VUID-vkUpdateDescriptorSets-pDescriptorWrites-06493
For each element i where
pDescriptorWrites
[i].descriptorType
is
VK_DESCRIPTOR_TYPE_SAMPLER
,
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
,
VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
,
VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, or
VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
,
pDescriptorWrites
[i].pImageInfo
must be a valid pointer to
an array of pDescriptorWrites
[i].descriptorCount
valid
VkDescriptorImageInfo
structures
VUID-vkUpdateDescriptorSets-pDescriptorWrites-06941
For each element i where
pDescriptorWrites
[i].descriptorType
is
VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
or
VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
,
pDescriptorWrites
[i].pImageInfo
must be a valid pointer to
an array of pDescriptorWrites
[i].descriptorCount
valid
VkDescriptorImageInfo
structures
VUID-vkUpdateDescriptorSets-None-03047
The dstSet
member of each element of pDescriptorWrites
or
pDescriptorCopies
for bindings which were created without the
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
or
VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT
bits set
must not be used by any command that was recorded to a command buffer
which is in the pending state
VUID-vkUpdateDescriptorSets-pDescriptorWrites-06993
Host access to pDescriptorWrites
[i].dstSet
and
pDescriptorCopies
[i].dstSet
must be
externally synchronized
unless explicitly denoted otherwise for specific flags
Valid Usage (Implicit)
VUID-vkUpdateDescriptorSets-device-parameter
device
must be a valid VkDevice handle
VUID-vkUpdateDescriptorSets-pDescriptorWrites-parameter
If descriptorWriteCount
is not 0
, pDescriptorWrites
must be a valid pointer to an array of descriptorWriteCount
valid VkWriteDescriptorSet structures
VUID-vkUpdateDescriptorSets-pDescriptorCopies-parameter
If descriptorCopyCount
is not 0
, pDescriptorCopies
must be a valid pointer to an array of descriptorCopyCount
valid VkCopyDescriptorSet structures