Description
The following rules must be validated at runtime. These rules depend on knowledge of the implementation and its capabilities and knowledge of runtime information, such as enabled features.
- 
VUID-RuntimeSpirv-vulkanMemoryModel-06265 
 If thevulkanMemoryModelfeature is enabled and thevulkanMemoryModelDeviceScopefeature is not enabled,Devicememory scope must not be used
- 
VUID-RuntimeSpirv-vulkanMemoryModel-06266 
 If thevulkanMemoryModelfeature is not enabled,QueueFamilymemory scope must not be used
- 
VUID-RuntimeSpirv-shaderSubgroupClock-06267 
 If theshaderSubgroupClockfeature is not enabled, theSubgroupscope must not be used forOpReadClockKHR
- 
VUID-RuntimeSpirv-shaderDeviceClock-06268 
 If theshaderDeviceClockfeature is not enabled, theDevicescope must not be used forOpReadClockKHR
- 
VUID-RuntimeSpirv-shaderRelaxedExtendedInstruction-10773 
 If theshaderRelaxedExtendedInstructionfeature is not enabled, theOpExtInstWithForwardRefsKHRmust not be used
- 
VUID-RuntimeSpirv-None-09558 
 If thedynamicRenderingLocalReadfeature is not enabled, any variable created with a “Type” ofOpTypeImagethat has a “Dim” operand ofSubpassDatamust be decorated withInputAttachmentIndex
- 
VUID-RuntimeSpirv-OpTypeImage-09644 
 Any variable declared as anOpTypeArraywhere theElementTypeis anOpTypeImagewith a “Dim” operand ofSubpassDatamust be decorated withInputAttachmentIndex
- 
VUID-RuntimeSpirv-apiVersion-07954 
 If VkPhysicalDeviceProperties::apiVersionis less than Vulkan 1.3, the VK_KHR_format_feature_flags2 extension is not supported, and theshaderStorageImageWriteWithoutFormatfeature is not enabled, any variable created with a “Type” ofOpTypeImagethat has a “Sampled” operand of 2 and an “Image Format” operand ofUnknownmust be decorated withNonWritable
- 
VUID-RuntimeSpirv-apiVersion-07955 
 If VkPhysicalDeviceProperties::apiVersionis less than Vulkan 1.3, the VK_KHR_format_feature_flags2 extension is not supported, and theshaderStorageImageReadWithoutFormatfeature is not enabled, any variable created with a “Type” ofOpTypeImagethat has a “Sampled” operand of 2 and an “Image Format” operand ofUnknownmust be decorated withNonReadable
- 
VUID-RuntimeSpirv-OpImageWrite-07112 
 OpImageWriteto anyImagewhoseImageFormatis notUnknownmust have theTexeloperand contain at least as many components as the corresponding VkFormat as given in the SPIR-V Image Format compatibility table
- 
VUID-RuntimeSpirv-Location-06272 
 The sum ofLocationand the number of locations the variable it decorates consumes must be less than or equal to the value for the matchingExecutionModeldefined in https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#interfaces-iointerfaces-limits
- 
VUID-RuntimeSpirv-Location-06428 
 The maximum number of storage buffers, storage images, and outputLocationdecorated color attachments written to in theFragmentExecutionModelmust be less than or equal tomaxFragmentCombinedOutputResources
- 
VUID-RuntimeSpirv-UniformBufferArrayNonUniformIndexing-10134 
 If theUniformBufferArrayNonUniformIndexingcapability is not declared, and an instruction accesses memory through a uniform buffer, the uniform buffer through which that memory is accessed must be dynamically uniform within the invocation group or subgroup
- 
VUID-RuntimeSpirv-SampledImageArrayNonUniformIndexing-10135 
 If theSampledImageArrayNonUniformIndexingcapability 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 dynamically uniform within the invocation group or subgroup
- 
VUID-RuntimeSpirv-StorageBufferArrayNonUniformIndexing-10136 
 If theStorageBufferArrayNonUniformIndexingcapability is not declared, and an instruction accesses memory through a storage buffer, the storage buffer through which that memory is accessed must be dynamically uniform within the invocation group or subgroup
- 
VUID-RuntimeSpirv-StorageImageArrayNonUniformIndexing-10137 
 If theStorageImageArrayNonUniformIndexingcapability is not declared, and an instruction accesses memory through a storage image, the storage image through which that memory is accessed must be dynamically uniform within the invocation group or subgroup
- 
VUID-RuntimeSpirv-InputAttachmentArrayNonUniformIndexing-10138 
 If theInputAttachmentArrayNonUniformIndexingcapability is not declared, and an instruction accesses memory through an input attachment, the input attachment through which that memory is accessed must be dynamically uniform within the invocation group or subgroup
- 
VUID-RuntimeSpirv-UniformTexelBufferArrayNonUniformIndexing-10139 
 If theUniformTexelBufferArrayNonUniformIndexingcapability 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 dynamically uniform within the invocation group or subgroup
- 
VUID-RuntimeSpirv-StorageTexelBufferArrayNonUniformIndexing-10140 
 If theStorageTexelBufferArrayNonUniformIndexingcapability 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 dynamically uniform within the invocation group or subgroup
- 
VUID-RuntimeSpirv-subgroupSize-10141 
 If the effective subgroup size is 1, theUniformBufferArrayNonUniformIndexingcapability is not declared, and an instruction accesses memory through a uniform buffer, the uniform buffer through which that memory is accessed must be dynamically uniform within the invocation group
- 
VUID-RuntimeSpirv-subgroupSize-10142 
 If the effective subgroup size is 1, theSampledImageArrayNonUniformIndexingcapability 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 dynamically uniform within the invocation group
- 
VUID-RuntimeSpirv-subgroupSize-10143 
 If the effective subgroup size is 1, theStorageBufferArrayNonUniformIndexingcapability is not declared, and an instruction accesses memory through a storage buffer, the storage buffer through which that memory is accessed must be dynamically uniform within the invocation group
- 
VUID-RuntimeSpirv-subgroupSize-10144 
 If the effective subgroup size is 1, theStorageImageArrayNonUniformIndexingcapability is not declared, and an instruction accesses memory through a storage image, the storage image through which that memory is accessed must be dynamically uniform within the invocation group
- 
VUID-RuntimeSpirv-subgroupSize-10145 
 If the effective subgroup size is 1, theInputAttachmentArrayNonUniformIndexingcapability is not declared, and an instruction accesses memory through an input attachment, the input attachment through which that memory is accessed must be dynamically uniform within the invocation group
- 
VUID-RuntimeSpirv-subgroupSize-10146 
 If the effective subgroup size is 1, theUniformTexelBufferArrayNonUniformIndexingcapability 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 dynamically uniform within the invocation group
- 
VUID-RuntimeSpirv-subgroupSize-10147 
 If the effective subgroup size is 1, theStorageTexelBufferArrayNonUniformIndexingcapability is not 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 dynamically uniform within the invocation group
- 
VUID-RuntimeSpirv-None-10148 
 If an instruction accesses memory through any resource, the effective subgroup size is 1, and the resource through which that memory is accessed is not uniform within the invocation group, then the operand corresponding to that resource (e.g. the pointer or sampled image operand) must be decorated withNonUniform
- 
VUID-RuntimeSpirv-subgroupSize-10149 
 If an instruction accesses memory through any resource, the effective subgroup size is greater than 1, and the resource through which that memory is accessed is not uniform within the invocation group, and not uniform within the subgroup, then the operand corresponding to that resource (e.g. the pointer or sampled image operand) must be decorated withNonUniform
- 
VUID-RuntimeSpirv-None-06275 
 shaderSubgroupExtendedTypesmust be enabled for group operations to use 8-bit integer, 16-bit integer, 64-bit integer, 16-bit floating-point, and vectors of these types
- 
VUID-RuntimeSpirv-subgroupBroadcastDynamicId-06276 
 IfsubgroupBroadcastDynamicIdisVK_TRUE, and the shader module version is 1.5 or higher, the “Index” forOpGroupNonUniformQuadBroadcastmust be dynamically uniform within the derivative group. Otherwise, “Index” must be a constant
- 
VUID-RuntimeSpirv-subgroupBroadcastDynamicId-06277 
 IfsubgroupBroadcastDynamicIdisVK_TRUE, and the shader module version is 1.5 or higher, the “Id” forOpGroupNonUniformBroadcastmust be dynamically uniform within the subgroup. Otherwise, “Id” must be a constant
- 
VUID-RuntimeSpirv-None-06278 
 shaderBufferInt64Atomicsmust be enabled for 64-bit integer atomic operations to be supported on a Pointer with aStorageClassofStorageBufferorUniform
- 
VUID-RuntimeSpirv-None-06279 
 shaderSharedInt64Atomicsmust be enabled for 64-bit integer atomic operations to be supported on a Pointer with aStorageClassofWorkgroup
- 
VUID-RuntimeSpirv-None-06284 
 shaderBufferFloat32Atomics, orshaderBufferFloat32AtomicAdd, orshaderBufferFloat64Atomics, orshaderBufferFloat64AtomicAdd, orshaderBufferFloat16Atomics, orshaderBufferFloat16AtomicAdd, orshaderBufferFloat16AtomicMinMax, orshaderBufferFloat32AtomicMinMax, orshaderBufferFloat64AtomicMinMax, orshaderFloat16VectorAtomicsmust be enabled for floating-point atomic operations to be supported on a Pointer with aStorageClassofStorageBuffer
- 
VUID-RuntimeSpirv-None-06285 
 shaderSharedFloat32Atomics, orshaderSharedFloat32AtomicAdd, orshaderSharedFloat64Atomics, orshaderSharedFloat64AtomicAdd, orshaderSharedFloat16Atomics, orshaderSharedFloat16AtomicAdd, orshaderSharedFloat16AtomicMinMax, orshaderSharedFloat32AtomicMinMax, orshaderSharedFloat64AtomicMinMax, orshaderFloat16VectorAtomics, must be enabled for floating-point atomic operations to be supported on a Pointer with aStorageClassofWorkgroup
- 
VUID-RuntimeSpirv-None-06286 
 shaderImageFloat32Atomics, orshaderImageFloat32AtomicAdd, orshaderImageFloat32AtomicMinMax, must be enabled for 32-bit floating-point atomic operations to be supported on a Pointer with aStorageClassofImage
