소스 검색

spir-v: Updated enums to rev 3.

Branimir Karadžić 9 년 전
부모
커밋
a3501ff77d
2개의 변경된 파일540개의 추가작업 그리고 462개의 파일을 삭제
  1. 405 351
      src/shader_spirv.cpp
  2. 135 111
      src/shader_spirv.h

+ 405 - 351
src/shader_spirv.cpp

@@ -18,293 +18,329 @@ namespace bgfx
 	static const SpirvOpcodeInfo s_sprivOpcodeInfo[] =
 	static const SpirvOpcodeInfo s_sprivOpcodeInfo[] =
 	{
 	{
 		{ 0, 0, false }, // Nop,
 		{ 0, 0, false }, // Nop,
-		{ 0, 0, true  }, // Source
-		{ 0, 0, true  }, // SourceExtension
-		{ 0, 0, false }, // Extension
-		{ 0, 1, true  }, // ExtInstImport
-		{ 0, 2, false }, // MemoryModel
-		{ 0, 2, false }, // EntryPoint
-		{ 0, 0, false }, // ExecutionMode
-		{ 0, 1, false }, // TypeVoid
-		{ 0, 1, false }, // TypeBool
-		{ 0, 3, false }, // TypeInt
-		{ 0, 2, false }, // TypeFloat
-		{ 0, 3, false }, // TypeVector
-		{ 0, 3, false }, // TypeMatrix
-		{ 1, 7, false }, // TypeSampler
-		{ 0, 0, false }, // TypeFilter
-		{ 0, 0, false }, // TypeArray
-		{ 0, 0, false }, // TypeRuntimeArray
-		{ 0, 0, false }, // TypeStruct
-		{ 0, 0, false }, // TypeOpaque
-		{ 0, 3, false }, // TypePointer
-		{ 0, 2, true  }, // TypeFunction
-		{ 0, 0, false }, // TypeEvent
-		{ 0, 0, false }, // TypeDeviceEvent
-		{ 0, 0, false }, // TypeReserveId
-		{ 0, 0, false }, // TypeQueue
-		{ 0, 0, false }, // TypePipe
-		{ 0, 0, false }, // ConstantTrue
-		{ 0, 0, false }, // ConstantFalse
-		{ 0, 2, true  }, // Constant
-		{ 0, 2, true  }, // ConstantComposite
-		{ 0, 0, false }, // ConstantSampler
-		{ 0, 0, false }, // ConstantNullPointer
-		{ 0, 0, false }, // ConstantNullObject
-		{ 0, 0, false }, // SpecConstantTrue
-		{ 0, 0, false }, // SpecConstantFalse
-		{ 0, 0, false }, // SpecConstant
-		{ 0, 0, false }, // SpecConstantComposite
-		{ 0, 3, true  }, // Variable
-		{ 0, 0, false }, // VariableArray
-		{ 0, 4, false }, // Function
-		{ 0, 0, false }, // FunctionParameter
-		{ 0, 0, false }, // FunctionEnd
-		{ 0, 0, false }, // FunctionCall
-		{ 0, 0, false }, // ExtInst
-		{ 0, 0, false }, // Undef
-		{ 0, 0, false }, // Load
-		{ 0, 2, true  }, // Store
-		{ 0, 0, false }, // Phi
-		{ 0, 0, false }, // DecorationGroup
-		{ 0, 2, true  }, // Decorate
-		{ 0, 0, false }, // MemberDecorate
-		{ 0, 0, false }, // GroupDecorate
-		{ 0, 0, false }, // GroupMemberDecorate
-		{ 0, 1, true  }, // Name
-		{ 0, 1, true  }, // MemberName
-		{ 0, 0, false }, // String
-		{ 0, 0, false }, // Line
-		{ 0, 0, false }, // VectorExtractDynamic
-		{ 0, 0, false }, // VectorInsertDynamic
-		{ 0, 0, false }, // VectorShuffle
-		{ 0, 0, false }, // CompositeConstruct
-		{ 0, 0, false }, // CompositeExtract
-		{ 0, 0, false }, // CompositeInsert
-		{ 0, 0, false }, // CopyObject
-		{ 0, 0, false }, // CopyMemory
-		{ 0, 0, false }, // CopyMemorySized
-		{ 0, 0, false }, // Sampler
-		{ 0, 0, false }, // TextureSample
-		{ 0, 0, false }, // TextureSampleDref
-		{ 0, 0, false }, // TextureSampleLod
-		{ 0, 0, false }, // TextureSampleProj
-		{ 0, 0, false }, // TextureSampleGrad
-		{ 0, 0, false }, // TextureSampleOffset
-		{ 0, 0, false }, // TextureSampleProjLod
-		{ 0, 0, false }, // TextureSampleProjGrad
-		{ 0, 0, false }, // TextureSampleLodOffset
-		{ 0, 0, false }, // TextureSampleProjOffset
-		{ 0, 0, false }, // TextureSampleGradOffset
-		{ 0, 0, false }, // TextureSampleProjLodOffset
-		{ 0, 0, false }, // TextureSampleProjGradOffset
-		{ 0, 0, false }, // TextureFetchTexelLod
-		{ 0, 0, false }, // TextureFetchTexelOffset
-		{ 0, 0, false }, // TextureFetchSample
-		{ 0, 0, false }, // TextureFetchTexel
-		{ 0, 0, false }, // TextureGather
-		{ 0, 0, false }, // TextureGatherOffset
-		{ 0, 0, false }, // TextureGatherOffsets
-		{ 0, 0, false }, // TextureQuerySizeLod
-		{ 0, 0, false }, // TextureQuerySize
-		{ 0, 0, false }, // TextureQueryLod
-		{ 0, 0, false }, // TextureQueryLevels
-		{ 0, 0, false }, // TextureQuerySamples
-		{ 0, 0, false }, // AccessChain
-		{ 0, 0, false }, // InBoundsAccessChain
-		{ 0, 0, false }, // SNegate
-		{ 0, 0, false }, // FNegate
-		{ 0, 0, false }, // Not
-		{ 0, 0, false }, // Any
-		{ 0, 0, false }, // All
-		{ 0, 0, false }, // ConvertFToU
-		{ 0, 0, false }, // ConvertFToS
-		{ 0, 0, false }, // ConvertSToF
-		{ 0, 0, false }, // ConvertUToF
-		{ 0, 0, false }, // UConvert
-		{ 0, 0, false }, // SConvert
-		{ 0, 0, false }, // FConvert
-		{ 0, 0, false }, // ConvertPtrToU
-		{ 0, 0, false }, // ConvertUToPtr
-		{ 0, 0, false }, // PtrCastToGeneric
-		{ 0, 0, false }, // GenericCastToPtr
-		{ 0, 0, false }, // Bitcast
-		{ 0, 0, false }, // Transpose
-		{ 0, 0, false }, // IsNan
-		{ 0, 0, false }, // IsInf
-		{ 0, 0, false }, // IsFinite
-		{ 0, 0, false }, // IsNormal
-		{ 0, 0, false }, // SignBitSet
-		{ 0, 0, false }, // LessOrGreater
-		{ 0, 0, false }, // Ordered
-		{ 0, 0, false }, // Unordered
-		{ 0, 0, false }, // ArrayLength
-		{ 0, 0, false }, // IAdd
-		{ 0, 0, false }, // FAdd
-		{ 0, 0, false }, // ISub
-		{ 0, 0, false }, // FSub
-		{ 0, 0, false }, // IMul
-		{ 0, 0, false }, // FMul
-		{ 0, 0, false }, // UDiv
-		{ 0, 0, false }, // SDiv
-		{ 0, 0, false }, // FDiv
-		{ 0, 0, false }, // UMod
-		{ 0, 0, false }, // SRem
-		{ 0, 0, false }, // SMod
-		{ 0, 0, false }, // FRem
-		{ 0, 0, false }, // FMod
-		{ 0, 0, false }, // VectorTimesScalar
-		{ 0, 0, false }, // MatrixTimesScalar
-		{ 0, 0, false }, // VectorTimesMatrix
-		{ 0, 0, false }, // MatrixTimesVector
-		{ 0, 0, false }, // MatrixTimesMatrix
-		{ 0, 0, false }, // OuterProduct
-		{ 0, 0, false }, // Dot
-		{ 0, 0, false }, // ShiftRightLogical
-		{ 0, 0, false }, // ShiftRightArithmetic
-		{ 0, 0, false }, // ShiftLeftLogical
-		{ 0, 0, false }, // LogicalOr
-		{ 0, 0, false }, // LogicalXor
-		{ 0, 0, false }, // LogicalAnd
-		{ 0, 0, false }, // BitwiseOr
-		{ 0, 0, false }, // BitwiseXor
-		{ 0, 0, false }, // BitwiseAnd
-		{ 0, 0, false }, // Select
-		{ 0, 0, false }, // IEqual
-		{ 0, 0, false }, // FOrdEqual
-		{ 0, 0, false }, // FUnordEqual
-		{ 0, 0, false }, // INotEqual
-		{ 0, 0, false }, // FOrdNotEqual
-		{ 0, 0, false }, // FUnordNotEqual
-		{ 0, 0, false }, // ULessThan
-		{ 0, 0, false }, // SLessThan
-		{ 0, 0, false }, // FOrdLessThan
-		{ 0, 0, false }, // FUnordLessThan
-		{ 0, 0, false }, // UGreaterThan
-		{ 0, 0, false }, // SGreaterThan
-		{ 0, 0, false }, // FOrdGreaterThan
-		{ 0, 0, false }, // FUnordGreaterThan
-		{ 0, 0, false }, // ULessThanEqual
-		{ 0, 0, false }, // SLessThanEqual
-		{ 0, 0, false }, // FOrdLessThanEqual
-		{ 0, 0, false }, // FUnordLessThanEqual
-		{ 0, 0, false }, // UGreaterThanEqual
-		{ 0, 0, false }, // SGreaterThanEqual
-		{ 0, 0, false }, // FOrdGreaterThanEqual
-		{ 0, 0, false }, // FUnordGreaterThanEqual
-		{ 0, 0, false }, // DPdx
-		{ 0, 0, false }, // DPdy
-		{ 0, 0, false }, // Fwidth
-		{ 0, 0, false }, // DPdxFine
-		{ 0, 0, false }, // DPdyFine
-		{ 0, 0, false }, // FwidthFine
-		{ 0, 0, false }, // DPdxCoarse
-		{ 0, 0, false }, // DPdyCoarse
-		{ 0, 0, false }, // FwidthCoarse
-		{ 0, 0, false }, // EmitVertex
-		{ 0, 0, false }, // EndPrimitive
-		{ 0, 0, false }, // EmitStreamVertex
-		{ 0, 0, false }, // EndStreamPrimitive
-		{ 0, 0, false }, // ControlBarrier
-		{ 0, 0, false }, // MemoryBarrier
-		{ 0, 0, false }, // ImagePointer
-		{ 0, 0, false }, // AtomicInit
-		{ 0, 0, false }, // AtomicLoad
-		{ 0, 0, false }, // AtomicStore
-		{ 0, 0, false }, // AtomicExchange
-		{ 0, 0, false }, // AtomicCompareExchange
-		{ 0, 0, false }, // AtomicCompareExchangeWeak
-		{ 0, 0, false }, // AtomicIIncrement
-		{ 0, 0, false }, // AtomicIDecrement
-		{ 0, 0, false }, // AtomicIAdd
-		{ 0, 0, false }, // AtomicISub
-		{ 0, 0, false }, // AtomicUMin
-		{ 0, 0, false }, // AtomicUMax
-		{ 0, 0, false }, // AtomicAnd
-		{ 0, 0, false }, // AtomicOr
-		{ 0, 0, false }, // AtomicXor
-		{ 0, 0, false }, // LoopMerge
-		{ 0, 0, false }, // SelectionMerge
-		{ 0, 1, false }, // Label
-		{ 0, 1, false }, // Branch
-		{ 0, 0, false }, // BranchConditional
-		{ 0, 0, false }, // Switch
-		{ 0, 0, false }, // Kill
-		{ 0, 0, false }, // Return
-		{ 0, 0, false }, // ReturnValue
-		{ 0, 0, false }, // Unreachable
-		{ 0, 0, false }, // LifetimeStart
-		{ 0, 0, false }, // LifetimeStop
-		{ 0, 0, false }, // CompileFlag
-		{ 0, 0, false }, // AsyncGroupCopy
-		{ 0, 0, false }, // WaitGroupEvents
-		{ 0, 0, false }, // GroupAll
-		{ 0, 0, false }, // GroupAny
-		{ 0, 0, false }, // GroupBroadcast
-		{ 0, 0, false }, // GroupIAdd
-		{ 0, 0, false }, // GroupFAdd
-		{ 0, 0, false }, // GroupFMin
-		{ 0, 0, false }, // GroupUMin
-		{ 0, 0, false }, // GroupSMin
-		{ 0, 0, false }, // GroupFMax
-		{ 0, 0, false }, // GroupUMax
-		{ 0, 0, false }, // GroupSMax
-		{ 0, 0, false }, // GenericCastToPtrExplicit
-		{ 0, 0, false }, // GenericPtrMemSemantics
-		{ 0, 0, false }, // ReadPipe
-		{ 0, 0, false }, // WritePipe
-		{ 0, 0, false }, // ReservedReadPipe
-		{ 0, 0, false }, // ReservedWritePipe
-		{ 0, 0, false }, // ReserveReadPipePackets
-		{ 0, 0, false }, // ReserveWritePipePackets
-		{ 0, 0, false }, // CommitReadPipe
-		{ 0, 0, false }, // CommitWritePipe
-		{ 0, 0, false }, // IsValidReserveId
-		{ 0, 0, false }, // GetNumPipePackets
-		{ 0, 0, false }, // GetMaxPipePackets
-		{ 0, 0, false }, // GroupReserveReadPipePackets
-		{ 0, 0, false }, // GroupReserveWritePipePackets
-		{ 0, 0, false }, // GroupCommitReadPipe
-		{ 0, 0, false }, // GroupCommitWritePipe
-		{ 0, 0, false }, // EnqueueMarker
-		{ 0, 0, false }, // EnqueueKernel
-		{ 0, 0, false }, // GetKernelNDrangeSubGroupCount
-		{ 0, 0, false }, // GetKernelNDrangeMaxSubGroupSize
-		{ 0, 0, false }, // GetKernelWorkGroupSize
-		{ 0, 0, false }, // GetKernelPreferredWorkGroupSizeMultiple
-		{ 0, 0, false }, // RetainEvent
-		{ 0, 0, false }, // ReleaseEvent
-		{ 0, 0, false }, // CreateUserEvent
-		{ 0, 0, false }, // IsValidEvent
-		{ 0, 0, false }, // SetUserEventStatus
-		{ 0, 0, false }, // CaptureEventProfilingInfo
-		{ 0, 0, false }, // GetDefaultQueue
-		{ 0, 0, false }, // BuildNDRange
-		{ 0, 0, false }, // SatConvertSToU
-		{ 0, 0, false }, // SatConvertUToS
-		{ 0, 0, false }, // AtomicIMin
-		{ 0, 0, false }, // AtomicIMax
+		{ 0, 0, false }, // Undef,
+		{ 0, 0, false }, // SourceContinued,
+		{ 0, 0, false }, // Source,
+		{ 0, 0, false }, // SourceExtension,
+		{ 0, 0, false }, // Name,
+		{ 0, 0, false }, // MemberName,
+		{ 0, 0, false }, // String,
+		{ 0, 0, false }, // Line,
+		{ 0, 0, false }, // Extension,
+		{ 0, 0, false }, // ExtInstImport,
+		{ 0, 0, false }, // ExtInst,
+		{ 0, 0, false }, // MemoryModel,
+		{ 0, 0, false }, // EntryPoint,
+		{ 0, 0, false }, // ExecutionMode,
+		{ 0, 0, false }, // Capability,
+		{ 0, 0, false }, // TypeVoid,
+		{ 0, 0, false }, // TypeBool,
+		{ 0, 0, false }, // TypeInt,
+		{ 0, 0, false }, // TypeFloat,
+		{ 0, 0, false }, // TypeVector,
+		{ 0, 0, false }, // TypeMatrix,
+		{ 0, 0, false }, // TypeImage,
+		{ 0, 0, false }, // TypeSampler,
+		{ 0, 0, false }, // TypeSampledImage,
+		{ 0, 0, false }, // TypeArray,
+		{ 0, 0, false }, // TypeRuntimeArray,
+		{ 0, 0, false }, // TypeStruct,
+		{ 0, 0, false }, // TypeOpaque,
+		{ 0, 0, false }, // TypePointer,
+		{ 0, 0, false }, // TypeFunction,
+		{ 0, 0, false }, // TypeEvent,
+		{ 0, 0, false }, // TypeDeviceEvent,
+		{ 0, 0, false }, // TypeReserveId,
+		{ 0, 0, false }, // TypeQueue,
+		{ 0, 0, false }, // TypePipe,
+		{ 0, 0, false }, // TypeForwardPointer,
+		{ 0, 0, false }, // ConstantTrue,
+		{ 0, 0, false }, // ConstantFalse,
+		{ 0, 0, false }, // Constant,
+		{ 0, 0, false }, // ConstantComposite,
+		{ 0, 0, false }, // ConstantSampler,
+		{ 0, 0, false }, // ConstantNull,
+		{ 0, 0, false }, // SpecConstantTrue,
+		{ 0, 0, false }, // SpecConstantFalse,
+		{ 0, 0, false }, // SpecConstant,
+		{ 0, 0, false }, // SpecConstantComposite,
+		{ 0, 0, false }, // SpecConstantOp,
+		{ 0, 0, false }, // Function,
+		{ 0, 0, false }, // FunctionParameter,
+		{ 0, 0, false }, // FunctionEnd,
+		{ 0, 0, false }, // FunctionCall,
+		{ 0, 0, false }, // Variable,
+		{ 0, 0, false }, // ImageTexelPointer,
+		{ 0, 0, false }, // Load,
+		{ 0, 0, false }, // Store,
+		{ 0, 0, false }, // CopyMemory,
+		{ 0, 0, false }, // CopyMemorySized,
+		{ 0, 0, false }, // AccessChain,
+		{ 0, 0, false }, // InBoundsAccessChain,
+		{ 0, 0, false }, // PtrAccessChain,
+		{ 0, 0, false }, // ArrayLength,
+		{ 0, 0, false }, // GenericPtrMemSemantics,
+		{ 0, 0, false }, // InBoundsPtrAccessChain,
+		{ 0, 0, false }, // Decorate,
+		{ 0, 0, false }, // MemberDecorate,
+		{ 0, 0, false }, // DecorationGroup,
+		{ 0, 0, false }, // GroupDecorate,
+		{ 0, 0, false }, // GroupMemberDecorate,
+		{ 0, 0, false }, // VectorExtractDynamic,
+		{ 0, 0, false }, // VectorInsertDynamic,
+		{ 0, 0, false }, // VectorShuffle,
+		{ 0, 0, false }, // CompositeConstruct,
+		{ 0, 0, false }, // CompositeExtract,
+		{ 0, 0, false }, // CompositeInsert,
+		{ 0, 0, false }, // CopyObject,
+		{ 0, 0, false }, // Transpose,
+		{ 0, 0, false }, // SampledImage,
+		{ 0, 0, false }, // ImageSampleImplicitLod,
+		{ 0, 0, false }, // ImageSampleExplicitLod,
+		{ 0, 0, false }, // ImageSampleDrefImplicitLod,
+		{ 0, 0, false }, // ImageSampleDrefExplicitLod,
+		{ 0, 0, false }, // ImageSampleProjImplicitLod,
+		{ 0, 0, false }, // ImageSampleProjExplicitLod,
+		{ 0, 0, false }, // ImageSampleProjDrefImplicitLod,
+		{ 0, 0, false }, // ImageSampleProjDrefExplicitLod,
+		{ 0, 0, false }, // ImageFetch,
+		{ 0, 0, false }, // ImageGather,
+		{ 0, 0, false }, // ImageDrefGather,
+		{ 0, 0, false }, // ImageRead,
+		{ 0, 0, false }, // ImageWrite,
+		{ 0, 0, false }, // Image,
+		{ 0, 0, false }, // ImageQueryFormat,
+		{ 0, 0, false }, // ImageQueryOrder,
+		{ 0, 0, false }, // ImageQuerySizeLod,
+		{ 0, 0, false }, // ImageQuerySize,
+		{ 0, 0, false }, // ImageQueryLod,
+		{ 0, 0, false }, // ImageQueryLevels,
+		{ 0, 0, false }, // ImageQuerySamples,
+		{ 0, 0, false }, // ConvertFToU,
+		{ 0, 0, false }, // ConvertFToS,
+		{ 0, 0, false }, // ConvertSToF,
+		{ 0, 0, false }, // ConvertUToF,
+		{ 0, 0, false }, // UConvert,
+		{ 0, 0, false }, // SConvert,
+		{ 0, 0, false }, // FConvert,
+		{ 0, 0, false }, // QuantizeToF16,
+		{ 0, 0, false }, // ConvertPtrToU,
+		{ 0, 0, false }, // SatConvertSToU,
+		{ 0, 0, false }, // SatConvertUToS,
+		{ 0, 0, false }, // ConvertUToPtr,
+		{ 0, 0, false }, // PtrCastToGeneric,
+		{ 0, 0, false }, // GenericCastToPtr,
+		{ 0, 0, false }, // GenericCastToPtrExplicit,
+		{ 0, 0, false }, // Bitcast,
+		{ 0, 0, false }, // SNegate,
+		{ 0, 0, false }, // FNegate,
+		{ 0, 0, false }, // IAdd,
+		{ 0, 0, false }, // FAdd,
+		{ 0, 0, false }, // ISub,
+		{ 0, 0, false }, // FSub,
+		{ 0, 0, false }, // IMul,
+		{ 0, 0, false }, // FMul,
+		{ 0, 0, false }, // UDiv,
+		{ 0, 0, false }, // SDiv,
+		{ 0, 0, false }, // FDiv,
+		{ 0, 0, false }, // UMod,
+		{ 0, 0, false }, // SRem,
+		{ 0, 0, false }, // SMod,
+		{ 0, 0, false }, // FRem,
+		{ 0, 0, false }, // FMod,
+		{ 0, 0, false }, // VectorTimesScalar,
+		{ 0, 0, false }, // MatrixTimesScalar,
+		{ 0, 0, false }, // VectorTimesMatrix,
+		{ 0, 0, false }, // MatrixTimesVector,
+		{ 0, 0, false }, // MatrixTimesMatrix,
+		{ 0, 0, false }, // OuterProduct,
+		{ 0, 0, false }, // Dot,
+		{ 0, 0, false }, // IAddCarry,
+		{ 0, 0, false }, // ISubBorrow,
+		{ 0, 0, false }, // UMulExtended,
+		{ 0, 0, false }, // SMulExtended,
+		{ 0, 0, false }, // Any,
+		{ 0, 0, false }, // All,
+		{ 0, 0, false }, // IsNan,
+		{ 0, 0, false }, // IsInf,
+		{ 0, 0, false }, // IsFinite,
+		{ 0, 0, false }, // IsNormal,
+		{ 0, 0, false }, // SignBitSet,
+		{ 0, 0, false }, // LessOrGreater,
+		{ 0, 0, false }, // Ordered,
+		{ 0, 0, false }, // Unordered,
+		{ 0, 0, false }, // LogicalEqual,
+		{ 0, 0, false }, // LogicalNotEqual,
+		{ 0, 0, false }, // LogicalOr,
+		{ 0, 0, false }, // LogicalAnd,
+		{ 0, 0, false }, // LogicalNot,
+		{ 0, 0, false }, // Select,
+		{ 0, 0, false }, // IEqual,
+		{ 0, 0, false }, // INotEqual,
+		{ 0, 0, false }, // UGreaterThan,
+		{ 0, 0, false }, // SGreaterThan,
+		{ 0, 0, false }, // UGreaterThanEqual,
+		{ 0, 0, false }, // SGreaterThanEqual,
+		{ 0, 0, false }, // ULessThan,
+		{ 0, 0, false }, // SLessThan,
+		{ 0, 0, false }, // ULessThanEqual,
+		{ 0, 0, false }, // SLessThanEqual,
+		{ 0, 0, false }, // FOrdEqual,
+		{ 0, 0, false }, // FUnordEqual,
+		{ 0, 0, false }, // FOrdNotEqual,
+		{ 0, 0, false }, // FUnordNotEqual,
+		{ 0, 0, false }, // FOrdLessThan,
+		{ 0, 0, false }, // FUnordLessThan,
+		{ 0, 0, false }, // FOrdGreaterThan,
+		{ 0, 0, false }, // FUnordGreaterThan,
+		{ 0, 0, false }, // FOrdLessThanEqual,
+		{ 0, 0, false }, // FUnordLessThanEqual,
+		{ 0, 0, false }, // FOrdGreaterThanEqual,
+		{ 0, 0, false }, // FUnordGreaterThanEqual,
+		{ 0, 0, false }, // ShiftRightLogical,
+		{ 0, 0, false }, // ShiftRightArithmetic,
+		{ 0, 0, false }, // ShiftLeftLogical,
+		{ 0, 0, false }, // BitwiseOr,
+		{ 0, 0, false }, // BitwiseXor,
+		{ 0, 0, false }, // BitwiseAnd,
+		{ 0, 0, false }, // Not,
+		{ 0, 0, false }, // BitFieldInsert,
+		{ 0, 0, false }, // BitFieldSExtract,
+		{ 0, 0, false }, // BitFieldUExtract,
+		{ 0, 0, false }, // BitReverse,
+		{ 0, 0, false }, // BitCount,
+		{ 0, 0, false }, // DPdx,
+		{ 0, 0, false }, // DPdy,
+		{ 0, 0, false }, // Fwidth,
+		{ 0, 0, false }, // DPdxFine,
+		{ 0, 0, false }, // DPdyFine,
+		{ 0, 0, false }, // FwidthFine,
+		{ 0, 0, false }, // DPdxCoarse,
+		{ 0, 0, false }, // DPdyCoarse,
+		{ 0, 0, false }, // FwidthCoarse,
+		{ 0, 0, false }, // EmitVertex,
+		{ 0, 0, false }, // EndPrimitive,
+		{ 0, 0, false }, // EmitStreamVertex,
+		{ 0, 0, false }, // EndStreamPrimitive,
+		{ 0, 0, false }, // ControlBarrier,
+		{ 0, 0, false }, // MemoryBarrier,
+		{ 0, 0, false }, // AtomicLoad,
+		{ 0, 0, false }, // AtomicStore,
+		{ 0, 0, false }, // AtomicExchange,
+		{ 0, 0, false }, // AtomicCompareExchange,
+		{ 0, 0, false }, // AtomicCompareExchangeWeak,
+		{ 0, 0, false }, // AtomicIIncrement,
+		{ 0, 0, false }, // AtomicIDecrement,
+		{ 0, 0, false }, // AtomicIAdd,
+		{ 0, 0, false }, // AtomicISub,
+		{ 0, 0, false }, // AtomicSMin,
+		{ 0, 0, false }, // AtomicUMin,
+		{ 0, 0, false }, // AtomicSMax,
+		{ 0, 0, false }, // AtomicUMax,
+		{ 0, 0, false }, // AtomicAnd,
+		{ 0, 0, false }, // AtomicOr,
+		{ 0, 0, false }, // AtomicXor,
+		{ 0, 0, false }, // Phi,
+		{ 0, 0, false }, // LoopMerge,
+		{ 0, 0, false }, // SelectionMerge,
+		{ 0, 0, false }, // Label,
+		{ 0, 0, false }, // Branch,
+		{ 0, 0, false }, // BranchConditional,
+		{ 0, 0, false }, // Switch,
+		{ 0, 0, false }, // Kill,
+		{ 0, 0, false }, // Return,
+		{ 0, 0, false }, // ReturnValue,
+		{ 0, 0, false }, // Unreachable,
+		{ 0, 0, false }, // LifetimeStart,
+		{ 0, 0, false }, // LifetimeStop,
+		{ 0, 0, false }, // GroupAsyncCopy,
+		{ 0, 0, false }, // GroupWaitEvents,
+		{ 0, 0, false }, // GroupAll,
+		{ 0, 0, false }, // GroupAny,
+		{ 0, 0, false }, // GroupBroadcast,
+		{ 0, 0, false }, // GroupIAdd,
+		{ 0, 0, false }, // GroupFAdd,
+		{ 0, 0, false }, // GroupFMin,
+		{ 0, 0, false }, // GroupUMin,
+		{ 0, 0, false }, // GroupSMin,
+		{ 0, 0, false }, // GroupFMax,
+		{ 0, 0, false }, // GroupUMax,
+		{ 0, 0, false }, // GroupSMax,
+		{ 0, 0, false }, // ReadPipe,
+		{ 0, 0, false }, // WritePipe,
+		{ 0, 0, false }, // ReservedReadPipe,
+		{ 0, 0, false }, // ReservedWritePipe,
+		{ 0, 0, false }, // ReserveReadPipePackets,
+		{ 0, 0, false }, // ReserveWritePipePackets,
+		{ 0, 0, false }, // CommitReadPipe,
+		{ 0, 0, false }, // CommitWritePipe,
+		{ 0, 0, false }, // IsValidReserveId,
+		{ 0, 0, false }, // GetNumPipePackets,
+		{ 0, 0, false }, // GetMaxPipePackets,
+		{ 0, 0, false }, // GroupReserveReadPipePackets,
+		{ 0, 0, false }, // GroupReserveWritePipePackets,
+		{ 0, 0, false }, // GroupCommitReadPipe,
+		{ 0, 0, false }, // GroupCommitWritePipe,
+		{ 0, 0, false }, // EnqueueMarker,
+		{ 0, 0, false }, // EnqueueKernel,
+		{ 0, 0, false }, // GetKernelNDrangeSubGroupCount,
+		{ 0, 0, false }, // GetKernelNDrangeMaxSubGroupSize,
+		{ 0, 0, false }, // GetKernelWorkGroupSize,
+		{ 0, 0, false }, // GetKernelPreferredWorkGroupSizeMultiple,
+		{ 0, 0, false }, // RetainEvent,
+		{ 0, 0, false }, // ReleaseEvent,
+		{ 0, 0, false }, // CreateUserEvent,
+		{ 0, 0, false }, // IsValidEvent,
+		{ 0, 0, false }, // SetUserEventStatus,
+		{ 0, 0, false }, // CaptureEventProfilingInfo,
+		{ 0, 0, false }, // GetDefaultQueue,
+		{ 0, 0, false }, // BuildNDRange,
+		{ 0, 0, false }, // ImageSparseSampleImplicitLod,
+		{ 0, 0, false }, // ImageSparseSampleExplicitLod,
+		{ 0, 0, false }, // ImageSparseSampleDrefImplicitLod,
+		{ 0, 0, false }, // ImageSparseSampleDrefExplicitLod,
+		{ 0, 0, false }, // ImageSparseSampleProjImplicitLod,
+		{ 0, 0, false }, // ImageSparseSampleProjExplicitLod,
+		{ 0, 0, false }, // ImageSparseSampleProjDrefImplicitLod,
+		{ 0, 0, false }, // ImageSparseSampleProjDrefExplicitLod,
+		{ 0, 0, false }, // ImageSparseFetch,
+		{ 0, 0, false }, // ImageSparseGather,
+		{ 0, 0, false }, // ImageSparseDrefGather,
+		{ 0, 0, false }, // ImageSparseTexelsResident,
+		{ 0, 0, false }, // NoLine,
+		{ 0, 0, false }, // AtomicFlagTestAndSet,
+		{ 0, 0, false }, // AtomicFlagClear,
+		{ 0, 0, false }, // ImageSparseRead,
 	};
 	};
 	BX_STATIC_ASSERT(BX_COUNTOF(s_sprivOpcodeInfo) == SpirvOpcode::Count);
 	BX_STATIC_ASSERT(BX_COUNTOF(s_sprivOpcodeInfo) == SpirvOpcode::Count);
 
 
 	const char* s_spirvOpcode[] =
 	const char* s_spirvOpcode[] =
 	{
 	{
 		"Nop",
 		"Nop",
+		"Undef",
+		"SourceContinued",
 		"Source",
 		"Source",
 		"SourceExtension",
 		"SourceExtension",
+		"Name",
+		"MemberName",
+		"String",
+		"Line",
 		"Extension",
 		"Extension",
 		"ExtInstImport",
 		"ExtInstImport",
+		"ExtInst",
 		"MemoryModel",
 		"MemoryModel",
 		"EntryPoint",
 		"EntryPoint",
 		"ExecutionMode",
 		"ExecutionMode",
+		"Capability",
 		"TypeVoid",
 		"TypeVoid",
 		"TypeBool",
 		"TypeBool",
 		"TypeInt",
 		"TypeInt",
 		"TypeFloat",
 		"TypeFloat",
 		"TypeVector",
 		"TypeVector",
 		"TypeMatrix",
 		"TypeMatrix",
+		"TypeImage",
 		"TypeSampler",
 		"TypeSampler",
-		"TypeFilter",
+		"TypeSampledImage",
 		"TypeArray",
 		"TypeArray",
 		"TypeRuntimeArray",
 		"TypeRuntimeArray",
 		"TypeStruct",
 		"TypeStruct",
@@ -316,37 +352,39 @@ namespace bgfx
 		"TypeReserveId",
 		"TypeReserveId",
 		"TypeQueue",
 		"TypeQueue",
 		"TypePipe",
 		"TypePipe",
+		"TypeForwardPointer",
 		"ConstantTrue",
 		"ConstantTrue",
 		"ConstantFalse",
 		"ConstantFalse",
 		"Constant",
 		"Constant",
 		"ConstantComposite",
 		"ConstantComposite",
 		"ConstantSampler",
 		"ConstantSampler",
-		"ConstantNullPointer",
-		"ConstantNullObject",
+		"ConstantNull",
 		"SpecConstantTrue",
 		"SpecConstantTrue",
 		"SpecConstantFalse",
 		"SpecConstantFalse",
 		"SpecConstant",
 		"SpecConstant",
 		"SpecConstantComposite",
 		"SpecConstantComposite",
-		"Variable",
-		"VariableArray",
+		"SpecConstantOp",
 		"Function",
 		"Function",
 		"FunctionParameter",
 		"FunctionParameter",
 		"FunctionEnd",
 		"FunctionEnd",
 		"FunctionCall",
 		"FunctionCall",
-		"ExtInst",
-		"Undef",
+		"Variable",
+		"ImageTexelPointer",
 		"Load",
 		"Load",
 		"Store",
 		"Store",
-		"Phi",
-		"DecorationGroup",
+		"CopyMemory",
+		"CopyMemorySized",
+		"AccessChain",
+		"InBoundsAccessChain",
+		"PtrAccessChain",
+		"ArrayLength",
+		"GenericPtrMemSemantics",
+		"InBoundsPtrAccessChain",
 		"Decorate",
 		"Decorate",
 		"MemberDecorate",
 		"MemberDecorate",
+		"DecorationGroup",
 		"GroupDecorate",
 		"GroupDecorate",
 		"GroupMemberDecorate",
 		"GroupMemberDecorate",
-		"Name",
-		"MemberName",
-		"String",
-		"Line",
 		"VectorExtractDynamic",
 		"VectorExtractDynamic",
 		"VectorInsertDynamic",
 		"VectorInsertDynamic",
 		"VectorShuffle",
 		"VectorShuffle",
@@ -354,41 +392,29 @@ namespace bgfx
 		"CompositeExtract",
 		"CompositeExtract",
 		"CompositeInsert",
 		"CompositeInsert",
 		"CopyObject",
 		"CopyObject",
-		"CopyMemory",
-		"CopyMemorySized",
-		"Sampler",
-		"TextureSample",
-		"TextureSampleDref",
-		"TextureSampleLod",
-		"TextureSampleProj",
-		"TextureSampleGrad",
-		"TextureSampleOffset",
-		"TextureSampleProjLod",
-		"TextureSampleProjGrad",
-		"TextureSampleLodOffset",
-		"TextureSampleProjOffset",
-		"TextureSampleGradOffset",
-		"TextureSampleProjLodOffset",
-		"TextureSampleProjGradOffset",
-		"TextureFetchTexelLod",
-		"TextureFetchTexelOffset",
-		"TextureFetchSample",
-		"TextureFetchTexel",
-		"TextureGather",
-		"TextureGatherOffset",
-		"TextureGatherOffsets",
-		"TextureQuerySizeLod",
-		"TextureQuerySize",
-		"TextureQueryLod",
-		"TextureQueryLevels",
-		"TextureQuerySamples",
-		"AccessChain",
-		"InBoundsAccessChain",
-		"SNegate",
-		"FNegate",
-		"Not",
-		"Any",
-		"All",
+		"Transpose",
+		"SampledImage",
+		"ImageSampleImplicitLod",
+		"ImageSampleExplicitLod",
+		"ImageSampleDrefImplicitLod",
+		"ImageSampleDrefExplicitLod",
+		"ImageSampleProjImplicitLod",
+		"ImageSampleProjExplicitLod",
+		"ImageSampleProjDrefImplicitLod",
+		"ImageSampleProjDrefExplicitLod",
+		"ImageFetch",
+		"ImageGather",
+		"ImageDrefGather",
+		"ImageRead",
+		"ImageWrite",
+		"Image",
+		"ImageQueryFormat",
+		"ImageQueryOrder",
+		"ImageQuerySizeLod",
+		"ImageQuerySize",
+		"ImageQueryLod",
+		"ImageQueryLevels",
+		"ImageQuerySamples",
 		"ConvertFToU",
 		"ConvertFToU",
 		"ConvertFToS",
 		"ConvertFToS",
 		"ConvertSToF",
 		"ConvertSToF",
@@ -396,21 +422,17 @@ namespace bgfx
 		"UConvert",
 		"UConvert",
 		"SConvert",
 		"SConvert",
 		"FConvert",
 		"FConvert",
+		"QuantizeToF16",
 		"ConvertPtrToU",
 		"ConvertPtrToU",
+		"SatConvertSToU",
+		"SatConvertUToS",
 		"ConvertUToPtr",
 		"ConvertUToPtr",
 		"PtrCastToGeneric",
 		"PtrCastToGeneric",
 		"GenericCastToPtr",
 		"GenericCastToPtr",
+		"GenericCastToPtrExplicit",
 		"Bitcast",
 		"Bitcast",
-		"Transpose",
-		"IsNan",
-		"IsInf",
-		"IsFinite",
-		"IsNormal",
-		"SignBitSet",
-		"LessOrGreater",
-		"Ordered",
-		"Unordered",
-		"ArrayLength",
+		"SNegate",
+		"FNegate",
 		"IAdd",
 		"IAdd",
 		"FAdd",
 		"FAdd",
 		"ISub",
 		"ISub",
@@ -432,38 +454,60 @@ namespace bgfx
 		"MatrixTimesMatrix",
 		"MatrixTimesMatrix",
 		"OuterProduct",
 		"OuterProduct",
 		"Dot",
 		"Dot",
-		"ShiftRightLogical",
-		"ShiftRightArithmetic",
-		"ShiftLeftLogical",
+		"IAddCarry",
+		"ISubBorrow",
+		"UMulExtended",
+		"SMulExtended",
+		"Any",
+		"All",
+		"IsNan",
+		"IsInf",
+		"IsFinite",
+		"IsNormal",
+		"SignBitSet",
+		"LessOrGreater",
+		"Ordered",
+		"Unordered",
+		"LogicalEqual",
+		"LogicalNotEqual",
 		"LogicalOr",
 		"LogicalOr",
-		"LogicalXor",
 		"LogicalAnd",
 		"LogicalAnd",
-		"BitwiseOr",
-		"BitwiseXor",
-		"BitwiseAnd",
+		"LogicalNot",
 		"Select",
 		"Select",
 		"IEqual",
 		"IEqual",
+		"INotEqual",
+		"UGreaterThan",
+		"SGreaterThan",
+		"UGreaterThanEqual",
+		"SGreaterThanEqual",
+		"ULessThan",
+		"SLessThan",
+		"ULessThanEqual",
+		"SLessThanEqual",
 		"FOrdEqual",
 		"FOrdEqual",
 		"FUnordEqual",
 		"FUnordEqual",
-		"INotEqual",
 		"FOrdNotEqual",
 		"FOrdNotEqual",
 		"FUnordNotEqual",
 		"FUnordNotEqual",
-		"ULessThan",
-		"SLessThan",
 		"FOrdLessThan",
 		"FOrdLessThan",
 		"FUnordLessThan",
 		"FUnordLessThan",
-		"UGreaterThan",
-		"SGreaterThan",
 		"FOrdGreaterThan",
 		"FOrdGreaterThan",
 		"FUnordGreaterThan",
 		"FUnordGreaterThan",
-		"ULessThanEqual",
-		"SLessThanEqual",
 		"FOrdLessThanEqual",
 		"FOrdLessThanEqual",
 		"FUnordLessThanEqual",
 		"FUnordLessThanEqual",
-		"UGreaterThanEqual",
-		"SGreaterThanEqual",
 		"FOrdGreaterThanEqual",
 		"FOrdGreaterThanEqual",
 		"FUnordGreaterThanEqual",
 		"FUnordGreaterThanEqual",
+		"ShiftRightLogical",
+		"ShiftRightArithmetic",
+		"ShiftLeftLogical",
+		"BitwiseOr",
+		"BitwiseXor",
+		"BitwiseAnd",
+		"Not",
+		"BitFieldInsert",
+		"BitFieldSExtract",
+		"BitFieldUExtract",
+		"BitReverse",
+		"BitCount",
 		"DPdx",
 		"DPdx",
 		"DPdy",
 		"DPdy",
 		"Fwidth",
 		"Fwidth",
@@ -479,8 +523,6 @@ namespace bgfx
 		"EndStreamPrimitive",
 		"EndStreamPrimitive",
 		"ControlBarrier",
 		"ControlBarrier",
 		"MemoryBarrier",
 		"MemoryBarrier",
-		"ImagePointer",
-		"AtomicInit",
 		"AtomicLoad",
 		"AtomicLoad",
 		"AtomicStore",
 		"AtomicStore",
 		"AtomicExchange",
 		"AtomicExchange",
@@ -490,11 +532,14 @@ namespace bgfx
 		"AtomicIDecrement",
 		"AtomicIDecrement",
 		"AtomicIAdd",
 		"AtomicIAdd",
 		"AtomicISub",
 		"AtomicISub",
+		"AtomicSMin",
 		"AtomicUMin",
 		"AtomicUMin",
+		"AtomicSMax",
 		"AtomicUMax",
 		"AtomicUMax",
 		"AtomicAnd",
 		"AtomicAnd",
 		"AtomicOr",
 		"AtomicOr",
 		"AtomicXor",
 		"AtomicXor",
+		"Phi",
 		"LoopMerge",
 		"LoopMerge",
 		"SelectionMerge",
 		"SelectionMerge",
 		"Label",
 		"Label",
@@ -507,9 +552,8 @@ namespace bgfx
 		"Unreachable",
 		"Unreachable",
 		"LifetimeStart",
 		"LifetimeStart",
 		"LifetimeStop",
 		"LifetimeStop",
-		"CompileFlag",
-		"AsyncGroupCopy",
-		"WaitGroupEvents",
+		"GroupAsyncCopy",
+		"GroupWaitEvents",
 		"GroupAll",
 		"GroupAll",
 		"GroupAny",
 		"GroupAny",
 		"GroupBroadcast",
 		"GroupBroadcast",
@@ -521,8 +565,6 @@ namespace bgfx
 		"GroupFMax",
 		"GroupFMax",
 		"GroupUMax",
 		"GroupUMax",
 		"GroupSMax",
 		"GroupSMax",
-		"GenericCastToPtrExplicit",
-		"GenericPtrMemSemantics",
 		"ReadPipe",
 		"ReadPipe",
 		"WritePipe",
 		"WritePipe",
 		"ReservedReadPipe",
 		"ReservedReadPipe",
@@ -552,10 +594,22 @@ namespace bgfx
 		"CaptureEventProfilingInfo",
 		"CaptureEventProfilingInfo",
 		"GetDefaultQueue",
 		"GetDefaultQueue",
 		"BuildNDRange",
 		"BuildNDRange",
-		"SatConvertSToU",
-		"SatConvertUToS",
-		"AtomicIMin",
-		"AtomicIMax",
+		"ImageSparseSampleImplicitLod",
+		"ImageSparseSampleExplicitLod",
+		"ImageSparseSampleDrefImplicitLod",
+		"ImageSparseSampleDrefExplicitLod",
+		"ImageSparseSampleProjImplicitLod",
+		"ImageSparseSampleProjExplicitLod",
+		"ImageSparseSampleProjDrefImplicitLod",
+		"ImageSparseSampleProjDrefExplicitLod",
+		"ImageSparseFetch",
+		"ImageSparseGather",
+		"ImageSparseDrefGather",
+		"ImageSparseTexelsResident",
+		"NoLine",
+		"AtomicFlagTestAndSet",
+		"AtomicFlagClear",
+		"ImageSparseRead",
 	};
 	};
 	BX_STATIC_ASSERT(BX_COUNTOF(s_spirvOpcode) == SpirvOpcode::Count);
 	BX_STATIC_ASSERT(BX_COUNTOF(s_spirvOpcode) == SpirvOpcode::Count);
 
 

