C Specification
The VkPipelineLayoutCreateInfo structure is defined as:
// Provided by VK_VERSION_1_0
typedef struct VkPipelineLayoutCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineLayoutCreateFlags flags;
uint32_t setLayoutCount;
const VkDescriptorSetLayout* pSetLayouts;
uint32_t pushConstantRangeCount;
const VkPushConstantRange* pPushConstantRanges;
} VkPipelineLayoutCreateInfo;
Members
-
sType
is the type of this structure. -
pNext
isNULL
or a pointer to a structure extending this structure. -
flags
is a bitmask of VkPipelineLayoutCreateFlagBits specifying options for pipeline layout creation. -
setLayoutCount
is the number of descriptor sets included in the pipeline layout. -
pSetLayouts
is a pointer to an array ofVkDescriptorSetLayout
objects. -
pushConstantRangeCount
is the number of push constant ranges included in the pipeline layout. -
pPushConstantRanges
is a pointer to an array ofVkPushConstantRange
structures defining a set of push constant ranges for use in a single pipeline layout. In addition to descriptor set layouts, a pipeline layout also describes how many push constants can be accessed by each stage of the pipeline.NotePush constants represent a high speed path to modify constant data in pipelines that is expected to outperform memory-backed resource updates.
Description
-
VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286
setLayoutCount
must be less than or equal toVkPhysicalDeviceLimits
::maxBoundDescriptorSets
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03016
The total number of descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_SAMPLER
andVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
accessible to any given shader stage across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceLimits
::maxPerStageDescriptorSamplers
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03017
The total number of descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
andVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
accessible to any given shader stage across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceLimits
::maxPerStageDescriptorUniformBuffers
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03018
The total number of descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_STORAGE_BUFFER
andVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
accessible to any given shader stage across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceLimits
::maxPerStageDescriptorStorageBuffers
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-06939
The total number of descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
,VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
,VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
, andVK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
accessible to any given shader stage across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceLimits
::maxPerStageDescriptorSampledImages
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03020
The total number of descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, andVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
accessible to any given shader stage across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceLimits
::maxPerStageDescriptorStorageImages
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03021
The total number of descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
accessible to any given shader stage across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceLimits
::maxPerStageDescriptorInputAttachments
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-02214
The total number of bindings in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
accessible to any given shader stage across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceInlineUniformBlockProperties
::maxPerStageDescriptorInlineUniformBlocks
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03022
The total number of descriptors with adescriptorType
ofVK_DESCRIPTOR_TYPE_SAMPLER
andVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
accessible to any given shader stage across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceDescriptorIndexingProperties
::maxPerStageDescriptorUpdateAfterBindSamplers
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03023
The total number of descriptors with adescriptorType
ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
andVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
accessible to any given shader stage across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceDescriptorIndexingProperties
::maxPerStageDescriptorUpdateAfterBindUniformBuffers
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03024
The total number of descriptors with adescriptorType
ofVK_DESCRIPTOR_TYPE_STORAGE_BUFFER
andVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
accessible to any given shader stage across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceDescriptorIndexingProperties
::maxPerStageDescriptorUpdateAfterBindStorageBuffers
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03025
The total number of descriptors with adescriptorType
ofVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, andVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
accessible to any given shader stage across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceDescriptorIndexingProperties
::maxPerStageDescriptorUpdateAfterBindSampledImages
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03026
The total number of descriptors with adescriptorType
ofVK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, andVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
accessible to any given shader stage across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceDescriptorIndexingProperties
::maxPerStageDescriptorUpdateAfterBindStorageImages
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03027
The total number of descriptors with adescriptorType
ofVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
accessible to any given shader stage across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceDescriptorIndexingProperties
::maxPerStageDescriptorUpdateAfterBindInputAttachments
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-02215
The total number of bindings with adescriptorType
ofVK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
accessible to any given shader stage across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceInlineUniformBlockProperties
::maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03028
The total number of descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_SAMPLER
andVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceLimits
::maxDescriptorSetSamplers
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03029
The total number of descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceLimits
::maxDescriptorSetUniformBuffers
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03030
The total number of descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceLimits
::maxDescriptorSetUniformBuffersDynamic
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03031
The total number of descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_STORAGE_BUFFER
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceLimits
::maxDescriptorSetStorageBuffers
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03032
The total number of descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceLimits
::maxDescriptorSetStorageBuffersDynamic
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03033
The total number of descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, andVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceLimits
::maxDescriptorSetSampledImages
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03034
The total number of descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, andVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceLimits
::maxDescriptorSetStorageImages
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03035
The total number of descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceLimits
::maxDescriptorSetInputAttachments
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-02216
The total number of bindings in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceInlineUniformBlockProperties
::maxDescriptorSetInlineUniformBlocks
-
VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03036
The total number of descriptors of the typeVK_DESCRIPTOR_TYPE_SAMPLER
andVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceDescriptorIndexingProperties
::maxDescriptorSetUpdateAfterBindSamplers
-
VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03037
The total number of descriptors of the typeVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceDescriptorIndexingProperties
::maxDescriptorSetUpdateAfterBindUniformBuffers
-
VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03038
The total number of descriptors of the typeVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceDescriptorIndexingProperties
::maxDescriptorSetUpdateAfterBindUniformBuffersDynamic
-
VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03039
The total number of descriptors of the typeVK_DESCRIPTOR_TYPE_STORAGE_BUFFER
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceDescriptorIndexingProperties
::maxDescriptorSetUpdateAfterBindStorageBuffers
-
VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03040
The total number of descriptors of the typeVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceDescriptorIndexingProperties
::maxDescriptorSetUpdateAfterBindStorageBuffersDynamic
-
VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03041
The total number of descriptors of the typeVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, andVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceDescriptorIndexingProperties
::maxDescriptorSetUpdateAfterBindSampledImages
-
VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03042
The total number of descriptors of the typeVK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, andVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceDescriptorIndexingProperties
::maxDescriptorSetUpdateAfterBindStorageImages
-
VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03043
The total number of descriptors of the typeVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceDescriptorIndexingProperties
::maxDescriptorSetUpdateAfterBindInputAttachments
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-02217
The total number of bindings with adescriptorType
ofVK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceInlineUniformBlockProperties
::maxDescriptorSetUpdateAfterBindInlineUniformBlocks
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-06531
The total number of descriptors with adescriptorType
ofVK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceVulkan13Properties
::maxInlineUniformTotalSize
-
VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-00292
Any two elements ofpPushConstantRanges
must not include the same stage instageFlags
-
VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00293
pSetLayouts
must not contain more than one descriptor set layout that was created withVK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
set -
VUID-VkPipelineLayoutCreateInfo-descriptorType-03571
The total number of bindings in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
accessible to any given shader stage across all elements ofpSetLayouts
must be less than or equal to VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxPerStageDescriptorAccelerationStructures
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03572
The total number of bindings with adescriptorType
ofVK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
accessible to any given shader stage across all elements ofpSetLayouts
must be less than or equal to VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxPerStageDescriptorUpdateAfterBindAccelerationStructures
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03573
The total number of bindings in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with adescriptorType
ofVK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal to VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxDescriptorSetAccelerationStructures
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-03574
The total number of bindings with adescriptorType
ofVK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal to VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxDescriptorSetUpdateAfterBindAccelerationStructures
-
VUID-VkPipelineLayoutCreateInfo-descriptorType-02381
The total number of bindings with adescriptorType
ofVK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV
accessible across all shader stages and across all elements ofpSetLayouts
must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::maxDescriptorSetAccelerationStructures
-
VUID-VkPipelineLayoutCreateInfo-pImmutableSamplers-03566
The total number ofpImmutableSamplers
created withflags
containingVK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
orVK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT
across all shader stages and across all elements ofpSetLayouts
must be less than or equal toVkPhysicalDeviceFragmentDensityMap2PropertiesEXT
::maxDescriptorSetSubsampledSamplers
-
VUID-VkPipelineLayoutCreateInfo-pSetLayouts-04606
Any element ofpSetLayouts
must not have been created with theVK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT
bit set -
VUID-VkPipelineLayoutCreateInfo-graphicsPipelineLibrary-06753
IfgraphicsPipelineLibrary
is not enabled, elements ofpSetLayouts
must be valid VkDescriptorSetLayout objects -
VUID-VkPipelineLayoutCreateInfo-pSetLayouts-08008
If any element ofpSetLayouts
was created with theVK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
bit set, all elements ofpSetLayouts
must have been created with theVK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
bit set
-
VUID-VkPipelineLayoutCreateInfo-sType-sType
sType
must beVK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
-
VUID-VkPipelineLayoutCreateInfo-pNext-pNext
pNext
must beNULL
-
VUID-VkPipelineLayoutCreateInfo-flags-parameter
flags
must be a valid combination of VkPipelineLayoutCreateFlagBits values -
VUID-VkPipelineLayoutCreateInfo-pSetLayouts-parameter
IfsetLayoutCount
is not0
,pSetLayouts
must be a valid pointer to an array ofsetLayoutCount
valid or VK_NULL_HANDLE VkDescriptorSetLayout handles -
VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-parameter
IfpushConstantRangeCount
is not0
,pPushConstantRanges
must be a valid pointer to an array ofpushConstantRangeCount
valid VkPushConstantRange structures
Document Notes
For more information, see the Vulkan Specification
This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.