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;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
or a pointer to a structure extending this structure.flags
is a bitmask of VkDescriptorSetLayoutCreateFlagBits specifying options for descriptor set layout creation.bindingCount
is the number of elements inpBindings
.pBindings
is 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_KHR
, 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_KHR
, 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_KHR
, then the
total number of elements of all bindings must be less than or equal to
VkPhysicalDevicePushDescriptorPropertiesKHR::maxPushDescriptors
VUID-VkDescriptorSetLayoutCreateInfo-flags-04590
If flags
contains
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
,
flags
must 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_KHR
,
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 pImmutableSamplers
must 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::mutableDescriptorType
must 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 struct 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