Description
The following rules can be validated with only the SPIR-V module itself. They do not depend on knowledge of the implementation and its capabilities or knowledge of runtime information, such as enabled features.
- 
VUID-StandaloneSpirv-None-04633 
 Every entry point must have no return value and accept no arguments
- 
VUID-StandaloneSpirv-None-04634 
 The static function-call graph for an entry point must not contain cycles; that is, static recursion is not allowed
- 
VUID-StandaloneSpirv-None-04635 
 TheLogicalorPhysicalStorageBuffer64addressing model must be selected
- 
VUID-StandaloneSpirv-None-04636 
 Scopefor execution must be limited toWorkgrouporSubgroup
- 
VUID-StandaloneSpirv-None-04637 
 If theScopefor execution isWorkgroup, then it must only be used in the task, mesh, tessellation control, or computeExecutionModel
- 
VUID-StandaloneSpirv-None-04638 
 Scopefor memory must be limited toDevice,QueueFamily,Workgroup,ShaderCallKHR,Subgroup, orInvocation
- 
VUID-StandaloneSpirv-ExecutionModel-07320 
 If theExecutionModelisTessellationControl, and theMemoryModelisGLSL450, theScopefor memory must not beWorkgroup
- 
VUID-StandaloneSpirv-None-07321 
 If theScopefor memory isWorkgroup, then it must only be used in the task, mesh, tessellation control, or computeExecutionModel
- 
VUID-StandaloneSpirv-None-04640 
 If theScopefor memory isShaderCallKHR, then it must only be used in ray generation, intersection, closest hit, any-hit, miss, and callableExecutionModel
- 
VUID-StandaloneSpirv-None-04641 
 If theScopefor memory isInvocation, then memory semantics must beNone
- 
VUID-StandaloneSpirv-None-04642 
 Scopefor group operations must be limited toSubgroup
- 
VUID-StandaloneSpirv-SubgroupVoteKHR-07951 
 If none of theSubgroupVoteKHR,GroupNonUniform, orSubgroupBallotKHRcapabilities are declared,Scopefor memory must not beSubgroup
- 
VUID-StandaloneSpirv-None-04643 
 StorageClassmust be limited toUniformConstant,Input,Uniform,Output,Workgroup,Private,Function,PushConstant,Image,StorageBuffer,RayPayloadKHR,IncomingRayPayloadKHR,HitAttributeKHR,CallableDataKHR,IncomingCallableDataKHR,ShaderRecordBufferKHR,PhysicalStorageBuffer, orTileImageEXT
- 
VUID-StandaloneSpirv-None-04644 
 If theStorageClassisOutput, then it must not be used in theGlCompute,RayGenerationKHR,IntersectionKHR,AnyHitKHR,ClosestHitKHR,MissKHR, orCallableKHRExecutionModel
- 
VUID-StandaloneSpirv-None-04645 
 If theStorageClassisWorkgroup, then it must only be used in the task, mesh, or computeExecutionModel
- 
VUID-StandaloneSpirv-None-08720 
 If theStorageClassisTileImageEXT, then it must only be used in the fragment execution model
- 
VUID-StandaloneSpirv-OpAtomicStore-04730 
 OpAtomicStoremust not useAcquire,AcquireRelease, orSequentiallyConsistentmemory semantics
- 
VUID-StandaloneSpirv-OpAtomicLoad-04731 
 OpAtomicLoadmust not useRelease,AcquireRelease, orSequentiallyConsistentmemory semantics
- 
VUID-StandaloneSpirv-OpMemoryBarrier-04732 
 OpMemoryBarriermust use one ofAcquire,Release,AcquireRelease, orSequentiallyConsistentmemory semantics
- 
VUID-StandaloneSpirv-OpMemoryBarrier-04733 
 OpMemoryBarriermust include at least oneStorageClass
- 
VUID-StandaloneSpirv-OpControlBarrier-10609 
 If the semantics forOpControlBarrierincludes at least oneStorageClass, then it must include one ofAcquire,Release,AcquireRelease, orSequentiallyConsistentmemory semantics
- 
VUID-StandaloneSpirv-OpControlBarrier-04650 
 If the semantics forOpControlBarrierincludes one ofAcquire,Release,AcquireRelease, orSequentiallyConsistentmemory semantics, then it must include at least oneStorageClass
- 
VUID-StandaloneSpirv-OpVariable-04651 
 AnyOpVariablewith anInitializeroperand must haveOutput,Private,Function, orWorkgroupas itsStorageClassoperand
