If the VkDescriptorSetLayoutBinding for dstBinding is DESCRIPTOR_TYPE_MUTABLE_EXT and srcBinding is not DESCRIPTOR_TYPE_MUTABLE_EXT, the new active descriptor type becomes the descriptor type of srcBinding. If both VkDescriptorSetLayoutBinding for srcBinding and dstBinding are DESCRIPTOR_TYPE_MUTABLE_EXT, the active descriptor type in each source descriptor is copied into the corresponding destination descriptor. The active descriptor type can be different for each source descriptor.
The intention is that copies to and from mutable descriptors is a simple memcpy. Copies between non-mutable and mutable descriptors are expected to require one memcpy per descriptor to handle the difference in size, but this use case with more than one descriptorCount is considered rare.
srcBinding must be a valid binding within srcSetsrcArrayElement 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 consecutive binding updatesdstBinding must be a valid binding within dstSetdstArrayElement 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 consecutive binding updatesdstBinding within dstSet must be equal to the type of srcBinding within srcSetsrcSet 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 consecutive binding updatessrcBinding is DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK, srcArrayElement must be an integer multiple of 4dstBinding is DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK, dstArrayElement must be an integer multiple of 4srcBinding or dstBinding is DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK, descriptorCount must be an integer multiple of 4srcSet’s layout was created with the DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT flag set, then dstSet’s layout must also have been created with the DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT flag setsrcSet’s layout was created with neither DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT nor DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT flags set, then dstSet’s layout must have been created without the DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT flag setsrcSet was allocated was created with the DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT flag set, then the descriptor pool from which dstSet was allocated must also have been created with the DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT flag setsrcSet was allocated was created with neither DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT nor DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT flags set, then the descriptor pool from which dstSet was allocated must have been created without the DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT flag setdstBinding is DESCRIPTOR_TYPE_SAMPLER, then dstSet must not have been allocated with a layout that included immutable samplers for dstBindingVkDescriptorSetLayoutBinding for dstSet at dstBinding is DESCRIPTOR_TYPE_MUTABLE_EXT, the new active descriptor type must exist in the corresponding pMutableDescriptorTypeLists list for dstBinding if the new active descriptor type is not DESCRIPTOR_TYPE_MUTABLE_EXTVkDescriptorSetLayoutBinding for srcSet at srcBinding is DESCRIPTOR_TYPE_MUTABLE_EXT and the VkDescriptorSetLayoutBinding for dstSet at dstBinding is not DESCRIPTOR_TYPE_MUTABLE_EXT, the active descriptor type for the source descriptor must match the descriptor type of dstBindingVkDescriptorSetLayoutBinding for dstSet at dstBinding is DESCRIPTOR_TYPE_MUTABLE_EXT, and the new active descriptor type is DESCRIPTOR_TYPE_MUTABLE_EXT, the pMutableDescriptorTypeLists for srcBinding and dstBinding must match exactlysType must be STRUCTURE_TYPE_COPY_DESCRIPTOR_SETpNext must be NULLsrcSet must be a valid VkDescriptorSet handledstSet must be a valid VkDescriptorSet handledstSet, and srcSet must have been created, allocated, or retrieved from the same VkDevice
struct VkCopyDescriptorSet {
VkStructureType sType;
void const * pNext;
VkDescriptorSet srcSet;
uint32_t srcBinding;
uint32_t srcArrayElement;
VkDescriptorSet dstSet;
uint32_t dstBinding;
uint32_t dstArrayElement;
uint32_t descriptorCount;
}
| Modifier and Type | Class and Description |
|---|---|
| public static class | VkCopyDescriptorSet.
An array of |
| Modifier and Type | Field and Description |
|---|---|
| public static final int | ALIGNOF
The struct alignment in bytes. |
| public static final int | DESCRIPTORCOUNT
The struct member offsets. |
| public static final int | DSTARRAYELEMENT
The struct member offsets. |
| public static final int | DSTBINDING
The struct member offsets. |
| public static final int | DSTSET
The struct member offsets. |
| public static final int | PNEXT
The struct member offsets. |
| public static final int | SIZEOF
The struct size in bytes. |
| public static final int | SRCARRAYELEMENT
The struct member offsets. |
| public static final int | SRCBINDING
The struct member offsets. |
| public static final int | SRCSET
The struct member offsets. |
| public static final int | STYPE
The struct member offsets. |
| Access | Constructor and Description |
|---|---|
| protected | |
| public | VkCopyDescriptorSet(ByteBuffer container)
Creates a |
| Modifier and Type | Method and Description |
|---|---|
| public static VkCopyDescriptorSet | |
| public static VkCopyDescriptorSet. | calloc(int
the buffer capacity capacity)Returns a new |
| public static VkCopyDescriptorSet | calloc(MemoryStack
the stack from which to allocate stack)Returns a new |
| public static VkCopyDescriptorSet. | calloc(int
the buffer capacity capacity, MemoryStack the stack from which to allocate stack)Returns a new |
| public static VkCopyDescriptorSet | |
| public static VkCopyDescriptorSet | |
| public static VkCopyDescriptorSet. | |
| public static VkCopyDescriptorSet. | |
| protected VkCopyDescriptorSet | create(long
the struct memory address address, ByteBuffer an optional container buffer, to be referenced strongly by the struct instance. container)Implements abstract org. the constructor, but returns the exact type of the Struct subclass.
|
| public static VkCopyDescriptorSet | |
| public static VkCopyDescriptorSet | |
| public static VkCopyDescriptorSet. | create(int
the buffer capacity capacity)Returns a new |
| public static VkCopyDescriptorSet. | create(long
the memory address address, int the buffer capacity capacity)Create a |
| public static VkCopyDescriptorSet | |
| public static VkCopyDescriptorSet. | |
| public int | |
| public VkCopyDescriptorSet | |
| public int | |
| public VkCopyDescriptorSet | |
| public int | |
| public VkCopyDescriptorSet | |
| public long | dstSet()
|
| public VkCopyDescriptorSet | |
| public static VkCopyDescriptorSet | |
| public static VkCopyDescriptorSet. | malloc(int
the buffer capacity capacity)Returns a new |
| public static VkCopyDescriptorSet | malloc(MemoryStack
the stack from which to allocate stack)Returns a new |
| public static VkCopyDescriptorSet. | malloc(int
the buffer capacity capacity, MemoryStack the stack from which to allocate stack)Returns a new |
| public static VkCopyDescriptorSet | |
| public static VkCopyDescriptorSet | |
| public static VkCopyDescriptorSet. | |
| public static VkCopyDescriptorSet. | |
| public static int | |
| public static void | |
| public static int | |
| public static void | |
| public static int | |
| public static void | |
| public static long | |
| public static void | |
| public static long | |
| public static void | |
| public static int | |
| public static void | |
| public static int | |
| public static void | |
| public static long | |
| public static void | |
| public static int | |
| public static void | |
| public long | |
| public VkCopyDescriptorSet | |
| public VkCopyDescriptorSet | set(int sType, long pNext, long srcSet, int srcBinding, int srcArrayElement, long dstSet, int dstBinding, int dstArrayElement, int descriptorCount)
Initializes this struct with the specified values. |
| public VkCopyDescriptorSet | Returns: this structthe source struct src)Copies the specified struct data to this struct. |
| public int | |
| public int | |
| public VkCopyDescriptorSet | |
| public int | |
| public VkCopyDescriptorSet | |
| public long | srcSet()
|
| public VkCopyDescriptorSet | |
| public int | |
| public VkCopyDescriptorSet | |
| public VkCopyDescriptorSet |