A SPIR-V module passed to vkCreateShaderModule must conform to the
following rules:
Scope for execution must be limited to:
Scope for memory must be limited to:
OriginLowerLeft execution mode must not be used; fragment
entry points must declare OriginUpperLeft.
PixelCenterInteger execution mode must not be used.
Pixels are always centered at half-integer coordinates.
Images
OpTypeImage must declare a scalar 32-bit float or 32-bit integer
type for the “Sampled Type”.
(RelaxedPrecision can be applied to a sampling instruction and to
the variable holding the result of a sampling instruction.)
OpSampledImage must only consume an “Image” operand whose type
has its “Sampled” operand set to 1.
SubpassData must be the
<id> of a constant vector (0,0), or if a layer coordinate is
used, must be a vector that was formed with constant 0 for the u
and v components.
OpTypeImage is ignored.
Decorations
GLSLShared and GLSLPacked decorations must not be used.
Flat, NoPerspective, Sample, and Centroid
decorations must not be used on variables with storage class other
than Input or on variables used in the interface of non-fragment
shader entry points.
Patch decoration must not be used on variables in the
interface of a vertex, geometry, or fragment shader stage’s entry
point.
OpTypeRuntimeArray must only be used for the last member of an
OpTypeStruct in the Uniform storage class.
Compute Shaders
LocalSize execution
mode or an object decorated with the WorkgroupSize decoration
must be specified.