- 
VUID-StandaloneSpirv-OpVariable-04734 
 AnyOpVariablewith anInitializeroperand andWorkgroupas itsStorageClassoperand must useOpConstantNullas the initializer
- 
VUID-StandaloneSpirv-OpReadClockKHR-04652 
 ScopeforOpReadClockKHRmust be limited toSubgrouporDevice
- 
VUID-StandaloneSpirv-OriginLowerLeft-04653 
 TheOriginLowerLeftExecutionModemust not be used; fragment entry points must declareOriginUpperLeft
- 
VUID-StandaloneSpirv-PixelCenterInteger-04654 
 ThePixelCenterIntegerExecutionModemust not be used (pixels are always centered at half-integer coordinates)
- 
VUID-StandaloneSpirv-UniformConstant-04655 
 Any variable in theUniformConstantStorageClassmust be typed as eitherOpTypeImage,OpTypeSampler,OpTypeSampledImage,OpTypeAccelerationStructureKHR,OpTypeTensorARMor an array of one of these types
- 
VUID-StandaloneSpirv-Uniform-06807 
 Any variable in theUniformorStorageBufferStorageClassmust be typed asOpTypeStructor an array of this type
- 
VUID-StandaloneSpirv-PushConstant-06808 
 Any variable in thePushConstantStorageClassmust be typed asOpTypeStruct
- 
VUID-StandaloneSpirv-OpTypeImage-04656 
 OpTypeImagemust declare a scalar 32-bit float, 64-bit integer, or 32-bit integer type for the “Sampled Type” (RelaxedPrecisioncan be applied to a sampling instruction and to the variable holding the result of a sampling instruction)
- 
VUID-StandaloneSpirv-OpTypeImage-04657 
 OpTypeImagemust have a “Sampled” operand of 1 (sampled image) or 2 (storage image)
- 
VUID-StandaloneSpirv-OpTypeSampledImage-06671 
 OpTypeSampledImagemust have aOpTypeImagewith a “Sampled” operand of 1 (sampled image)
- 
VUID-StandaloneSpirv-Image-04965 
 The SPIR-V Type of theImageFormatoperand of anOpTypeImagemust match theSampledType, as defined in https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#spirvenv-format-type-matching
- 
VUID-StandaloneSpirv-OpImageTexelPointer-04658 
 If anOpImageTexelPointeris used in an atomic operation, the image type of theimageparameter toOpImageTexelPointermust have an image format ofR64i,R64ui,R32f,R32i, orR32ui
- 
VUID-StandaloneSpirv-OpImageQuerySizeLod-04659 
 OpImageQuerySizeLod,OpImageQueryLod, andOpImageQueryLevelsmust only consume an “Image” operand whose type has its “Sampled” operand set to 1
- 
VUID-StandaloneSpirv-OpTypeImage-09638 
 AnOpTypeImagemust not have a “Dim” operand ofRect
- 
VUID-StandaloneSpirv-OpTypeImage-06214 
 AnOpTypeImagewith a “Dim” operand ofSubpassDatamust have an “Arrayed” operand of 0 (non-arrayed) and a “Sampled” operand of 2 (storage image)
- 
VUID-StandaloneSpirv-SubpassData-04660 
 The (u,v) coordinates used for aSubpassDatamust be the <id> of a constant vector (0,0)
- 
VUID-StandaloneSpirv-OpTypeImage-06924 
 Objects of typesOpTypeImage,OpTypeSampler,OpTypeSampledImage,OpTypeAccelerationStructureKHR,OpTypeTensorARM, and arrays of these types must not be stored to or modified
- 
VUID-StandaloneSpirv-Uniform-06925 
 Any variable in theUniformStorageClassdecorated asBlockmust not be stored to or modified
- 
VUID-StandaloneSpirv-Offset-04865 
 Any image instruction which uses anOffset,ConstOffset, orConstOffsetsimage operand, must only consume a “Sampled Image” operand whose type has its “Sampled” operand set to 1
- 
VUID-StandaloneSpirv-OpImageGather-04664 
 The “Component” operand ofOpImageGather, andOpImageSparseGathermust be the <id> of a constant instruction
- 
VUID-StandaloneSpirv-OpImage-04777 
 OpImage*Dref*instructions must not consume an image whoseDimis 3D
- 
VUID-StandaloneSpirv-None-04667 
 Structure types must not contain opaque types