- 
VUID-RuntimeSpirv-None-06287 
 sparseImageFloat32Atomics, orsparseImageFloat32AtomicAdd, orsparseImageFloat32AtomicMinMax, must be enabled for 32-bit floating-point atomics to be supported on sparse images
- 
VUID-RuntimeSpirv-None-06288 
 shaderImageInt64Atomicsmust be enabled for 64-bit integer atomic operations to be supported on a Pointer with aStorageClassofImage
- 
VUID-RuntimeSpirv-denormBehaviorIndependence-06289 
 IfdenormBehaviorIndependenceisVK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY, then the entry point must use the same denormalsExecutionModefor both 16-bit and 64-bit floating-point types
- 
VUID-RuntimeSpirv-denormBehaviorIndependence-06290 
 IfdenormBehaviorIndependenceisVK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE, then the entry point must use the same denormalsExecutionModefor all floating-point types
- 
VUID-RuntimeSpirv-roundingModeIndependence-06291 
 IfroundingModeIndependenceisVK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY, then the entry point must use the same roundingExecutionModefor both 16-bit and 64-bit floating-point types
- 
VUID-RuntimeSpirv-roundingModeIndependence-06292 
 IfroundingModeIndependenceisVK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE, then the entry point must use the same roundingExecutionModefor all floating-point types
- 
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat16-06293 
 IfshaderSignedZeroInfNanPreserveFloat16isVK_FALSE, thenSignedZeroInfNanPreservefor 16-bit floating-point type must not be used
- 
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat32-06294 
 IfshaderSignedZeroInfNanPreserveFloat32isVK_FALSE, thenSignedZeroInfNanPreservefor 32-bit floating-point type must not be used
- 
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat64-06295 
 IfshaderSignedZeroInfNanPreserveFloat64isVK_FALSE, thenSignedZeroInfNanPreservefor 64-bit floating-point type must not be used
- 
VUID-RuntimeSpirv-shaderDenormPreserveFloat16-06296 
 IfshaderDenormPreserveFloat16isVK_FALSE, thenDenormPreservefor 16-bit floating-point type must not be used
- 
VUID-RuntimeSpirv-shaderDenormPreserveFloat32-06297 
 IfshaderDenormPreserveFloat32isVK_FALSE, thenDenormPreservefor 32-bit floating-point type must not be used
- 
VUID-RuntimeSpirv-shaderDenormPreserveFloat64-06298 
 IfshaderDenormPreserveFloat64isVK_FALSE, thenDenormPreservefor 64-bit floating-point type must not be used
- 
VUID-RuntimeSpirv-shaderDenormFlushToZeroFloat16-06299 
 IfshaderDenormFlushToZeroFloat16isVK_FALSE, thenDenormFlushToZerofor 16-bit floating-point type must not be used
- 
VUID-RuntimeSpirv-shaderDenormFlushToZeroFloat32-06300 
 IfshaderDenormFlushToZeroFloat32isVK_FALSE, thenDenormFlushToZerofor 32-bit floating-point type must not be used
- 
VUID-RuntimeSpirv-shaderDenormFlushToZeroFloat64-06301 
 IfshaderDenormFlushToZeroFloat64isVK_FALSE, thenDenormFlushToZerofor 64-bit floating-point type must not be used
- 
VUID-RuntimeSpirv-shaderRoundingModeRTEFloat16-06302 
 IfshaderRoundingModeRTEFloat16isVK_FALSE, thenRoundingModeRTEfor 16-bit floating-point type must not be used
- 
VUID-RuntimeSpirv-shaderRoundingModeRTEFloat32-06303 
 IfshaderRoundingModeRTEFloat32isVK_FALSE, thenRoundingModeRTEfor 32-bit floating-point type must not be used
- 
VUID-RuntimeSpirv-shaderRoundingModeRTEFloat64-06304 
 IfshaderRoundingModeRTEFloat64isVK_FALSE, thenRoundingModeRTEfor 64-bit floating-point type must not be used
- 
VUID-RuntimeSpirv-shaderRoundingModeRTZFloat16-06305 
 IfshaderRoundingModeRTZFloat16isVK_FALSE, thenRoundingModeRTZfor 16-bit floating-point type must not be used
- 
VUID-RuntimeSpirv-shaderRoundingModeRTZFloat32-06306 
 IfshaderRoundingModeRTZFloat32isVK_FALSE, thenRoundingModeRTZfor 32-bit floating-point type must not be used
- 
VUID-RuntimeSpirv-shaderRoundingModeRTZFloat64-06307 
 IfshaderRoundingModeRTZFloat64isVK_FALSE, thenRoundingModeRTZfor 64-bit floating-point type must not be used
- 
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat16-09559 
 IfshaderSignedZeroInfNanPreserveFloat16isVK_FALSEthen anyFPFastMathDefaultexecution mode with a type of 16-bit float must include theNSZ,NotInf, andNotNaNflags
- 
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat16-09560 
 IfshaderSignedZeroInfNanPreserveFloat16isVK_FALSEthen anyFPFastMathModedecoration on an instruction with result type or any operand type that includes a 16-bit float must include theNSZ,NotInf, andNotNaNflags
- 
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat32-09561 
 IfshaderSignedZeroInfNanPreserveFloat32isVK_FALSEthen anyFPFastMathDefaultexecution mode with a type of 32-bit float must include theNSZ,NotInf, andNotNaNflags
- 
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat32-09562 
 IfshaderSignedZeroInfNanPreserveFloat32isVK_FALSEthen anyFPFastMathModedecoration on an instruction with result type or any operand type that includes a 32-bit float must include theNSZ,NotInf, andNotNaNflags
- 
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat64-09563 
 IfshaderSignedZeroInfNanPreserveFloat64isVK_FALSEthen anyFPFastMathDefaultexecution mode with a type of 64-bit float must include theNSZ,NotInf, andNotNaNflags
- 
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat64-09564 
 IfshaderSignedZeroInfNanPreserveFloat64isVK_FALSEthen anyFPFastMathModedecoration on an instruction with result type or any operand type that includes a 64-bit float must include theNSZ,NotInf, andNotNaNflags
- 
VUID-RuntimeSpirv-Offset-06308 
 TheOffsetplus size of the type of each variable, in the output interface of the entry point being compiled, decorated withXfbBuffermust not be greater than VkPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackBufferDataSize
- 
VUID-RuntimeSpirv-XfbBuffer-06309 
 For any givenXfbBuffervalue, define the buffer data size to be smallest number of bytes such that, for all outputs decorated with the sameXfbBuffervalue, the size of the output interface variable plus theOffsetis less than or equal to the buffer data size. For a givenStream, the sum of all the buffer data sizes for all buffers writing to that stream the must not exceed VkPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackStreamDataSize
- 
VUID-RuntimeSpirv-OpEmitStreamVertex-06310 
 The Stream value toOpEmitStreamVertexandOpEndStreamPrimitivemust be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackStreams
- 
VUID-RuntimeSpirv-transformFeedbackStreamsLinesTriangles-06311 
 If the geometry shader emits to more than one vertex stream and VkPhysicalDeviceTransformFeedbackPropertiesEXT::transformFeedbackStreamsLinesTrianglesisVK_FALSE, thenExecutionModemust beOutputPoints
- 
VUID-RuntimeSpirv-Stream-06312 
 The stream number value toStreammust be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackStreams
- 
VUID-RuntimeSpirv-XfbStride-06313 
 The XFB Stride value toXfbStridemust be less than or equal to VkPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackBufferDataStride
- 
VUID-RuntimeSpirv-PhysicalStorageBuffer64-06314 
 If thePhysicalStorageBuffer64addressing model is enabled any load or store through a physical pointer type must be aligned to a multiple of the size of the largest scalar type in the pointed-to type
- 
VUID-RuntimeSpirv-PhysicalStorageBuffer64-06315 
 If thePhysicalStorageBuffer64addressing model is enabled the pointer value of a memory access instruction must be at least as aligned as specified by theAlignedmemory access operand
- 
VUID-RuntimeSpirv-OpTypeCooperativeMatrixNV-06316 
 ForOpTypeCooperativeMatrixNV, the component type, scope, number of rows, and number of columns must match one of the matrices in any of the supported VkCooperativeMatrixPropertiesNV
- 
VUID-RuntimeSpirv-OpTypeCooperativeMatrixMulAddNV-10059 
 ForOpTypeCooperativeMatrixMulAddNV, the operands must match a supported VkCooperativeMatrixPropertiesNV, such that:- 
The type of Amust haveRowsmatch VkCooperativeMatrixPropertiesNV::MSize,Columnsmatch VkCooperativeMatrixPropertiesNV::KSize, andComponentTypematch VkCooperativeMatrixPropertiesNV::AType.
- 
The type of Bmust haveRowsmatch VkCooperativeMatrixPropertiesNV::KSize,Columnsmatch VkCooperativeMatrixPropertiesNV::NSize, andComponentTypematch VkCooperativeMatrixPropertiesNV::BType.
- 
The type of Cmust haveRowsmatch VkCooperativeMatrixPropertiesNV::MSize,Columnsmatch VkCooperativeMatrixPropertiesNV::NSize, andComponentTypematch VkCooperativeMatrixPropertiesNV::CType.
- 
The type of Resultmust haveRowsmatch VkCooperativeMatrixPropertiesNV::MSize,Columnsmatch VkCooperativeMatrixPropertiesNV::NSize, andComponentTypematch VkCooperativeMatrixPropertiesNV::DType.
- 
The scope of all cooperative matrix operands must be VkScopeNV:: VK_SCOPE_SUBGROUP_NV.
- 
If ComponentTypeofA,B,C, orResultis a signed integral type, theSignednessoperand of theOpTypeIntmust be 1.
- 
If ComponentTypeofA,B,C, orResultis an unsigned integral type, theSignednessoperand of theOpTypeIntmust be 0
 
- 
- 
VUID-RuntimeSpirv-OpTypeCooperativeMatrixNV-06322 
 OpTypeCooperativeMatrixNVandOpCooperativeMatrix*instructions must not be used in shader stages not included in VkPhysicalDeviceCooperativeMatrixPropertiesNV::cooperativeMatrixSupportedStages
- 
VUID-RuntimeSpirv-OpTypeCooperativeMatrixKHR-10163 
 ForOpTypeCooperativeMatrixKHR, if thecooperativeMatrixFlexibleDimensionsfeature is not enabled, the component type, scope, number of rows, and number of columns must match one of the matrices in any of the supported VkCooperativeMatrixPropertiesKHR, where- 
