VkDescriptorSetLayoutCreateInfo
Information about the descriptor set layout is passed in a
VkDescriptorSetLayoutCreateInfo structure:
typedef struct VkDescriptorSetLayoutCreateInfo {
VkStructureType sType;
const void* pNext;
VkDescriptorSetLayoutCreateFlags flags;
uint32_t bindingCount;
const VkDescriptorSetLayoutBinding* pBindings;
} VkDescriptorSetLayoutCreateInfo;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.flagsis a bitmask of VkDescriptorSetLayoutCreateFlagBits specifying options for descriptor set layout creation.bindingCountis the number of elements inpBindings.pBindingsis a pointer to an array of VkDescriptorSetLayoutBinding structures.
Valid Usage
VUID-VkDescriptorSetLayoutCreateInfo-binding-00279
If the perStageDescriptorSet
feature is not enabled, or flags does not contain
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV, then the
VkDescriptorSetLayoutBinding::binding members of the
elements of the pBindings array must each have different values
VUID-VkDescriptorSetLayoutCreateInfo-flags-00280
If flags contains
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT, then all
elements of pBindings must not have a descriptorType of
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC or
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
VUID-VkDescriptorSetLayoutCreateInfo-flags-02208
If flags contains
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT, then all
elements of pBindings must not have a descriptorType of
VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
VUID-VkDescriptorSetLayoutCreateInfo-flags-00281
If flags contains
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT, then the
total number of elements of all bindings must be less than or equal to
VkPhysicalDevicePushDescriptorProperties::maxPushDescriptors
VUID-VkDescriptorSetLayoutCreateInfo-flags-04590
If flags contains
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT, flagsmust not contain
VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT
VUID-VkDescriptorSetLayoutCreateInfo-flags-04591
If flags contains
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT,
pBindings must not have a descriptorType of
VK_DESCRIPTOR_TYPE_MUTABLE_EXT
VUID-VkDescriptorSetLayoutCreateInfo-flags-03000
If any binding has the VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
bit set, flags must include
VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-03001
If any binding has the VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
bit set, then all bindings must not have descriptorType of
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC or
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
VUID-VkDescriptorSetLayoutCreateInfo-flags-04592
If flags contains
VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,
flags must not contain
VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT
VUID-VkDescriptorSetLayoutCreateInfo-pBindings-07303
If any element pBindings[i] has a descriptorType of
VK_DESCRIPTOR_TYPE_MUTABLE_EXT, then the pNext chain must
include a VkMutableDescriptorTypeCreateInfoEXT structure, and
mutableDescriptorTypeListCount must be greater than i
VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-04594
If a binding has a descriptorType value of
VK_DESCRIPTOR_TYPE_MUTABLE_EXT, then pImmutableSamplersmust be NULL
VUID-VkDescriptorSetLayoutCreateInfo-mutableDescriptorType-04595
If
VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT::mutableDescriptorType
is not enabled, pBindings must not contain a descriptorType
of VK_DESCRIPTOR_TYPE_MUTABLE_EXT
VUID-VkDescriptorSetLayoutCreateInfo-flags-04596
If flags contains
VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT,
VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT::mutableDescriptorTypemust be enabled
VUID-VkDescriptorSetLayoutCreateInfo-flags-08000
If flags contains
VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, then
all elements of pBindings must not have a descriptorType of
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC or
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
VUID-VkDescriptorSetLayoutCreateInfo-flags-08001
If flags contains
VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT,
flags must also contain
VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
VUID-VkDescriptorSetLayoutCreateInfo-flags-08002
If flags contains
VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, then
flags must not contain
VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
VUID-VkDescriptorSetLayoutCreateInfo-flags-08003
If flags contains
VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, then
flags must not contain
VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE
VUID-VkDescriptorSetLayoutCreateInfo-flags-09463
If flags contains
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV, then
perStageDescriptorSet must be
enabled
VUID-VkDescriptorSetLayoutCreateInfo-flags-09464
If flags contains
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV, then there must
not be any two elements of the pBindings array with the same
VkDescriptorSetLayoutBinding::binding value and their
VkDescriptorSetLayoutBinding::stageFlags containing the same
bit
Valid Usage (Implicit)
VUID-VkDescriptorSetLayoutCreateInfo-sType-sType
sType must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
VUID-VkDescriptorSetLayoutCreateInfo-pNext-pNext
Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkDescriptorSetLayoutBindingFlagsCreateInfo or VkMutableDescriptorTypeCreateInfoEXT
VUID-VkDescriptorSetLayoutCreateInfo-sType-unique
The sType value of each structure in the pNext chain must be unique
VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter
flags must be a valid combination of VkDescriptorSetLayoutCreateFlagBits values
VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter
If bindingCount is not 0, pBindings must be a valid pointer to an array of bindingCount valid VkDescriptorSetLayoutBinding structures