+ 135 - 111
src/shader_spirv.h

@@ -17,21 +17,30 @@ namespace bgfx
 		enum Enum
 		enum Enum
 		{
 		{
 			Nop,
 			Nop,
+			Undef,
+			SourceContinued,
 			Source,
 			Source,
 			SourceExtension,
 			SourceExtension,
+			Name,
+			MemberName,
+			String,
+			Line,
 			Extension,
 			Extension,
 			ExtInstImport,
 			ExtInstImport,
+			ExtInst,
 			MemoryModel,
 			MemoryModel,
 			EntryPoint,
 			EntryPoint,
 			ExecutionMode,
 			ExecutionMode,
+			Capability,
 			TypeVoid,
 			TypeVoid,
 			TypeBool,
 			TypeBool,
 			TypeInt,
 			TypeInt,
 			TypeFloat,
 			TypeFloat,
 			TypeVector,
 			TypeVector,
 			TypeMatrix,
 			TypeMatrix,
+			TypeImage,
 			TypeSampler,
 			TypeSampler,
-			TypeFilter,
+			TypeSampledImage,
 			TypeArray,
 			TypeArray,
 			TypeRuntimeArray,
 			TypeRuntimeArray,
 			TypeStruct,
 			TypeStruct,
@@ -43,37 +52,39 @@ namespace bgfx
 			TypeReserveId,
 			TypeReserveId,
 			TypeQueue,
 			TypeQueue,
 			TypePipe,
 			TypePipe,
+			TypeForwardPointer,
 			ConstantTrue,
 			ConstantTrue,
 			ConstantFalse,
 			ConstantFalse,
 			Constant,
 			Constant,
 			ConstantComposite,
 			ConstantComposite,
 			ConstantSampler,
 			ConstantSampler,
-			ConstantNullPointer,
-			ConstantNullObject,
+			ConstantNull,
 			SpecConstantTrue,
 			SpecConstantTrue,
 			SpecConstantFalse,
 			SpecConstantFalse,
 			SpecConstant,
 			SpecConstant,
 			SpecConstantComposite,
 			SpecConstantComposite,
-			Variable,
-			VariableArray,
+			SpecConstantOp,
 			Function,
 			Function,
 			FunctionParameter,
 			FunctionParameter,
 			FunctionEnd,
 			FunctionEnd,
 			FunctionCall,
 			FunctionCall,
-			ExtInst,
-			Undef,
+			Variable,
+			ImageTexelPointer,
 			Load,
 			Load,
 			Store,
 			Store,
-			Phi,
-			DecorationGroup,
+			CopyMemory,
+			CopyMemorySized,
+			AccessChain,
+			InBoundsAccessChain,
+			PtrAccessChain,
+			ArrayLength,
+			GenericPtrMemSemantics,
+			InBoundsPtrAccessChain,
 			Decorate,
 			Decorate,
 			MemberDecorate,
 			MemberDecorate,
+			DecorationGroup,
 			GroupDecorate,
 			GroupDecorate,
 			GroupMemberDecorate,
 			GroupMemberDecorate,
-			Name,
-			MemberName,
-			String,
-			Line,
 			VectorExtractDynamic,
 			VectorExtractDynamic,
 			VectorInsertDynamic,
 			VectorInsertDynamic,
 			VectorShuffle,
 			VectorShuffle,
@@ -81,41 +92,29 @@ namespace bgfx
 			CompositeExtract,
 			CompositeExtract,
 			CompositeInsert,
 			CompositeInsert,
 			CopyObject,
 			CopyObject,
-			CopyMemory,
-			CopyMemorySized,
-			Sampler,
-			TextureSample,
-			TextureSampleDref,
-			TextureSampleLod,
-			TextureSampleProj,
-			TextureSampleGrad,
-			TextureSampleOffset,
-			TextureSampleProjLod,
-			TextureSampleProjGrad,
-			TextureSampleLodOffset,
-			TextureSampleProjOffset,
-			TextureSampleGradOffset,
-			TextureSampleProjLodOffset,
-			TextureSampleProjGradOffset,
-			TextureFetchTexelLod,
-			TextureFetchTexelOffset,
-			TextureFetchSample,
-			TextureFetchTexel,
-			TextureGather,
-			TextureGatherOffset,
-			TextureGatherOffsets,
-			TextureQuerySizeLod,
-			TextureQuerySize,
-			TextureQueryLod,
-			TextureQueryLevels,
-			TextureQuerySamples,
-			AccessChain,
-			InBoundsAccessChain,
-			SNegate,
-			FNegate,
-			Not,
-			Any,
-			All,
+			Transpose,
+			SampledImage,
+			ImageSampleImplicitLod,
+			ImageSampleExplicitLod,
+			ImageSampleDrefImplicitLod,
+			ImageSampleDrefExplicitLod,
+			ImageSampleProjImplicitLod,
+			ImageSampleProjExplicitLod,
+			ImageSampleProjDrefImplicitLod,
+			ImageSampleProjDrefExplicitLod,
+			ImageFetch,
+			ImageGather,
+			ImageDrefGather,
+			ImageRead,
+			ImageWrite,
+			Image,
+			ImageQueryFormat,
+			ImageQueryOrder,
+			ImageQuerySizeLod,
+			ImageQuerySize,
+			ImageQueryLod,
+			ImageQueryLevels,
+			ImageQuerySamples,
 			ConvertFToU,
 			ConvertFToU,
 			ConvertFToS,
 			ConvertFToS,
 			ConvertSToF,
 			ConvertSToF,
@@ -123,21 +122,17 @@ namespace bgfx
 			UConvert,
 			UConvert,
 			SConvert,
 			SConvert,
 			FConvert,
 			FConvert,
+			QuantizeToF16,
 			ConvertPtrToU,
 			ConvertPtrToU,
+			SatConvertSToU,
+			SatConvertUToS,
 			ConvertUToPtr,
 			ConvertUToPtr,
 			PtrCastToGeneric,
 			PtrCastToGeneric,
 			GenericCastToPtr,
 			GenericCastToPtr,
+			GenericCastToPtrExplicit,
 			Bitcast,
 			Bitcast,
-			Transpose,
-			IsNan,
-			IsInf,
-			IsFinite,
-			IsNormal,
-			SignBitSet,
-			LessOrGreater,
-			Ordered,
-			Unordered,
-			ArrayLength,
+			SNegate,
+			FNegate,
 			IAdd,
 			IAdd,
 			FAdd,
 			FAdd,
 			ISub,
 			ISub,
@@ -159,38 +154,60 @@ namespace bgfx
 			MatrixTimesMatrix,
 			MatrixTimesMatrix,
 			OuterProduct,
 			OuterProduct,
 			Dot,
 			Dot,
-			ShiftRightLogical,
-			ShiftRightArithmetic,
-			ShiftLeftLogical,
+			IAddCarry,
+			ISubBorrow,
+			UMulExtended,
+			SMulExtended,
+			Any,
+			All,
+			IsNan,
+			IsInf,
+			IsFinite,
+			IsNormal,
+			SignBitSet,
+			LessOrGreater,
+			Ordered,
+			Unordered,
+			LogicalEqual,
+			LogicalNotEqual,
 			LogicalOr,
 			LogicalOr,
-			LogicalXor,
 			LogicalAnd,
 			LogicalAnd,
-			BitwiseOr,
-			BitwiseXor,
-			BitwiseAnd,
+			LogicalNot,
 			Select,
 			Select,
 			IEqual,
 			IEqual,
+			INotEqual,
+			UGreaterThan,
+			SGreaterThan,
+			UGreaterThanEqual,
+			SGreaterThanEqual,
+			ULessThan,
+			SLessThan,
+			ULessThanEqual,
+			SLessThanEqual,
 			FOrdEqual,
 			FOrdEqual,
 			FUnordEqual,
 			FUnordEqual,
-			INotEqual,
 			FOrdNotEqual,
 			FOrdNotEqual,
 			FUnordNotEqual,
 			FUnordNotEqual,
-			ULessThan,
-			SLessThan,
 			FOrdLessThan,
 			FOrdLessThan,
 			FUnordLessThan,
 			FUnordLessThan,
-			UGreaterThan,
-			SGreaterThan,
 			FOrdGreaterThan,
 			FOrdGreaterThan,
 			FUnordGreaterThan,
 			FUnordGreaterThan,
-			ULessThanEqual,
-			SLessThanEqual,
 			FOrdLessThanEqual,
 			FOrdLessThanEqual,
 			FUnordLessThanEqual,
 			FUnordLessThanEqual,
-			UGreaterThanEqual,
-			SGreaterThanEqual,
 			FOrdGreaterThanEqual,
 			FOrdGreaterThanEqual,
 			FUnordGreaterThanEqual,
 			FUnordGreaterThanEqual,
+			ShiftRightLogical,
+			ShiftRightArithmetic,
+			ShiftLeftLogical,
+			BitwiseOr,
+			BitwiseXor,
+			BitwiseAnd,
+			Not,
+			BitFieldInsert,
+			BitFieldSExtract,
+			BitFieldUExtract,
+			BitReverse,
+			BitCount,
 			DPdx,
 			DPdx,
 			DPdy,
 			DPdy,
 			Fwidth,
 			Fwidth,
@@ -206,8 +223,6 @@ namespace bgfx
 			EndStreamPrimitive,
 			EndStreamPrimitive,
 			ControlBarrier,
 			ControlBarrier,
 			MemoryBarrier,
 			MemoryBarrier,
-			ImagePointer,
-			AtomicInit,
 			AtomicLoad,
 			AtomicLoad,
 			AtomicStore,
 			AtomicStore,
 			AtomicExchange,
 			AtomicExchange,
@@ -217,11 +232,14 @@ namespace bgfx
 			AtomicIDecrement,
 			AtomicIDecrement,
 			AtomicIAdd,
 			AtomicIAdd,
 			AtomicISub,
 			AtomicISub,
+			AtomicSMin,
 			AtomicUMin,
 			AtomicUMin,
+			AtomicSMax,
 			AtomicUMax,
 			AtomicUMax,
 			AtomicAnd,
 			AtomicAnd,
 			AtomicOr,
 			AtomicOr,
 			AtomicXor,
 			AtomicXor,
+			Phi,
 			LoopMerge,
 			LoopMerge,
 			SelectionMerge,
 			SelectionMerge,
 			Label,
 			Label,
@@ -234,9 +252,8 @@ namespace bgfx
 			Unreachable,
 			Unreachable,
 			LifetimeStart,
 			LifetimeStart,
 			LifetimeStop,
 			LifetimeStop,
-			CompileFlag,
-			AsyncGroupCopy,
-			WaitGroupEvents,
+			GroupAsyncCopy,
+			GroupWaitEvents,
 			GroupAll,
 			GroupAll,
 			GroupAny,
 			GroupAny,
 			GroupBroadcast,
 			GroupBroadcast,
@@ -248,8 +265,6 @@ namespace bgfx
 			GroupFMax,
 			GroupFMax,
 			GroupUMax,
 			GroupUMax,
 			GroupSMax,
 			GroupSMax,
-			GenericCastToPtrExplicit,
-			GenericPtrMemSemantics,
 			ReadPipe,
 			ReadPipe,
 			WritePipe,
 			WritePipe,
 			ReservedReadPipe,
 			ReservedReadPipe,
@@ -279,10 +294,22 @@ namespace bgfx
 			CaptureEventProfilingInfo,
 			CaptureEventProfilingInfo,
 			GetDefaultQueue,
 			GetDefaultQueue,
 			BuildNDRange,
 			BuildNDRange,
-			SatConvertSToU,
-			SatConvertUToS,
-			AtomicIMin,
-			AtomicIMax,
+			ImageSparseSampleImplicitLod,
+			ImageSparseSampleExplicitLod,
+			ImageSparseSampleDrefImplicitLod,
+			ImageSparseSampleDrefExplicitLod,
+			ImageSparseSampleProjImplicitLod,
+			ImageSparseSampleProjExplicitLod,
+			ImageSparseSampleProjDrefImplicitLod,
+			ImageSparseSampleProjDrefExplicitLod,
+			ImageSparseFetch,
+			ImageSparseGather,
+			ImageSparseDrefGather,
+			ImageSparseTexelsResident,
+			NoLine,
+			AtomicFlagTestAndSet,
+			AtomicFlagClear,
+			ImageSparseRead,
 
 
 			Count
 			Count
 		};
 		};