- 
VUID-StandaloneSpirv-BuiltIn-04668 
 AnyBuiltIndecoration not listed in https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-builtin-variables must not be used
- 
VUID-StandaloneSpirv-OpEntryPoint-09658 
 For a givenOpEntryPoint, anyBuiltIndecoration must not be used more than once by theInputinterface
- 
VUID-StandaloneSpirv-OpEntryPoint-09659 
 For a givenOpEntryPoint, anyBuiltIndecoration must not be used more than once by theOutputinterface
- 
VUID-StandaloneSpirv-Location-06672 
 TheLocationorComponentdecorations must only be used with theInput,Output,RayPayloadKHR,IncomingRayPayloadKHR,HitAttributeKHR,HitObjectAttributeNV,CallableDataKHR,IncomingCallableDataKHR, orShaderRecordBufferKHRstorage classes
- 
VUID-StandaloneSpirv-Location-04915 
 TheLocationorComponentdecorations must not be used withBuiltIn
- 
VUID-StandaloneSpirv-Location-04916 
 TheLocationdecorations must be used on user-defined variables
- 
VUID-StandaloneSpirv-Location-04917 
 If a user-defined variable is not a pointer to aBlockdecoratedOpTypeStruct, then theOpVariablemust have aLocationdecoration
- 
VUID-StandaloneSpirv-Location-04918 
 If a user-defined variable has aLocationdecoration, and the variable is a pointer to aOpTypeStruct, then the members of that structure must not haveLocationdecorations
- 
VUID-StandaloneSpirv-Location-04919 
 If a user-defined variable does not have aLocationdecoration, and the variable is a pointer to aBlockdecoratedOpTypeStruct, then each member of the struct must have aLocationdecoration
- 
VUID-StandaloneSpirv-Component-04920 
 TheComponentdecoration value must not be greater than 3
- 
VUID-StandaloneSpirv-Component-04921 
 If theComponentdecoration is used on anOpVariablethat has aOpTypeVectortype with aComponentTypewith aWidththat is less than or equal to 32, the sum of itsComponentCountand theComponentdecoration value must be less than or equal to 4
- 
VUID-StandaloneSpirv-Component-04922 
 If theComponentdecoration is used on anOpVariablethat has aOpTypeVectortype with aComponentTypewith aWidththat is equal to 64, the sum of two times itsComponentCountand theComponentdecoration value must be less than or equal to 4
- 
VUID-StandaloneSpirv-Component-04923 
 TheComponentdecorations value must not be 1 or 3 for scalar or two-component 64-bit data types
- 
VUID-StandaloneSpirv-Component-07703 
 TheComponentdecorations must not be used for a 64-bit vector type with more than two components
- 
VUID-StandaloneSpirv-Component-10583 
 TheComponentdecorations must not be used with any type that is not a scalar, vector, array of scalars or vectors, or an array of arrays of scalars or vectors
- 
VUID-StandaloneSpirv-Execution-10584 
 If theExecutionModelof an entry point is notTessellationControlorGeometry, its interface definition must not include any variables in theInputstorage class decorated withComponentthat are arrays of arrays of scalars or vectors
- 
VUID-StandaloneSpirv-Execution-10585 
 If theExecutionModelof an entry point is notMeshNV, its interface definition must not include any variables in theOutputstorage class decorated withComponentthat are arrays of arrays of scalars or vectors
- 
VUID-StandaloneSpirv-Output-10586 
 Variables in theOutputstorage class in theVertex,TessellationControl,TessellationEvaluation, orGeometryexecution model must not have overlappingComponentandLocationdecorations as defined by Location and Component Assignment
- 
VUID-StandaloneSpirv-Output-10587 
 Variables in theOutputstorage class in theFragmentexecution model must not have both identicalIndexdecorations and overlappingComponentandLocationdecorations as defined by Location and Component Assignment
- 
VUID-StandaloneSpirv-Input-10588 
 Variables in theInputstorage class in theTessellationControl,TessellationEvaluation,Geometry, orFragmentexecution model must not have overlappingComponentandLocationdecorations as defined by Location and Component Assignment
- 
VUID-StandaloneSpirv-Input-10604 
 Any variable in theInputstorage class in theFragmentexecution model must not have an assignedLocationshared with another variable with different decorations forPerVertexKHR,Flat,NoPerspective,Sample, orCentroid
- 
VUID-StandaloneSpirv-Input-09557 
 The pointers of anyInputorOutputInterface user-defined variables must not contain anyPhysicalStorageBufferStorageClasspointers