for UseofMatrixA, the number of rows must match VkCooperativeMatrixPropertiesKHR::MSizeand the number of columns must match VkCooperativeMatrixPropertiesKHR::KSizeand the type must match VkCooperativeMatrixPropertiesKHR::AType
- 
for UseofMatrixB, the number of rows must match VkCooperativeMatrixPropertiesKHR::KSizeand the number of columns must match VkCooperativeMatrixPropertiesKHR::NSizeand the type must match VkCooperativeMatrixPropertiesKHR::BType
- 
for UseofMatrixAccumulator, the number of rows must match VkCooperativeMatrixPropertiesKHR::MSizeand the number of columns must match VkCooperativeMatrixPropertiesKHR::NSizeand the type must match VkCooperativeMatrixPropertiesKHR::CTypeor VkCooperativeMatrixPropertiesKHR::ResultType
 
- 
- 
VUID-RuntimeSpirv-OpCooperativeMatrixMulAddKHR-10060 
 ForOpCooperativeMatrixMulAddKHR, if thecooperativeMatrixFlexibleDimensionsfeature is not enabled, the operands must match a supported VkCooperativeMatrixPropertiesKHR, such that:- 
The type of Amust haveRowsmatch VkCooperativeMatrixPropertiesKHR::MSize,Columnsmatch VkCooperativeMatrixPropertiesKHR::KSize,UsebeMatrixAKHR, andComponentTypematch VkCooperativeMatrixPropertiesKHR::AType.
- 
The type of Bmust haveRowsmatch VkCooperativeMatrixPropertiesKHR::KSize,Columnsmatch VkCooperativeMatrixPropertiesKHR::NSize,UsebeMatrixBKHR, andComponentTypematch VkCooperativeMatrixPropertiesKHR::BType.
- 
The type of Cmust haveRowsmatch VkCooperativeMatrixPropertiesKHR::MSize,Columnsmatch VkCooperativeMatrixPropertiesKHR::NSize,UsebeMatrixAccumulatorKHR, andComponentTypematch VkCooperativeMatrixPropertiesKHR::CType.
- 
The type of Resultmust haveRowsmatch VkCooperativeMatrixPropertiesKHR::MSize,Columnsmatch VkCooperativeMatrixPropertiesKHR::NSize,UsebeMatrixAccumulatorKHR, andComponentTypematch VkCooperativeMatrixPropertiesKHR::ResultType.
- 
If and only if VkCooperativeMatrixPropertiesKHR:: ATypeis a signed integer type,MatrixASignedComponentsmust be used.
- 
If and only if VkCooperativeMatrixPropertiesKHR:: BTypeis a signed integer type,MatrixBSignedComponentsmust be used.
- 
If and only if VkCooperativeMatrixPropertiesKHR:: CTypeis a signed integer type,MatrixCSignedComponentsmust be used.
- 
If and only if VkCooperativeMatrixPropertiesKHR:: ResultTypeis a signed integer type,MatrixResultSignedComponentsmust be used.
- 
If and only if VkCooperativeMatrixPropertiesKHR:: saturatingAccumulationisVK_TRUE,SaturatingAccumulationKHRmust be used.
- 
If and only if VkCooperativeMatrixPropertiesKHR:: saturatingAccumulationisVK_FALSE,SaturatingAccumulationKHRmust not be used.
- 
The scope of all cooperative matrix operands must match VkCooperativeMatrixPropertiesKHR:: scope.
 
- 
- 
VUID-RuntimeSpirv-cooperativeMatrixWorkgroupScope-10164 
 If thecooperativeMatrixWorkgroupScopefeature is not enabled, the scope of allOpTypeCooperativeMatrixKHRmust not be VkScopeKHR::VK_SCOPE_WORKGROUP_KHR
- 
VUID-RuntimeSpirv-cooperativeMatrixFlexibleDimensions-10165 
 ForOpTypeCooperativeMatrixKHR, if thecooperativeMatrixFlexibleDimensionsfeature is enabled, the component type, scope, number of rows, and number of columns must match either one of the matrices in one of the supported VkCooperativeMatrixPropertiesKHR as described above, or one of the supported VkCooperativeMatrixFlexibleDimensionsPropertiesNV, where- 
for MatrixA, the number of rows must be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::MGranularityand the number of columns must be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::KGranularityand the type must match VkCooperativeMatrixFlexibleDimensionsPropertiesNV::AType
- 
for MatrixB, the number of rows must be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::KGranularityand the number of columns must be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::NGranularityand the type must match VkCooperativeMatrixFlexibleDimensionsPropertiesNV::BType
- 
for MatrixAccumulator, the number of rows must be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::MGranularityand the number of columns must be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::NGranularityand the type must match VkCooperativeMatrixFlexibleDimensionsPropertiesNV::CTypeor VkCooperativeMatrixFlexibleDimensionsPropertiesNV::ResultType
- 
if the scope is VK_SCOPE_WORKGROUP_KHR, the number of invocations in the local workgroup must match VkCooperativeMatrixFlexibleDimensionsPropertiesNV::workgroupInvocations
 
- 
- 
VUID-RuntimeSpirv-cooperativeMatrixFlexibleDimensions-10166 
 ForOpCooperativeMatrixMulAddKHR, if thecooperativeMatrixFlexibleDimensionsfeature is enabled, the operands must match either one of the supported VkCooperativeMatrixPropertiesKHR as described above, or one of the supported VkCooperativeMatrixFlexibleDimensionsPropertiesNV, such that:- 
The type of Amust haveRowsbe a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::MGranularity,Columnsbe a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::KGranularity,UsebeMatrixAKHR, andComponentTypematch VkCooperativeMatrixFlexibleDimensionsPropertiesNV::AType.
- 
The type of Bmust haveRowsbe a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::KGranularity,Columnsbe a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::NGranularity,UsebeMatrixBKHR, andComponentTypematch VkCooperativeMatrixFlexibleDimensionsPropertiesNV::BType.
- 
The type of Cmust haveRowsbe a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::MGranularity,Columnsbe a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::NGranularity,UsebeMatrixAccumulatorKHR, andComponentTypematch VkCooperativeMatrixFlexibleDimensionsPropertiesNV::CType.
- 
The type of Resultmust haveRowsbe a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::MGranularity,Columnsbe a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::NGranularity,UsebeMatrixAccumulatorKHR, andComponentTypematch VkCooperativeMatrixFlexibleDimensionsPropertiesNV::ResultType.
- 
If and only if VkCooperativeMatrixFlexibleDimensionsPropertiesNV:: ATypeis a signed integer type,MatrixASignedComponentsmust be used.
- 
If and only if VkCooperativeMatrixFlexibleDimensionsPropertiesNV:: BTypeis a signed integer type,MatrixBSignedComponentsmust be used.
- 
If and only if VkCooperativeMatrixFlexibleDimensionsPropertiesNV:: CTypeis a signed integer type,MatrixCSignedComponentsmust be used.
- 
If and only if VkCooperativeMatrixFlexibleDimensionsPropertiesNV:: ResultTypeis a signed integer type,MatrixResultSignedComponentsmust be used.
- 
If and only if VkCooperativeMatrixFlexibleDimensionsPropertiesNV:: saturatingAccumulationisVK_TRUE,SaturatingAccumulationKHRmust be used.
- 
If and only if VkCooperativeMatrixFlexibleDimensionsPropertiesNV:: saturatingAccumulationisVK_FALSE,SaturatingAccumulationKHRmust not be used.
- 
The scope of all cooperative matrix operands must match VkCooperativeMatrixFlexibleDimensionsPropertiesNV:: scope.
- 
If the scope is VK_SCOPE_WORKGROUP_KHR, the number of invocations in the local workgroup must match VkCooperativeMatrixFlexibleDimensionsPropertiesNV::workgroupInvocations
 
- 
- 
VUID-RuntimeSpirv-cooperativeMatrixFlexibleDimensionsMaxDimension-10167 
 AllOpTypeCooperativeMatrixKHRdimensions must be less than or equal tocooperativeMatrixFlexibleDimensionsMaxDimension
- 
VUID-RuntimeSpirv-maxComputeSharedMemorySize-10168 
 If the module usesOpTypeCooperativeMatrixKHRwithScopeequal toWorkgroup, the sum of size in bytes for variables and padding in theWorkgroupStorageClassin theGLComputeExecutionModelmust be less than or equal tomaxComputeSharedMemorySizeminuscooperativeMatrixWorkgroupScopeReservedSharedMemory
- 
VUID-RuntimeSpirv-cooperativeMatrixSupportedStages-08985 
 OpTypeCooperativeMatrixKHRandOpCooperativeMatrix*instructions must not be used in shader stages not included in VkPhysicalDeviceCooperativeMatrixPropertiesKHR::cooperativeMatrixSupportedStages
- 
VUID-RuntimeSpirv-OpTypeCooperativeMatrixKHR-10770 
 Any pipeline containing a shader withOpTypeCooperativeMatrixKHRorOpCooperativeMatrix*KHRinstructions must be created with theVK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BITflag or the shader module must be version 1.6 or greater
- 
VUID-RuntimeSpirv-OpTypeCooperativeMatrixKHR-10771 
 Any shader object containingOpTypeCooperativeMatrixKHRorOpCooperativeMatrix*KHRinstructions must be created with theVK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXTflag or the shader module must be version 1.6 or greater
- 
VUID-RuntimeSpirv-OpCooperativeMatrixLoadNV-06324 
 ForOpCooperativeMatrixLoadNVandOpCooperativeMatrixStoreNVinstructions, thePointerandStrideoperands must be aligned to at least the lesser of 16 bytes or the natural alignment of a row or column (depending onColumnMajor) of the matrix (where the natural alignment is the number of columns/rows multiplied by the component size)
- 
VUID-RuntimeSpirv-OpCooperativeVectorMatrixMulNV-10089 
 ForOpCooperativeVectorMatrixMulNVandOpCooperativeVectorMatrixMulAddNV, the following must be satisfied by the same entry in the VkCooperativeVectorPropertiesNV array returned by vkGetPhysicalDeviceCooperativeVectorPropertiesNV:- 
The component type of Inputmust match VkCooperativeVectorPropertiesNV::inputType
- 
The InputInterpretationmust match VkCooperativeVectorPropertiesNV::inputInterpretation
- 
The MatrixInterpretationmust match VkCooperativeVectorPropertiesNV::matrixInterpretation
- 
For OpCooperativeVectorMatrixMulAddNV, theBiasInterpretationmust match VkCooperativeVectorPropertiesNV::biasInterpretation
- 
The ResultTypemust match VkCooperativeVectorPropertiesNV::resultType
- 
If Transposeis true, VkCooperativeVectorPropertiesNV::transposemust beVK_TRUE
 
