VkDescriptorSetLayoutBindingFlagsCreateInfo
If the pNext
chain of a VkDescriptorSetLayoutCreateInfo
structure includes a VkDescriptorSetLayoutBindingFlagsCreateInfo
structure, then that structure includes an array of flags, one for each
descriptor set layout binding.
The VkDescriptorSetLayoutBindingFlagsCreateInfo structure is defined as:
typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo {
VkStructureType sType;
const void* pNext;
uint32_t bindingCount;
const VkDescriptorBindingFlags* pBindingFlags;
} VkDescriptorSetLayoutBindingFlagsCreateInfo;
or the equivalent
typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
or a pointer to a structure extending this structure.bindingCount
is zero or the number of elements inpBindingFlags
.pBindingFlags
is a pointer to an array of VkDescriptorBindingFlags bitfields, one for each descriptor set layout binding.
If bindingCount
is zero or if this structure is not included in the
pNext
chain, the VkDescriptorBindingFlags for each descriptor
set layout binding is considered to be zero.
Otherwise, the descriptor set layout binding at
VkDescriptorSetLayoutCreateInfo::pBindings
[i] uses the flags in
pBindingFlags
[i].
Valid Usage
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-bindingCount-03002
If bindingCount
is not zero, bindingCount
must equal
VkDescriptorSetLayoutCreateInfo::bindingCount
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-flags-03003
If VkDescriptorSetLayoutCreateInfo::flags
includes
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
, then all
elements of pBindingFlags
must not include
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
,
VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT
, or
VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-03004
If an element of pBindingFlags
includes
VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT
, then it must
be the element with the highest binding
number
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUniformBufferUpdateAfterBind-03005
If
VkPhysicalDeviceDescriptorIndexingFeatures::descriptorBindingUniformBufferUpdateAfterBind
is not enabled, all bindings with descriptor type
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
must not use
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingSampledImageUpdateAfterBind-03006
If
VkPhysicalDeviceDescriptorIndexingFeatures::descriptorBindingSampledImageUpdateAfterBind
is not enabled, all bindings with descriptor type
VK_DESCRIPTOR_TYPE_SAMPLER
,
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, or
VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
must not use
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageImageUpdateAfterBind-03007
If
VkPhysicalDeviceDescriptorIndexingFeatures::descriptorBindingStorageImageUpdateAfterBind
is not enabled, all bindings with descriptor type
VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
must not use
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageBufferUpdateAfterBind-03008
If
VkPhysicalDeviceDescriptorIndexingFeatures::descriptorBindingStorageBufferUpdateAfterBind
is not enabled, all bindings with descriptor type
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
must not use
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUniformTexelBufferUpdateAfterBind-03009
If
VkPhysicalDeviceDescriptorIndexingFeatures::descriptorBindingUniformTexelBufferUpdateAfterBind
is not enabled, all bindings with descriptor type
VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
must not use
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageTexelBufferUpdateAfterBind-03010
If
VkPhysicalDeviceDescriptorIndexingFeatures::descriptorBindingStorageTexelBufferUpdateAfterBind
is not enabled, all bindings with descriptor type
VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
must not use
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingInlineUniformBlockUpdateAfterBind-02211
If
VkPhysicalDeviceInlineUniformBlockFeatures::descriptorBindingInlineUniformBlockUpdateAfterBind
is not enabled, all bindings with descriptor type
VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
must not use
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingAccelerationStructureUpdateAfterBind-03570
If
VkPhysicalDeviceAccelerationStructureFeaturesKHR::descriptorBindingAccelerationStructureUpdateAfterBind
is not enabled, all bindings with descriptor type
VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
or
VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV
must not use
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-None-03011
All bindings with descriptor type
VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
, or
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
must not use
VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUpdateUnusedWhilePending-03012
If
VkPhysicalDeviceDescriptorIndexingFeatures::descriptorBindingUpdateUnusedWhilePending
is not enabled, all elements of pBindingFlags
must not include
VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingPartiallyBound-03013
If
VkPhysicalDeviceDescriptorIndexingFeatures::descriptorBindingPartiallyBound
is not enabled, all elements of pBindingFlags
must not include
VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingVariableDescriptorCount-03014
If
VkPhysicalDeviceDescriptorIndexingFeatures::descriptorBindingVariableDescriptorCount
is not enabled, all elements of pBindingFlags
must not include
VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-03015
If an element of pBindingFlags
includes
VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT
, that
element’s descriptorType
must not be
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
or
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
Valid Usage (Implicit)
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-sType-sType
sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO
VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-parameter
If bindingCount
is not 0
, pBindingFlags
must be a valid pointer to an array of bindingCount
valid combinations of VkDescriptorBindingFlagBits values