- 
VUID-StandaloneSpirv-None-10684 
 All variables must have valid explicit layout decorations as described in Shader Interfaces
- 
VUID-StandaloneSpirv-GLSLShared-04669 
 TheGLSLSharedandGLSLPackeddecorations must not be used
- 
VUID-StandaloneSpirv-Flat-04670 
 TheFlat,NoPerspective,Sample, andCentroiddecorations must only be used on variables with theOutputorInputStorageClass
- 
VUID-StandaloneSpirv-Flat-06201 
 TheFlat,NoPerspective,Sample, andCentroiddecorations must not be used on variables with theOutputstorage class in a fragment shader
- 
VUID-StandaloneSpirv-Flat-06202 
 TheFlat,NoPerspective,Sample, andCentroiddecorations must not be used on variables with theInputstorage class in a vertex shader
- 
VUID-StandaloneSpirv-PerVertexKHR-06777 
 ThePerVertexKHRdecoration must only be used on variables with theInputStorageClassin a fragment shader
- 
VUID-StandaloneSpirv-Flat-04744 
 Any variable with integer or double-precision floating-point type and withInputStorageClassin a fragment shader, must be decoratedFlat
- 
VUID-StandaloneSpirv-ViewportRelativeNV-04672 
 TheViewportRelativeNVdecoration must only be used on a variable decorated withLayerin the vertex, tessellation evaluation, or geometry shader stages
- 
VUID-StandaloneSpirv-ViewportRelativeNV-04673 
 TheViewportRelativeNVdecoration must not be used unless a variable decorated with one ofViewportIndexorViewportMaskNVis also statically used by the sameOpEntryPoint
- 
VUID-StandaloneSpirv-ViewportMaskNV-04674 
 TheViewportMaskNVandViewportIndexdecorations must not both be statically used by one or moreOpEntryPoint’s that form the pre-rasterization shader stages of a graphics pipeline
- 
VUID-StandaloneSpirv-FPRoundingMode-04675 
 Rounding modes other than round-to-nearest-even and round-towards-zero must not be used for theFPRoundingModedecoration
- 
VUID-StandaloneSpirv-Invariant-04677 
 Variables decorated withInvariantand variables with structure types that have any members decorated withInvariantmust be in theOutputorInputStorageClass,Invariantused on anInputStorageClassvariable or structure member has no effect
- 
VUID-StandaloneSpirv-VulkanMemoryModel-04678 
 If theVulkanMemoryModelcapability is not declared, theVolatiledecoration must be used on any variable declaration that includes one of theSMIDNV,WarpIDNV,SubgroupSize,SubgroupLocalInvocationId,SubgroupEqMask,SubgroupGeMask,SubgroupGtMask,SubgroupLeMask, orSubgroupLtMaskBuiltIndecorations when used in the ray generation, closest hit, miss, intersection, or callable shaders, or with theRayTmaxKHRBuiltindecoration when used in an intersection shader
- 
VUID-StandaloneSpirv-VulkanMemoryModel-04679 
 If theVulkanMemoryModelcapability is declared, theOpLoadinstruction must use theVolatilememory semantics when it accesses into any variable that includes one of theSMIDNV,WarpIDNV,SubgroupSize,SubgroupLocalInvocationId,SubgroupEqMask,SubgroupGeMask,SubgroupGtMask,SubgroupLeMask, orSubgroupLtMaskBuiltIndecorations when used in the ray generation, closest hit, miss, intersection, or callable shaders, or with theRayTmaxKHRBuiltindecoration when used in an intersection shader
- 
VUID-StandaloneSpirv-OpTypeRuntimeArray-04680 
 OpTypeRuntimeArraymust only be used for:- 
the last member of a Block-decoratedOpTypeStructinStorageBufferorPhysicalStorageBufferstorageStorageClass
- 
BufferBlock-decoratedOpTypeStructin theUniformstorageStorageClass
- 
the outermost dimension of an arrayed variable in the StorageBuffer,Uniform, orUniformConstantstorageStorageClass
- 
variables in the NodePayloadAMDXstorageStorageClasswhen theCoalescingAMDXExecutionModeis specified
 
- 
- 
VUID-StandaloneSpirv-Function-04681 
 A type T that is an array sized with a specialization constant must neither be, nor be contained in, the type T2 of a variable V, unless either: a) T is equal to T2, b) V is declared in theFunction, orPrivateStorageClass, c) V is a non-Block variable in theWorkgroupStorageClass, or d) V is an interface variable with an additional level of arrayness, as described in interface matching, and T is the member type of the array type T2