- 
- 
VUID-RuntimeSpirv-OpCooperativeVectorMatrixMulNV-10090 
 ForOpCooperativeVectorMatrixMulNVandOpCooperativeVectorMatrixMulAddNV, ifMatrixInterpretationis eitherVK_COMPONENT_TYPE_FLOAT_E4M3_NVorVK_COMPONENT_TYPE_FLOAT_E5M2_NVthenMemoryLayoutmust be eitherVK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NVorVK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV
- 
VUID-RuntimeSpirv-cooperativeVectorSupportedStages-10091 
 OpTypeCooperativeVectorNVandOpCooperativeVector*instructions must not be used in shader stages not included in VkPhysicalDeviceCooperativeVectorPropertiesNV::cooperativeVectorSupportedStages
- 
VUID-RuntimeSpirv-OpCooperativeVectorReduceSumAccumulateNV-10092 
 ForOpCooperativeVectorReduceSumAccumulateNV:- 
The component type of Vmust be either 16- or 32-bit floating-point
- 
If the component type of Vis 16-bit floating-point,cooperativeVectorTrainingFloat16Accumulationmust be supported
- 
If the component type of Vis 32-bit floating-point,cooperativeVectorTrainingFloat32Accumulationmust be supported
- 
The pointer’s storage class must be StorageBufferorPhysicalStorageBuffer
 
- 
- 
VUID-RuntimeSpirv-OpCooperativeVectorOuterProductAccumulateNV-10093 
 ForOpCooperativeVectorOuterProductAccumulateNV:- 
MatrixInterpretationmust beVK_COMPONENT_TYPE_FLOAT16_KHRorVK_COMPONENT_TYPE_FLOAT32_KHR
- 
If MatrixInterpretationisVK_COMPONENT_TYPE_FLOAT16_KHR,cooperativeVectorTrainingFloat16Accumulationmust be supported
- 
If MatrixInterpretationisVK_COMPONENT_TYPE_FLOAT32_KHR,cooperativeVectorTrainingFloat32Accumulationmust be supported
- 
The component types of AandBmust be 16-bit floating-point
- 
The matrix layout must be training-optimal 
- 
The pointer’s storage class must be StorageBufferorPhysicalStorageBuffer
 
- 
- 
VUID-RuntimeSpirv-maxCooperativeVectorComponents-10094 
 OpTypeCooperativeVectorinstructions must haveComponentCountless than or equal tomaxCooperativeVectorComponents
- 
VUID-RuntimeSpirv-OpTypeCooperativeVector-10095 
 OpTypeCooperativeVectorinstructions must haveComponentTypethat is any supported type reported by vkGetPhysicalDeviceCooperativeVectorPropertiesNV
- 
VUID-RuntimeSpirv-MeshNV-07113 
 For mesh shaders using theMeshNVExecutionModeltheOutputVerticesOpExecutionModemust be less than or equal to VkPhysicalDeviceMeshShaderPropertiesNV::maxMeshOutputVertices
- 
VUID-RuntimeSpirv-MeshNV-07114 
 For mesh shaders using theMeshNVExecutionModeltheOutputPrimitivesNVOpExecutionModemust be less than or equal to VkPhysicalDeviceMeshShaderPropertiesNV::maxMeshOutputPrimitives
- 
VUID-RuntimeSpirv-MeshEXT-07115 
 For mesh shaders using theMeshEXTExecutionModeltheOutputVerticesOpExecutionModemust be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshOutputVertices
- 
VUID-RuntimeSpirv-MeshEXT-07332 
 For mesh shaders using theMeshEXTExecutionModelthe “Vertex Count” operand ofOpSetMeshOutputsEXTmust be less than or equal toOutputVerticesOpExecutionMode
- 
VUID-RuntimeSpirv-MeshEXT-07116 
 For mesh shaders using theMeshEXTExecutionModeltheOutputPrimitivesEXTOpExecutionModemust be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshOutputPrimitives
- 
VUID-RuntimeSpirv-MeshEXT-07333 
 For mesh shaders using theMeshEXTExecutionModelthe “Primitive Count” operand ofOpSetMeshOutputsEXTmust be less than or equal toOutputPrimitivesEXTOpExecutionMode
- 
VUID-RuntimeSpirv-TaskEXT-07117 
 In task shaders using theTaskEXTExecutionModelOpEmitMeshTasksEXTmust be called exactly once under dynamically uniform conditions
- 
VUID-RuntimeSpirv-MeshEXT-07118 
 In mesh shaders using theMeshEXTExecutionModelOpSetMeshOutputsEXTmust be called at most once under dynamically uniform conditions
- 
VUID-RuntimeSpirv-TaskEXT-07291 
 In task shaders using theTaskEXTExecutionModelthexsize inLocalSizeorLocalSizeIdmust be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupSize[0]
- 
VUID-RuntimeSpirv-TaskEXT-07292 
 In task shaders using theTaskEXTExecutionModeltheysize inLocalSizeorLocalSizeIdmust be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupSize[1]
- 
VUID-RuntimeSpirv-TaskEXT-07293 
 In task shaders using theTaskEXTExecutionModelthezsize inLocalSizeorLocalSizeIdmust be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupSize[2]
- 
VUID-RuntimeSpirv-TaskEXT-07294 
 In task shaders using theTaskEXTExecutionModelthe product ofxsize,ysize, andzsize inLocalSizeorLocalSizeIdmust be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupInvocations
- 
VUID-RuntimeSpirv-MeshEXT-07295 
 For mesh shaders using theMeshEXTExecutionModelthexsize inLocalSizeorLocalSizeIdmust be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupSize[0]
- 
VUID-RuntimeSpirv-MeshEXT-07296 
 For mesh shaders using theMeshEXTExecutionModeltheysize inLocalSizeorLocalSizeIdmust be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupSize[1]
- 
VUID-RuntimeSpirv-MeshEXT-07297 
 For mesh shaders using theMeshEXTExecutionModelthezsize inLocalSizeorLocalSizeIdmust be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupSize[2]
- 
VUID-RuntimeSpirv-MeshEXT-07298 
 For mesh shaders using theMeshEXTExecutionModelthe product ofxsize,ysize, andzsize inLocalSizeorLocalSizeIdmust be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupInvocations
- 
VUID-RuntimeSpirv-TaskEXT-07299 
 In task shaders using theTaskEXTExecutionModelthe value of the “Group Count X” operand ofOpEmitMeshTasksEXTmust be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupCount[0]
- 
VUID-RuntimeSpirv-TaskEXT-07300 
 In task shaders using theTaskEXTExecutionModelthe value of the “Group Count Y” operand ofOpEmitMeshTasksEXTmust be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupCount[1]
- 
VUID-RuntimeSpirv-TaskEXT-07301 
 In task shaders using theTaskEXTExecutionModelthe value of the “Group Count Z” operand ofOpEmitMeshTasksEXTmust be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupCount[2]
- 
VUID-RuntimeSpirv-TaskEXT-07302 
 In task shaders using theTaskEXTExecutionModelthe product of the “Group Count” operands ofOpEmitMeshTasksEXTmust be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupTotalCount
- 
VUID-RuntimeSpirv-maxMeshSharedMemorySize-08754 
 The sum of size in bytes for variables and padding in theWorkgroupStorageClassin theMeshEXTExecutionModelmust be less than or equal tomaxMeshSharedMemorySize
- 
VUID-RuntimeSpirv-maxMeshPayloadAndSharedMemorySize-08755 
 The sum of size in bytes for variables and padding in theTaskPayloadWorkgroupEXTorWorkgroupStorageClassin theMeshEXTExecutionModelmust be less than or equal tomaxMeshPayloadAndSharedMemorySize
- 
VUID-RuntimeSpirv-maxMeshOutputMemorySize-08756 
 The sum of size in bytes for variables in theOutputStorageClassin theMeshEXTExecutionModelmust be less than or equal tomaxMeshOutputMemorySizeaccording to the formula in Mesh Shader Output
- 
VUID-RuntimeSpirv-maxMeshPayloadAndOutputMemorySize-08757 
 The sum of size in bytes for variables and in theTaskPayloadWorkgroupEXTorOutputStorageClassin theMeshEXTExecutionModelmust be less than or equal tomaxMeshPayloadAndOutputMemorySizeaccording to the formula in Mesh Shader Output
- 
VUID-RuntimeSpirv-maxTaskPayloadSize-08758 
 The sum of size in bytes for variables and in theTaskPayloadWorkgroupEXTStorageClassin theTaskEXTExecutionModelmust be less than or equal tomaxTaskPayloadSize
- 
VUID-RuntimeSpirv-maxTaskSharedMemorySize-08759 
 The sum of size in bytes for variables and padding in theWorkgroupStorageClassin theTaskEXTExecutionModelmust be less than or equal tomaxTaskSharedMemorySize
- 
VUID-RuntimeSpirv-maxTaskPayloadAndSharedMemorySize-08760 
 The sum of size in bytes for variables and padding in theTaskPayloadWorkgroupEXTorWorkgroupStorageClassin theTaskEXTExecutionModelmust be less than or equal tomaxTaskPayloadAndSharedMemorySize
- 
VUID-RuntimeSpirv-OpCooperativeMatrixLoadKHR-08986 
 ForOpCooperativeMatrixLoadKHRandOpCooperativeMatrixStoreKHRinstructions, thePointerandStrideoperands must be aligned to at least the lesser of 16 bytes or the natural alignment of a row or column (depending onColumnMajor) of the matrix (where the natural alignment is the number of columns/rows multiplied by the component size)
- 
VUID-RuntimeSpirv-OpCooperativeVectorMatrixMulNV-10096 
 ForOpCooperativeVectorMatrixMulNVandOpCooperativeVectorMatrixMulAddNVinstructions using non-optimal layouts, theStrideoperand must be aligned to 16 bytes
- 
VUID-RuntimeSpirv-OpCooperativeVectorMatrixMulNV-10097 
 ForOpCooperativeVectorMatrixMulNVandOpCooperativeVectorMatrixMulAddNVinstructions, theMatrixandMatrixOffsetmust be aligned to 64 bytes
