VkWriteDescriptorSet - Structure specifying the parameters of a
descriptor set write operation
If the destination descriptor is a mutable descriptor, the active
descriptor type for the destination descriptor becomes descriptorType.
dstBinding must be
a binding with a non-zero descriptorCount
dstBinding must be
a binding with a non-zero
DescriptorSetLayoutCreateInfo::bindingCount
All consecutive
bindings updated via a single WriteDescriptorSet structure, except
those with a descriptorCount of zero, must have identical
descriptorType
All consecutive
bindings updated via a single WriteDescriptorSet structure, except
those with a descriptorCount of zero, must have identical
stageFlags
All consecutive
bindings updated via a single WriteDescriptorSet structure, except
those with a descriptorCount of zero, must all either use
immutable samplers or must all not use immutable samplers
All consecutive
bindings updated via a single WriteDescriptorSet structure, except
those with a descriptorCount of zero, must have identical
DescriptorBindingFlagBits
descriptorType
must match the type of dstBinding within dstSet
dstSet must be a valid
DescriptorSet handle
The sum of
dstArrayElement and descriptorCount must be less than or equal
to the number of array elements in the descriptor set binding
specified by dstBinding, and all applicable
consecutive bindings
If descriptorType
is
DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK,
dstArrayElement must be an integer multiple of 4
If descriptorType
is
DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK,
descriptorCount must be an integer multiple of 4
If descriptorType
is
DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
or
DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
each element of pTexelBufferView must be either a valid
BufferView handle or
NULL_HANDLE
If descriptorType
is
DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
or
DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
and the
nullDescriptor
feature is not enabled, each element of pTexelBufferView must
not be NULL_HANDLE
If descriptorType
is
DESCRIPTOR_TYPE_UNIFORM_BUFFER,
DESCRIPTOR_TYPE_STORAGE_BUFFER,
DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
or
DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
pBufferInfo must be a valid pointer to an array of
descriptorCount valid DescriptorBufferInfo structures
If descriptorType
is DESCRIPTOR_TYPE_SAMPLER or
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 each element of pImageInfo must be a valid
Sampler object
If descriptorType
is
DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
DESCRIPTOR_TYPE_SAMPLED_IMAGE,
or
DESCRIPTOR_TYPE_STORAGE_IMAGE,
the imageView member of each element of pImageInfo must be
either a valid ImageView handle or
NULL_HANDLE
If descriptorType
is
DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
DESCRIPTOR_TYPE_SAMPLED_IMAGE,
or
DESCRIPTOR_TYPE_STORAGE_IMAGE,
and the
nullDescriptor
feature is not enabled, the imageView member of each element of
pImageInfo must not be NULL_HANDLE
If descriptorType
is
DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,
DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM,
or
DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
then the imageView member of each element of pImageInfo must
not be NULL_HANDLE
If descriptorType
is
DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK,
the pNext chain must include a
WriteDescriptorSetInlineUniformBlock
structure whose dataSize member equals descriptorCount
If descriptorType
is
DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR,
the pNext chain must include a
WriteDescriptorSetAccelerationStructureKHR
structure whose accelerationStructureCount member equals
descriptorCount
If descriptorType
is
DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV,
the pNext chain must include a
WriteDescriptorSetAccelerationStructureNV
structure whose accelerationStructureCount member equals
descriptorCount
If descriptorType
is DESCRIPTOR_TYPE_TENSOR_ARM,
the pNext chain must include a
WriteDescriptorSetTensorARM
structure whose tensorViewCount member equals descriptorCount
If descriptorType
is
DESCRIPTOR_TYPE_SAMPLED_IMAGE,
then the imageView member of each pImageInfo element must have
been created without a
SamplerYcbcrConversionInfo
structure in its pNext chain
If descriptorType
is
DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
and if any element of pImageInfo has an imageView member that
was created with a
SamplerYcbcrConversionInfo
structure in its pNext chain, then dstSet must have been
allocated with a layout that included immutable samplers for
dstBinding, and the corresponding immutable sampler must have
been created with an
identically defined
SamplerYcbcrConversionInfo
object
If descriptorType
is
DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
and dstSet was allocated with a layout that included immutable
samplers for dstBinding, then the imageView member of each
element of pImageInfo which corresponds to an immutable sampler
that enables
sampler Y′CBCR conversion
must have been created with a
SamplerYcbcrConversionInfo
structure in its pNext chain with an
identically defined
SamplerYcbcrConversionInfo
to the corresponding immutable sampler
If descriptorType
is
DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
dstSet was allocated with a layout that included immutable
samplers for dstBinding, and those samplers enable
sampler Y′CBCR conversion,
then imageView must not be
NULL_HANDLE
If descriptorType
is
DESCRIPTOR_TYPE_UNIFORM_BUFFER
or
DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
the offset member of each element of pBufferInfo must be a
multiple of
PhysicalDeviceLimits::minUniformBufferOffsetAlignment
If descriptorType
is
DESCRIPTOR_TYPE_STORAGE_BUFFER
or
DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
the offset member of each element of pBufferInfo must be a
multiple of
PhysicalDeviceLimits::minStorageBufferOffsetAlignment
If descriptorType
is
DESCRIPTOR_TYPE_UNIFORM_BUFFER,
DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
DESCRIPTOR_TYPE_STORAGE_BUFFER,
or
DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
and the buffer member of any element of pBufferInfo is the
handle of a non-sparse buffer, then that buffer must be bound
completely and contiguously to a single
DeviceMemory object
If descriptorType
is
DESCRIPTOR_TYPE_UNIFORM_BUFFER
or
DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
the buffer member of each element of pBufferInfo must have
been created with the
BUFFER_USAGE_UNIFORM_BUFFER_BIT
usage flag set
If descriptorType
is
DESCRIPTOR_TYPE_STORAGE_BUFFER
or
DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
the buffer member of each element of pBufferInfo must have
been created with the
BUFFER_USAGE_STORAGE_BUFFER_BIT
usage flag set
If descriptorType
is
DESCRIPTOR_TYPE_UNIFORM_BUFFER
or
DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
the range member of each element of pBufferInfo, or the
effective range
if range is WHOLE_SIZE, must be
less than or equal to
PhysicalDeviceLimits::maxUniformBufferRange
If descriptorType
is
DESCRIPTOR_TYPE_STORAGE_BUFFER
or
DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
and the
shader64BitIndexing
feature is not enabled, the range member of each element of
pBufferInfo, or the
effective range
if range is WHOLE_SIZE, must be
less than or equal to
PhysicalDeviceLimits::maxStorageBufferRange
If descriptorType
is
DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
the pTexelBufferView
buffer view usage
must include
BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT
If descriptorType
is
DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
the pTexelBufferView
buffer view usage
must include
BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
If descriptorType
is
DESCRIPTOR_TYPE_STORAGE_IMAGE
or
DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
the imageView member of each element of pImageInfo must have
been created with the
identity swizzle
If descriptorType
is
DESCRIPTOR_TYPE_SAMPLED_IMAGE
or
DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
the imageView member of each element of pImageInfo must have
been created with the
IMAGE_USAGE_SAMPLED_BIT
usage flag set
If descriptorType
is
DESCRIPTOR_TYPE_SAMPLED_IMAGE
the imageLayout member of each element of pImageInfo must be a
member of the list given in
Sampled Image
If descriptorType
is
DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
the imageLayout member of each element of pImageInfo must be a
member of the list given in
Combined Image Sampler
If descriptorType
is
DESCRIPTOR_TYPE_INPUT_ATTACHMENT
the imageLayout member of each element of pImageInfo must be a
member of the list given in
Input Attachment
If descriptorType
is
DESCRIPTOR_TYPE_STORAGE_IMAGE
the imageLayout member of each element of pImageInfo must be a
member of the list given in
Storage Image
If descriptorType
is
DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
the imageView member of each element of pImageInfo must have
been created with the
IMAGE_USAGE_INPUT_ATTACHMENT_BIT
usage flag set
If descriptorType
is
DESCRIPTOR_TYPE_STORAGE_IMAGE,
the imageView member of each element of pImageInfo must have
been created with the
IMAGE_USAGE_STORAGE_BIT
usage flag set
If descriptorType
is DESCRIPTOR_TYPE_SAMPLER,
then dstSet must not have been allocated with a layout that
included immutable samplers for dstBinding
If the
DescriptorSetLayoutBinding for dstSet at dstBinding is
DESCRIPTOR_TYPE_MUTABLE_EXT,
the new active descriptor type descriptorType must exist in the
corresponding pMutableDescriptorTypeLists list for dstBinding
If descriptorType
is
DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
the imageView member of each element of pImageInfo must have
either been created without a
ImageViewMinLodCreateInfoEXT
included in the pNext chain or with a
ImageViewMinLodCreateInfoEXT::minLod
of 0.0
If descriptorType
is
DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM,
the imageView member of each element of pImageInfo must have
been created with a view created with an image created with the
IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM
usage flag set
If descriptorType
is
DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM,
the imageView member of each element of pImageInfo must have
been created with a view created with an image created with the
IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM
usage flag set