## C Specification

The VkCopyDescriptorSet structure is defined as:

typedef struct VkCopyDescriptorSet {
VkStructureType    sType;
const void*        pNext;
VkDescriptorSet    srcSet;
uint32_t           srcBinding;
uint32_t           srcArrayElement;
VkDescriptorSet    dstSet;
uint32_t           dstBinding;
uint32_t           dstArrayElement;
uint32_t           descriptorCount;
} VkCopyDescriptorSet;

## Members

• sType is the type of this structure.

• pNext is NULL or a pointer to an extension-specific structure.

• srcSet, srcBinding, and srcArrayElement are the source set, binding, and array element, respectively.

• dstSet, dstBinding, and dstArrayElement are the destination set, binding, and array element, respectively.

• descriptorCount is the number of descriptors to copy from the source to destination. If descriptorCount is greater than the number of remaining array elements in the source or destination binding, those affect consecutive bindings in a manner similar to VkWriteDescriptorSet above.

## Description

Valid Usage
• srcBinding must be a valid binding within srcSet

• The sum of srcArrayElement and descriptorCount must be less than or equal to the number of array elements in the descriptor set binding specified by srcBinding, and all applicable consecutive bindings, as described by ../../html/vkspec.html#descriptorsets-updates-consecutive

• dstBinding must be a valid binding within dstSet

• 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, as described by ../../html/vkspec.html#descriptorsets-updates-consecutive

• If srcSet is equal to dstSet, then the source and destination ranges of descriptors must not overlap, where the ranges may include array elements from consecutive bindings as described by ../../html/vkspec.html#descriptorsets-updates-consecutive

Valid Usage (Implicit)
• sType must be VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET

• pNext must be NULL

• srcSet must be a valid VkDescriptorSet handle

• dstSet must be a valid VkDescriptorSet handle

• Both of dstSet, and srcSet must have been created, allocated, or retrieved from the same VkDevice