cc298c676a
* Enable from Ryujinx.conf * Adapt to use OpenTK.NetStandard * Implement usage of UBOs for GLSL and SPIR-V * Fix a NVidia related issue * Use constant from UniformBinding
1125 lines
No EOL
29 KiB
C#
1125 lines
No EOL
29 KiB
C#
using System;
|
|
|
|
namespace Ryujinx.Graphics.Gal.Shader.SPIRV
|
|
{
|
|
public class BinaryForm
|
|
{
|
|
public const uint MagicNumber = 0x07230203;
|
|
|
|
public const uint VersionNumber = 0x00010000;
|
|
|
|
// I don't think Khronos would give us an Id
|
|
public const uint GeneratorMagicNumber = 0;
|
|
}
|
|
|
|
// https://github.com/KhronosGroup/SPIRV-Headers/blob/master/include/spirv/unified1/spirv.h
|
|
public enum SourceLanguage
|
|
{
|
|
Unknown = 0,
|
|
ESSL = 1,
|
|
GLSL = 2,
|
|
OpenCL_C = 3,
|
|
OpenCL_CPP = 4,
|
|
HLSL = 5,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum ExecutionModel
|
|
{
|
|
Vertex = 0,
|
|
TessellationControl = 1,
|
|
TessellationEvaluation = 2,
|
|
Geometry = 3,
|
|
Fragment = 4,
|
|
GLCompute = 5,
|
|
Kernel = 6,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum AddressingModel
|
|
{
|
|
Logical = 0,
|
|
Physical32 = 1,
|
|
Physical64 = 2,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum MemoryModel
|
|
{
|
|
Simple = 0,
|
|
GLSL450 = 1,
|
|
OpenCL = 2,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum ExecutionMode
|
|
{
|
|
Invocations = 0,
|
|
SpacingEqual = 1,
|
|
SpacingFractionalEven = 2,
|
|
SpacingFractionalOdd = 3,
|
|
VertexOrderCw = 4,
|
|
VertexOrderCcw = 5,
|
|
PixelCenterInteger = 6,
|
|
OriginUpperLeft = 7,
|
|
OriginLowerLeft = 8,
|
|
EarlyFragmentTests = 9,
|
|
PointMode = 10,
|
|
Xfb = 11,
|
|
DepthReplacing = 12,
|
|
DepthGreater = 14,
|
|
DepthLess = 15,
|
|
DepthUnchanged = 16,
|
|
LocalSize = 17,
|
|
LocalSizeHint = 18,
|
|
InputPoints = 19,
|
|
InputLines = 20,
|
|
InputLinesAdjacency = 21,
|
|
Triangles = 22,
|
|
InputTrianglesAdjacency = 23,
|
|
Quads = 24,
|
|
Isolines = 25,
|
|
OutputVertices = 26,
|
|
OutputPoints = 27,
|
|
OutputLineStrip = 28,
|
|
OutputTriangleStrip = 29,
|
|
VecTypeHint = 30,
|
|
ContractionOff = 31,
|
|
Initializer = 33,
|
|
Finalizer = 34,
|
|
SubgroupSize = 35,
|
|
SubgroupsPerWorkgroup = 36,
|
|
SubgroupsPerWorkgroupId = 37,
|
|
LocalSizeId = 38,
|
|
LocalSizeHintId = 39,
|
|
PostDepthCoverage = 4446,
|
|
StencilRefReplacingEXT = 5027,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum StorageClass
|
|
{
|
|
UniformConstant = 0,
|
|
Input = 1,
|
|
Uniform = 2,
|
|
Output = 3,
|
|
Workgroup = 4,
|
|
CrossWorkgroup = 5,
|
|
Private = 6,
|
|
Function = 7,
|
|
Generic = 8,
|
|
PushConstant = 9,
|
|
AtomicCounter = 10,
|
|
Image = 11,
|
|
StorageBuffer = 12,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum Dim
|
|
{
|
|
Dim1D = 0,
|
|
Dim2D = 1,
|
|
Dim3D = 2,
|
|
Cube = 3,
|
|
Rect = 4,
|
|
Buffer = 5,
|
|
SubpassData = 6,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum SamplerAddressingMode
|
|
{
|
|
None = 0,
|
|
ClampToEdge = 1,
|
|
Clamp = 2,
|
|
Repeat = 3,
|
|
RepeatMirrored = 4,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum SamplerFilterMode
|
|
{
|
|
Nearest = 0,
|
|
Linear = 1,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum ImageFormat
|
|
{
|
|
Unknown = 0,
|
|
Rgba32f = 1,
|
|
Rgba16f = 2,
|
|
R32f = 3,
|
|
Rgba8 = 4,
|
|
Rgba8Snorm = 5,
|
|
Rg32f = 6,
|
|
Rg16f = 7,
|
|
R11fG11fB10f = 8,
|
|
R16f = 9,
|
|
Rgba16 = 10,
|
|
Rgb10A2 = 11,
|
|
Rg16 = 12,
|
|
Rg8 = 13,
|
|
R16 = 14,
|
|
R8 = 15,
|
|
Rgba16Snorm = 16,
|
|
Rg16Snorm = 17,
|
|
Rg8Snorm = 18,
|
|
R16Snorm = 19,
|
|
R8Snorm = 20,
|
|
Rgba32i = 21,
|
|
Rgba16i = 22,
|
|
Rgba8i = 23,
|
|
R32i = 24,
|
|
Rg32i = 25,
|
|
Rg16i = 26,
|
|
Rg8i = 27,
|
|
R16i = 28,
|
|
R8i = 29,
|
|
Rgba32ui = 30,
|
|
Rgba16ui = 31,
|
|
Rgba8ui = 32,
|
|
R32ui = 33,
|
|
Rgb10a2ui = 34,
|
|
Rg32ui = 35,
|
|
Rg16ui = 36,
|
|
Rg8ui = 37,
|
|
R16ui = 38,
|
|
R8ui = 39,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum ImageChannelOrder
|
|
{
|
|
R = 0,
|
|
A = 1,
|
|
RG = 2,
|
|
RA = 3,
|
|
RGB = 4,
|
|
RGBA = 5,
|
|
BGRA = 6,
|
|
ARGB = 7,
|
|
Intensity = 8,
|
|
Luminance = 9,
|
|
Rx = 10,
|
|
RGx = 11,
|
|
RGBx = 12,
|
|
Depth = 13,
|
|
DepthStencil = 14,
|
|
sRGB = 15,
|
|
sRGBx = 16,
|
|
sRGBA = 17,
|
|
sBGRA = 18,
|
|
ABGR = 19,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum ImageChannelDataType
|
|
{
|
|
SnormInt8 = 0,
|
|
SnormInt16 = 1,
|
|
UnormInt8 = 2,
|
|
UnormInt16 = 3,
|
|
UnormShort565 = 4,
|
|
UnormShort555 = 5,
|
|
UnormInt101010 = 6,
|
|
SignedInt8 = 7,
|
|
SignedInt16 = 8,
|
|
SignedInt32 = 9,
|
|
UnsignedInt8 = 10,
|
|
UnsignedInt16 = 11,
|
|
UnsignedInt32 = 12,
|
|
HalfFloat = 13,
|
|
Float = 14,
|
|
UnormInt24 = 15,
|
|
UnormInt101010_2 = 16,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum ImageOperandsShift
|
|
{
|
|
BiasShift = 0,
|
|
LodShift = 1,
|
|
GradShift = 2,
|
|
ConstOffsetShift = 3,
|
|
OffsetShift = 4,
|
|
ConstOffsetsShift = 5,
|
|
SampleShift = 6,
|
|
MinLodShift = 7,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
[Flags]
|
|
public enum ImageOperands
|
|
{
|
|
None = 0,
|
|
Bias = 0x00000001,
|
|
Lod = 0x00000002,
|
|
Grad = 0x00000004,
|
|
ConstOffset = 0x00000008,
|
|
Offset = 0x00000010,
|
|
ConstOffsets = 0x00000020,
|
|
Sample = 0x00000040,
|
|
MinLod = 0x00000080,
|
|
}
|
|
|
|
[Flags]
|
|
public enum FPFastMathMode
|
|
{
|
|
None = 0,
|
|
NotNaN = 0x00000001,
|
|
NotInf = 0x00000002,
|
|
NSZ = 0x00000004,
|
|
AllowRecip = 0x00000008,
|
|
Fast = 0x00000010,
|
|
}
|
|
|
|
public enum FPRoundingMode
|
|
{
|
|
RTE = 0,
|
|
RTZ = 1,
|
|
RTP = 2,
|
|
RTN = 3,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum LinkageType
|
|
{
|
|
Export = 0,
|
|
Import = 1,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum AccessQualifier
|
|
{
|
|
ReadOnly = 0,
|
|
WriteOnly = 1,
|
|
ReadWrite = 2,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum FunctionParameterAttribute
|
|
{
|
|
Zext = 0,
|
|
Sext = 1,
|
|
ByVal = 2,
|
|
Sret = 3,
|
|
NoAlias = 4,
|
|
NoCapture = 5,
|
|
NoWrite = 6,
|
|
NoReadWrite = 7,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum Decoration
|
|
{
|
|
RelaxedPrecision = 0,
|
|
SpecId = 1,
|
|
Block = 2,
|
|
BufferBlock = 3,
|
|
RowMajor = 4,
|
|
ColMajor = 5,
|
|
ArrayStride = 6,
|
|
MatrixStride = 7,
|
|
GLSLShared = 8,
|
|
GLSLPacked = 9,
|
|
CPacked = 10,
|
|
BuiltIn = 11,
|
|
NoPerspective = 13,
|
|
Flat = 14,
|
|
Patch = 15,
|
|
Centroid = 16,
|
|
Sample = 17,
|
|
Invariant = 18,
|
|
Restrict = 19,
|
|
Aliased = 20,
|
|
Volatile = 21,
|
|
Constant = 22,
|
|
Coherent = 23,
|
|
NonWritable = 24,
|
|
NonReadable = 25,
|
|
Uniform = 26,
|
|
SaturatedConversion = 28,
|
|
Stream = 29,
|
|
Location = 30,
|
|
Component = 31,
|
|
Index = 32,
|
|
Binding = 33,
|
|
DescriptorSet = 34,
|
|
Offset = 35,
|
|
XfbBuffer = 36,
|
|
XfbStride = 37,
|
|
FuncParamAttr = 38,
|
|
FPRoundingMode = 39,
|
|
FPFastMathMode = 40,
|
|
LinkageAttributes = 41,
|
|
NoContraction = 42,
|
|
InputAttachmentIndex = 43,
|
|
Alignment = 44,
|
|
MaxByteOffset = 45,
|
|
AlignmentId = 46,
|
|
MaxByteOffsetId = 47,
|
|
ExplicitInterpAMD = 4999,
|
|
OverrideCoverageNV = 5248,
|
|
PassthroughNV = 5250,
|
|
ViewportRelativeNV = 5252,
|
|
SecondaryViewportRelativeNV = 5256,
|
|
NonUniformEXT = 5300,
|
|
HlslCounterBufferGOOGLE = 5634,
|
|
HlslSemanticGOOGLE = 5635,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum BuiltIn
|
|
{
|
|
Position = 0,
|
|
PointSize = 1,
|
|
ClipDistance = 3,
|
|
CullDistance = 4,
|
|
VertexId = 5,
|
|
InstanceId = 6,
|
|
PrimitiveId = 7,
|
|
InvocationId = 8,
|
|
Layer = 9,
|
|
ViewportIndex = 10,
|
|
TessLevelOuter = 11,
|
|
TessLevelInner = 12,
|
|
TessCoord = 13,
|
|
PatchVertices = 14,
|
|
FragCoord = 15,
|
|
PointCoord = 16,
|
|
FrontFacing = 17,
|
|
SampleId = 18,
|
|
SamplePosition = 19,
|
|
SampleMask = 20,
|
|
FragDepth = 22,
|
|
HelperInvocation = 23,
|
|
NumWorkgroups = 24,
|
|
WorkgroupSize = 25,
|
|
WorkgroupId = 26,
|
|
LocalInvocationId = 27,
|
|
GlobalInvocationId = 28,
|
|
LocalInvocationIndex = 29,
|
|
WorkDim = 30,
|
|
GlobalSize = 31,
|
|
EnqueuedWorkgroupSize = 32,
|
|
GlobalOffset = 33,
|
|
GlobalLinearId = 34,
|
|
SubgroupSize = 36,
|
|
SubgroupMaxSize = 37,
|
|
NumSubgroups = 38,
|
|
NumEnqueuedSubgroups = 39,
|
|
SubgroupId = 40,
|
|
SubgroupLocalInvocationId = 41,
|
|
VertexIndex = 42,
|
|
InstanceIndex = 43,
|
|
SubgroupEqMask = 4416,
|
|
SubgroupEqMaskKHR = 4416,
|
|
SubgroupGeMask = 4417,
|
|
SubgroupGeMaskKHR = 4417,
|
|
SubgroupGtMask = 4418,
|
|
SubgroupGtMaskKHR = 4418,
|
|
SubgroupLeMask = 4419,
|
|
SubgroupLeMaskKHR = 4419,
|
|
SubgroupLtMask = 4420,
|
|
SubgroupLtMaskKHR = 4420,
|
|
BaseVertex = 4424,
|
|
BaseInstance = 4425,
|
|
DrawIndex = 4426,
|
|
DeviceIndex = 4438,
|
|
ViewIndex = 4440,
|
|
BaryCoordNoPerspAMD = 4992,
|
|
BaryCoordNoPerspCentroidAMD = 4993,
|
|
BaryCoordNoPerspSampleAMD = 4994,
|
|
BaryCoordSmoothAMD = 4995,
|
|
BaryCoordSmoothCentroidAMD = 4996,
|
|
BaryCoordSmoothSampleAMD = 4997,
|
|
BaryCoordPullModelAMD = 4998,
|
|
FragStencilRefEXT = 5014,
|
|
ViewportMaskNV = 5253,
|
|
SecondaryPositionNV = 5257,
|
|
SecondaryViewportMaskNV = 5258,
|
|
PositionPerViewNV = 5261,
|
|
ViewportMaskPerViewNV = 5262,
|
|
FullyCoveredEXT = 5264,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
[Flags]
|
|
public enum SelectionControl
|
|
{
|
|
None = 0,
|
|
Flatten = 0x00000001,
|
|
DontFlatten = 0x00000002,
|
|
}
|
|
|
|
[Flags]
|
|
public enum LoopControl
|
|
{
|
|
None = 0,
|
|
Unroll = 0x00000001,
|
|
DontUnroll = 0x00000002,
|
|
DependencyInfinite = 0x00000004,
|
|
DependencyLength = 0x00000008,
|
|
}
|
|
|
|
[Flags]
|
|
public enum FunctionControl
|
|
{
|
|
None = 0,
|
|
Inline = 0x00000001,
|
|
DontInline = 0x00000002,
|
|
Pure = 0x00000004,
|
|
Const = 0x00000008,
|
|
}
|
|
|
|
[Flags]
|
|
public enum MemorySemantics
|
|
{
|
|
None = 0,
|
|
Acquire = 0x00000002,
|
|
Release = 0x00000004,
|
|
AcquireRelease = 0x00000008,
|
|
SequentiallyConsistent = 0x00000010,
|
|
UniformMemory = 0x00000040,
|
|
SubgroupMemory = 0x00000080,
|
|
WorkgroupMemory = 0x00000100,
|
|
CrossWorkgroupMemory = 0x00000200,
|
|
AtomicCounterMemory = 0x00000400,
|
|
ImageMemory = 0x00000800,
|
|
}
|
|
|
|
[Flags]
|
|
public enum MemoryAccess
|
|
{
|
|
None = 0,
|
|
Volatile = 0x00000001,
|
|
Aligned = 0x00000002,
|
|
Nontemporal = 0x00000004,
|
|
}
|
|
|
|
public enum Scope
|
|
{
|
|
CrossDevice = 0,
|
|
Device = 1,
|
|
Workgroup = 2,
|
|
Subgroup = 3,
|
|
Invocation = 4,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum GroupOperation
|
|
{
|
|
Reduce = 0,
|
|
InclusiveScan = 1,
|
|
ExclusiveScan = 2,
|
|
ClusteredReduce = 3,
|
|
PartitionedReduceNV = 6,
|
|
PartitionedInclusiveScanNV = 7,
|
|
PartitionedExclusiveScanNV = 8,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum KernelEnqueueFlags
|
|
{
|
|
NoWait = 0,
|
|
WaitKernel = 1,
|
|
WaitWorkGroup = 2,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
[Flags]
|
|
public enum KernelProfilingInfo
|
|
{
|
|
None = 0,
|
|
CmdExecTime = 0x00000001,
|
|
}
|
|
|
|
public enum Capability
|
|
{
|
|
Matrix = 0,
|
|
Shader = 1,
|
|
Geometry = 2,
|
|
Tessellation = 3,
|
|
Addresses = 4,
|
|
Linkage = 5,
|
|
Kernel = 6,
|
|
Vector16 = 7,
|
|
Float16Buffer = 8,
|
|
Float16 = 9,
|
|
Float64 = 10,
|
|
Int64 = 11,
|
|
Int64Atomics = 12,
|
|
ImageBasic = 13,
|
|
ImageReadWrite = 14,
|
|
ImageMipmap = 15,
|
|
Pipes = 17,
|
|
Groups = 18,
|
|
DeviceEnqueue = 19,
|
|
LiteralSampler = 20,
|
|
AtomicStorage = 21,
|
|
Int16 = 22,
|
|
TessellationPointSize = 23,
|
|
GeometryPointSize = 24,
|
|
ImageGatherExtended = 25,
|
|
StorageImageMultisample = 27,
|
|
UniformBufferArrayDynamicIndexing = 28,
|
|
SampledImageArrayDynamicIndexing = 29,
|
|
StorageBufferArrayDynamicIndexing = 30,
|
|
StorageImageArrayDynamicIndexing = 31,
|
|
ClipDistance = 32,
|
|
CullDistance = 33,
|
|
ImageCubeArray = 34,
|
|
SampleRateShading = 35,
|
|
ImageRect = 36,
|
|
SampledRect = 37,
|
|
GenericPointer = 38,
|
|
Int8 = 39,
|
|
InputAttachment = 40,
|
|
SparseResidency = 41,
|
|
MinLod = 42,
|
|
Sampled1D = 43,
|
|
Image1D = 44,
|
|
SampledCubeArray = 45,
|
|
SampledBuffer = 46,
|
|
ImageBuffer = 47,
|
|
ImageMSArray = 48,
|
|
StorageImageExtendedFormats = 49,
|
|
ImageQuery = 50,
|
|
DerivativeControl = 51,
|
|
InterpolationFunction = 52,
|
|
TransformFeedback = 53,
|
|
GeometryStreams = 54,
|
|
StorageImageReadWithoutFormat = 55,
|
|
StorageImageWriteWithoutFormat = 56,
|
|
MultiViewport = 57,
|
|
SubgroupDispatch = 58,
|
|
NamedBarrier = 59,
|
|
PipeStorage = 60,
|
|
GroupNonUniform = 61,
|
|
GroupNonUniformVote = 62,
|
|
GroupNonUniformArithmetic = 63,
|
|
GroupNonUniformBallot = 64,
|
|
GroupNonUniformShuffle = 65,
|
|
GroupNonUniformShuffleRelative = 66,
|
|
GroupNonUniformClustered = 67,
|
|
GroupNonUniformQuad = 68,
|
|
SubgroupBallotKHR = 4423,
|
|
DrawParameters = 4427,
|
|
SubgroupVoteKHR = 4431,
|
|
StorageBuffer16BitAccess = 4433,
|
|
StorageUniformBufferBlock16 = 4433,
|
|
StorageUniform16 = 4434,
|
|
UniformAndStorageBuffer16BitAccess = 4434,
|
|
StoragePushConstant16 = 4435,
|
|
StorageInputOutput16 = 4436,
|
|
DeviceGroup = 4437,
|
|
MultiView = 4439,
|
|
VariablePointersStorageBuffer = 4441,
|
|
VariablePointers = 4442,
|
|
AtomicStorageOps = 4445,
|
|
SampleMaskPostDepthCoverage = 4447,
|
|
Float16ImageAMD = 5008,
|
|
ImageGatherBiasLodAMD = 5009,
|
|
FragmentMaskAMD = 5010,
|
|
StencilExportEXT = 5013,
|
|
ImageReadWriteLodAMD = 5015,
|
|
SampleMaskOverrideCoverageNV = 5249,
|
|
GeometryShaderPassthroughNV = 5251,
|
|
ShaderViewportIndexLayerEXT = 5254,
|
|
ShaderViewportIndexLayerNV = 5254,
|
|
ShaderViewportMaskNV = 5255,
|
|
ShaderStereoViewNV = 5259,
|
|
PerViewAttributesNV = 5260,
|
|
FragmentFullyCoveredEXT = 5265,
|
|
GroupNonUniformPartitionedNV = 5297,
|
|
ShaderNonUniformEXT = 5301,
|
|
RuntimeDescriptorArrayEXT = 5302,
|
|
InputAttachmentArrayDynamicIndexingEXT = 5303,
|
|
UniformTexelBufferArrayDynamicIndexingEXT = 5304,
|
|
StorageTexelBufferArrayDynamicIndexingEXT = 5305,
|
|
UniformBufferArrayNonUniformIndexingEXT = 5306,
|
|
SampledImageArrayNonUniformIndexingEXT = 5307,
|
|
StorageBufferArrayNonUniformIndexingEXT = 5308,
|
|
StorageImageArrayNonUniformIndexingEXT = 5309,
|
|
InputAttachmentArrayNonUniformIndexingEXT = 5310,
|
|
UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
|
|
StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
|
|
SubgroupShuffleINTEL = 5568,
|
|
SubgroupBufferBlockIOINTEL = 5569,
|
|
SubgroupImageBlockIOINTEL = 5570,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
public enum OpCode
|
|
{
|
|
Nop = 0,
|
|
Undef = 1,
|
|
SourceContinued = 2,
|
|
Source = 3,
|
|
SourceExtension = 4,
|
|
Name = 5,
|
|
MemberName = 6,
|
|
String = 7,
|
|
Line = 8,
|
|
Extension = 10,
|
|
ExtInstImport = 11,
|
|
ExtInst = 12,
|
|
MemoryModel = 14,
|
|
EntryPoint = 15,
|
|
ExecutionMode = 16,
|
|
Capability = 17,
|
|
TypeVoid = 19,
|
|
TypeBool = 20,
|
|
TypeInt = 21,
|
|
TypeFloat = 22,
|
|
TypeVector = 23,
|
|
TypeMatrix = 24,
|
|
TypeImage = 25,
|
|
TypeSampler = 26,
|
|
TypeSampledImage = 27,
|
|
TypeArray = 28,
|
|
TypeRuntimeArray = 29,
|
|
TypeStruct = 30,
|
|
TypeOpaque = 31,
|
|
TypePointer = 32,
|
|
TypeFunction = 33,
|
|
TypeEvent = 34,
|
|
TypeDeviceEvent = 35,
|
|
TypeReserveId = 36,
|
|
TypeQueue = 37,
|
|
TypePipe = 38,
|
|
TypeForwardPointer = 39,
|
|
ConstantTrue = 41,
|
|
ConstantFalse = 42,
|
|
Constant = 43,
|
|
ConstantComposite = 44,
|
|
ConstantSampler = 45,
|
|
ConstantNull = 46,
|
|
SpecConstantTrue = 48,
|
|
SpecConstantFalse = 49,
|
|
SpecConstant = 50,
|
|
SpecConstantComposite = 51,
|
|
SpecConstantOp = 52,
|
|
Function = 54,
|
|
FunctionParameter = 55,
|
|
FunctionEnd = 56,
|
|
FunctionCall = 57,
|
|
Variable = 59,
|
|
ImageTexelPointer = 60,
|
|
Load = 61,
|
|
Store = 62,
|
|
CopyMemory = 63,
|
|
CopyMemorySized = 64,
|
|
AccessChain = 65,
|
|
InBoundsAccessChain = 66,
|
|
PtrAccessChain = 67,
|
|
ArrayLength = 68,
|
|
GenericPtrMemSemantics = 69,
|
|
InBoundsPtrAccessChain = 70,
|
|
Decorate = 71,
|
|
MemberDecorate = 72,
|
|
DecorationGroup = 73,
|
|
GroupDecorate = 74,
|
|
GroupMemberDecorate = 75,
|
|
VectorExtractDynamic = 77,
|
|
VectorInsertDynamic = 78,
|
|
VectorShuffle = 79,
|
|
CompositeConstruct = 80,
|
|
CompositeExtract = 81,
|
|
CompositeInsert = 82,
|
|
CopyObject = 83,
|
|
Transpose = 84,
|
|
SampledImage = 86,
|
|
ImageSampleImplicitLod = 87,
|
|
ImageSampleExplicitLod = 88,
|
|
ImageSampleDrefImplicitLod = 89,
|
|
ImageSampleDrefExplicitLod = 90,
|
|
ImageSampleProjImplicitLod = 91,
|
|
ImageSampleProjExplicitLod = 92,
|
|
ImageSampleProjDrefImplicitLod = 93,
|
|
ImageSampleProjDrefExplicitLod = 94,
|
|
ImageFetch = 95,
|
|
ImageGather = 96,
|
|
ImageDrefGather = 97,
|
|
ImageRead = 98,
|
|
ImageWrite = 99,
|
|
Image = 100,
|
|
ImageQueryFormat = 101,
|
|
ImageQueryOrder = 102,
|
|
ImageQuerySizeLod = 103,
|
|
ImageQuerySize = 104,
|
|
ImageQueryLod = 105,
|
|
ImageQueryLevels = 106,
|
|
ImageQuerySamples = 107,
|
|
ConvertFToU = 109,
|
|
ConvertFToS = 110,
|
|
ConvertSToF = 111,
|
|
ConvertUToF = 112,
|
|
UConvert = 113,
|
|
SConvert = 114,
|
|
FConvert = 115,
|
|
QuantizeToF16 = 116,
|
|
ConvertPtrToU = 117,
|
|
SatConvertSToU = 118,
|
|
SatConvertUToS = 119,
|
|
ConvertUToPtr = 120,
|
|
PtrCastToGeneric = 121,
|
|
GenericCastToPtr = 122,
|
|
GenericCastToPtrExplicit = 123,
|
|
Bitcast = 124,
|
|
SNegate = 126,
|
|
FNegate = 127,
|
|
IAdd = 128,
|
|
FAdd = 129,
|
|
ISub = 130,
|
|
FSub = 131,
|
|
IMul = 132,
|
|
FMul = 133,
|
|
UDiv = 134,
|
|
SDiv = 135,
|
|
FDiv = 136,
|
|
UMod = 137,
|
|
SRem = 138,
|
|
SMod = 139,
|
|
FRem = 140,
|
|
FMod = 141,
|
|
VectorTimesScalar = 142,
|
|
MatrixTimesScalar = 143,
|
|
VectorTimesMatrix = 144,
|
|
MatrixTimesVector = 145,
|
|
MatrixTimesMatrix = 146,
|
|
OuterProduct = 147,
|
|
Dot = 148,
|
|
IAddCarry = 149,
|
|
ISubBorrow = 150,
|
|
UMulExtended = 151,
|
|
SMulExtended = 152,
|
|
Any = 154,
|
|
All = 155,
|
|
IsNan = 156,
|
|
IsInf = 157,
|
|
IsFinite = 158,
|
|
IsNormal = 159,
|
|
SignBitSet = 160,
|
|
LessOrGreater = 161,
|
|
Ordered = 162,
|
|
Unordered = 163,
|
|
LogicalEqual = 164,
|
|
LogicalNotEqual = 165,
|
|
LogicalOr = 166,
|
|
LogicalAnd = 167,
|
|
LogicalNot = 168,
|
|
Select = 169,
|
|
IEqual = 170,
|
|
INotEqual = 171,
|
|
UGreaterThan = 172,
|
|
SGreaterThan = 173,
|
|
UGreaterThanEqual = 174,
|
|
SGreaterThanEqual = 175,
|
|
ULessThan = 176,
|
|
SLessThan = 177,
|
|
ULessThanEqual = 178,
|
|
SLessThanEqual = 179,
|
|
FOrdEqual = 180,
|
|
FUnordEqual = 181,
|
|
FOrdNotEqual = 182,
|
|
FUnordNotEqual = 183,
|
|
FOrdLessThan = 184,
|
|
FUnordLessThan = 185,
|
|
FOrdGreaterThan = 186,
|
|
FUnordGreaterThan = 187,
|
|
FOrdLessThanEqual = 188,
|
|
FUnordLessThanEqual = 189,
|
|
FOrdGreaterThanEqual = 190,
|
|
FUnordGreaterThanEqual = 191,
|
|
ShiftRightLogical = 194,
|
|
ShiftRightArithmetic = 195,
|
|
ShiftLeftLogical = 196,
|
|
BitwiseOr = 197,
|
|
BitwiseXor = 198,
|
|
BitwiseAnd = 199,
|
|
Not = 200,
|
|
BitFieldInsert = 201,
|
|
BitFieldSExtract = 202,
|
|
BitFieldUExtract = 203,
|
|
BitReverse = 204,
|
|
BitCount = 205,
|
|
DPdx = 207,
|
|
DPdy = 208,
|
|
Fwidth = 209,
|
|
DPdxFine = 210,
|
|
DPdyFine = 211,
|
|
FwidthFine = 212,
|
|
DPdxCoarse = 213,
|
|
DPdyCoarse = 214,
|
|
FwidthCoarse = 215,
|
|
EmitVertex = 218,
|
|
EndPrimitive = 219,
|
|
EmitStreamVertex = 220,
|
|
EndStreamPrimitive = 221,
|
|
ControlBarrier = 224,
|
|
MemoryBarrier = 225,
|
|
AtomicLoad = 227,
|
|
AtomicStore = 228,
|
|
AtomicExchange = 229,
|
|
AtomicCompareExchange = 230,
|
|
AtomicCompareExchangeWeak = 231,
|
|
AtomicIIncrement = 232,
|
|
AtomicIDecrement = 233,
|
|
AtomicIAdd = 234,
|
|
AtomicISub = 235,
|
|
AtomicSMin = 236,
|
|
AtomicUMin = 237,
|
|
AtomicSMax = 238,
|
|
AtomicUMax = 239,
|
|
AtomicAnd = 240,
|
|
AtomicOr = 241,
|
|
AtomicXor = 242,
|
|
Phi = 245,
|
|
LoopMerge = 246,
|
|
SelectionMerge = 247,
|
|
Label = 248,
|
|
Branch = 249,
|
|
BranchConditional = 250,
|
|
Switch = 251,
|
|
Kill = 252,
|
|
Return = 253,
|
|
ReturnValue = 254,
|
|
Unreachable = 255,
|
|
LifetimeStart = 256,
|
|
LifetimeStop = 257,
|
|
GroupAsyncCopy = 259,
|
|
GroupWaitEvents = 260,
|
|
GroupAll = 261,
|
|
GroupAny = 262,
|
|
GroupBroadcast = 263,
|
|
GroupIAdd = 264,
|
|
GroupFAdd = 265,
|
|
GroupFMin = 266,
|
|
GroupUMin = 267,
|
|
GroupSMin = 268,
|
|
GroupFMax = 269,
|
|
GroupUMax = 270,
|
|
GroupSMax = 271,
|
|
ReadPipe = 274,
|
|
WritePipe = 275,
|
|
ReservedReadPipe = 276,
|
|
ReservedWritePipe = 277,
|
|
ReserveReadPipePackets = 278,
|
|
ReserveWritePipePackets = 279,
|
|
CommitReadPipe = 280,
|
|
CommitWritePipe = 281,
|
|
IsValidReserveId = 282,
|
|
GetNumPipePackets = 283,
|
|
GetMaxPipePackets = 284,
|
|
GroupReserveReadPipePackets = 285,
|
|
GroupReserveWritePipePackets = 286,
|
|
GroupCommitReadPipe = 287,
|
|
GroupCommitWritePipe = 288,
|
|
EnqueueMarker = 291,
|
|
EnqueueKernel = 292,
|
|
GetKernelNDrangeSubGroupCount = 293,
|
|
GetKernelNDrangeMaxSubGroupSize = 294,
|
|
GetKernelWorkGroupSize = 295,
|
|
GetKernelPreferredWorkGroupSizeMultiple = 296,
|
|
RetainEvent = 297,
|
|
ReleaseEvent = 298,
|
|
CreateUserEvent = 299,
|
|
IsValidEvent = 300,
|
|
SetUserEventStatus = 301,
|
|
CaptureEventProfilingInfo = 302,
|
|
GetDefaultQueue = 303,
|
|
BuildNDRange = 304,
|
|
ImageSparseSampleImplicitLod = 305,
|
|
ImageSparseSampleExplicitLod = 306,
|
|
ImageSparseSampleDrefImplicitLod = 307,
|
|
ImageSparseSampleDrefExplicitLod = 308,
|
|
ImageSparseSampleProjImplicitLod = 309,
|
|
ImageSparseSampleProjExplicitLod = 310,
|
|
ImageSparseSampleProjDrefImplicitLod = 311,
|
|
ImageSparseSampleProjDrefExplicitLod = 312,
|
|
ImageSparseFetch = 313,
|
|
ImageSparseGather = 314,
|
|
ImageSparseDrefGather = 315,
|
|
ImageSparseTexelsResident = 316,
|
|
NoLine = 317,
|
|
AtomicFlagTestAndSet = 318,
|
|
AtomicFlagClear = 319,
|
|
ImageSparseRead = 320,
|
|
SizeOf = 321,
|
|
TypePipeStorage = 322,
|
|
ConstantPipeStorage = 323,
|
|
CreatePipeFromPipeStorage = 324,
|
|
GetKernelLocalSizeForSubgroupCount = 325,
|
|
GetKernelMaxNumSubgroups = 326,
|
|
TypeNamedBarrier = 327,
|
|
NamedBarrierInitialize = 328,
|
|
MemoryNamedBarrier = 329,
|
|
ModuleProcessed = 330,
|
|
ExecutionModeId = 331,
|
|
DecorateId = 332,
|
|
GroupNonUniformElect = 333,
|
|
GroupNonUniformAll = 334,
|
|
GroupNonUniformAny = 335,
|
|
GroupNonUniformAllEqual = 336,
|
|
GroupNonUniformBroadcast = 337,
|
|
GroupNonUniformBroadcastFirst = 338,
|
|
GroupNonUniformBallot = 339,
|
|
GroupNonUniformInverseBallot = 340,
|
|
GroupNonUniformBallotBitExtract = 341,
|
|
GroupNonUniformBallotBitCount = 342,
|
|
GroupNonUniformBallotFindLSB = 343,
|
|
GroupNonUniformBallotFindMSB = 344,
|
|
GroupNonUniformShuffle = 345,
|
|
GroupNonUniformShuffleXor = 346,
|
|
GroupNonUniformShuffleUp = 347,
|
|
GroupNonUniformShuffleDown = 348,
|
|
GroupNonUniformIAdd = 349,
|
|
GroupNonUniformFAdd = 350,
|
|
GroupNonUniformIMul = 351,
|
|
GroupNonUniformFMul = 352,
|
|
GroupNonUniformSMin = 353,
|
|
GroupNonUniformUMin = 354,
|
|
GroupNonUniformFMin = 355,
|
|
GroupNonUniformSMax = 356,
|
|
GroupNonUniformUMax = 357,
|
|
GroupNonUniformFMax = 358,
|
|
GroupNonUniformBitwiseAnd = 359,
|
|
GroupNonUniformBitwiseOr = 360,
|
|
GroupNonUniformBitwiseXor = 361,
|
|
GroupNonUniformLogicalAnd = 362,
|
|
GroupNonUniformLogicalOr = 363,
|
|
GroupNonUniformLogicalXor = 364,
|
|
GroupNonUniformQuadBroadcast = 365,
|
|
GroupNonUniformQuadSwap = 366,
|
|
SubgroupBallotKHR = 4421,
|
|
SubgroupFirstInvocationKHR = 4422,
|
|
SubgroupAllKHR = 4428,
|
|
SubgroupAnyKHR = 4429,
|
|
SubgroupAllEqualKHR = 4430,
|
|
SubgroupReadInvocationKHR = 4432,
|
|
GroupIAddNonUniformAMD = 5000,
|
|
GroupFAddNonUniformAMD = 5001,
|
|
GroupFMinNonUniformAMD = 5002,
|
|
GroupUMinNonUniformAMD = 5003,
|
|
GroupSMinNonUniformAMD = 5004,
|
|
GroupFMaxNonUniformAMD = 5005,
|
|
GroupUMaxNonUniformAMD = 5006,
|
|
GroupSMaxNonUniformAMD = 5007,
|
|
FragmentMaskFetchAMD = 5011,
|
|
FragmentFetchAMD = 5012,
|
|
GroupNonUniformPartitionNV = 5296,
|
|
SubgroupShuffleINTEL = 5571,
|
|
SubgroupShuffleDownINTEL = 5572,
|
|
SubgroupShuffleUpINTEL = 5573,
|
|
SubgroupShuffleXorINTEL = 5574,
|
|
SubgroupBlockReadINTEL = 5575,
|
|
SubgroupBlockWriteINTEL = 5576,
|
|
SubgroupImageBlockReadINTEL = 5577,
|
|
SubgroupImageBlockWriteINTEL = 5578,
|
|
DecorateStringGOOGLE = 5632,
|
|
MemberDecorateStringGOOGLE = 5633,
|
|
Max = 0x7fffffff,
|
|
}
|
|
|
|
// https://github.com/KhronosGroup/SPIRV-Headers/blob/master/include/spirv/unified1/GLSL.std.450.h
|
|
public enum GLSLstd450
|
|
{
|
|
Bad = 0, // Don't use
|
|
|
|
Round = 1,
|
|
RoundEven = 2,
|
|
Trunc = 3,
|
|
FAbs = 4,
|
|
SAbs = 5,
|
|
FSign = 6,
|
|
SSign = 7,
|
|
Floor = 8,
|
|
Ceil = 9,
|
|
Fract = 10,
|
|
|
|
Radians = 11,
|
|
Degrees = 12,
|
|
Sin = 13,
|
|
Cos = 14,
|
|
Tan = 15,
|
|
Asin = 16,
|
|
Acos = 17,
|
|
Atan = 18,
|
|
Sinh = 19,
|
|
Cosh = 20,
|
|
Tanh = 21,
|
|
Asinh = 22,
|
|
Acosh = 23,
|
|
Atanh = 24,
|
|
Atan2 = 25,
|
|
|
|
Pow = 26,
|
|
Exp = 27,
|
|
Log = 28,
|
|
Exp2 = 29,
|
|
Log2 = 30,
|
|
Sqrt = 31,
|
|
InverseSqrt = 32,
|
|
|
|
Determinant = 33,
|
|
MatrixInverse = 34,
|
|
|
|
Modf = 35, // second operand needs an OpVariable to write to
|
|
ModfStruct = 36, // no OpVariable operand
|
|
FMin = 37,
|
|
UMin = 38,
|
|
SMin = 39,
|
|
FMax = 40,
|
|
UMax = 41,
|
|
SMax = 42,
|
|
FClamp = 43,
|
|
UClamp = 44,
|
|
SClamp = 45,
|
|
FMix = 46,
|
|
IMix = 47, // Reserved
|
|
Step = 48,
|
|
SmoothStep = 49,
|
|
|
|
Fma = 50,
|
|
Frexp = 51, // second operand needs an OpVariable to write to
|
|
FrexpStruct = 52, // no OpVariable operand
|
|
Ldexp = 53,
|
|
|
|
PackSnorm4x8 = 54,
|
|
PackUnorm4x8 = 55,
|
|
PackSnorm2x16 = 56,
|
|
PackUnorm2x16 = 57,
|
|
PackHalf2x16 = 58,
|
|
PackDouble2x32 = 59,
|
|
UnpackSnorm2x16 = 60,
|
|
UnpackUnorm2x16 = 61,
|
|
UnpackHalf2x16 = 62,
|
|
UnpackSnorm4x8 = 63,
|
|
UnpackUnorm4x8 = 64,
|
|
UnpackDouble2x32 = 65,
|
|
|
|
Length = 66,
|
|
Distance = 67,
|
|
Cross = 68,
|
|
Normalize = 69,
|
|
FaceForward = 70,
|
|
Reflect = 71,
|
|
Refract = 72,
|
|
|
|
FindILsb = 73,
|
|
FindSMsb = 74,
|
|
FindUMsb = 75,
|
|
|
|
InterpolateAtCentroid = 76,
|
|
InterpolateAtSample = 77,
|
|
InterpolateAtOffset = 78,
|
|
|
|
NMin = 79,
|
|
NMax = 80,
|
|
NClamp = 81,
|
|
|
|
Count
|
|
}
|
|
} |