- 
VUID-RuntimeSpirv-OpCooperativeVectorMatrixMulAddNV-10098 
 ForOpCooperativeVectorMatrixMulAddNVinstructions, theBiasandBiasOffsetmust be aligned to 16 bytes
- 
VUID-RuntimeSpirv-OpCooperativeVectorLoadNV-10099 
 ForOpCooperativeVectorLoadNVandOpCooperativeVectorStoreNVinstructions, thePointerandOffsetmust be aligned to 16 bytes
- 
VUID-RuntimeSpirv-OpCooperativeVectorReduceSumAccumulateNV-10100 
 ForOpCooperativeVectorReduceSumAccumulateNVinstructions, thePointerandOffsetmust be aligned to 16 bytes
- 
VUID-RuntimeSpirv-OpCooperativeVectorOuterProductAccumulateNV-10101 
 ForOpCooperativeVectorOuterProductAccumulateNVinstructions, thePointerandOffsetmust be aligned to 64 bytes
- 
VUID-RuntimeSpirv-shaderSampleRateInterpolationFunctions-06325 
 If theVK_KHR_portability_subsetextension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::shaderSampleRateInterpolationFunctionsisVK_FALSE, thenGLSL.std.450fragment interpolation functions are not supported by the implementation andOpCapabilitymust not beInterpolationFunction
- 
VUID-RuntimeSpirv-tessellationShader-06326 
 If thetessellationShaderfeature is enabled, and theVK_KHR_portability_subsetextension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::tessellationIsolinesisVK_FALSE, thenOpExecutionModemust not beIsoLines
- 
VUID-RuntimeSpirv-tessellationShader-06327 
 If thetessellationShaderfeature is enabled, and theVK_KHR_portability_subsetextension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::tessellationPointModeisVK_FALSE, thenOpExecutionModemust not bePointMode
- 
VUID-RuntimeSpirv-storageBuffer8BitAccess-06328 
 IfstorageBuffer8BitAccessisVK_FALSE, then objects containing an 8-bit integer element must not haveStorageClassofStorageBuffer,ShaderRecordBufferKHR, orPhysicalStorageBuffer
- 
VUID-RuntimeSpirv-uniformAndStorageBuffer8BitAccess-06329 
 IfuniformAndStorageBuffer8BitAccessisVK_FALSE, then objects in theUniformStorageClasswith theBlockdecoration must not have an 8-bit integer member
- 
VUID-RuntimeSpirv-storagePushConstant8-06330 
 IfstoragePushConstant8isVK_FALSE, then objects containing an 8-bit integer element must not haveStorageClassofPushConstant
- 
VUID-RuntimeSpirv-workgroupMemoryExplicitLayout8BitAccess-10756 
 IfworkgroupMemoryExplicitLayout8BitAccessisVK_FALSE, then objects in theWorkgroupStorageClasswith theBlockdecoration must not have an 8-bit integer element.
- 
VUID-RuntimeSpirv-storageBuffer16BitAccess-06331 
 IfstorageBuffer16BitAccessisVK_FALSE, then objects containing 16-bit integer or 16-bit floating-point elements must not haveStorageClassofStorageBuffer,ShaderRecordBufferKHR, orPhysicalStorageBuffer
- 
VUID-RuntimeSpirv-uniformAndStorageBuffer16BitAccess-06332 
 IfuniformAndStorageBuffer16BitAccessisVK_FALSE, then objects in theUniformStorageClasswith theBlockdecoration must not have 16-bit integer or 16-bit floating-point members
- 
VUID-RuntimeSpirv-storagePushConstant16-06333 
 IfstoragePushConstant16isVK_FALSE, then objects containing 16-bit integer or 16-bit floating-point elements must not haveStorageClassofPushConstant
- 
VUID-RuntimeSpirv-storageInputOutput16-06334 
 IfstorageInputOutput16isVK_FALSE, then objects containing 16-bit integer or 16-bit floating-point elements must not haveStorageClassofInputorOutput
- 
VUID-RuntimeSpirv-workgroupMemoryExplicitLayout16BitAccess-10757 
 IfworkgroupMemoryExplicitLayout16BitAccessisVK_FALSE, then objects in theWorkgroupStorageClasswith theBlockdecoration must not have an 16-bit integer or 16-bit floating-point elements.
- 
VUID-RuntimeSpirv-None-06337 
 shaderBufferFloat16Atomics, orshaderBufferFloat16AtomicAdd, orshaderBufferFloat16AtomicMinMax, orshaderSharedFloat16Atomics, orshaderSharedFloat16AtomicAdd, orshaderSharedFloat16AtomicMinMaxmust be enabled for 16-bit floating-point atomic operations
- 
VUID-RuntimeSpirv-None-06338 
 shaderBufferFloat32Atomics, orshaderBufferFloat32AtomicAdd, orshaderSharedFloat32Atomics, orshaderSharedFloat32AtomicAdd, orshaderImageFloat32Atomics, orshaderImageFloat32AtomicAddorshaderBufferFloat32AtomicMinMax, orshaderSharedFloat32AtomicMinMax, orshaderImageFloat32AtomicMinMaxmust be enabled for 32-bit floating-point atomic operations
- 
VUID-RuntimeSpirv-None-06339 
 shaderBufferFloat64Atomics, orshaderBufferFloat64AtomicAdd, orshaderSharedFloat64Atomics, orshaderSharedFloat64AtomicAdd, orshaderBufferFloat64AtomicMinMax, orshaderSharedFloat64AtomicMinMax, must be enabled for 64-bit floating-point atomic operations
- 
VUID-RuntimeSpirv-shaderFloat16VectorAtomics-09581 
 shaderFloat16VectorAtomics, must be enabled for 16-bit floating-point, 2- and 4-component vector atomic operations to be supported
- 
VUID-RuntimeSpirv-NonWritable-06340 
 If thefragmentStoresAndAtomicsfeature is not enabled, then all storage image, storage texel buffer, and storage buffer variables in the fragment stage must be decorated with theNonWritabledecoration
- 
VUID-RuntimeSpirv-NonWritable-06341 
 If thevertexPipelineStoresAndAtomicsfeature is not enabled, then all storage image, storage texel buffer, and storage buffer variables in the vertex, tessellation, and geometry stages must be decorated with theNonWritabledecoration
- 
VUID-RuntimeSpirv-None-06342 
 IfsubgroupQuadOperationsInAllStagesisVK_FALSE, then quad subgroup operations must not be used except for in fragment and compute stages
- 
VUID-RuntimeSpirv-None-06343 
 Group operations with subgroup scope must not be used if the shader stage is not insubgroupSupportedStages
- 
VUID-RuntimeSpirv-Offset-06344 
 The first element of theOffsetoperand ofInterpolateAtOffsetmust be greater than or equal to:
 fragwidth ×minInterpolationOffset
 where fragwidth is the width of the current fragment in pixels
- 
VUID-RuntimeSpirv-Offset-06345 
 The first element of theOffsetoperand ofInterpolateAtOffsetmust be less than or equal to
 fragwidth × (maxInterpolationOffset+ ULP ) - ULP
 where fragwidth is the width of the current fragment in pixels and ULP = 1 / 2subPixelInterpolationOffsetBits^
- 
VUID-RuntimeSpirv-Offset-06346 
 The second element of theOffsetoperand ofInterpolateAtOffsetmust be greater than or equal to
 fragheight ×minInterpolationOffset
 where fragheight is the height of the current fragment in pixels
- 
VUID-RuntimeSpirv-Offset-06347 
 The second element of theOffsetoperand ofInterpolateAtOffsetmust be less than or equal to
 fragheight × (maxInterpolationOffset+ ULP ) - ULP
 where fragheight is the height of the current fragment in pixels and ULP = 1 / 2subPixelInterpolationOffsetBits^
- 
VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06348 
 ForOpRayQueryInitializeKHRinstructions, all components of theRayOriginandRayDirectionoperands must be finite floating-point values
- 
VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06349 
 ForOpRayQueryInitializeKHRinstructions, theRayTminandRayTmaxoperands must be non-negative floating-point values
- 
VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06350 
 ForOpRayQueryInitializeKHRinstructions, theRayTminoperand must be less than or equal to theRayTmaxoperand
- 
VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06351 
 ForOpRayQueryInitializeKHRinstructions,RayOrigin,RayDirection,RayTmin, andRayTmaxoperands must not contain NaNs
- 
VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06352 
 ForOpRayQueryInitializeKHRinstructions,AccelerationStructuremust be an acceleration structure built as a top-level acceleration structure
- 
VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06889 
 ForOpRayQueryInitializeKHRinstructions, theRayflagsoperand must not contain bothSkipTrianglesKHRandSkipAABBsKHR
- 
VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06890 
 ForOpRayQueryInitializeKHRinstructions, theRayflagsoperand must not contain more than one ofSkipTrianglesKHR,CullBackFacingTrianglesKHR, andCullFrontFacingTrianglesKHR
- 
VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06891 
 ForOpRayQueryInitializeKHRinstructions, theRayflagsoperand must not contain more than one ofOpaqueKHR,NoOpaqueKHR,CullOpaqueKHR, andCullNoOpaqueKHR
- 
VUID-RuntimeSpirv-OpRayQueryGenerateIntersectionKHR-06353 
 ForOpRayQueryGenerateIntersectionKHRinstructions,HitTmust satisfy the conditionRayTmin≤HitT≤RayTmax, whereRayTminis equal to the value returned byOpRayQueryGetRayTMinKHRwith the same ray query object, andRayTmaxis equal to the value ofOpRayQueryGetIntersectionTKHRfor the current committed intersection with the same ray query object
- 
VUID-RuntimeSpirv-OpRayQueryGenerateIntersectionKHR-06354 
 ForOpRayQueryGenerateIntersectionKHRinstructions,AccelerationStructuremust not be built withVK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NVinflags
- 
VUID-RuntimeSpirv-flags-08761 
 ForOpRayQueryGetIntersectionTriangleVertexPositionsKHRinstructions,AccelerationStructuremust have been built withVK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHRinflags
- 
VUID-RuntimeSpirv-OpTraceRayKHR-06355 
 ForOpTraceRayKHRinstructions, all components of theRayOriginandRayDirectionoperands must be finite floating-point values
- 
VUID-RuntimeSpirv-OpTraceRayKHR-06356 
 ForOpTraceRayKHRinstructions, theRayTminandRayTmaxoperands must be non-negative floating-point values
- 
VUID-RuntimeSpirv-OpTraceRayKHR-06552 
 ForOpTraceRayKHRinstructions, theRayflagsoperand must not contain bothSkipTrianglesKHRandSkipAABBsKHR