@@ -294,12 +321,11 @@ namespace bgfx
 		{
 		{
 			Position,
 			Position,
 			PointSize,
 			PointSize,
-			ClipVertex,
 			ClipDistance,
 			ClipDistance,
 			CullDistance,
 			CullDistance,
 			VertexId,
 			VertexId,
 			InstanceId,
 			InstanceId,
-			BuiltInPrimitiveId,
+			PrimitiveId,
 			InvocationId,
 			InvocationId,
 			Layer,
 			Layer,
 			ViewportIndex,
 			ViewportIndex,
@@ -313,7 +339,6 @@ namespace bgfx
 			SampleId,
 			SampleId,
 			SamplePosition,
 			SamplePosition,
 			SampleMask,
 			SampleMask,
-			FragColor,
 			FragDepth,
 			FragDepth,
 			HelperInvocation,
 			HelperInvocation,
 			NumWorkgroups,
 			NumWorkgroups,
@@ -327,13 +352,14 @@ namespace bgfx
 			EnqueuedWorkgroupSize,
 			EnqueuedWorkgroupSize,
 			GlobalOffset,
 			GlobalOffset,
 			GlobalLinearId,
 			GlobalLinearId,
-			WorkgroupLinearId,
 			SubgroupSize,
 			SubgroupSize,
 			SubgroupMaxSize,
 			SubgroupMaxSize,
 			NumSubgroups,
 			NumSubgroups,
 			NumEnqueuedSubgroups,
 			NumEnqueuedSubgroups,
 			SubgroupId,
 			SubgroupId,
 			SubgroupLocalInvocationId,
 			SubgroupLocalInvocationId,
+			VertexIndex,
+			InstanceIndex,
 		};
 		};
 	};
 	};
 
 