- 
VUID-StandaloneSpirv-OpControlBarrier-04682 
 IfOpControlBarrieris used in ray generation, intersection, any-hit, closest hit, miss, fragment, vertex, tessellation evaluation, or geometry shaders, the execution Scope must beSubgroup
- 
VUID-StandaloneSpirv-None-10685 
 For each compute shader entry point, either aTileShadingRateQCOM,LocalSize, orLocalSizeIdExecutionMode, or an object decorated with theWorkgroupSizedecoration must be specified
- 
VUID-StandaloneSpirv-DerivativeGroupQuadsNV-04684 
 For compute shaders using theDerivativeGroupQuadsNVexecution mode, the first two dimensions of the local workgroup size must be a multiple of two
- 
VUID-StandaloneSpirv-DerivativeGroupLinearNV-04778 
 For compute shaders using theDerivativeGroupLinearNVexecution mode, the product of the dimensions of the local workgroup size must be a multiple of four
- 
VUID-StandaloneSpirv-DerivativeGroupQuadsKHR-10151 
 For compute, mesh, or task shaders using theDerivativeGroupQuadsKHRexecution mode, the first two dimensions of the local workgroup size must be a multiple of two
- 
VUID-StandaloneSpirv-DerivativeGroupLinearKHR-10152 
 For compute, mesh, or task shaders using theDerivativeGroupLinearKHRexecution mode, the product of the dimensions of the local workgroup size must be a multiple of four
- 
VUID-StandaloneSpirv-OpGroupNonUniformBallotBitCount-04685 
 IfOpGroupNonUniformBallotBitCountis used, the group operation must be limited toReduce,InclusiveScan, orExclusiveScan
- 
VUID-StandaloneSpirv-None-04686 
 The Pointer operand of all atomic instructions must have aStorageClasslimited toUniform,Workgroup,Image,StorageBuffer,PhysicalStorageBuffer, orTaskPayloadWorkgroupEXT
- 
VUID-StandaloneSpirv-Offset-04687 
 Output variables or block members decorated withOffsetthat have a 64-bit type, or a composite type containing a 64-bit type, must specify anOffsetvalue aligned to a 8 byte boundary
- 
VUID-StandaloneSpirv-Offset-04689 
 The size of any output block containing any member decorated withOffsetthat is a 64-bit type must be a multiple of 8
- 
VUID-StandaloneSpirv-Offset-04690 
 The first member of an output block specifying aOffsetdecoration must specify aOffsetvalue that is aligned to an 8 byte boundary if that block contains any member decorated withOffsetand is a 64-bit type
- 
VUID-StandaloneSpirv-Offset-04691 
 Output variables or block members decorated withOffsetthat have a 32-bit type, or a composite type contains a 32-bit type, must specify anOffsetvalue aligned to a 4 byte boundary
- 
VUID-StandaloneSpirv-Offset-04692 
 Output variables, blocks or block members decorated withOffsetmust only contain base types that have components that are either 32-bit or 64-bit in size
- 
VUID-StandaloneSpirv-Offset-04716 
 Only variables or block members in the output interface decorated withOffsetcan be captured for transform feedback, and those variables or block members must also be decorated withXfbBufferandXfbStride, or inheritXfbBufferandXfbStridedecorations from a block containing them
- 
VUID-StandaloneSpirv-XfbBuffer-04693 
 All variables or block members in the output interface of the entry point being compiled decorated with a specificXfbBuffervalue must all be decorated with identicalXfbStridevalues
- 
VUID-StandaloneSpirv-Stream-04694 
 If any variables or block members in the output interface of the entry point being compiled are decorated withStream, then all variables belonging to the sameXfbBuffermust specify the sameStreamvalue
- 
VUID-StandaloneSpirv-XfbBuffer-04696 
 For any two variables or block members in the output interface of the entry point being compiled with the sameXfbBuffervalue, the ranges determined by theOffsetdecoration and the size of the type must not overlap
- 
VUID-StandaloneSpirv-XfbBuffer-04697 
 All block members in the output interface of the entry point being compiled that are in the same block and have a declared or inheritedXfbBufferdecoration must specify the sameXfbBuffervalue
- 
VUID-StandaloneSpirv-RayPayloadKHR-04698 
 RayPayloadKHRStorageClassmust only be used in ray generation, closest hit or miss shaders