- 
VUID-RuntimeSpirv-OpTraceRayKHR-06892 
 ForOpTraceRayKHRinstructions, theRayflagsoperand must not contain more than one ofSkipTrianglesKHR,CullBackFacingTrianglesKHR, andCullFrontFacingTrianglesKHR
- 
VUID-RuntimeSpirv-OpTraceRayKHR-06893 
 ForOpTraceRayKHRinstructions, theRayflagsoperand must not contain more than one ofOpaqueKHR,NoOpaqueKHR,CullOpaqueKHR, andCullNoOpaqueKHR
- 
VUID-RuntimeSpirv-OpTraceRayKHR-06553 
 ForOpTraceRayKHRinstructions, if theRayflagsoperand containsSkipTrianglesKHR, the pipeline must not have been created withVK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHRset
- 
VUID-RuntimeSpirv-OpTraceRayKHR-06554 
 ForOpTraceRayKHRinstructions, if theRayflagsoperand containsSkipAABBsKHR, the pipeline must not have been created withVK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHRset
- 
VUID-RuntimeSpirv-OpTraceRayKHR-06357 
 ForOpTraceRayKHRinstructions, theRayTminoperand must be less than or equal to theRayTmaxoperand
- 
VUID-RuntimeSpirv-OpTraceRayKHR-06358 
 ForOpTraceRayKHRinstructions,RayOrigin,RayDirection,RayTmin, andRayTmaxoperands must not contain NaNs
- 
VUID-RuntimeSpirv-OpTraceRayKHR-06359 
 ForOpTraceRayKHRinstructions,AccelerationStructuremust be an acceleration structure built as a top-level acceleration structure
- 
VUID-RuntimeSpirv-OpReportIntersectionKHR-06998 
 The value of the “Hit Kind” operand ofOpReportIntersectionKHRmust be in the range [0,127]
- 
VUID-RuntimeSpirv-OpTraceRayKHR-06360 
 ForOpTraceRayKHRinstructions, ifAccelerationStructurewas built withVK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NVinflags, the pipeline must have been created withVK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NVset
- 
VUID-RuntimeSpirv-OpTraceRayMotionNV-06361 
 ForOpTraceRayMotionNVinstructions, all components of theRayOriginandRayDirectionoperands must be finite floating-point values
- 
VUID-RuntimeSpirv-OpTraceRayMotionNV-06362 
 ForOpTraceRayMotionNVinstructions, theRayTminandRayTmaxoperands must be non-negative floating-point values
- 
VUID-RuntimeSpirv-OpTraceRayMotionNV-06363 
 ForOpTraceRayMotionNVinstructions, theRayTminoperand must be less than or equal to theRayTmaxoperand
- 
VUID-RuntimeSpirv-OpTraceRayMotionNV-06364 
 ForOpTraceRayMotionNVinstructions,RayOrigin,RayDirection,RayTmin, andRayTmaxoperands must not contain NaNs
- 
VUID-RuntimeSpirv-OpTraceRayMotionNV-06365 
 ForOpTraceRayMotionNVinstructions,AccelerationStructuremust be an acceleration structure built as a top-level acceleration structure withVK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NVinflags
- 
VUID-RuntimeSpirv-OpTraceRayMotionNV-06366 
 ForOpTraceRayMotionNVinstructions thetimeoperand must be between 0.0 and 1.0
- 
VUID-RuntimeSpirv-OpTraceRayMotionNV-06367 
 ForOpTraceRayMotionNVinstructions the pipeline must have been created withVK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NVset
- 
VUID-RuntimeSpirv-OpHitObjectTraceRayMotionNV-07704 
 ForOpHitObjectTraceRayMotionNVinstructions, ifAccelerationStructurewas built withVK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NVinflags, the pipeline must have been created withVK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NVset
- 
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07705 
 ForOpHitObjectTraceRayNVandOpHitObjectTraceRayMotionNVinstructions, all components of theRayOriginandRayDirectionoperands must be finite floating-point values
- 
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07706 
 ForOpHitObjectTraceRayNVandOpHitObjectTraceRayMotionNVinstructions, theRayTminandRayTmaxoperands must be non-negative floating-point values
- 
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07707 
 ForOpHitObjectTraceRayNVandOpHitObjectTraceRayMotionNVinstructions, theRayTminoperand must be less than or equal to theRayTmaxoperand
- 
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07708 
 ForOpHitObjectTraceRayNVandOpHitObjectTraceRayMotionNVinstructions,RayOrigin,RayDirection,RayTmin, andRayTmaxoperands must not contain NaNs
- 
VUID-RuntimeSpirv-OpHitObjectTraceRayMotionNV-07709 
 ForOpHitObjectTraceRayMotionNVinstructions,AccelerationStructuremust be an acceleration structure built as a top-level acceleration structure withVK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NVinflags
- 
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07710 
 ForOpHitObjectTraceRayNVandOpHitObjectTraceRayMotionNVinstructions thetimeoperand must be between 0.0 and 1.0
- 
VUID-RuntimeSpirv-OpHitObjectTraceRayMotionNV-07711 
 ForOpHitObjectTraceRayMotionNVinstructions the pipeline must have been created withVK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NVset
- 
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07712 
 ForOpHitObjectTraceRayNVandOpHitObjectTraceRayMotionNVinstructions, theRayflagsoperand must not contain bothSkipTrianglesKHRandSkipAABBsKHR
- 
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07713 
 ForOpHitObjectTraceRayNVandOpHitObjectTraceRayMotionNVinstructions, theRayflagsoperand must not contain more than one ofSkipTrianglesKHR,CullBackFacingTrianglesKHR, andCullFrontFacingTrianglesKHR
- 
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07714 
 ForOpHitObjectTraceRayNVandOpHitObjectTraceRayMotionNVinstructions, theRayflagsoperand must not contain more than one ofOpaqueKHR,NoOpaqueKHR,CullOpaqueKHR, andCullNoOpaqueKHR
- 
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07715 
 ForOpHitObjectTraceRayNVandOpHitObjectTraceRayMotionNVinstructions, if theRayflagsoperand containsSkipTrianglesKHR, the pipeline must not have been created withVK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHRset
- 
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07716 
 ForOpHitObjectTraceRayNVandOpHitObjectTraceRayMotionNVinstructions, if theRayflagsoperand containsSkipAABBsKHR, the pipeline must not have been created withVK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHRset
- 
VUID-RuntimeSpirv-x-06429 
 In compute shaders using theGLComputeExecutionModelthexsize inLocalSizeorLocalSizeIdmust be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupSize[0]
- 
VUID-RuntimeSpirv-y-06430 
 In compute shaders using theGLComputeExecutionModeltheysize inLocalSizeorLocalSizeIdmust be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupSize[1]
- 
VUID-RuntimeSpirv-z-06431 
 In compute shaders using theGLComputeExecutionModelthezsize inLocalSizeorLocalSizeIdmust be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupSize[2]
- 
VUID-RuntimeSpirv-x-06432 
 In compute shaders using theGLComputeExecutionModelthe product ofxsize,ysize, andzsize inLocalSizeorLocalSizeIdmust be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupInvocations
- 
VUID-RuntimeSpirv-LocalSizeId-06434 
 IfExecutionModeLocalSizeIdis used,maintenance4must be enabled
- 
VUID-RuntimeSpirv-maintenance4-06817 
 If themaintenance4feature is not enabled, anyOpTypeVectoroutput interface variables must not have a higherComponentCountthan a matchingOpTypeVectorinput interface variable
- 
VUID-RuntimeSpirv-OpEntryPoint-08743 
 Any user-defined variables shared between theOpEntryPointof two shader stages, and declared withInputas itsStorageClassfor the subsequent shader stage, must have allLocationslots andComponentwords declared in the preceding shader stage’sOpEntryPointwithOutputas theStorageClass
- 
VUID-RuntimeSpirv-OpEntryPoint-07754 
 Any user-defined variables between theOpEntryPointof two shader stages must have the same type and width for eachComponent
- 
VUID-RuntimeSpirv-OpVariable-08746 
 AnyOpVariable,Block-decoratedOpTypeStruct, orBlock-decoratedOpTypeStructmembers shared between theOpEntryPointof two shader stages must have matching decorations as defined in interface matching
- 
VUID-RuntimeSpirv-Workgroup-06530 
 The sum of size in bytes for variables and padding in theWorkgroupStorageClassin theGLComputeExecutionModelmust be less than or equal tomaxComputeSharedMemorySize
- 
VUID-RuntimeSpirv-shaderZeroInitializeWorkgroupMemory-06372 
 If theshaderZeroInitializeWorkgroupMemoryfeature is not enabled, anyOpVariablewithWorkgroupas itsStorageClassmust not have anInitializeroperand
- 
VUID-RuntimeSpirv-Offset-10213 
 If themaintenance8feature is not enabled, image operandOffsetmust only be used withOpImage*Gatherinstructions
- 
VUID-RuntimeSpirv-OpImage-06376 
 If anOpImage*Gatheroperation has an image operand ofOffset,ConstOffset, orConstOffsetsthe offset value must be greater than or equal tominTexelGatherOffset
- 
VUID-RuntimeSpirv-OpImage-06377 
 If anOpImage*Gatheroperation has an image operand ofOffset,ConstOffset, orConstOffsetsthe offset value must be less than or equal tomaxTexelGatherOffset
- 
VUID-RuntimeSpirv-OpImageSample-06435 
 If anOpImageSample*orOpImageFetch*operation has an image operand ofOffsetorConstOffsetthen the offset value must be greater than or equal tominTexelOffset
- 
VUID-RuntimeSpirv-OpImageSample-06436 
 If anOpImageSample*orOpImageFetch*operation has an image operand ofOffsetorConstOffsetthen the offset value must be less than or equal tomaxTexelOffset
- 
VUID-RuntimeSpirv-samples-08725 
 If anOpTypeImagehas anMSoperand 0, its bound image must have been created with VkImageCreateInfo::samplesasVK_SAMPLE_COUNT_1_BIT
- 
VUID-RuntimeSpirv-samples-08726 
 If anOpTypeImagehas anMSoperand 1, its bound image must not have been created with VkImageCreateInfo::samplesasVK_SAMPLE_COUNT_1_BIT
- 
VUID-RuntimeSpirv-SampleRateShading-06378 
 If the subpass description containsVK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM, then the SPIR-V fragment shader CapabilitySampleRateShadingmust not be enabled
