VkShaderCreateInfoEXT
The VkShaderCreateInfoEXT structure is defined as:
typedef struct VkShaderCreateInfoEXT {
VkStructureType sType;
const void* pNext;
VkShaderCreateFlagsEXT flags;
VkShaderStageFlagBits stage;
VkShaderStageFlags nextStage;
VkShaderCodeTypeEXT codeType;
size_t codeSize;
const void* pCode;
const char* pName;
uint32_t setLayoutCount;
const VkDescriptorSetLayout* pSetLayouts;
uint32_t pushConstantRangeCount;
const VkPushConstantRange* pPushConstantRanges;
const VkSpecializationInfo* pSpecializationInfo;
} VkShaderCreateInfoEXT;
pub struct ShaderCreateInfoEXT {
s_type: vk::StructureType,
p_next: *const c_void,
flags: vk::ShaderCreateFlagsEXT,
stage: vk::ShaderStageFlagBits,
next_stage: vk::ShaderStageFlags,
code_type: vk::ShaderCodeTypeEXT,
code_size: usize,
p_code: *const c_void,
p_name: *const c_char,
set_layout_count: u32,
p_set_layouts: *const vk::DescriptorSetLayout,
push_constant_range_count: u32,
p_push_constant_ranges: *const vk::PushConstantRange,
p_specialization_info: *const vk::SpecializationInfo,
}
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.flagsis a bitmask of VkShaderCreateFlagBitsEXT describing additional parameters of the shader.stageis a VkShaderStageFlagBits value specifying a single shader stage.nextStageis a bitmask of VkShaderStageFlagBits specifying which stages can be used as a logically next bound stage when drawing with the shader bound. A value of zero indicates this shader stage must be the last one.codeTypeis a VkShaderCodeTypeEXT value specifying the type of the shader code pointed to bepCode.codeSizeis the size in bytes of the shader code pointed to bepCode.pCodeis a pointer to the shader code to use to create the shader.pNameis a pointer to a null-terminated UTF-8 string specifying the entry point name of the shader for this stage.setLayoutCountis the number of descriptor set layouts pointed to bypSetLayouts.pSetLayoutsis a pointer to an array of VkDescriptorSetLayout objects used by the shader stage. The implementation must not access these objects outside of the duration of the command this structure is passed to.pushConstantRangeCountis the number of push constant ranges pointed to bypPushConstantRanges.pPushConstantRangesis a pointer to an array of VkPushConstantRange structures used by the shader stage.pSpecializationInfois a pointer to a VkSpecializationInfo structure, as described in Specialization Constants, orNULL.
When specifying descriptor heap mappings, only mappings corresponding to
bindings that are actually present in the SPIR-V shader affect compilation.
Mappings are ignored when codeType is
VK_SHADER_CODE_TYPE_BINARY_EXT.
The resulting compiled binary from two different SPIR-V shaders which would
have identical bit patterns must remain identical even if the mapping
entries vary in any of the following ways:
- Different numbers of unused mapping structures
- Different binding counts for unused bindings
- Unused parameters in mapping structures (e.g. sampler offsets)
- Ignored parameters in mapping structures
- Different order of mapping structures, used or unused
Valid Usage
VUID-VkShaderCreateInfoEXT-codeSize-08735
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, codeSize must be a multiple of 4
VUID-VkShaderCreateInfoEXT-pCode-08736
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, pCode must point to valid SPIR-V code,
formatted and packed as described by the Khronos SPIR-V
Specification
VUID-VkShaderCreateInfoEXT-pCode-08737
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, pCode must adhere to the validation rules
described by the Validation Rules within a
Module section of the SPIR-V Environment
appendix
VUID-VkShaderCreateInfoEXT-pCode-08738
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, pCode must declare the Shader capability
for SPIR-V code
VUID-VkShaderCreateInfoEXT-pCode-08739
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, pCode must not declare any capability that is
not supported by the API, as described by the
Capabilities section of the
SPIR-V Environment appendix
VUID-VkShaderCreateInfoEXT-pCode-08740
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and pCode declares any of the capabilities
listed in the SPIR-V Environment
appendix, one of the corresponding requirements must be satisfied
VUID-VkShaderCreateInfoEXT-pCode-08741
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, pCode must not declare any SPIR-V extension
that is not supported by the API, as described by the
Extension section of the
SPIR-V Environment appendix
VUID-VkShaderCreateInfoEXT-pCode-08742
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and pCode declares any of the SPIR-V extensions
listed in the SPIR-V Environment
appendix, one of the corresponding requirements must be satisfied
VUID-VkShaderCreateInfoEXT-descriptorHeap-11314
If the descriptorHeap feature is not
enabled,
VkShaderDescriptorSetAndBindingMappingInfoEXT::mappingCountmust be 0
VUID-VkShaderCreateInfoEXT-pNext-11315
If the pNext chain specifies a descriptor mapping using
VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT,
or VK_DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT, the mapped
resource in the shader must be a variable with a structure type
decorated with Block in the Uniform Storage Class
VUID-VkShaderCreateInfoEXT-pNext-11316
If the pNext chain specifies a descriptor mapping using
VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT, the mapped structure
must not be larger than the sum of pushDataOffset used in the
mapping and maxPushDataSize
VUID-VkShaderCreateInfoEXT-pNext-11317
If the pNext chain specifies a descriptor mapping using
VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT, the sum of
mapped structure size and shaderRecordDataOffset used in the
mapping must not be larger than
maxShaderGroupStride
VUID-VkShaderCreateInfoEXT-pNext-11318
If the pNext chain specifies a descriptor mapping using
VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT or
VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT, the mapped resource
in the shader must be one of:
- A variable with a structure type decorated with
Blockin theUniformStorageClass - A variable with a structure type decorated with
BufferBlockin theUniformStorageClass - A variable with a structure type decorated with
Blockin theStorageBufferStorageClass - A
OpTypeAccelerationStructureKHRvariable - A
OpTypeAccelerationStructureNVvariable
VUID-VkShaderCreateInfoEXT-pNext-11378
If the pNext chain specifies a descriptor mapping using VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT, VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT, or VK_DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, the OpArrayLength
or OpUntypedArrayLengthKHR instruction must not be used on that resource
VUID-VkShaderCreateInfoEXT-pNext-11399
If the pNext chain specifies a descriptor mapping using
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT,
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, or
VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT,
and the mapped resource declaration is an array, the
pEmbeddedSampler member of the corresponding mapping structure
must be NULL
VUID-VkShaderCreateInfoEXT-flags-08412
If stage is not VK_SHADER_STAGE_TASK_BIT_EXT,
VK_SHADER_STAGE_MESH_BIT_EXT, VK_SHADER_STAGE_VERTEX_BIT,
VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
VK_SHADER_STAGE_GEOMETRY_BIT, or
VK_SHADER_STAGE_FRAGMENT_BIT, flags must not include
VK_SHADER_CREATE_LINK_STAGE_BIT_EXT
VUID-VkShaderCreateInfoEXT-flags-08486
If stage is not VK_SHADER_STAGE_FRAGMENT_BIT, flagsmust not include
VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT
VUID-VkShaderCreateInfoEXT-flags-08487
If the attachmentFragmentShadingRate feature is not enabled,
flags must not include
VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT
VUID-VkShaderCreateInfoEXT-flags-08488
If stage is not VK_SHADER_STAGE_FRAGMENT_BIT, flagsmust not include
VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
VUID-VkShaderCreateInfoEXT-flags-08489
If the fragmentDensityMap feature
is not enabled, flags must not include
VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
VUID-VkShaderCreateInfoEXT-flags-09404
If flags includes
VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, the
subgroupSizeControl feature
must be enabled
VUID-VkShaderCreateInfoEXT-flags-09405
If flags includes
VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT, the
computeFullSubgroups feature
must be enabled
VUID-VkShaderCreateInfoEXT-flags-11005
If flags includes
VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT, then the
VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT::deviceGeneratedCommands
feature must be enabled
VUID-VkShaderCreateInfoEXT-flags-11006
If flags includes
VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT, then the identified
entry point must not specify Xfb execution mode
VUID-VkShaderCreateInfoEXT-flags-08992
If flags includes
VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT, stage must
be
one of VK_SHADER_STAGE_MESH_BIT_EXT,
VK_SHADER_STAGE_TASK_BIT_EXT, or
VK_SHADER_STAGE_COMPUTE_BIT
VUID-VkShaderCreateInfoEXT-flags-08485
If stage is not VK_SHADER_STAGE_COMPUTE_BIT, flagsmust not include VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT
VUID-VkShaderCreateInfoEXT-flags-08414
If stage is not VK_SHADER_STAGE_MESH_BIT_EXT, flagsmust not include VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT
VUID-VkShaderCreateInfoEXT-flags-08416
If flags includes both
VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT and
VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT, the local
workgroup size in the X dimension of the shader must be a multiple of
maxSubgroupSize
VUID-VkShaderCreateInfoEXT-flags-08417
If flags includes
VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT but not
VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT and no
VkShaderRequiredSubgroupSizeCreateInfoEXT structure is included in
the pNext chain, the local workgroup size in the X dimension of
the shader must be a multiple of
subgroupSize
VUID-VkShaderCreateInfoEXT-stage-08418
stage must not be VK_SHADER_STAGE_ALL_GRAPHICS or
VK_SHADER_STAGE_ALL
VUID-VkShaderCreateInfoEXT-stage-08419
If the tessellationShader feature
is not enabled, stage must not be
VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT or
VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
VUID-VkShaderCreateInfoEXT-stage-08420
If the geometryShader feature is not
enabled, stage must not be VK_SHADER_STAGE_GEOMETRY_BIT
VUID-VkShaderCreateInfoEXT-stage-08421
If the taskShader feature is not enabled,
stage must not be VK_SHADER_STAGE_TASK_BIT_EXT
VUID-VkShaderCreateInfoEXT-stage-08422
If the meshShader feature is not enabled,
stage must not be VK_SHADER_STAGE_MESH_BIT_EXT
VUID-VkShaderCreateInfoEXT-stage-08425
stage must not be
VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI
VUID-VkShaderCreateInfoEXT-stage-08426
stage must not be
VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI
VUID-VkShaderCreateInfoEXT-nextStage-08427
If stage is VK_SHADER_STAGE_VERTEX_BIT, nextStagemust not include any bits other than
VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
VK_SHADER_STAGE_GEOMETRY_BIT, and
VK_SHADER_STAGE_FRAGMENT_BIT
VUID-VkShaderCreateInfoEXT-nextStage-08428
If the tessellationShader feature
is not enabled, nextStage must not include
VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT or
VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
VUID-VkShaderCreateInfoEXT-nextStage-08429
If the geometryShader feature is not
enabled, nextStage must not include
VK_SHADER_STAGE_GEOMETRY_BIT
VUID-VkShaderCreateInfoEXT-nextStage-08430
If stage is VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
nextStage must not include any bits other than
VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
VUID-VkShaderCreateInfoEXT-nextStage-08431
If stage is VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
nextStage must not include any bits other than
VK_SHADER_STAGE_GEOMETRY_BIT and
VK_SHADER_STAGE_FRAGMENT_BIT
VUID-VkShaderCreateInfoEXT-nextStage-08433
If stage is VK_SHADER_STAGE_GEOMETRY_BIT, nextStagemust not include any bits other than VK_SHADER_STAGE_FRAGMENT_BIT
VUID-VkShaderCreateInfoEXT-nextStage-08434
If stage is VK_SHADER_STAGE_FRAGMENT_BIT or
VK_SHADER_STAGE_COMPUTE_BIT, nextStage must be 0
VUID-VkShaderCreateInfoEXT-nextStage-08435
If stage is VK_SHADER_STAGE_TASK_BIT_EXT, nextStagemust not include any bits other than VK_SHADER_STAGE_MESH_BIT_EXT
VUID-VkShaderCreateInfoEXT-nextStage-08436
If stage is VK_SHADER_STAGE_MESH_BIT_EXT, nextStagemust not include any bits other than VK_SHADER_STAGE_FRAGMENT_BIT
VUID-VkShaderCreateInfoEXT-pName-08440
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, pNamemust be the name of an OpEntryPoint in pCode with an
execution model that matches stage
VUID-VkShaderCreateInfoEXT-pCode-08492
If codeType is VK_SHADER_CODE_TYPE_BINARY_EXT, pCodemust be aligned to 16 bytes
VUID-VkShaderCreateInfoEXT-pCode-08493
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, pCodemust be aligned to 4 bytes
VUID-VkShaderCreateInfoEXT-pCode-08448
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and the
identified entry point includes any variable in its interface that is
declared with the ClipDistance BuiltIn decoration, that
variable must not have an array size greater than
VkPhysicalDeviceLimits::maxClipDistances
VUID-VkShaderCreateInfoEXT-pCode-08449
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and the
identified entry point includes any variable in its interface that is
declared with the CullDistance BuiltIn decoration, that
variable must not have an array size greater than
VkPhysicalDeviceLimits::maxCullDistances
VUID-VkShaderCreateInfoEXT-pCode-08450
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and the
identified entry point includes variables in its interface that are
declared with the ClipDistance BuiltIn decoration and
variables in its interface that are declared with the CullDistance
BuiltIn decoration, those variables must not have array sizes
which sum to more than
VkPhysicalDeviceLimits::maxCombinedClipAndCullDistances
VUID-VkShaderCreateInfoEXT-pCode-08451
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and the
identified entry point includes any variable in its interface that is
declared with the SampleMask BuiltIn decoration, that variable
must not have an array size greater than
VkPhysicalDeviceLimits::maxSampleMaskWords
VUID-VkShaderCreateInfoEXT-pCode-08453
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and
stage is VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT or
VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, and the identified
entry point has an OpExecutionMode instruction specifying a patch
size with OutputVertices, the patch size must be greater than 0
and less than or equal to
VkPhysicalDeviceLimits::maxTessellationPatchSize
VUID-VkShaderCreateInfoEXT-pCode-08454
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and
stage is VK_SHADER_STAGE_GEOMETRY_BIT, the identified entry
point must have an OpExecutionMode instruction specifying a
maximum output vertex count that is greater than 0 and less than or
equal to VkPhysicalDeviceLimits::maxGeometryOutputVertices
VUID-VkShaderCreateInfoEXT-pCode-08455
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and
stage is VK_SHADER_STAGE_GEOMETRY_BIT, the identified entry
point must have an OpExecutionMode instruction specifying an
invocation count that is greater than 0 and less than or equal to
VkPhysicalDeviceLimits::maxGeometryShaderInvocations
VUID-VkShaderCreateInfoEXT-pCode-08456
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and
stage is a
pre-rasterization shader
stage, and the identified entry point writes to Layer for any
primitive, it must write the same value to Layer for all vertices
of a given primitive
VUID-VkShaderCreateInfoEXT-pCode-08457
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and
stage is a
pre-rasterization shader
stage, and the identified entry point writes to ViewportIndex for
any primitive, it must write the same value to ViewportIndex for
all vertices of a given primitive
VUID-VkShaderCreateInfoEXT-pCode-08459
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and
stage is VK_SHADER_STAGE_FRAGMENT_BIT, and the identified
entry point writes to FragDepth in any execution path, all
execution paths that are not exclusive to helper invocations must
either discard the fragment, or write or initialize the value of
FragDepth
VUID-VkShaderCreateInfoEXT-pCode-08460
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, the shader
code in pCode must be valid as described by the
Khronos SPIR-V Specification after applying the
specializations provided in pSpecializationInfo, if any, and then
converting all specialization constants into fixed constants
VUID-VkShaderCreateInfoEXT-codeType-08872
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and
stage is VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
pCode must contain an OpExecutionMode instruction specifying
the type of subdivision
VUID-VkShaderCreateInfoEXT-codeType-12226
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and
stage is VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
pCode must contain an OpExecutionMode instruction specifying
the output patch size
VUID-VkShaderCreateInfoEXT-pPushConstantRanges-10063
Any two elements of pPushConstantRanges must not include the same
stage in stageFlags
VUID-VkShaderCreateInfoEXT-codeType-10064
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT,
flags does not include
VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT
and if a push constant block is declared in a shader, then an element of
pPushConstantRanges→stageFlags must match stage
VUID-VkShaderCreateInfoEXT-codeType-10065
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT,
flags does not include
VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT
and if a push constant block is declared in a shader, the block must be
contained inside the element of pPushConstantRanges that matches
the stage
VUID-VkShaderCreateInfoEXT-codeType-10383
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT,
flags does not include
VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT
and a resource variable is declared in a
shader, the corresponding descriptor set in pSetLayouts must
match the shader stage
VUID-VkShaderCreateInfoEXT-codeType-10384
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT,
flags does not include
VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT
and a resource variable is declared in a
shader,
and the descriptor type is not VK_DESCRIPTOR_TYPE_MUTABLE_EXT,
the corresponding descriptor set in pSetLayouts must match the
descriptor type
VUID-VkShaderCreateInfoEXT-codeType-10385
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT,
flags does not include
VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT
and a resource variable is declared in a shader
as an array, the corresponding descriptor set in pSetLayouts must
match the descriptor count
VUID-VkShaderCreateInfoEXT-codeType-10386
If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT,
flags does not include
VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT
and a resource variable is declared in a shader
as an array of descriptors, then the descriptor type of that variable
must not be VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
VUID-VkShaderCreateInfoEXT-flags-11758
If shader64BitIndexing feature is not
enabled, flags must not contain
VK_SHADER_CREATE_64_BIT_INDEXING_BIT_EXT
VUID-VkShaderCreateInfoEXT-setLayoutCount-12257
setLayoutCount must be less than or equal to
VkPhysicalDeviceLimits::maxBoundDescriptorSets
VUID-VkShaderCreateInfoEXT-flags-11290
If flags includes VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT,
setLayoutCount must be 0
VUID-VkShaderCreateInfoEXT-flags-11291
If flags includes VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT,
pSetLayouts must be NULL
VUID-VkShaderCreateInfoEXT-flags-11370
If flags includes VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT,
pushConstantRangeCount must be 0
VUID-VkShaderCreateInfoEXT-flags-11371
If flags includes VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT,
pPushConstantRanges must be NULL
VUID-VkShaderCreateInfoEXT-flags-11292
If flags includes VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT,
and codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, all shader
variables in the shader resource interface with
a DescriptorSet and Binding decoration must have a mapping
declared in
VkShaderDescriptorSetAndBindingMappingInfoEXT::pMappings
Valid Usage (Implicit)
VUID-VkShaderCreateInfoEXT-sType-sType
sType must be VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT
VUID-VkShaderCreateInfoEXT-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 VkCustomResolveCreateInfoEXT, VkPipelineShaderStageRequiredSubgroupSizeCreateInfo, VkShaderDescriptorSetAndBindingMappingInfoEXT, or VkValidationFeaturesEXT
VUID-VkShaderCreateInfoEXT-sType-unique
The sType value of each structure in the pNext chain must be unique
VUID-VkShaderCreateInfoEXT-flags-parameter
flags must be a valid combination of VkShaderCreateFlagBitsEXT values
VUID-VkShaderCreateInfoEXT-stage-parameter
stage must be a valid VkShaderStageFlagBits value
VUID-VkShaderCreateInfoEXT-nextStage-parameter
nextStage must be a valid combination of VkShaderStageFlagBits values
VUID-VkShaderCreateInfoEXT-codeType-parameter
codeType must be a valid VkShaderCodeTypeEXT value
VUID-VkShaderCreateInfoEXT-pCode-parameter
pCode must be a valid pointer to an array of codeSize bytes
VUID-VkShaderCreateInfoEXT-pName-parameter
If pName is not NULL, pName must be a null-terminated UTF-8 string
VUID-VkShaderCreateInfoEXT-pSetLayouts-parameter
If setLayoutCount is not 0, and pSetLayouts is not NULL, pSetLayouts must be a valid pointer to an array of setLayoutCount valid VkDescriptorSetLayout handles
VUID-VkShaderCreateInfoEXT-pPushConstantRanges-parameter
If pushConstantRangeCount is not 0, and pPushConstantRanges is not NULL, pPushConstantRanges must be a valid pointer to an array of pushConstantRangeCount valid VkPushConstantRange structures
VUID-VkShaderCreateInfoEXT-pSpecializationInfo-parameter
If pSpecializationInfo is not NULL, pSpecializationInfo must be a valid pointer to a valid VkSpecializationInfo structure
VUID-VkShaderCreateInfoEXT-codeSize-arraylength
codeSize must be greater than 0