- 
VUID-StandaloneSpirv-IncomingRayPayloadKHR-04699 
 IncomingRayPayloadKHRStorageClassmust only be used in closest hit, any-hit, or miss shaders
- 
VUID-StandaloneSpirv-IncomingRayPayloadKHR-04700 
 There must be at most one variable with theIncomingRayPayloadKHRStorageClassin the input interface of an entry point
- 
VUID-StandaloneSpirv-HitAttributeKHR-04701 
 HitAttributeKHRStorageClassmust only be used in intersection, any-hit, or closest hit shaders
- 
VUID-StandaloneSpirv-HitAttributeKHR-04702 
 There must be at most one variable with theHitAttributeKHRStorageClassin the input interface of an entry point
- 
VUID-StandaloneSpirv-HitAttributeKHR-04703 
 A variable withHitAttributeKHRStorageClassmust only be written to in an intersection shader
- 
VUID-StandaloneSpirv-CallableDataKHR-04704 
 CallableDataKHRStorageClassmust only be used in ray generation, closest hit, miss, and callable shaders
- 
VUID-StandaloneSpirv-IncomingCallableDataKHR-04705 
 IncomingCallableDataKHRStorageClassmust only be used in callable shaders
- 
VUID-StandaloneSpirv-IncomingCallableDataKHR-04706 
 There must be at most one variable with theIncomingCallableDataKHRStorageClassin the input interface of an entry point
- 
VUID-StandaloneSpirv-ShaderRecordBufferKHR-07119 
 ShaderRecordBufferKHRStorageClassmust only be used in ray generation, intersection, any-hit, closest hit, callable, or miss shaders
- 
VUID-StandaloneSpirv-Base-07650 
 TheBaseoperand ofOpPtrAccessChainmust have a storage class ofWorkgroup,StorageBuffer, orPhysicalStorageBuffer
- 
VUID-StandaloneSpirv-Base-07651 
 If theBaseoperand ofOpPtrAccessChainhas aWorkgroupStorageClass, then theVariablePointerscapability must be declared
- 
VUID-StandaloneSpirv-Base-07652 
 If theBaseoperand ofOpPtrAccessChainhas aStorageBufferStorageClass, then theVariablePointersorVariablePointersStorageBuffercapability must be declared
- 
VUID-StandaloneSpirv-PhysicalStorageBuffer64-04708 
 If thePhysicalStorageBuffer64addressing model is enabled, all instructions that support memory access operands and that use a physical pointer must include theAlignedoperand
- 
VUID-StandaloneSpirv-PhysicalStorageBuffer64-04709 
 If thePhysicalStorageBuffer64addressing model is enabled, any access chain instruction that accesses into aRowMajormatrix must only be used as thePointeroperand toOpLoadorOpStore
- 
VUID-StandaloneSpirv-PhysicalStorageBuffer64-04710 
 If thePhysicalStorageBuffer64addressing model is enabled,OpConvertUToPtrandOpConvertPtrToUmust use an integer type whoseWidthis 64
- 
VUID-StandaloneSpirv-OpTypeForwardPointer-04711 
 OpTypeForwardPointermust have aStorageClassofPhysicalStorageBuffer
- 
VUID-StandaloneSpirv-None-04745 
 All block members in a variable with aStorageClassofPushConstantdeclared as an array must only be accessed by dynamically uniform indices
- 
VUID-StandaloneSpirv-OpVariable-06673 
 There must not be more than oneOpVariablein thePushConstantStorageClasslisted in theInterfacefor eachOpEntryPoint
- 
VUID-StandaloneSpirv-OpEntryPoint-06674 
 EachOpEntryPointmust not statically use more than oneOpVariablein thePushConstantStorageClass
- 
VUID-StandaloneSpirv-OpEntryPoint-08721 
 EachOpEntryPointmust not have more than oneInputvariable assigned the sameComponentword inside aLocationslot, either explicitly or implicitly
- 
VUID-StandaloneSpirv-OpEntryPoint-08722 
 EachOpEntryPointmust not have more than oneOutputvariable assigned the sameComponentword inside aLocationslot, either explicitly or implicitly
- 
VUID-StandaloneSpirv-Result-04780 
 TheResultTypeoperand of anyOpImageReadorOpImageSparseReadinstruction must be a vector of four components
- 
VUID-StandaloneSpirv-PushConstant-06675 
 Any variable in thePushConstantorStorageBufferstorage class must be decorated asBlock