- 
VUID-RuntimeSpirv-SubgroupUniformControlFlowKHR-06379 
 TheExecutionModeSubgroupUniformControlFlowKHRmust not be applied to an entry point unless theshaderSubgroupUniformControlFlowfeature is enabled, the corresponding shader stage bit is set insubgroupSupportedStages, and the entry point does not execute any invocation repack instructions
- 
VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06767 
 If theshaderEarlyAndLateFragmentTestsfeature is not enabled, theEarlyAndLateFragmentTestsEXTExecutionModemust not be used
- 
VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06768 
 If theshaderEarlyAndLateFragmentTestsfeature is not enabled, theStencilRefUnchangedFrontEXTExecutionModemust not be used
- 
VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06769 
 If theshaderEarlyAndLateFragmentTestsfeature is not enabled, theStencilRefUnchangedBackEXTExecutionModemust not be used
- 
VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06770 
 If theshaderEarlyAndLateFragmentTestsfeature is not enabled, theStencilRefGreaterFrontEXTExecutionModemust not be used
- 
VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06771 
 If theshaderEarlyAndLateFragmentTestsfeature is not enabled, theStencilRefGreaterBackEXTExecutionModemust not be used
- 
VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06772 
 If theshaderEarlyAndLateFragmentTestsfeature is not enabled, theStencilRefLessFrontEXTExecutionModemust not be used
- 
VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06773 
 If theshaderEarlyAndLateFragmentTestsfeature is not enabled, theStencilRefLessBackEXTExecutionModemust not be used
- 
VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06979 
 If anOpImageWeightedSampleQCOMoperation is used, then theTextureSampledImageandWeightImageparameters must both be dynamically uniform for the quad
- 
VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06980 
 If anOpImageWeightedSampleQCOMoperation is used, then theWeightImageparameter must be ofStorageClassUniformConstantand typeOpTypeImagewithDepth=0,Dim=2D,Arrayed=1,MS=0, andSampled=1
- 
VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06981 
 If anOpImageWeightedSampleQCOMoperation is used, then theWeightImageparameter must be decorated withWeightTextureQCOM
- 
VUID-RuntimeSpirv-OpImageBlockMatchSADQCOM-06982 
 If anOpImageBlockMatchSADQCOMorOpImageBlockMatchSSDQCOMoperation is used, then thetargetsampledimage,referencesampledimage, andBlockSizeparameters must both be dynamically uniform for the quad
- 
VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06983 
 If anOpImageBlockMatchSSDQCOMorOpImageBlockMatchSADQCOMoperation is used, thentargetsampledimageandreferencesampledimageparameters must be of storage classUniformConstantand typeOpTypeImagewithDepth=0,Dim=2D,Arrayed=0,MS=0, andSampled=1
- 
VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06984 
 If anOpImageBlockMatchSSDQCOMorOpImageBlockMatchSADQCOMoperation is used, then thetargetsampledimageandreferencesampledimageparameters must be decorated withBlockMatchTextureQCOM
- 
VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06985 
 If anOpImageBlockMatchSSDQCOMorOpImageBlockMatchSADQCOMoperation is used, thentargetsampledimageandreferencesampledimageparameters must have been created using an identical sampler object
- 
VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06986 
 If anOpImageBlockMatchSSDQCOMorOpImageBlockMatchSADQCOMoperation is used, thentargetsampledimageandreferencesampledimageparameters must have been created with a sampler object withunnormalizedCoordinatesequal toVK_TRUE
- 
VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06987 
 If anOpImageBlockMatchSSDQCOMorOpImageBlockMatchSADQCOMoperation is used, thentargetsampledimageandreferencesampledimageparameters must have been created with a sampler object withunnormalizedCoordinatesequal toVK_TRUE
- 
VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06988 
 If anOpImageBlockMatchSSDQCOMorOpImageBlockMatchSADQCOMoperation is used, thenBlockSizeless than or equal tomaxBlockMatchRegion
- 
VUID-RuntimeSpirv-OpImageBoxFilterQCOM-06989 
 If anOpImageBoxFilterQCOMoperation is used, thenBoxSize.ymust be equal to or greater than 1.0 and less than or equal tomaxBoxFilterBlockSize.height
- 
VUID-RuntimeSpirv-OpImageBoxFilterQCOM-06990 
 If anOpImageBoxFilterQCOMoperation is used, thenSampledTextureImageandBoxSizeparameters must be dynamically uniform
- 
VUID-RuntimeSpirv-OpEntryPoint-08727 
 EachOpEntryPointmust not have more than one variable decorated withInputAttachmentIndexper image aspect of the attachment image bound to it, either explicitly or implicitly as described by input attachment interface
- 
VUID-RuntimeSpirv-minSampleShading-08731 
 If sample shading is enabled andminSampleShadingis 1.0, thesampleoperand of anyOpColorAttachmentReadEXT,OpDepthAttachmentReadEXT, orOpStencilAttachmentReadEXToperation must evaluate to the value of the coverage index for any given fragment invocation
- 
VUID-RuntimeSpirv-minSampleShading-08732 
 If sample shading is enabled and any of theOpColorAttachmentReadEXT,OpDepthAttachmentReadEXT, orOpStencilAttachmentReadEXToperations are used, thenminSampleShadingmust be 1.0
- 
VUID-RuntimeSpirv-MeshEXT-09218 
 In mesh shaders using theMeshEXTorMeshNVExecutionModeland theOutputPointsExecutionMode, if themaintenance5feature is not enabled, and if the number of output points is greater than 0, aPointSizedecorated variable must be written to for each output point
- 
VUID-RuntimeSpirv-maintenance5-09190 
 If themaintenance5feature is enabled and aPointSizedecorated variable is written to, all execution paths must write to aPointSizedecorated variable
- 
VUID-RuntimeSpirv-ShaderEnqueueAMDX-09191 
 TheShaderEnqueueAMDXcapability must only be used in shaders with theGLComputeorMeshEXTexecution model
- 
VUID-RuntimeSpirv-NodePayloadAMDX-09192 
 Variables in theNodePayloadAMDXstorage class must only be declared in theGLComputeorMeshEXTexecution model
- 
VUID-RuntimeSpirv-maxExecutionGraphShaderPayloadSize-09193 
 Variables declared in theNodePayloadAMDXstorage class must not be larger than themaxExecutionGraphShaderPayloadSizelimit
- 
VUID-RuntimeSpirv-maxExecutionGraphShaderPayloadSize-09194 
 Variables declared in theNodeOutputPayloadAMDXstorage class must not be larger than themaxExecutionGraphShaderPayloadSizelimit
- 
VUID-RuntimeSpirv-maxExecutionGraphShaderPayloadSize-09195 
 For a given entry point, the sum of the size of any variable in theNodePayloadAMDXstorage class, and the combined size of all statically initialized variables in theNodeOutputPayloadAMDXstorage class must not be greater thanmaxExecutionGraphShaderPayloadSize
- 
VUID-RuntimeSpirv-maxExecutionGraphShaderPayloadCount-09196 
 Shaders must not statically initialize more thanmaxExecutionGraphShaderPayloadCountvariables in theNodeOutputPayloadAMDXstorage class
- 
VUID-RuntimeSpirv-maxExecutionGraphShaderOutputNodes-09197 
 Shaders must not include more thanmaxExecutionGraphShaderOutputNodesinstances ofOpInitializeNodePayloadsAMDX
- 
VUID-RuntimeSpirv-OpImageBlockMatchWindow-09219 
 If aOpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMoperation is used, then thetargetsampledimage,referencesampledimage, andBlockSizeparameters must both be dynamically uniform for the quad
- 
VUID-RuntimeSpirv-OpImageBlockMatchWindow-09220 
 If aOpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMoperation is used, thentargetsampledimageandreferencesampledimageparameters must be of storage classUniformConstantand typeOpTypeImagewithDepth=0,Dim=2D,Arrayed=0,MS=0, andSampled=1
- 
VUID-RuntimeSpirv-OpImageBlockMatchWindow-09221 
 If aOpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMoperation is used, then thetargetsampledimageandreferencesampledimageparameters must be decorated withBlockMatchTextureQCOM
- 
VUID-RuntimeSpirv-OpImageBlockMatchWindow-09222 
 If aOpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMoperation is used, thentargetsampledimageandreferencesampledimageparameters must have been created using an identical sampler object
- 
VUID-RuntimeSpirv-OpImageBlockMatchWindow-09223 
 If aOpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMoperation is used, thentargetsampledimageandreferencesampledimageparameters must have been created with a sampler object withunnormalizedCoordinatesequal toVK_TRUE
- 
VUID-RuntimeSpirv-OpImageBlockMatchWindow-09224 
 If aOpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMoperation is used, thentargetsampledimageandreferencesampledimageparameters must have been created with sampler object withunnormalizedCoordinatesequal toVK_TRUE
- 
VUID-RuntimeSpirv-maxBlockMatchRegion-09225 
 If aOpImageBlockMatchWindow*QCOMorOpImageBlockMatchGather*QCOMoperation is used, thenBlockSizeless than or equal tomaxBlockMatchRegion
- 
VUID-RuntimeSpirv-pNext-09226 
 If aOpImageBlockMatchWindow*QCOMoperation is used, thentargetsampledimagemust have been created using asampler object that included VkSamplerBlockMatchWindowCreateInfoQCOM in thepNextchain
- 
VUID-RuntimeSpirv-MaximallyReconvergesKHR-09565 
 The execution modeMaximallyReconvergesKHRmust not be applied to an entry point unless the entry point does not execute any invocation repack instructions
- 
VUID-RuntimeSpirv-shaderSubgroupRotateClustered-09566 
 IfshaderSubgroupRotateClusteredisVK_FALSE, then theClusterSizeoperand toOpGroupNonUniformRotateKHRmust not be used
- 
VUID-RuntimeSpirv-protectedNoFault-09645 
 IfprotectedNoFaultis not supported, theStorageClassof thePhysicalStorageBuffermust not be used if the buffer being accessed is protected
- 
VUID-RuntimeSpirv-meshAndTaskShaderDerivatives-10153 
 IfmeshAndTaskShaderDerivativesisVK_FALSE, theDerivativeGroupLinearKHRandDerivativeGroupQuadsKHRexecution modes must not be used in theMeshEXT,MeshNV,TaskEXT, orTaskNVExecutionModel
