VkDescriptorSetAllocateInfo
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
isNULL
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-pNext-pNext
pNext
must be NULL
or a pointer to a valid instance of VkDescriptorSetVariableDescriptorCountAllocateInfo
VUID-VkDescriptorSetAllocateInfo-sType-unique
The sType
value of each struct in the pNext
chain must be unique
VUID-VkDescriptorSetAllocateInfo-descriptorPool-parameter
descriptorPool
must be a valid VkDescriptorPool handle
VUID-VkDescriptorSetAllocateInfo-pSetLayouts-parameter
pSetLayouts
must be a valid pointer to an array of descriptorSetCount
valid VkDescriptorSetLayout handles
VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-arraylength
descriptorSetCount
must be greater than 0
VUID-VkDescriptorSetAllocateInfo-commonparent
Both of descriptorPool
, and the elements of pSetLayouts
must have been created, allocated, or retrieved from the same VkDevice