Structures

VkDescriptorSetAllocateInfo

Structure specifying the allocation parameters for descriptor sets

The VkDescriptorSetAllocateInfo structure is defined as:

typedef struct VkDescriptorSetAllocateInfo {
    VkStructureType sType;
    const void* pNext;
    VkDescriptorPool descriptorPool;
    uint32_t descriptorSetCount;
    const VkDescriptorSetLayout* pSetLayouts;
} VkDescriptorSetAllocateInfo;
  • sType is a VkStructureType value identifying this structure.
  • pNext is NULL or a pointer to a structure extending this structure.
  • descriptorPool is the pool which the sets will be allocated from.
  • descriptorSetCount determines the number of descriptor sets to be allocated from the pool.
  • pSetLayouts is a pointer to an array of descriptor set layouts, with each member specifying how the corresponding descriptor set is allocated.

Valid Usage

VUID-VkDescriptorSetAllocateInfo-apiVersion-07895

If the VK_KHR_maintenance1 extension is not enabled and VkPhysicalDeviceProperties::apiVersion is less than Vulkan 1.1, descriptorSetCount must not be greater than the number of sets that are currently available for allocation in descriptorPool

VUID-VkDescriptorSetAllocateInfo-apiVersion-07896

If the VK_KHR_maintenance1 extension is not enabled and VkPhysicalDeviceProperties::apiVersion is less than Vulkan 1.1, descriptorPool must have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts

VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308

Each element of pSetLayouts must not have been created with VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR set

VUID-VkDescriptorSetAllocateInfo-pSetLayouts-03044

If any element of pSetLayouts was created with the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set, descriptorPool must have been created with the VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT flag set

VUID-VkDescriptorSetAllocateInfo-pSetLayouts-09380

If pSetLayouts[i] was created with an element of pBindingFlags that includes VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, and VkDescriptorSetVariableDescriptorCountAllocateInfo is included in the pNext chain, and VkDescriptorSetVariableDescriptorCountAllocateInfo::descriptorSetCount is not zero, then VkDescriptorSetVariableDescriptorCountAllocateInfo::pDescriptorCounts[i] must be less than or equal to VkDescriptorSetLayoutBinding::descriptorCount for the corresponding binding used to create pSetLayouts[i]

VUID-VkDescriptorSetAllocateInfo-pSetLayouts-04610

If any element of pSetLayouts was created with the VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT bit set, descriptorPool must have been created with the VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT flag set

VUID-VkDescriptorSetAllocateInfo-pSetLayouts-08009

Each element of pSetLayouts must not have been created with the VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT bit set

Valid Usage (Implicit)

VUID-VkDescriptorSetAllocateInfo-sType-sType

sType must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO

VUID-VkDescriptorSetAllocateInfo-sType-unique

The sType value of each struct in the pNext chain must be unique

VUID-VkDescriptorSetAllocateInfo-pSetLayouts-parameter

pSetLayouts must be a valid pointer to an array of descriptorSetCount valid VkDescriptorSetLayout handles

VUID-VkDescriptorSetAllocateInfo-commonparent

Both of descriptorPool, and the elements of pSetLayouts must have been created, allocated, or retrieved from the same VkDevice