- 
VUID-RuntimeSpirv-TileShadingQCOM-10698 
 TileShadingQCOMcapability must not be declared in the compute stage unless the tileShading feature is enabled
- 
VUID-RuntimeSpirv-TileShadingQCOM-10699 
 TheTileShadingQCOMcapability must not be declared in the fragment stage unless the tileShadingFragmentStage feature is enabled
- 
VUID-RuntimeSpirv-TileShadingQCOM-10700 
 A shader that enables SPIR-V capabilityTileShadingQCOMmust not be invoked outside a tile shading render pass
- 
VUID-RuntimeSpirv-TileShadingQCOM-10701 
 A compute shader that enables SPIR-V capabilityTileShadingQCOMmust only be invoked inside those portions of a command buffer where per-tile execution model is enabled
- 
VUID-RuntimeSpirv-x-10702 
 In compute shaders that enables SPIR-V capabilityTileShadingQCOM, thexsize inTileShadingRateQCOMmust be less than or equal to VkPhysicalDeviceTileShadingPropertiesQCOM::maxTileShadingRate::x
- 
VUID-RuntimeSpirv-y-10703 
 In compute shaders that enables SPIR-V capabilityTileShadingQCOM, theysize inTileShadingRateQCOMmust be less than or equal to VkPhysicalDeviceTileShadingPropertiesQCOM::maxTileShadingRate::y
- 
VUID-RuntimeSpirv-z-10704 
 In compute shaders that enables SPIR-V capabilityTileShadingQCOM, thezsize inTileShadingRateQCOMmust be less than or equal to VkTilePropertiesQCOM::tileSize::z
- 
VUID-RuntimeSpirv-tileSize-10705 
 In compute shaders that enables SPIR-V capabilityTileShadingQCOM, VkTilePropertiesQCOM::tileSize::z%TileShadingRateQCOM::zmust equal0
- 
VUID-RuntimeSpirv-OpImage-10706 
 AnOpImagewithStorageClassTileAttachmentQCOMmust not be consumed byOpImageTexelPointerunless the tileShadingAtomicOps feature is enabled
- 
VUID-RuntimeSpirv-OpTypeImage-10707 
 AnOpTypeImagewithStorageClassTileAttachmentQCOMmust not be backed by a view equivalent to the color attachment of the current subpass instance unless the tileShadingColorAttachments feature is enabled
- 
VUID-RuntimeSpirv-OpTypeImage-10708 
 AnOpTypeImagewithStorageClassTileAttachmentQCOMmust not be backed by a view equivalent to the depth aspect of the depth/stencil attachment of the current subpass instance unless the tileShadingDepthAttachments
- 
VUID-RuntimeSpirv-OpTypeImage-10709 
 AnOpTypeImagewithStorageClassTileAttachmentQCOMmust not be backed by a view equivalent to the stencil aspect of the depth/stencil attachment of the current subpass instance unless the tileShadingStencilAttachments feature is enabled
- 
VUID-RuntimeSpirv-OpTypeImage-10710 
 AnOpTypeImagewithStorageClassTileAttachmentQCOMmust not be backed by a view equivalent to the input attachment of the current subpass instance unless the tileShadingInputAttachments feature is enabled
- 
VUID-RuntimeSpirv-OpTypeSampledImage-10711 
 AnOpTypeSampledImagewithStorageClassTileAttachmentQCOMmust not be backed by a view equivalent to an attachment of the current subpass instance unless the tileShadingSampledAttachments feature is enabled
- 
VUID-RuntimeSpirv-tileShadingImageProcessing-10712 
 If anOpTypeSampledImagewithStorageClassTileAttachmentQCOMis consumed by any argument of the following operations,tileShadingImageProcessingmust be enabled:- 
OpImageSampleWeightedQCOM
- 
OpImageBoxFilterQCOM
- 
OpImageBlockMatch*QCOM
 
- 
- 
VUID-RuntimeSpirv-Coordinate-10713 
 TheCoordinateoperand of anyOpImageRead,OpImageSparseRead,OpImageWrite, orOpImageTexelPointerinstruction that consumes anOpTypeImagewith an imageStorageClassTileAttachmentQCOMmust not result in any texels accessed outside the boundaries of the current tile, computed as described in Tile Attachments
- 
VUID-RuntimeSpirv-Coordinate-10714 
 TheCoordinateoperand(s) of any of the following instructions that consumes anOpTypeSampledImagewith an image ofStorageClassTileAttachmentQCOMmust not result in any texels accessed outside boundaries of the current tile, computed as described in Tile Attachments:- 
OpImageSample*
- 
OpImageSparseSample*
- 
OpImageFetch
- 
OpImageSparseFetch
- 
OpImage*Gather
- 
OpImageSparse*Gather
- 
OpImageSampleWeightedQCOM
- 
OpImageBoxFilterQCOM
- 
OpImageBlockMatch*QCOM
 
- 
- 
VUID-RuntimeSpirv-None-10715 
 If a VkSampler object that enables sampler Y′CBCR conversion is accessed in a shader, both the sampler and image accessed must be determined by constant integral expressions
- 
VUID-RuntimeSpirv-None-10716 
 If a VkSampler object that enables sampler Y′CBCR conversion is statically used, it must only be used withOpImageSample*orOpImageSparseSample*instructions
- 
VUID-RuntimeSpirv-OpImage-10717 
 AnOpImageinstruction must not be used on a VkSampler object that enables sampler Y′CBCR conversion
- 
VUID-RuntimeSpirv-ConstOffset-10718 
 If a VkSampler object that enables sampler Y′CBCR conversion is statically used, it must not use theConstOffsetorOffsetoperands
- 
VUID-RuntimeSpirv-shaderTensorSupportedStages-09901 
 OpTypeTensorARM,OpTensorReadARM,OpTensorWriteARM, orOpTensorQuerySizeARMmust not be used in shader stages not inshaderTensorSupportedStages
- 
VUID-RuntimeSpirv-OpTypeTensorARM-09902 
 OpTypeTensorARMwith aShapemust not be used in shader stages
- 
VUID-RuntimeSpirv-OpTypeTensorARM-09907 
 OpTypeTensorARMwithout aRankmust not be used in shader stages
- 
VUID-RuntimeSpirv-maxTensorShaderAccessArrayLength-09903 
 The length of an array returned byOpTensorReadARMor passed as theObjectoperand toOpTensorWriteARMmust be less than or equal tomaxTensorShaderAccessArrayLength
- 
VUID-RuntimeSpirv-maxTensorShaderAccessSize-09904 
 The total size of the data (number of tensor elements × size of an element) read or written by oneOpTensorReadARM, orOpTensorWriteARMinstruction, respectively, must be less than or equal tomaxTensorShaderAccessSize
- 
VUID-RuntimeSpirv-None-10824 
 If themaintenance9feature is not enabled, theBaseoperand of anyOpBitCount,OpBitReverse,OpBitFieldInsert,OpBitFieldSExtract, orOpBitFieldUExtractinstruction must be a 32-bit integer scalar or a vector of 32-bit integers
- 
VUID-RuntimeSpirv-GraphARM-09922 
 TheGraphARMcapability must not be declared in modules used to create a shader stage
- 
VUID-RuntimeSpirv-pNext-09919 
 For each data graph pipeline created with a VkDataGraphPipelineShaderModuleCreateInfoARM structure included in thepNextchain of VkDataGraphPipelineCreateInfoARM, theOpGraphthat is used by theOpGraphEntryPointARMthe pipeline is being created for must have anOpTypeGraphARMthat only usesOpTypeTensorARMwithShapepresent
- 
VUID-RuntimeSpirv-pNext-09920 
 For each data graph pipeline created with a VkDataGraphPipelineShaderModuleCreateInfoARM structure included in thepNextchain of VkDataGraphPipelineCreateInfoARM, all theOpGraphConstantARMwithOpTypeTensorARMtype used by theOpGraphthat is used by theOpGraphEntryPointARMthe pipeline is being created for must have anOpTypeTensorARMwithShapepresent
- 
VUID-RuntimeSpirv-pNext-09921 
 For each data graph pipeline created with a VkDataGraphPipelineShaderModuleCreateInfoARM structure included in thepNextchain of VkDataGraphPipelineCreateInfoARM, one and only one VkDataGraphPipelineConstantARM structure that satisfies all the following constraints must be present in VkDataGraphPipelineShaderModuleCreateInfoARM::pConstantsfor eachOpGraphConstantARMused by theOpGraphthat has aOpTypeTensorARMtype and is used by theOpGraphEntryPointARMthe pipeline is being created for:- 
its idmember must match theGraphConstantIDof theOpGraphConstantARM
- 
its pNextchain must include a VkTensorDescriptionARM structure- 
whose dimensionCountis equal to theRankof theOpTypeTensorARMof theOpGraphConstantARM
- 
whose pDimensionsarray elements are individually and in order equal to the elements of the array that defines theShapeof theOpTypeTensorARMof theOpGraphConstantARM
- 
whose formatis compatible with theElementTypeof theOpTypeTensorARMof theOpGraphConstantARM
 
- 
 
- 
- 
VUID-RuntimeSpirv-pNext-09923 
 For each data graph pipeline created with a VkDataGraphPipelineShaderModuleCreateInfoARM structure included in thepNextchain of VkDataGraphPipelineCreateInfoARM, one and only one VkDataGraphPipelineResourceInfoARM structure that satisfies all the following constraints must be present in VkDataGraphPipelineCreateInfoARM::pResourceInfosfor eachOpVariablewith aOpTypeTensorARMtype that is part of theInterfaceof theOpGraphEntryPointARMthe pipeline is being created for:- 
its descriptorSetmember must match theDescriptorSetdecoration applied to theOpVariable
- 
its bindingmember must match theBindingdecoration applied to theOpVariable
- 
its arrayElementmember must be zero ifOpVariableis not aOpTypeArrayor ifOpVariableis aOpTypeArrayofOpTypeTensorARMwithShapepresent
- 
its pNextchain must include a VkTensorDescriptionARM structure- 
whose dimensionCountis equal to theRankof theOpTypeTensorARMof theOpVariableor its elements
- 
whose pDimensionsarray elements are individually and in order equal to the elements of the array that defines theShapeof theOpTypeTensorARMof theOpVariableor its elements
- 
whose formatis compatible with theElementTypeof theOpTypeTensorARMof theOpVariable
 
- 
 
- 
- 
VUID-RuntimeSpirv-None-10834 
 Buffer indexing calculations must not wrap 32 bits
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.