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.