@@ -359,9 +385,7 @@ namespace bgfx
 		{
 		{
 			Simple,
 			Simple,
 			GLSL450,
 			GLSL450,
-			OpenCL12,
-			OpenCL20,
-			OpenCL21,
+			OpenCL,
 
 
 			Count
 			Count
 		};
 		};
@@ -375,13 +399,14 @@ namespace bgfx
 			Input,
 			Input,
 			Uniform,
 			Uniform,
 			Output,
 			Output,
-			WorkgroupLocal,
-			WorkgroupGlobal,
-			PrivateGlobal,
+			Workgroup,
+			CrossWorkgroup,
+			Private,
 			Function,
 			Function,
 			Generic,
 			Generic,
-			Private,
+			PushConstant,
 			AtomicCounter,
 			AtomicCounter,
+			Image,
 		};
 		};
 	};
 	};
 
 
@@ -395,6 +420,7 @@ namespace bgfx
 			TextureCube,
 			TextureCube,
 			TextureRect,
 			TextureRect,
 			Buffer,
 			Buffer,
+			SubpassData,
 		};
 		};
 	};
 	};
 
 
@@ -402,19 +428,19 @@ namespace bgfx
 	{
 	{
 		enum Enum
 		enum Enum
 		{
 		{
-			PrecisionLow,
-			PrecisionMedium,
-			PrecisionHigh,
+			RelaxedPrecision,
+			SpecId,
 			Block,
 			Block,
 			BufferBlock,
 			BufferBlock,
 			RowMajor,
 			RowMajor,
 			ColMajor,
 			ColMajor,
+			ArrayStride,
+			MatrixStride,
 			GLSLShared,
 			GLSLShared,
-			GLSLStd140,
-			GLSLStd430,
 			GLSLPacked,
 			GLSLPacked,
-			Smooth,
-			Noperspective,
+			CPacked,
+			BuiltIn,
+			NoPerspective,
 			Flat,
 			Flat,
 			Patch,
 			Patch,
 			Centroid,
 			Centroid,
@@ -425,11 +451,9 @@ namespace bgfx
 			Volatile,
 			Volatile,
 			Constant,
 			Constant,
 			Coherent,
 			Coherent,
-			Nonwritable,
-			Nonreadable,
+			NonWritable,
+			NonReadable,
 			Uniform,
 			Uniform,
-			NoStaticUse,
-			CPacked,
 			SaturatedConversion,
 			SaturatedConversion,
 			Stream,
 			Stream,
 			Location,
 			Location,
@@ -438,15 +462,15 @@ namespace bgfx
 			Binding,
 			Binding,
 			DescriptorSet,
 			DescriptorSet,
 			Offset,
 			Offset,
-			Alignment,
 			XfbBuffer,
 			XfbBuffer,
-			Stride,
-			BuiltIn,
+			XfbStride,
 			FuncParamAttr,
 			FuncParamAttr,
 			FPRoundingMode,
 			FPRoundingMode,
 			FPFastMathMode,
 			FPFastMathMode,
 			LinkageAttributes,
 			LinkageAttributes,
-			SpecId,
+			NoContraction,
+			InputAttachmentIndex,
+			Alignment,
 
 
 			Count
 			Count
 		};
 		};