Structures

VkDescriptorUpdateTemplateEntry

Describes a single descriptor update of the descriptor update template

The VkDescriptorUpdateTemplateEntry structure is defined as:

typedef struct VkDescriptorUpdateTemplateEntry {
    uint32_t dstBinding;
    uint32_t dstArrayElement;
    uint32_t descriptorCount;
    VkDescriptorType descriptorType;
    size_t offset;
    size_t stride;
} VkDescriptorUpdateTemplateEntry;

or the equivalent

typedef VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntryKHR;
  • dstBinding is the descriptor binding to update when using this descriptor update template.
  • dstArrayElement is the starting element in the array belonging to dstBinding. If the descriptor binding identified by dstBinding has a descriptor type of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK then dstArrayElement specifies the starting byte offset to update.
  • descriptorCount is the number of descriptors to update. If descriptorCount is greater than the number of remaining array elements in the destination binding, those affect consecutive bindings in a manner similar to VkWriteDescriptorSet above. If the descriptor binding identified by dstBinding has a descriptor type of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK then descriptorCount specifies the number of bytes to update and the remaining array elements in the destination binding refer to the remaining number of bytes in it.
  • descriptorType is a VkDescriptorType specifying the type of the descriptor.
  • offset is the offset in bytes of the first binding in the raw data structure.
  • stride is the stride in bytes between two consecutive array elements of the descriptor update information in the raw data structure. The actual pointer ptr for each array element j of update entry i is computed using the following formula:
        const char *ptr = (const char *)pData + pDescriptorUpdateEntries[i].offset + j * pDescriptorUpdateEntries[i].stride
    

    The stride is useful in case the bindings are stored in structs along with other data. If descriptorType is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK then the value of stride is ignored and the stride is assumed to be 1, i.e. the descriptor update information for them is always specified as a contiguous range.

Valid Usage

VUID-VkDescriptorUpdateTemplateEntry-dstBinding-00354

dstBinding must be a valid binding in the descriptor set layout implicitly specified when using a descriptor update template to update descriptors

VUID-VkDescriptorUpdateTemplateEntry-dstArrayElement-00355

dstArrayElement and descriptorCount must be less than or equal to the number of array elements in the descriptor set binding implicitly specified when using a descriptor update template to update descriptors, and all applicable consecutive bindings, as described by VkWriteDescriptorSet

VUID-VkDescriptorUpdateTemplateEntry-descriptor-02226

If descriptor type is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK, dstArrayElementmust be an integer multiple of 4

VUID-VkDescriptorUpdateTemplateEntry-descriptor-02227

If descriptor type is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK, descriptorCountmust be an integer multiple of 4

Valid Usage (Implicit)