- 
VUID-StandaloneSpirv-Uniform-06676 
 Any variable in theUniformStorageClassmust be decorated asBlockorBufferBlock
- 
VUID-StandaloneSpirv-UniformConstant-06677 
 Any variable in theUniformConstant,StorageBuffer, orUniformStorageClassmust be decorated withDescriptorSetandBinding
- 
VUID-StandaloneSpirv-InputAttachmentIndex-06678 
 Variables decorated withInputAttachmentIndexmust be in theUniformConstantStorageClass
- 
VUID-StandaloneSpirv-DescriptorSet-06491 
 If a variable is decorated byDescriptorSetorBinding, theStorageClassmust correspond to an entry in Shader Resource and Storage Class Correspondence
- 
VUID-StandaloneSpirv-Input-06778 
 Variables with aStorageClassofInputin a fragment shader stage that are decorated withPerVertexKHRmust be declared as arrays
- 
VUID-StandaloneSpirv-MeshEXT-07102 
 The module must not contain both an entry point that uses theTaskEXTorMeshEXTExecutionModeland an entry point that uses theTaskNVorMeshNVExecutionModel
- 
VUID-StandaloneSpirv-MeshEXT-07106 
 In mesh shaders using theMeshEXTExecutionModelOpSetMeshOutputsEXTmust be called before any outputs are written
- 
VUID-StandaloneSpirv-MeshEXT-07107 
 In mesh shaders using theMeshEXTExecutionModelall variables declared as output must not be read from
- 
VUID-StandaloneSpirv-MeshEXT-07108 
 In mesh shaders using theMeshEXTExecutionModelforOpSetMeshOutputsEXTinstructions, the “Vertex Count” and “Primitive Count” operands must not depend onViewIndex
- 
VUID-StandaloneSpirv-MeshEXT-07109 
 In mesh shaders using theMeshEXTExecutionModelvariables decorated withPrimitivePointIndicesEXT,PrimitiveLineIndicesEXT, orPrimitiveTriangleIndicesEXTdeclared as an array must not be accessed by indices that depend onViewIndex
- 
VUID-StandaloneSpirv-MeshEXT-07110 
 In mesh shaders using theMeshEXTExecutionModelany values stored in variables decorated withPrimitivePointIndicesEXT,PrimitiveLineIndicesEXT, orPrimitiveTriangleIndicesEXTmust not depend onViewIndex
- 
VUID-StandaloneSpirv-MeshEXT-07111 
 In mesh shaders using theMeshEXTExecutionModelvariables in workgroup or privateStorageClassdeclared as or containing a composite type must not be accessed by indices that depend onViewIndex
- 
VUID-StandaloneSpirv-MeshEXT-07330 
 In mesh shaders using theMeshEXTExecutionModeltheOutputVerticesExecutionModemust be greater than 0
- 
VUID-StandaloneSpirv-MeshEXT-07331 
 In mesh shaders using theMeshEXTExecutionModeltheOutputPrimitivesEXTExecutionModemust be greater than 0
- 
VUID-StandaloneSpirv-Input-07290 
 Variables with aStorageClassofInputorOutputand a type ofOpTypeBoolmust be decorated with theBuiltIndecoration
- 
VUID-StandaloneSpirv-TileImageEXT-08723 
 The tile image variable declarations must obey the constraints on theTileImageEXTStorageClassand theLocationdecoration described in Fragment Tile Image Interface
- 
VUID-StandaloneSpirv-None-08724 
 TheTileImageEXTStorageClassmust only be used for declaring tile image variables
- 
VUID-StandaloneSpirv-Pointer-08973 
 TheStorageClassof thePointeroperand toOpCooperativeMatrixLoadKHRorOpCooperativeMatrixStoreKHRmust be limited toWorkgroup,StorageBuffer, orPhysicalStorageBuffer
- 
VUID-StandaloneSpirv-OpTypeFloat-10370 
 Variables with a type ofOpTypeFloatand an encoding ofBFloat16KHRmust not be declared with aStorageClassofInputorOutput
- 
VUID-StandaloneSpirv-UniformBufferArrayDynamicIndexing-10127 
 If theUniformBufferArrayDynamicIndexingcapability is not declared, and an instruction accesses memory through a uniform buffer, the uniform buffer through which that memory is accessed must be determined by constant integral expressions
- 
VUID-StandaloneSpirv-SampledImageArrayDynamicIndexing-10128 
 If theSampledImageArrayDynamicIndexingcapability is not declared, and an instruction accesses memory through a sampled image or sampler, the sampled image or sampler through which that memory is accessed must be determined by constant integral expressions
