RuntimeSpirv(3)
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 thevulkanMemoryModel
feature is enabled and thevulkanMemoryModelDeviceScope
feature is not enabled,Device
memory scope must not be used -
VUID-RuntimeSpirv-vulkanMemoryModel-06266
If thevulkanMemoryModel
feature is not enabled,QueueFamily
memory scope must not be used -
VUID-RuntimeSpirv-shaderSubgroupClock-06267
If theshaderSubgroupClock
feature is not enabled, theSubgroup
scope must not be used forOpReadClockKHR
-
VUID-RuntimeSpirv-shaderDeviceClock-06268
If theshaderDeviceClock
feature is not enabled, theDevice
scope must not be used forOpReadClockKHR
-
VUID-RuntimeSpirv-shaderRelaxedExtendedInstruction-10773
If theshaderRelaxedExtendedInstruction
feature is not enabled, theOpExtInstWithForwardRefsKHR
must not be used -
VUID-RuntimeSpirv-None-09558
If thedynamicRenderingLocalRead
feature is not enabled, any variable created with a “Type” ofOpTypeImage
that has a “Dim” operand ofSubpassData
must be decorated withInputAttachmentIndex
-
VUID-RuntimeSpirv-OpTypeImage-09644
Any variable declared as anOpTypeArray
where theElement
Type
is anOpTypeImage
with a “Dim” operand ofSubpassData
must be decorated withInputAttachmentIndex
-
VUID-RuntimeSpirv-apiVersion-07954
If VkPhysicalDeviceProperties::apiVersion
is less than Vulkan 1.3, the VK_KHR_format_feature_flags2 extension is not supported, and theshaderStorageImageWriteWithoutFormat
feature is not enabled, any variable created with a “Type” ofOpTypeImage
that has a “Sampled” operand of 2 and an “Image Format” operand ofUnknown
must be decorated withNonWritable
-
VUID-RuntimeSpirv-apiVersion-07955
If VkPhysicalDeviceProperties::apiVersion
is less than Vulkan 1.3, the VK_KHR_format_feature_flags2 extension is not supported, and theshaderStorageImageReadWithoutFormat
feature is not enabled, any variable created with a “Type” ofOpTypeImage
that has a “Sampled” operand of 2 and an “Image Format” operand ofUnknown
must be decorated withNonReadable
-
VUID-RuntimeSpirv-OpImageWrite-07112
OpImageWrite
to anyImage
whoseImage
Format
is notUnknown
must have theTexel
operand 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 ofLocation
and the number of locations the variable it decorates consumes must be less than or equal to the value for the matchingExecution
Model
defined in Shader Input and Output Locations -
VUID-RuntimeSpirv-Location-06428
The maximum number of storage buffers, storage images, and outputLocation
decorated color attachments written to in theFragment
Execution
Model
must be less than or equal tomaxFragmentCombinedOutputResources
-
VUID-RuntimeSpirv-UniformBufferArrayNonUniformIndexing-10134
If theUniformBufferArrayNonUniformIndexing
capability 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 theSampledImageArrayNonUniformIndexing
capability 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 theStorageBufferArrayNonUniformIndexing
capability 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 theStorageImageArrayNonUniformIndexing
capability 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 theInputAttachmentArrayNonUniformIndexing
capability 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 theUniformTexelBufferArrayNonUniformIndexing
capability 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 theStorageTexelBufferArrayNonUniformIndexing
capability 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, theUniformBufferArrayNonUniformIndexing
capability 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, theSampledImageArrayNonUniformIndexing
capability 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, theStorageBufferArrayNonUniformIndexing
capability 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, theStorageImageArrayNonUniformIndexing
capability 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, theInputAttachmentArrayNonUniformIndexing
capability 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, theUniformTexelBufferArrayNonUniformIndexing
capability 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, theStorageTexelBufferArrayNonUniformIndexing
capability 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
shaderSubgroupExtendedTypes
must 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
IfsubgroupBroadcastDynamicId
isVK_TRUE
, and the shader module version is 1.5 or higher, the “Index” forOpGroupNonUniformQuadBroadcast
must be dynamically uniform within the derivative group. Otherwise, “Index” must be a constant -
VUID-RuntimeSpirv-subgroupBroadcastDynamicId-06277
IfsubgroupBroadcastDynamicId
isVK_TRUE
, and the shader module version is 1.5 or higher, the “Id” forOpGroupNonUniformBroadcast
must be dynamically uniform within the subgroup. Otherwise, “Id” must be a constant -
VUID-RuntimeSpirv-None-06278
shaderBufferInt64Atomics
must be enabled for 64-bit integer atomic operations to be supported on a Pointer with aStorage
Class
ofStorageBuffer
orUniform
-
VUID-RuntimeSpirv-None-06279
shaderSharedInt64Atomics
must be enabled for 64-bit integer atomic operations to be supported on a Pointer with aStorage
Class
ofWorkgroup
-
VUID-RuntimeSpirv-None-06284
shaderBufferFloat32Atomics
, orshaderBufferFloat32AtomicAdd
, orshaderBufferFloat64Atomics
, orshaderBufferFloat64AtomicAdd
, orshaderBufferFloat16Atomics
, orshaderBufferFloat16AtomicAdd
, orshaderBufferFloat16AtomicMinMax
, orshaderBufferFloat32AtomicMinMax
, orshaderBufferFloat64AtomicMinMax
, orshaderFloat16VectorAtomics
must be enabled for floating-point atomic operations to be supported on a Pointer with aStorage
Class
ofStorageBuffer
-
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 aStorage
Class
ofWorkgroup
-
VUID-RuntimeSpirv-None-06286
shaderImageFloat32Atomics
, orshaderImageFloat32AtomicAdd
, orshaderImageFloat32AtomicMinMax
, must be enabled for 32-bit floating-point atomic operations to be supported on a Pointer with aStorage
Class
ofImage
-
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
shaderImageInt64Atomics
must be enabled for 64-bit integer atomic operations to be supported on a Pointer with aStorage
Class
ofImage
-
VUID-RuntimeSpirv-denormBehaviorIndependence-06289
IfdenormBehaviorIndependence
isVK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY
, then the entry point must use the same denormalsExecution
Mode
for both 16-bit and 64-bit floating-point types -
VUID-RuntimeSpirv-denormBehaviorIndependence-06290
IfdenormBehaviorIndependence
isVK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE
, then the entry point must use the same denormalsExecution
Mode
for all floating-point types -
VUID-RuntimeSpirv-roundingModeIndependence-06291
IfroundingModeIndependence
isVK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY
, then the entry point must use the same roundingExecution
Mode
for both 16-bit and 64-bit floating-point types -
VUID-RuntimeSpirv-roundingModeIndependence-06292
IfroundingModeIndependence
isVK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE
, then the entry point must use the same roundingExecution
Mode
for all floating-point types -
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat16-06293
IfshaderSignedZeroInfNanPreserveFloat16
isVK_FALSE
, thenSignedZeroInfNanPreserve
for 16-bit floating-point type must not be used -
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat32-06294
IfshaderSignedZeroInfNanPreserveFloat32
isVK_FALSE
, thenSignedZeroInfNanPreserve
for 32-bit floating-point type must not be used -
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat64-06295
IfshaderSignedZeroInfNanPreserveFloat64
isVK_FALSE
, thenSignedZeroInfNanPreserve
for 64-bit floating-point type must not be used -
VUID-RuntimeSpirv-shaderDenormPreserveFloat16-06296
IfshaderDenormPreserveFloat16
isVK_FALSE
, thenDenormPreserve
for 16-bit floating-point type must not be used -
VUID-RuntimeSpirv-shaderDenormPreserveFloat32-06297
IfshaderDenormPreserveFloat32
isVK_FALSE
, thenDenormPreserve
for 32-bit floating-point type must not be used -
VUID-RuntimeSpirv-shaderDenormPreserveFloat64-06298
IfshaderDenormPreserveFloat64
isVK_FALSE
, thenDenormPreserve
for 64-bit floating-point type must not be used -
VUID-RuntimeSpirv-shaderDenormFlushToZeroFloat16-06299
IfshaderDenormFlushToZeroFloat16
isVK_FALSE
, thenDenormFlushToZero
for 16-bit floating-point type must not be used -
VUID-RuntimeSpirv-shaderDenormFlushToZeroFloat32-06300
IfshaderDenormFlushToZeroFloat32
isVK_FALSE
, thenDenormFlushToZero
for 32-bit floating-point type must not be used -
VUID-RuntimeSpirv-shaderDenormFlushToZeroFloat64-06301
IfshaderDenormFlushToZeroFloat64
isVK_FALSE
, thenDenormFlushToZero
for 64-bit floating-point type must not be used -
VUID-RuntimeSpirv-shaderRoundingModeRTEFloat16-06302
IfshaderRoundingModeRTEFloat16
isVK_FALSE
, thenRoundingModeRTE
for 16-bit floating-point type must not be used -
VUID-RuntimeSpirv-shaderRoundingModeRTEFloat32-06303
IfshaderRoundingModeRTEFloat32
isVK_FALSE
, thenRoundingModeRTE
for 32-bit floating-point type must not be used -
VUID-RuntimeSpirv-shaderRoundingModeRTEFloat64-06304
IfshaderRoundingModeRTEFloat64
isVK_FALSE
, thenRoundingModeRTE
for 64-bit floating-point type must not be used -
VUID-RuntimeSpirv-shaderRoundingModeRTZFloat16-06305
IfshaderRoundingModeRTZFloat16
isVK_FALSE
, thenRoundingModeRTZ
for 16-bit floating-point type must not be used -
VUID-RuntimeSpirv-shaderRoundingModeRTZFloat32-06306
IfshaderRoundingModeRTZFloat32
isVK_FALSE
, thenRoundingModeRTZ
for 32-bit floating-point type must not be used -
VUID-RuntimeSpirv-shaderRoundingModeRTZFloat64-06307
IfshaderRoundingModeRTZFloat64
isVK_FALSE
, thenRoundingModeRTZ
for 64-bit floating-point type must not be used -
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat16-09559
IfshaderSignedZeroInfNanPreserveFloat16
isVK_FALSE
then anyFPFastMathDefault
execution mode with a type of 16-bit float must include theNSZ
,NotInf
, andNotNaN
flags -
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat16-09560
IfshaderSignedZeroInfNanPreserveFloat16
isVK_FALSE
then anyFPFastMathMode
decoration on an instruction with result type or any operand type that includes a 16-bit float must include theNSZ
,NotInf
, andNotNaN
flags -
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat32-09561
IfshaderSignedZeroInfNanPreserveFloat32
isVK_FALSE
then anyFPFastMathDefault
execution mode with a type of 32-bit float must include theNSZ
,NotInf
, andNotNaN
flags -
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat32-09562
IfshaderSignedZeroInfNanPreserveFloat32
isVK_FALSE
then anyFPFastMathMode
decoration on an instruction with result type or any operand type that includes a 32-bit float must include theNSZ
,NotInf
, andNotNaN
flags -
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat64-09563
IfshaderSignedZeroInfNanPreserveFloat64
isVK_FALSE
then anyFPFastMathDefault
execution mode with a type of 64-bit float must include theNSZ
,NotInf
, andNotNaN
flags -
VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat64-09564
IfshaderSignedZeroInfNanPreserveFloat64
isVK_FALSE
then anyFPFastMathMode
decoration on an instruction with result type or any operand type that includes a 64-bit float must include theNSZ
,NotInf
, andNotNaN
flags -
VUID-RuntimeSpirv-Offset-06308
TheOffset
plus size of the type of each variable, in the output interface of the entry point being compiled, decorated withXfbBuffer
must not be greater than VkPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackBufferDataSize
-
VUID-RuntimeSpirv-XfbBuffer-06309
For any givenXfbBuffer
value, define the buffer data size to be smallest number of bytes such that, for all outputs decorated with the sameXfbBuffer
value, the size of the output interface variable plus theOffset
is 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 toOpEmitStreamVertex
andOpEndStreamPrimitive
must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackStreams
-
VUID-RuntimeSpirv-transformFeedbackStreamsLinesTriangles-06311
If the geometry shader emits to more than one vertex stream and VkPhysicalDeviceTransformFeedbackPropertiesEXT::transformFeedbackStreamsLinesTriangles
isVK_FALSE
, thenExecution
Mode
must beOutputPoints
-
VUID-RuntimeSpirv-Stream-06312
The stream number value toStream
must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackStreams
-
VUID-RuntimeSpirv-XfbStride-06313
The XFB Stride value toXfbStride
must be less than or equal to VkPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackBufferDataStride
-
VUID-RuntimeSpirv-PhysicalStorageBuffer64-06314
If thePhysicalStorageBuffer64
addressing 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 thePhysicalStorageBuffer64
addressing model is enabled the pointer value of a memory access instruction must be at least as aligned as specified by theAligned
memory 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
A
must haveRows
match VkCooperativeMatrixPropertiesNV::MSize
,Columns
match VkCooperativeMatrixPropertiesNV::KSize
, andComponentType
match VkCooperativeMatrixPropertiesNV::AType
. -
The type of
B
must haveRows
match VkCooperativeMatrixPropertiesNV::KSize
,Columns
match VkCooperativeMatrixPropertiesNV::NSize
, andComponentType
match VkCooperativeMatrixPropertiesNV::BType
. -
The type of
C
must haveRows
match VkCooperativeMatrixPropertiesNV::MSize
,Columns
match VkCooperativeMatrixPropertiesNV::NSize
, andComponentType
match VkCooperativeMatrixPropertiesNV::CType
. -
The type of
Result
must haveRows
match VkCooperativeMatrixPropertiesNV::MSize
,Columns
match VkCooperativeMatrixPropertiesNV::NSize
, andComponentType
match VkCooperativeMatrixPropertiesNV::DType
. -
The scope of all cooperative matrix operands must be VkScopeNV::
VK_SCOPE_SUBGROUP_NV
. -
If
ComponentType
ofA
,B
,C
, orResult
is a signed integral type, theSignedness
operand of theOpTypeInt
must be 1. -
If
ComponentType
ofA
,B
,C
, orResult
is an unsigned integral type, theSignedness
operand of theOpTypeInt
must be 0
-
-
VUID-RuntimeSpirv-OpTypeCooperativeMatrixNV-06322
OpTypeCooperativeMatrixNV
andOpCooperativeMatrix*
instructions must not be used in shader stages not included in VkPhysicalDeviceCooperativeMatrixPropertiesNV::cooperativeMatrixSupportedStages
-
VUID-RuntimeSpirv-OpTypeCooperativeMatrixKHR-10163
ForOpTypeCooperativeMatrixKHR
, if thecooperativeMatrixFlexibleDimensions
feature 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
Use
ofMatrixA
, the number of rows must match VkCooperativeMatrixPropertiesKHR::MSize
and the number of columns must match VkCooperativeMatrixPropertiesKHR::KSize
and the type must match VkCooperativeMatrixPropertiesKHR::AType
-
for
Use
ofMatrixB
, the number of rows must match VkCooperativeMatrixPropertiesKHR::KSize
and the number of columns must match VkCooperativeMatrixPropertiesKHR::NSize
and the type must match VkCooperativeMatrixPropertiesKHR::BType
-
for
Use
ofMatrixAccumulator
, the number of rows must match VkCooperativeMatrixPropertiesKHR::MSize
and the number of columns must match VkCooperativeMatrixPropertiesKHR::NSize
and the type must match VkCooperativeMatrixPropertiesKHR::CType
or VkCooperativeMatrixPropertiesKHR::ResultType
-
-
VUID-RuntimeSpirv-OpCooperativeMatrixMulAddKHR-10060
ForOpCooperativeMatrixMulAddKHR
, if thecooperativeMatrixFlexibleDimensions
feature is not enabled, the operands must match a supported VkCooperativeMatrixPropertiesKHR, such that:-
The type of
A
must haveRows
match VkCooperativeMatrixPropertiesKHR::MSize
,Columns
match VkCooperativeMatrixPropertiesKHR::KSize
,Use
beMatrixAKHR
, andComponentType
match VkCooperativeMatrixPropertiesKHR::AType
. -
The type of
B
must haveRows
match VkCooperativeMatrixPropertiesKHR::KSize
,Columns
match VkCooperativeMatrixPropertiesKHR::NSize
,Use
beMatrixBKHR
, andComponentType
match VkCooperativeMatrixPropertiesKHR::BType
. -
The type of
C
must haveRows
match VkCooperativeMatrixPropertiesKHR::MSize
,Columns
match VkCooperativeMatrixPropertiesKHR::NSize
,Use
beMatrixAccumulatorKHR
, andComponentType
match VkCooperativeMatrixPropertiesKHR::CType
. -
The type of
Result
must haveRows
match VkCooperativeMatrixPropertiesKHR::MSize
,Columns
match VkCooperativeMatrixPropertiesKHR::NSize
,Use
beMatrixAccumulatorKHR
, andComponentType
match VkCooperativeMatrixPropertiesKHR::ResultType
. -
If and only if VkCooperativeMatrixPropertiesKHR::
AType
is a signed integer type,MatrixASignedComponents
must be used. -
If and only if VkCooperativeMatrixPropertiesKHR::
BType
is a signed integer type,MatrixBSignedComponents
must be used. -
If and only if VkCooperativeMatrixPropertiesKHR::
CType
is a signed integer type,MatrixCSignedComponents
must be used. -
If and only if VkCooperativeMatrixPropertiesKHR::
ResultType
is a signed integer type,MatrixResultSignedComponents
must be used. -
If and only if VkCooperativeMatrixPropertiesKHR::
saturatingAccumulation
isVK_TRUE
,SaturatingAccumulationKHR
must be used. -
If and only if VkCooperativeMatrixPropertiesKHR::
saturatingAccumulation
isVK_FALSE
,SaturatingAccumulationKHR
must not be used. -
The scope of all cooperative matrix operands must match VkCooperativeMatrixPropertiesKHR::
scope
.
-
-
VUID-RuntimeSpirv-cooperativeMatrixWorkgroupScope-10164
If thecooperativeMatrixWorkgroupScope
feature is not enabled, the scope of allOpTypeCooperativeMatrixKHR
must not be VkScopeKHR::VK_SCOPE_WORKGROUP_KHR
-
VUID-RuntimeSpirv-cooperativeMatrixFlexibleDimensions-10165
ForOpTypeCooperativeMatrixKHR
, if thecooperativeMatrixFlexibleDimensions
feature 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::MGranularity
and the number of columns must be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::KGranularity
and the type must match VkCooperativeMatrixFlexibleDimensionsPropertiesNV::AType
-
for
MatrixB
, the number of rows must be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::KGranularity
and the number of columns must be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::NGranularity
and the type must match VkCooperativeMatrixFlexibleDimensionsPropertiesNV::BType
-
for
MatrixAccumulator
, the number of rows must be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::MGranularity
and the number of columns must be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::NGranularity
and the type must match VkCooperativeMatrixFlexibleDimensionsPropertiesNV::CType
or 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 thecooperativeMatrixFlexibleDimensions
feature 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
A
must haveRows
be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::MGranularity
,Columns
be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::KGranularity
,Use
beMatrixAKHR
, andComponentType
match VkCooperativeMatrixFlexibleDimensionsPropertiesNV::AType
. -
The type of
B
must haveRows
be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::KGranularity
,Columns
be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::NGranularity
,Use
beMatrixBKHR
, andComponentType
match VkCooperativeMatrixFlexibleDimensionsPropertiesNV::BType
. -
The type of
C
must haveRows
be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::MGranularity
,Columns
be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::NGranularity
,Use
beMatrixAccumulatorKHR
, andComponentType
match VkCooperativeMatrixFlexibleDimensionsPropertiesNV::CType
. -
The type of
Result
must haveRows
be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::MGranularity
,Columns
be a multiple of VkCooperativeMatrixFlexibleDimensionsPropertiesNV::NGranularity
,Use
beMatrixAccumulatorKHR
, andComponentType
match VkCooperativeMatrixFlexibleDimensionsPropertiesNV::ResultType
. -
If and only if VkCooperativeMatrixFlexibleDimensionsPropertiesNV::
AType
is a signed integer type,MatrixASignedComponents
must be used. -
If and only if VkCooperativeMatrixFlexibleDimensionsPropertiesNV::
BType
is a signed integer type,MatrixBSignedComponents
must be used. -
If and only if VkCooperativeMatrixFlexibleDimensionsPropertiesNV::
CType
is a signed integer type,MatrixCSignedComponents
must be used. -
If and only if VkCooperativeMatrixFlexibleDimensionsPropertiesNV::
ResultType
is a signed integer type,MatrixResultSignedComponents
must be used. -
If and only if VkCooperativeMatrixFlexibleDimensionsPropertiesNV::
saturatingAccumulation
isVK_TRUE
,SaturatingAccumulationKHR
must be used. -
If and only if VkCooperativeMatrixFlexibleDimensionsPropertiesNV::
saturatingAccumulation
isVK_FALSE
,SaturatingAccumulationKHR
must 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
AllOpTypeCooperativeMatrixKHR
dimensions must be less than or equal tocooperativeMatrixFlexibleDimensionsMaxDimension
-
VUID-RuntimeSpirv-maxComputeSharedMemorySize-10168
If the module usesOpTypeCooperativeMatrixKHR
withScope
equal toWorkgroup
, the sum of size in bytes for variables and padding in theWorkgroup
Storage
Class
in theGLCompute
Execution
Model
must be less than or equal tomaxComputeSharedMemorySize
minuscooperativeMatrixWorkgroupScopeReservedSharedMemory
-
VUID-RuntimeSpirv-cooperativeMatrixSupportedStages-08985
OpTypeCooperativeMatrixKHR
andOpCooperativeMatrix*
instructions must not be used in shader stages not included in VkPhysicalDeviceCooperativeMatrixPropertiesKHR::cooperativeMatrixSupportedStages
-
VUID-RuntimeSpirv-OpTypeCooperativeMatrixKHR-10770
Any pipeline containing a shader withOpTypeCooperativeMatrixKHR
orOpCooperativeMatrix*KHR
instructions must be created with theVK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT
flag or the shader module must be version 1.6 or greater -
VUID-RuntimeSpirv-OpTypeCooperativeMatrixKHR-10771
Any shader object containingOpTypeCooperativeMatrixKHR
orOpCooperativeMatrix*KHR
instructions must be created with theVK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
flag or the shader module must be version 1.6 or greater -
VUID-RuntimeSpirv-OpCooperativeMatrixLoadNV-06324
ForOpCooperativeMatrixLoadNV
andOpCooperativeMatrixStoreNV
instructions, thePointer
andStride
operands 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
ForOpCooperativeVectorMatrixMulNV
andOpCooperativeVectorMatrixMulAddNV
, the following must be satisfied by the same entry in the VkCooperativeVectorPropertiesNV array returned by vkGetPhysicalDeviceCooperativeVectorPropertiesNV:-
The component type of
Input
must match VkCooperativeVectorPropertiesNV::inputType
-
The
InputInterpretation
must match VkCooperativeVectorPropertiesNV::inputInterpretation
-
The
MatrixInterpretation
must match VkCooperativeVectorPropertiesNV::matrixInterpretation
-
For
OpCooperativeVectorMatrixMulAddNV
, theBiasInterpretation
must match VkCooperativeVectorPropertiesNV::biasInterpretation
-
The
Result
Type
must match VkCooperativeVectorPropertiesNV::resultType
-
If
Transpose
is true, VkCooperativeVectorPropertiesNV::transpose
must beVK_TRUE
-
-
VUID-RuntimeSpirv-OpCooperativeVectorMatrixMulNV-10090
ForOpCooperativeVectorMatrixMulNV
andOpCooperativeVectorMatrixMulAddNV
, ifMatrixInterpretation
is eitherVK_COMPONENT_TYPE_FLOAT_E4M3_NV
orVK_COMPONENT_TYPE_FLOAT_E5M2_NV
thenMemoryLayout
must be eitherVK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV
orVK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV
-
VUID-RuntimeSpirv-cooperativeVectorSupportedStages-10091
OpTypeCooperativeVectorNV
andOpCooperativeVector*
instructions must not be used in shader stages not included in VkPhysicalDeviceCooperativeVectorPropertiesNV::cooperativeVectorSupportedStages
-
VUID-RuntimeSpirv-OpCooperativeVectorReduceSumAccumulateNV-10092
ForOpCooperativeVectorReduceSumAccumulateNV
:-
The component type of
V
must be either 16- or 32-bit floating-point -
If the component type of
V
is 16-bit floating-point,cooperativeVectorTrainingFloat16Accumulation
must be supported -
If the component type of
V
is 32-bit floating-point,cooperativeVectorTrainingFloat32Accumulation
must be supported -
The pointer’s storage class must be
StorageBuffer
orPhysicalStorageBuffer
-
-
VUID-RuntimeSpirv-OpCooperativeVectorOuterProductAccumulateNV-10093
ForOpCooperativeVectorOuterProductAccumulateNV
:-
MatrixInterpretation
must beVK_COMPONENT_TYPE_FLOAT16_KHR
orVK_COMPONENT_TYPE_FLOAT32_KHR
-
If
MatrixInterpretation
isVK_COMPONENT_TYPE_FLOAT16_KHR
,cooperativeVectorTrainingFloat16Accumulation
must be supported -
If
MatrixInterpretation
isVK_COMPONENT_TYPE_FLOAT32_KHR
,cooperativeVectorTrainingFloat32Accumulation
must be supported -
The component types of
A
andB
must be 16-bit floating-point -
The matrix layout must be training-optimal
-
The pointer’s storage class must be
StorageBuffer
orPhysicalStorageBuffer
-
-
VUID-RuntimeSpirv-maxCooperativeVectorComponents-10094
OpTypeCooperativeVector
instructions must haveComponent
Count
less than or equal tomaxCooperativeVectorComponents
-
VUID-RuntimeSpirv-OpTypeCooperativeVector-10095
OpTypeCooperativeVector
instructions must haveComponent
Type
that is any supported type reported by vkGetPhysicalDeviceCooperativeVectorPropertiesNV -
VUID-RuntimeSpirv-MeshNV-07113
For mesh shaders using theMeshNV
Execution
Model
theOutputVertices
OpExecutionMode
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesNV::maxMeshOutputVertices
-
VUID-RuntimeSpirv-MeshNV-07114
For mesh shaders using theMeshNV
Execution
Model
theOutputPrimitivesNV
OpExecutionMode
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesNV::maxMeshOutputPrimitives
-
VUID-RuntimeSpirv-MeshEXT-07115
For mesh shaders using theMeshEXT
Execution
Model
theOutputVertices
OpExecutionMode
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshOutputVertices
-
VUID-RuntimeSpirv-MeshEXT-07332
For mesh shaders using theMeshEXT
Execution
Model
the “Vertex Count” operand ofOpSetMeshOutputsEXT
must be less than or equal toOutputVertices
OpExecutionMode
-
VUID-RuntimeSpirv-MeshEXT-07116
For mesh shaders using theMeshEXT
Execution
Model
theOutputPrimitivesEXT
OpExecutionMode
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshOutputPrimitives
-
VUID-RuntimeSpirv-MeshEXT-07333
For mesh shaders using theMeshEXT
Execution
Model
the “Primitive Count” operand ofOpSetMeshOutputsEXT
must be less than or equal toOutputPrimitivesEXT
OpExecutionMode
-
VUID-RuntimeSpirv-TaskEXT-07117
In task shaders using theTaskEXT
Execution
Model
OpEmitMeshTasksEXT
must be called exactly once under dynamically uniform conditions -
VUID-RuntimeSpirv-MeshEXT-07118
In mesh shaders using theMeshEXT
Execution
Model
OpSetMeshOutputsEXT
must be called at most once under dynamically uniform conditions -
VUID-RuntimeSpirv-TaskEXT-07291
In task shaders using theTaskEXT
Execution
Model
thex
size inLocalSize
orLocalSizeId
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupSize
[0] -
VUID-RuntimeSpirv-TaskEXT-07292
In task shaders using theTaskEXT
Execution
Model
they
size inLocalSize
orLocalSizeId
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupSize
[1] -
VUID-RuntimeSpirv-TaskEXT-07293
In task shaders using theTaskEXT
Execution
Model
thez
size inLocalSize
orLocalSizeId
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupSize
[2] -
VUID-RuntimeSpirv-TaskEXT-07294
In task shaders using theTaskEXT
Execution
Model
the product ofx
size,y
size, andz
size inLocalSize
orLocalSizeId
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxTaskWorkGroupInvocations
-
VUID-RuntimeSpirv-MeshEXT-07295
For mesh shaders using theMeshEXT
Execution
Model
thex
size inLocalSize
orLocalSizeId
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupSize
[0] -
VUID-RuntimeSpirv-MeshEXT-07296
For mesh shaders using theMeshEXT
Execution
Model
they
size inLocalSize
orLocalSizeId
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupSize
[1] -
VUID-RuntimeSpirv-MeshEXT-07297
For mesh shaders using theMeshEXT
Execution
Model
thez
size inLocalSize
orLocalSizeId
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupSize
[2] -
VUID-RuntimeSpirv-MeshEXT-07298
For mesh shaders using theMeshEXT
Execution
Model
the product ofx
size,y
size, andz
size inLocalSize
orLocalSizeId
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupInvocations
-
VUID-RuntimeSpirv-TaskEXT-07299
In task shaders using theTaskEXT
Execution
Model
the value of the “Group Count X” operand ofOpEmitMeshTasksEXT
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupCount
[0] -
VUID-RuntimeSpirv-TaskEXT-07300
In task shaders using theTaskEXT
Execution
Model
the value of the “Group Count Y” operand ofOpEmitMeshTasksEXT
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupCount
[1] -
VUID-RuntimeSpirv-TaskEXT-07301
In task shaders using theTaskEXT
Execution
Model
the value of the “Group Count Z” operand ofOpEmitMeshTasksEXT
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupCount
[2] -
VUID-RuntimeSpirv-TaskEXT-07302
In task shaders using theTaskEXT
Execution
Model
the product of the “Group Count” operands ofOpEmitMeshTasksEXT
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT::maxMeshWorkGroupTotalCount
-
VUID-RuntimeSpirv-maxMeshSharedMemorySize-08754
The sum of size in bytes for variables and padding in theWorkgroup
Storage
Class
in theMeshEXT
Execution
Model
must be less than or equal tomaxMeshSharedMemorySize
-
VUID-RuntimeSpirv-maxMeshPayloadAndSharedMemorySize-08755
The sum of size in bytes for variables and padding in theTaskPayloadWorkgroupEXT
orWorkgroup
Storage
Class
in theMeshEXT
Execution
Model
must be less than or equal tomaxMeshPayloadAndSharedMemorySize
-
VUID-RuntimeSpirv-maxMeshOutputMemorySize-08756
The sum of size in bytes for variables in theOutput
Storage
Class
in theMeshEXT
Execution
Model
must be less than or equal tomaxMeshOutputMemorySize
according to the formula in Mesh Shader Output -
VUID-RuntimeSpirv-maxMeshPayloadAndOutputMemorySize-08757
The sum of size in bytes for variables and in theTaskPayloadWorkgroupEXT
orOutput
Storage
Class
in theMeshEXT
Execution
Model
must be less than or equal tomaxMeshPayloadAndOutputMemorySize
according to the formula in Mesh Shader Output -
VUID-RuntimeSpirv-maxTaskPayloadSize-08758
The sum of size in bytes for variables and in theTaskPayloadWorkgroupEXT
Storage
Class
in theTaskEXT
Execution
Model
must be less than or equal tomaxTaskPayloadSize
-
VUID-RuntimeSpirv-maxTaskSharedMemorySize-08759
The sum of size in bytes for variables and padding in theWorkgroup
Storage
Class
in theTaskEXT
Execution
Model
must be less than or equal tomaxTaskSharedMemorySize
-
VUID-RuntimeSpirv-maxTaskPayloadAndSharedMemorySize-08760
The sum of size in bytes for variables and padding in theTaskPayloadWorkgroupEXT
orWorkgroup
Storage
Class
in theTaskEXT
Execution
Model
must be less than or equal tomaxTaskPayloadAndSharedMemorySize
-
VUID-RuntimeSpirv-MeshEXT-10883
If theMeshEXT
Execution
Model
declares a variable with theTaskPayloadWorkgroupEXT
Storage
Class
in the entry point, there must be a matchingTaskPayloadWorkgroupEXT
Storage
Class
variable in theTaskEXT
Execution
Model
passed as an argument toOpEmitMeshTasksEXT
-
VUID-RuntimeSpirv-OpCooperativeMatrixLoadKHR-08986
ForOpCooperativeMatrixLoadKHR
andOpCooperativeMatrixStoreKHR
instructions, thePointer
andStride
operands 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
ForOpCooperativeVectorMatrixMulNV
andOpCooperativeVectorMatrixMulAddNV
instructions using non-optimal layouts, theStride
operand must be aligned to 16 bytes -
VUID-RuntimeSpirv-OpCooperativeVectorMatrixMulNV-10097
ForOpCooperativeVectorMatrixMulNV
andOpCooperativeVectorMatrixMulAddNV
instructions, theMatrix
andMatrixOffset
must be aligned to 64 bytes -
VUID-RuntimeSpirv-OpCooperativeVectorMatrixMulAddNV-10098
ForOpCooperativeVectorMatrixMulAddNV
instructions, theBias
andBiasOffset
must be aligned to 16 bytes -
VUID-RuntimeSpirv-OpCooperativeVectorLoadNV-10099
ForOpCooperativeVectorLoadNV
andOpCooperativeVectorStoreNV
instructions, thePointer
andOffset
must be aligned to 16 bytes -
VUID-RuntimeSpirv-OpCooperativeVectorReduceSumAccumulateNV-10100
ForOpCooperativeVectorReduceSumAccumulateNV
instructions, thePointer
andOffset
must be aligned to 16 bytes -
VUID-RuntimeSpirv-OpCooperativeVectorOuterProductAccumulateNV-10101
ForOpCooperativeVectorOuterProductAccumulateNV
instructions, thePointer
andOffset
must be aligned to 64 bytes -
VUID-RuntimeSpirv-shaderSampleRateInterpolationFunctions-06325
If theVK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::shaderSampleRateInterpolationFunctions
isVK_FALSE
, thenGLSL.std.450
fragment interpolation functions are not supported by the implementation andOpCapability
must not beInterpolationFunction
-
VUID-RuntimeSpirv-tessellationShader-06326
If thetessellationShader
feature is enabled, and theVK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::tessellationIsolines
isVK_FALSE
, thenOpExecutionMode
must not beIsoLines
-
VUID-RuntimeSpirv-tessellationShader-06327
If thetessellationShader
feature is enabled, and theVK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::tessellationPointMode
isVK_FALSE
, thenOpExecutionMode
must not bePointMode
-
VUID-RuntimeSpirv-storageBuffer8BitAccess-06328
IfstorageBuffer8BitAccess
isVK_FALSE
, then objects containing an 8-bit integer element must not haveStorage
Class
ofStorageBuffer
,ShaderRecordBufferKHR
, orPhysicalStorageBuffer
unlessshaderUntypedPointers
isVK_TRUE
and they are accessed in:-
32-bit multiples, or
-
16-bit multiples if
storageBuffer16BitAccess
isVK_TRUE
.
-
-
VUID-RuntimeSpirv-uniformAndStorageBuffer8BitAccess-06329
IfuniformAndStorageBuffer8BitAccess
isVK_FALSE
, then objects in theUniform
Storage
Class
with theBlock
decoration must not have an 8-bit integer member unlessshaderUntypedPointers
isVK_TRUE
and they are accessed in:-
32-bit multiples, or
-
16-bit multiples if
uniformAndStorageBuffer16BitAccess
isVK_TRUE
.
-
-
VUID-RuntimeSpirv-storagePushConstant8-06330
IfstoragePushConstant8
isVK_FALSE
, then objects containing an 8-bit integer element must not haveStorage
Class
ofPushConstant
unlessshaderUntypedPointers
isVK_TRUE
and they are accessed in:-
32-bit multiples, or
-
16-bit multiples if <features-storagePushConstant16,
storagePushConstant16
>> isVK_TRUE
.
-
-
VUID-RuntimeSpirv-workgroupMemoryExplicitLayout8BitAccess-10756
IfworkgroupMemoryExplicitLayout8BitAccess
isVK_FALSE
, then objects in theWorkgroup
Storage
Class
with theBlock
decoration must not have an 8-bit integer element unlessshaderUntypedPointers
isVK_TRUE
and they are accessed in:-
32-bit multiples, or
-
16-bit multiples if
workgroupMemoryExplicitLayout16BitAccess
isVK_TRUE
-
-
VUID-RuntimeSpirv-storageBuffer16BitAccess-11161
IfstorageBuffer16BitAccess
isVK_FALSE
, then objects containing 16-bit integer or 16-bit floating-point elements must not haveStorage
Class
ofStorageBuffer
,ShaderRecordBufferKHR
, orPhysicalStorageBuffer
unless:-
storageBuffer8BitAccess
isVK_TRUE
, or -
the elements are accessed in 32-bit multiples if
shaderUntypedPointers
isVK_TRUE
.
-
-
VUID-RuntimeSpirv-uniformAndStorageBuffer16BitAccess-06332
IfuniformAndStorageBuffer16BitAccess
isVK_FALSE
, then objects in theUniform
Storage
Class
with theBlock
decoration must not have 16-bit integer or 16-bit floating-point members unless:-
uniformAndStorageBuffer8BitAccess
isVK_TRUE
, or -
members are accessed in 32-bit multiples and
shaderUntypedPointers
isVK_TRUE
.
-
-
VUID-RuntimeSpirv-storagePushConstant16-06333
IfstoragePushConstant16
isVK_FALSE
, then objects containing 16-bit integer or 16-bit floating-point elements must not haveStorage
Class
ofPushConstant
unless:-
StoragePushConstant8
isVK_TRUE
, or -
elements are accessed in 32-bit multiples if
shaderUntypedPointers
isVK_TRUE
.
-
-
VUID-RuntimeSpirv-storageInputOutput16-11162
IfstorageInputOutput16
isVK_FALSE
, then objects containing 16-bit integer or 16-bit floating-point elements must not have storage class of Input or Output. -
VUID-RuntimeSpirv-workgroupMemoryExplicitLayout16BitAccess-10757
IfworkgroupMemoryExplicitLayout16BitAccess
isVK_FALSE
, then objects in theWorkgroup
Storage
Class
with theBlock
decoration must not have an 16-bit integer or 16-bit floating-point elements unless:-
workgroupMemoryExplicitLayout8BitAccess
isVK_TRUE
, or -
elements are accessed in 32-bit multiples if
shaderUntypedPointers
isVK_TRUE
-
-
VUID-RuntimeSpirv-None-06337
shaderBufferFloat16Atomics
, orshaderBufferFloat16AtomicAdd
, orshaderBufferFloat16AtomicMinMax
, orshaderSharedFloat16Atomics
, orshaderSharedFloat16AtomicAdd
, orshaderSharedFloat16AtomicMinMax
must be enabled for 16-bit floating-point atomic operations -
VUID-RuntimeSpirv-None-06338
shaderBufferFloat32Atomics
, orshaderBufferFloat32AtomicAdd
, orshaderSharedFloat32Atomics
, orshaderSharedFloat32AtomicAdd
, orshaderImageFloat32Atomics
, orshaderImageFloat32AtomicAdd
orshaderBufferFloat32AtomicMinMax
, orshaderSharedFloat32AtomicMinMax
, orshaderImageFloat32AtomicMinMax
must 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 thefragmentStoresAndAtomics
feature is not enabled, then all storage image, storage texel buffer, and storage buffer variables in the fragment stage must be decorated with theNonWritable
decoration -
VUID-RuntimeSpirv-NonWritable-06341
If thevertexPipelineStoresAndAtomics
feature 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 theNonWritable
decoration -
VUID-RuntimeSpirv-None-06342
IfsubgroupQuadOperationsInAllStages
isVK_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 theOffset
operand ofInterpolateAtOffset
must 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 theOffset
operand ofInterpolateAtOffset
must be less than or equal to
fragwidth × (maxInterpolationOffset
+ ULP ) - ULP
where fragwidth is the width of the current fragment in pixels and ULP = 1 / 2^subPixelInterpolationOffsetBits
^ -
VUID-RuntimeSpirv-Offset-06346
The second element of theOffset
operand ofInterpolateAtOffset
must 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 theOffset
operand ofInterpolateAtOffset
must be less than or equal to
fragheight × (maxInterpolationOffset
+ ULP ) - ULP
where fragheight is the height of the current fragment in pixels and ULP = 1 / 2^subPixelInterpolationOffsetBits
^ -
VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06348
ForOpRayQueryInitializeKHR
instructions, all components of theRayOrigin
andRayDirection
operands must be finite floating-point values -
VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06349
ForOpRayQueryInitializeKHR
instructions, theRayTmin
andRayTmax
operands must be non-negative floating-point values -
VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06350
ForOpRayQueryInitializeKHR
instructions, theRayTmin
operand must be less than or equal to theRayTmax
operand -
VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06351
ForOpRayQueryInitializeKHR
instructions,RayOrigin
,RayDirection
,RayTmin
, andRayTmax
operands must not contain NaNs -
VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06352
ForOpRayQueryInitializeKHR
instructions,Acceleration
Structure
must be an acceleration structure built as a top-level acceleration structure -
VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06889
ForOpRayQueryInitializeKHR
instructions, theRayflags
operand must not contain bothSkipTrianglesKHR
andSkipAABBsKHR
-
VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06890
ForOpRayQueryInitializeKHR
instructions, theRayflags
operand must not contain more than one ofSkipTrianglesKHR
,CullBackFacingTrianglesKHR
, andCullFrontFacingTrianglesKHR
-
VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06891
ForOpRayQueryInitializeKHR
instructions, theRayflags
operand must not contain more than one ofOpaqueKHR
,NoOpaqueKHR
,CullOpaqueKHR
, andCullNoOpaqueKHR
-
VUID-RuntimeSpirv-OpRayQueryGenerateIntersectionKHR-06353
ForOpRayQueryGenerateIntersectionKHR
instructions,Hit
T
must satisfy the conditionRayTmin
≤Hit
T
≤RayTmax
, whereRayTmin
is equal to the value returned byOpRayQueryGetRayTMinKHR
with the same ray query object, andRayTmax
is equal to the value ofOpRayQueryGetIntersectionTKHR
for the current committed intersection with the same ray query object -
VUID-RuntimeSpirv-OpRayQueryGenerateIntersectionKHR-06354
ForOpRayQueryGenerateIntersectionKHR
instructions,Acceleration
Structure
must not be built withVK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV
inflags
-
VUID-RuntimeSpirv-flags-08761
ForOpRayQueryGetIntersectionTriangleVertexPositionsKHR
instructions,Acceleration
Structure
must have been built withVK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR
inflags
-
VUID-RuntimeSpirv-OpTraceRayKHR-06355
ForOpTraceRayKHR
instructions, all components of theRayOrigin
andRayDirection
operands must be finite floating-point values -
VUID-RuntimeSpirv-OpTraceRayKHR-06356
ForOpTraceRayKHR
instructions, theRayTmin
andRayTmax
operands must be non-negative floating-point values -
VUID-RuntimeSpirv-OpTraceRayKHR-06552
ForOpTraceRayKHR
instructions, theRayflags
operand must not contain bothSkipTrianglesKHR
andSkipAABBsKHR
-
VUID-RuntimeSpirv-OpTraceRayKHR-06892
ForOpTraceRayKHR
instructions, theRayflags
operand must not contain more than one ofSkipTrianglesKHR
,CullBackFacingTrianglesKHR
, andCullFrontFacingTrianglesKHR
-
VUID-RuntimeSpirv-OpTraceRayKHR-06893
ForOpTraceRayKHR
instructions, theRayflags
operand must not contain more than one ofOpaqueKHR
,NoOpaqueKHR
,CullOpaqueKHR
, andCullNoOpaqueKHR
-
VUID-RuntimeSpirv-OpTraceRayKHR-06553
ForOpTraceRayKHR
instructions, if theRayflags
operand containsSkipTrianglesKHR
, the pipeline must not have been created withVK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR
set -
VUID-RuntimeSpirv-OpTraceRayKHR-06554
ForOpTraceRayKHR
instructions, if theRayflags
operand containsSkipAABBsKHR
, the pipeline must not have been created withVK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
set -
VUID-RuntimeSpirv-OpTraceRayKHR-06357
ForOpTraceRayKHR
instructions, theRayTmin
operand must be less than or equal to theRayTmax
operand -
VUID-RuntimeSpirv-OpTraceRayKHR-06358
ForOpTraceRayKHR
instructions,RayOrigin
,RayDirection
,RayTmin
, andRayTmax
operands must not contain NaNs -
VUID-RuntimeSpirv-OpTraceRayKHR-06359
ForOpTraceRayKHR
instructions,Acceleration
Structure
must be an acceleration structure built as a top-level acceleration structure -
VUID-RuntimeSpirv-OpReportIntersectionKHR-06998
The value of the “Hit Kind” operand ofOpReportIntersectionKHR
must be in the range [0,127] -
VUID-RuntimeSpirv-OpTraceRayKHR-06360
ForOpTraceRayKHR
instructions, ifAcceleration
Structure
was built withVK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV
inflags
, the pipeline must have been created withVK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
set -
VUID-RuntimeSpirv-OpTraceRayMotionNV-06361
ForOpTraceRayMotionNV
instructions, all components of theRayOrigin
andRayDirection
operands must be finite floating-point values -
VUID-RuntimeSpirv-OpTraceRayMotionNV-06362
ForOpTraceRayMotionNV
instructions, theRayTmin
andRayTmax
operands must be non-negative floating-point values -
VUID-RuntimeSpirv-OpTraceRayMotionNV-06363
ForOpTraceRayMotionNV
instructions, theRayTmin
operand must be less than or equal to theRayTmax
operand -
VUID-RuntimeSpirv-OpTraceRayMotionNV-06364
ForOpTraceRayMotionNV
instructions,RayOrigin
,RayDirection
,RayTmin
, andRayTmax
operands must not contain NaNs -
VUID-RuntimeSpirv-OpTraceRayMotionNV-06365
ForOpTraceRayMotionNV
instructions,Acceleration
Structure
must be an acceleration structure built as a top-level acceleration structure withVK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV
inflags
-
VUID-RuntimeSpirv-OpTraceRayMotionNV-06366
ForOpTraceRayMotionNV
instructions thetime
operand must be between 0.0 and 1.0 -
VUID-RuntimeSpirv-OpTraceRayMotionNV-06367
ForOpTraceRayMotionNV
instructions the pipeline must have been created withVK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
set -
VUID-RuntimeSpirv-OpHitObjectTraceRayMotionNV-07704
ForOpHitObjectTraceRayMotionNV
instructions, ifAcceleration
Structure
was built withVK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV
inflags
, the pipeline must have been created withVK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
set -
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07705
ForOpHitObjectTraceRayNV
andOpHitObjectTraceRayMotionNV
instructions, all components of theRayOrigin
andRayDirection
operands must be finite floating-point values -
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07706
ForOpHitObjectTraceRayNV
andOpHitObjectTraceRayMotionNV
instructions, theRayTmin
andRayTmax
operands must be non-negative floating-point values -
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07707
ForOpHitObjectTraceRayNV
andOpHitObjectTraceRayMotionNV
instructions, theRayTmin
operand must be less than or equal to theRayTmax
operand -
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07708
ForOpHitObjectTraceRayNV
andOpHitObjectTraceRayMotionNV
instructions,RayOrigin
,RayDirection
,RayTmin
, andRayTmax
operands must not contain NaNs -
VUID-RuntimeSpirv-OpHitObjectTraceRayMotionNV-07709
ForOpHitObjectTraceRayMotionNV
instructions,Acceleration
Structure
must be an acceleration structure built as a top-level acceleration structure withVK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV
inflags
-
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07710
ForOpHitObjectTraceRayNV
andOpHitObjectTraceRayMotionNV
instructions thetime
operand must be between 0.0 and 1.0 -
VUID-RuntimeSpirv-OpHitObjectTraceRayMotionNV-07711
ForOpHitObjectTraceRayMotionNV
instructions the pipeline must have been created withVK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
set -
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07712
ForOpHitObjectTraceRayNV
andOpHitObjectTraceRayMotionNV
instructions, theRayflags
operand must not contain bothSkipTrianglesKHR
andSkipAABBsKHR
-
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07713
ForOpHitObjectTraceRayNV
andOpHitObjectTraceRayMotionNV
instructions, theRayflags
operand must not contain more than one ofSkipTrianglesKHR
,CullBackFacingTrianglesKHR
, andCullFrontFacingTrianglesKHR
-
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07714
ForOpHitObjectTraceRayNV
andOpHitObjectTraceRayMotionNV
instructions, theRayflags
operand must not contain more than one ofOpaqueKHR
,NoOpaqueKHR
,CullOpaqueKHR
, andCullNoOpaqueKHR
-
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07715
ForOpHitObjectTraceRayNV
andOpHitObjectTraceRayMotionNV
instructions, if theRayflags
operand containsSkipTrianglesKHR
, the pipeline must not have been created withVK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR
set -
VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07716
ForOpHitObjectTraceRayNV
andOpHitObjectTraceRayMotionNV
instructions, if theRayflags
operand containsSkipAABBsKHR
, the pipeline must not have been created withVK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
set -
VUID-RuntimeSpirv-x-06429
In compute shaders using theGLCompute
Execution
Model
thex
size inLocalSize
orLocalSizeId
must be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupSize
[0] -
VUID-RuntimeSpirv-y-06430
In compute shaders using theGLCompute
Execution
Model
they
size inLocalSize
orLocalSizeId
must be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupSize
[1] -
VUID-RuntimeSpirv-z-06431
In compute shaders using theGLCompute
Execution
Model
thez
size inLocalSize
orLocalSizeId
must be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupSize
[2] -
VUID-RuntimeSpirv-x-06432
In compute shaders using theGLCompute
Execution
Model
the product ofx
size,y
size, andz
size inLocalSize
orLocalSizeId
must be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupInvocations
-
VUID-RuntimeSpirv-LocalSizeId-06434
IfExecution
Mode
LocalSizeId
is used,maintenance4
must be enabled -
VUID-RuntimeSpirv-maintenance4-06817
If themaintenance4
feature is not enabled, anyOpTypeVector
output interface variables must not have a higherComponent
Count
than a matchingOpTypeVector
input interface variable -
VUID-RuntimeSpirv-OpEntryPoint-08743
Any user-defined variables shared between theOpEntryPoint
of two shader stages, and declared withInput
as itsStorage
Class
for the subsequent shader stage, must have allLocation
slots andComponent
words declared in the preceding shader stage’sOpEntryPoint
withOutput
as theStorage
Class
-
VUID-RuntimeSpirv-OpEntryPoint-07754
Any user-defined variables between theOpEntryPoint
of two shader stages must have the same type and width for eachComponent
-
VUID-RuntimeSpirv-OpVariable-08746
Any variable,Block
-decoratedOpTypeStruct
, orBlock
-decoratedOpTypeStruct
members shared between theOpEntryPoint
of 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 theWorkgroup
Storage
Class
in theGLCompute
Execution
Model
must be less than or equal tomaxComputeSharedMemorySize
-
VUID-RuntimeSpirv-shaderZeroInitializeWorkgroupMemory-06372
If theshaderZeroInitializeWorkgroupMemory
feature is not enabled, any variable withWorkgroup
as itsStorage
Class
must not have anInitializer
operand -
VUID-RuntimeSpirv-Offset-10213
If themaintenance8
feature is not enabled, image operandOffset
must only be used withOpImage*Gather
instructions -
VUID-RuntimeSpirv-Size-11165
TheSize
operand ofOpCopyMemorySized
must be a multiple of 4-
If 16-bit storage is enabled for the storage classes of both the
Target
andSource
operands theSize
operand may instead be a multiple of 2 -
If 8-bit storage is enabled for the storage classes of both the
Target
andSource
operands theSize
operand may instead be any value
-
-
VUID-RuntimeSpirv-OpTypeUntypedPointerKHR-11166
Any memory access made using anOpTypeUntypedPointerKHR
must have an alignment that satisfies Offset and Stride Assignment -
VUID-RuntimeSpirv-OpUntypedVariableKHR-11167
AnyOpUntypedVariableKHR
must have aData
Type
operand specified -
VUID-RuntimeSpirv-OpImage-06376
If anOpImage*Gather
operation has an image operand ofOffset
,ConstOffset
, orConstOffsets
the offset value must be greater than or equal tominTexelGatherOffset
-
VUID-RuntimeSpirv-OpImage-06377
If anOpImage*Gather
operation has an image operand ofOffset
,ConstOffset
, orConstOffsets
the offset value must be less than or equal tomaxTexelGatherOffset
-
VUID-RuntimeSpirv-OpImageSample-06435
If anOpImageSample*
orOpImageFetch*
operation has an image operand ofOffset
orConstOffset
then the offset value must be greater than or equal tominTexelOffset
-
VUID-RuntimeSpirv-OpImageSample-06436
If anOpImageSample*
orOpImageFetch*
operation has an image operand ofOffset
orConstOffset
then the offset value must be less than or equal tomaxTexelOffset
-
VUID-RuntimeSpirv-samples-08725
If anOpTypeImage
has anMS
operand 0, its bound image must have been created with VkImageCreateInfo::samples
asVK_SAMPLE_COUNT_1_BIT
-
VUID-RuntimeSpirv-samples-08726
If anOpTypeImage
has anMS
operand 1, its bound image must not have been created with VkImageCreateInfo::samples
asVK_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 CapabilitySampleRateShading
must not be enabled -
VUID-RuntimeSpirv-SubgroupUniformControlFlowKHR-06379
TheExecution
Mode
SubgroupUniformControlFlowKHR
must not be applied to an entry point unless theshaderSubgroupUniformControlFlow
feature 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 theshaderEarlyAndLateFragmentTests
feature is not enabled, theEarlyAndLateFragmentTestsEXT
Execution
Mode
must not be used -
VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06768
If theshaderEarlyAndLateFragmentTests
feature is not enabled, theStencilRefUnchangedFrontEXT
Execution
Mode
must not be used -
VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06769
If theshaderEarlyAndLateFragmentTests
feature is not enabled, theStencilRefUnchangedBackEXT
Execution
Mode
must not be used -
VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06770
If theshaderEarlyAndLateFragmentTests
feature is not enabled, theStencilRefGreaterFrontEXT
Execution
Mode
must not be used -
VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06771
If theshaderEarlyAndLateFragmentTests
feature is not enabled, theStencilRefGreaterBackEXT
Execution
Mode
must not be used -
VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06772
If theshaderEarlyAndLateFragmentTests
feature is not enabled, theStencilRefLessFrontEXT
Execution
Mode
must not be used -
VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06773
If theshaderEarlyAndLateFragmentTests
feature is not enabled, theStencilRefLessBackEXT
Execution
Mode
must not be used -
VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06979
If anOpImageWeightedSampleQCOM
operation is used, then theTexture
Sampled
Image
andWeight
Image
parameters must both be dynamically uniform for the quad -
VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06980
If anOpImageWeightedSampleQCOM
operation is used, then theWeight
Image
parameter must be ofStorage
Class
UniformConstant
and typeOpTypeImage
withDepth
=0,Dim
=2D
,Arrayed
=1,MS
=0, andSampled
=1 -
VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06981
If anOpImageWeightedSampleQCOM
operation is used, then theWeight
Image
parameter must be decorated withWeightTextureQCOM
-
VUID-RuntimeSpirv-OpImageBlockMatchSADQCOM-06982
If anOpImageBlockMatchSADQCOM
orOpImageBlockMatchSSDQCOM
operation is used, then thetarget
sampled
image
,reference
sampled
image
, andBlock
Size
parameters must both be dynamically uniform for the quad -
VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06983
If anOpImageBlockMatchSSDQCOM
orOpImageBlockMatchSADQCOM
operation is used, thentarget
sampled
image
andreference
sampled
image
parameters must be of storage classUniformConstant
and typeOpTypeImage
withDepth
=0,Dim
=2D
,Arrayed
=0,MS
=0, andSampled
=1 -
VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06984
If anOpImageBlockMatchSSDQCOM
orOpImageBlockMatchSADQCOM
operation is used, then thetarget
sampled
image
andreference
sampled
image
parameters must be decorated withBlockMatchTextureQCOM
-
VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06985
If anOpImageBlockMatchSSDQCOM
orOpImageBlockMatchSADQCOM
operation is used, thentarget
sampled
image
andreference
sampled
image
parameters must have been created using an identical sampler object -
VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06986
If anOpImageBlockMatchSSDQCOM
orOpImageBlockMatchSADQCOM
operation is used, thentarget
sampled
image
andreference
sampled
image
parameters must have been created with a sampler object withunnormalizedCoordinates
equal toVK_TRUE
-
VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06987
If anOpImageBlockMatchSSDQCOM
orOpImageBlockMatchSADQCOM
operation is used, thentarget
sampled
image
andreference
sampled
image
parameters must have been created with a sampler object withunnormalizedCoordinates
equal toVK_TRUE
-
VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06988
If anOpImageBlockMatchSSDQCOM
orOpImageBlockMatchSADQCOM
operation is used, thenBlock
Size
less than or equal tomaxBlockMatchRegion
-
VUID-RuntimeSpirv-OpImageBoxFilterQCOM-06989
If anOpImageBoxFilterQCOM
operation is used, thenBox
Size.y
must be equal to or greater than 1.0 and less than or equal tomaxBoxFilterBlockSize
.height
-
VUID-RuntimeSpirv-OpImageBoxFilterQCOM-06990
If anOpImageBoxFilterQCOM
operation is used, thenSampled
Texture
Image
andBox
Size
parameters must be dynamically uniform -
VUID-RuntimeSpirv-OpEntryPoint-08727
EachOpEntryPoint
must not have more than one variable decorated withInputAttachmentIndex
per 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 andminSampleShading
is 1.0, thesample
operand of anyOpColorAttachmentReadEXT
,OpDepthAttachmentReadEXT
, orOpStencilAttachmentReadEXT
operation 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
, orOpStencilAttachmentReadEXT
operations are used, thenminSampleShading
must be 1.0 -
VUID-RuntimeSpirv-MeshEXT-09218
In mesh shaders using theMeshEXT
orMeshNV
Execution
Model
and theOutputPoints
Execution
Mode
, if themaintenance5
feature is not enabled, and if the number of output points is greater than 0, aPointSize
decorated variable must be written to for each output point -
VUID-RuntimeSpirv-maintenance5-09190
If themaintenance5
feature is enabled and aPointSize
decorated variable is written to, all execution paths must write to aPointSize
decorated variable -
VUID-RuntimeSpirv-ShaderEnqueueAMDX-09191
TheShaderEnqueueAMDX
capability must only be used in shaders with theGLCompute
orMeshEXT
execution model -
VUID-RuntimeSpirv-NodePayloadAMDX-09192
Variables in theNodePayloadAMDX
storage class must only be declared in theGLCompute
orMeshEXT
execution model -
VUID-RuntimeSpirv-maxExecutionGraphShaderPayloadSize-09193
Variables declared in theNodePayloadAMDX
storage class must not be larger than themaxExecutionGraphShaderPayloadSize
limit -
VUID-RuntimeSpirv-maxExecutionGraphShaderPayloadSize-09194
Variables declared in theNodeOutputPayloadAMDX
storage class must not be larger than themaxExecutionGraphShaderPayloadSize
limit -
VUID-RuntimeSpirv-maxExecutionGraphShaderPayloadSize-09195
For a given entry point, the sum of the size of any variable in theNodePayloadAMDX
storage class, and the combined size of all statically initialized variables in theNodeOutputPayloadAMDX
storage class must not be greater thanmaxExecutionGraphShaderPayloadSize
-
VUID-RuntimeSpirv-maxExecutionGraphShaderPayloadCount-09196
Shaders must not statically initialize more thanmaxExecutionGraphShaderPayloadCount
variables in theNodeOutputPayloadAMDX
storage class -
VUID-RuntimeSpirv-maxExecutionGraphShaderOutputNodes-09197
Shaders must not include more thanmaxExecutionGraphShaderOutputNodes
instances ofOpInitializeNodePayloadsAMDX
-
VUID-RuntimeSpirv-OpImageBlockMatchWindow-09219
If aOpImageBlockMatchWindow*QCOM
orOpImageBlockMatchGather*QCOM
operation is used, then thetarget
sampled
image
,reference
sampled
image
, andBlock
Size
parameters must both be dynamically uniform for the quad -
VUID-RuntimeSpirv-OpImageBlockMatchWindow-09220
If aOpImageBlockMatchWindow*QCOM
orOpImageBlockMatchGather*QCOM
operation is used, thentarget
sampled
image
andreference
sampled
image
parameters must be of storage classUniformConstant
and typeOpTypeImage
withDepth
=0,Dim
=2D
,Arrayed
=0,MS
=0, andSampled
=1 -
VUID-RuntimeSpirv-OpImageBlockMatchWindow-09221
If aOpImageBlockMatchWindow*QCOM
orOpImageBlockMatchGather*QCOM
operation is used, then thetarget
sampled
image
andreference
sampled
image
parameters must be decorated withBlockMatchTextureQCOM
-
VUID-RuntimeSpirv-OpImageBlockMatchWindow-09222
If aOpImageBlockMatchWindow*QCOM
orOpImageBlockMatchGather*QCOM
operation is used, thentarget
sampled
image
andreference
sampled
image
parameters must have been created using an identical sampler object -
VUID-RuntimeSpirv-OpImageBlockMatchWindow-09223
If aOpImageBlockMatchWindow*QCOM
orOpImageBlockMatchGather*QCOM
operation is used, thentarget
sampled
image
andreference
sampled
image
parameters must have been created with a sampler object withunnormalizedCoordinates
equal toVK_TRUE
-
VUID-RuntimeSpirv-OpImageBlockMatchWindow-09224
If aOpImageBlockMatchWindow*QCOM
orOpImageBlockMatchGather*QCOM
operation is used, thentarget
sampled
image
andreference
sampled
image
parameters must have been created with sampler object withunnormalizedCoordinates
equal toVK_TRUE
-
VUID-RuntimeSpirv-maxBlockMatchRegion-09225
If aOpImageBlockMatchWindow*QCOM
orOpImageBlockMatchGather*QCOM
operation is used, thenBlock
Size
less than or equal tomaxBlockMatchRegion
-
VUID-RuntimeSpirv-pNext-09226
If aOpImageBlockMatchWindow*QCOM
operation is used, thentarget
sampled
image
must have been created using asampler object that included VkSamplerBlockMatchWindowCreateInfoQCOM in thepNext
chain -
VUID-RuntimeSpirv-MaximallyReconvergesKHR-09565
The execution modeMaximallyReconvergesKHR
must not be applied to an entry point unless the entry point does not execute any invocation repack instructions -
VUID-RuntimeSpirv-shaderSubgroupRotateClustered-09566
IfshaderSubgroupRotateClustered
isVK_FALSE
, then theClusterSize
operand toOpGroupNonUniformRotateKHR
must not be used -
VUID-RuntimeSpirv-protectedNoFault-09645
IfprotectedNoFault
is not supported, theStorage
Class
of thePhysicalStorageBuffer
must not be used if the buffer being accessed is protected -
VUID-RuntimeSpirv-meshAndTaskShaderDerivatives-10153
IfmeshAndTaskShaderDerivatives
isVK_FALSE
, theDerivativeGroupLinearKHR
andDerivativeGroupQuadsKHR
execution modes must not be used in theMeshEXT
,MeshNV
,TaskEXT
, orTaskNV
Execution
Model
-
VUID-RuntimeSpirv-TileShadingQCOM-10698
TileShadingQCOM
capability must not be declared in the compute stage unless the tileShading feature is enabled -
VUID-RuntimeSpirv-TileShadingQCOM-10699
TheTileShadingQCOM
capability must not be declared in the fragment stage unless the tileShadingFragmentStage feature is enabled -
VUID-RuntimeSpirv-TileShadingQCOM-10700
A shader that enables SPIR-V capabilityTileShadingQCOM
must not be invoked outside a tile shading render pass -
VUID-RuntimeSpirv-TileShadingQCOM-10701
A compute shader that enables SPIR-V capabilityTileShadingQCOM
must 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
, thex
size inTileShadingRateQCOM
must be less than or equal to VkPhysicalDeviceTileShadingPropertiesQCOM.maxTileShadingRate.x -
VUID-RuntimeSpirv-y-10703
In compute shaders that enables SPIR-V capabilityTileShadingQCOM
, they
size inTileShadingRateQCOM
must be less than or equal to VkPhysicalDeviceTileShadingPropertiesQCOM.maxTileShadingRate.y -
VUID-RuntimeSpirv-z-10704
In compute shaders that enables SPIR-V capabilityTileShadingQCOM
, thez
size inTileShadingRateQCOM
must 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
::z
must equal0
-
VUID-RuntimeSpirv-OpImage-10706
AnOpImage
withStorage
Class
TileAttachmentQCOM
must not be consumed byOpImageTexelPointer
unless the tileShadingAtomicOps feature is enabled -
VUID-RuntimeSpirv-OpTypeImage-10707
AnOpTypeImage
withStorage
Class
TileAttachmentQCOM
must 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
AnOpTypeImage
withStorage
Class
TileAttachmentQCOM
must 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
AnOpTypeImage
withStorage
Class
TileAttachmentQCOM
must 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
AnOpTypeImage
withStorage
Class
TileAttachmentQCOM
must 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
AnOpTypeSampledImage
withStorage
Class
TileAttachmentQCOM
must 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 anOpTypeSampledImage
withStorage
Class
TileAttachmentQCOM
is consumed by any argument of the following operations,tileShadingImageProcessing
must be enabled:-
OpImageSampleWeightedQCOM
-
OpImageBoxFilterQCOM
-
OpImageBlockMatch*QCOM
-
-
VUID-RuntimeSpirv-Coordinate-10713
TheCoordinate
operand of anyOpImageRead
,OpImageSparseRead
,OpImageWrite
, orOpImageTexelPointer
instruction that consumes anOpTypeImage
with an imageStorage
Class
TileAttachmentQCOM
must not result in any texels accessed outside the boundaries of the current tile, computed as described in Tile Attachments -
VUID-RuntimeSpirv-Coordinate-10714
TheCoordinate
operand(s) of any of the following instructions that consumes anOpTypeSampledImage
with an image ofStorage
Class
TileAttachmentQCOM
must 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
AnOpImage
instruction 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 theConstOffset
orOffset
operands -
VUID-RuntimeSpirv-shaderTensorSupportedStages-09901
OpTypeTensorARM
,OpTensorReadARM
,OpTensorWriteARM
, orOpTensorQuerySizeARM
must not be used in shader stages not inshaderTensorSupportedStages
-
VUID-RuntimeSpirv-OpTypeTensorARM-09902
OpTypeTensorARM
with aShape
must not be used in shader stages -
VUID-RuntimeSpirv-OpTypeTensorARM-09907
OpTypeTensorARM
without aRank
must not be used in shader stages -
VUID-RuntimeSpirv-maxTensorShaderAccessArrayLength-09903
The length of an array returned byOpTensorReadARM
or passed as theObject
operand toOpTensorWriteARM
must 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
, orOpTensorWriteARM
instruction, respectively, must be less than or equal tomaxTensorShaderAccessSize
-
VUID-RuntimeSpirv-None-10824
If themaintenance9
feature is not enabled, theBase
operand of anyOpBitCount
,OpBitReverse
,OpBitFieldInsert
,OpBitFieldSExtract
, orOpBitFieldUExtract
instruction must be a 32-bit integer scalar or a vector of 32-bit integers -
VUID-RuntimeSpirv-GraphARM-09922
TheGraphARM
capability 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 thepNext
chain of VkDataGraphPipelineCreateInfoARM, theOpGraph
that is used by theOpGraphEntryPointARM
the pipeline is being created for must have anOpTypeGraphARM
that only usesOpTypeTensorARM
withShape
present -
VUID-RuntimeSpirv-pNext-09920
For each data graph pipeline created with a VkDataGraphPipelineShaderModuleCreateInfoARM structure included in thepNext
chain of VkDataGraphPipelineCreateInfoARM, all theOpGraphConstantARM
withOpTypeTensorARM
type used by theOpGraph
that is used by theOpGraphEntryPointARM
the pipeline is being created for must have anOpTypeTensorARM
withShape
present -
VUID-RuntimeSpirv-pNext-09921
For each data graph pipeline created with a VkDataGraphPipelineShaderModuleCreateInfoARM structure included in thepNext
chain of VkDataGraphPipelineCreateInfoARM, one and only one VkDataGraphPipelineConstantARM structure that satisfies all the following constraints must be present in VkDataGraphPipelineShaderModuleCreateInfoARM::pConstants
for eachOpGraphConstantARM
used by theOpGraph
that has aOpTypeTensorARM
type and is used by theOpGraphEntryPointARM
the pipeline is being created for:-
its
id
member must match theGraphConstantID
of theOpGraphConstantARM
-
its
pNext
chain must include a VkTensorDescriptionARM structure-
whose
dimensionCount
is equal to theRank
of theOpTypeTensorARM
of theOpGraphConstantARM
-
whose
pDimensions
array elements are individually and in order equal to the elements of the array that defines theShape
of theOpTypeTensorARM
of theOpGraphConstantARM
-
whose
format
is compatible with theElementType
of theOpTypeTensorARM
of theOpGraphConstantARM
-
-
-
VUID-RuntimeSpirv-pNext-09923
For each data graph pipeline created with a VkDataGraphPipelineShaderModuleCreateInfoARM structure included in thepNext
chain of VkDataGraphPipelineCreateInfoARM, one and only one VkDataGraphPipelineResourceInfoARM structure that satisfies all the following constraints must be present in VkDataGraphPipelineCreateInfoARM::pResourceInfos
for eachOpVariable
with aOpTypeTensorARM
type that is part of theInterface
of theOpGraphEntryPointARM
the pipeline is being created for:-
its
descriptorSet
member must match theDescriptorSet
decoration applied to theOpVariable
-
its
binding
member must match theBinding
decoration applied to theOpVariable
-
its
arrayElement
member must be zero ifOpVariable
is not aOpTypeArray
or ifOpVariable
is aOpTypeArray
ofOpTypeTensorARM
withShape
present -
its
pNext
chain must include a VkTensorDescriptionARM structure-
whose
dimensionCount
is equal to theRank
of theOpTypeTensorARM
of theOpVariable
or its elements -
whose
pDimensions
array elements are individually and in order equal to the elements of the array that defines theShape
of theOpTypeTensorARM
of theOpVariable
or its elements -
whose
format
is compatible with theElementType
of theOpTypeTensorARM
of theOpVariable
-
-
-
VUID-RuntimeSpirv-None-10834
Buffer indexing calculations must not wrap 32 bits
Document Notes
For more information, see the Vulkan Specification (NOTE: cannot determine Specification page containing this refpage).
This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.