- 
VUID-StandaloneSpirv-StorageBufferArrayDynamicIndexing-10129 
 If theStorageBufferArrayDynamicIndexingcapability is not declared, and an instruction accesses memory through a storage buffer, the storage buffer through which that memory is accessed must be determined by constant integral expressions
- 
VUID-StandaloneSpirv-StorageImageArrayDynamicIndexing-10130 
 If theStorageImageArrayDynamicIndexingcapability is not declared, and an instruction accesses memory through a storage image, the storage image through which that memory is accessed must be determined by constant integral expressions
- 
VUID-StandaloneSpirv-InputAttachmentArrayDynamicIndexing-10131 
 If theInputAttachmentArrayDynamicIndexingcapability is not declared, and an instruction accesses memory through an input attachment, the input attachmnet through which that memory is accessed must be determined by constant integral expressions
- 
VUID-StandaloneSpirv-UniformTexelBufferArrayDynamicIndexing-10132 
 If theUniformTexelBufferArrayDynamicIndexingcapability is not declared, and an instruction accesses memory through a uniform texel buffer, the uniform texel buffer through which that memory is accessed must be determined by constant integral expressions
- 
VUID-StandaloneSpirv-StorageTexelBufferArrayDynamicIndexing-10133 
 If theStorageTexelBufferArrayDynamicIndexingcapability is not declared, and an instruction accesses memory through a storage texel buffer, the storage texel buffer through which that memory is accessed must be determined by constant integral expressions
- 
VUID-StandaloneSpirv-TileShadingQCOM-10686 
 TileShadingQCOMcapability must not be enabled in any stage other than compute or fragment
- 
VUID-StandaloneSpirv-Execution-10687 
 ExecutionModeNonCoherentTileAttachmentReadQCOMmust not be used in any stage other than fragment
- 
VUID-StandaloneSpirv-Execution-10688 
 ExecutionModeTileShadingRateQCOMmust not be used in any stage other than compute
- 
VUID-StandaloneSpirv-TileAttachmentQCOM-10689 
 If theTileAttachmentQCOMStorageClassis used, theTileShadingQCOMcapability must be enabled
- 
VUID-StandaloneSpirv-NonCoherentTileAttachmentReadQCOM-10690 
 If theNonCoherentTileAttachmentReadQCOMExecutionModeis used, theTileShadingQCOMcapability must be enabled
- 
VUID-StandaloneSpirv-TileShadingRateQCOM-10691 
 If theTileShadingRateQCOMExecutionModeis used, theTileShadingQCOMcapability must be enabled
- 
VUID-StandaloneSpirv-TileShadingRateQCOM-10692 
 If theTileShadingRateQCOMExecutionModeis used,LocalSizeandLocalSizeIdExecutionModemust not be specified
- 
VUID-StandaloneSpirv-OpTypeImage-10693 
 OpTypeImagevariables in theTileAttachmentQCOMStorageClassmust haveDimequal to2D
- 
VUID-StandaloneSpirv-OpTypeImage-10694 
 OpTypeImagevariables in theTileAttachmentQCOMStorageClassmustSampledequal to1or2
- 
VUID-StandaloneSpirv-TileAttachmentQCOM-10695 
 Any variable in theTileAttachmentQCOMStorageClassmust be decorated withDescriptorSetandBinding
- 
VUID-StandaloneSpirv-TileAttachmentQCOM-10696 
 Any variable in theTileAttachmentQCOMStorageClassmust not be decorated withComponentdecoration
- 
VUID-StandaloneSpirv-TileAttachmentQCOM-10697 
 An OpTypeImage variables in theTileAttachmentQCOMStorageClassmust not be consumed by anOpImageQuery*instruction
- 
VUID-StandaloneSpirv-OpTypeFloat-10823 
 Variables with a type ofOpTypeFloatand an encoding ofFloat8E4M3EXTorFloat8E5M2EXTmust not be declared with aStorageClassofInputorOutput
- 
VUID-StandaloneSpirv-OpGraphInputARM-09931 
 TheInputIndexandElementIndexoperands toOpGraphInputARMmust be the <id> of a constant instruction
- 
VUID-StandaloneSpirv-OpGraphSetOutputARM-09932 
 TheOutputIndexandElementIndexoperands toOpGraphSetOutputARMmust be the <id> of a constant instruction
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.