module Language.SpirV.Decoration where
import Data.Word (Word32)
import Language.SpirV.SpirEnum
import qualified Language.SpirV.Capability as Capability
data Decoration =
RelaxedPrecision
| SpecId
| Block
| BufferBlock
| RowMajor
| ColMajor
| ArrayStride
| MatrixStride
| GLSLShared
| GLSLPacked
| CPacked
| BuiltIn
| NoPerspective
| Flat
| Patch
| Centroid
| Sample
| Invariant
| Restrict
| Aliased
| Volatile
| Constant
| Coherent
| NonWritable
| NonReadable
| Uniform
| SaturatedConversion
| Stream
| Location
| Component
| Index
| Binding
| DescriptorSet
| Offset
| XfbBuffer
| XfbStride
| FuncParamAttr
| FPRoundingMode
| FPFastMathMode
| LinkageAttributes
| NoContraction
| InputAttachmentIndex
| Alignment
deriving(Read, Show, Eq, Ord)
instance SpirEnum Decoration Word32 where
toWord RelaxedPrecision = 0
toWord SpecId = 1
toWord Block = 2
toWord BufferBlock = 3
toWord RowMajor = 4
toWord ColMajor = 5
toWord ArrayStride = 6
toWord MatrixStride = 7
toWord GLSLShared = 8
toWord GLSLPacked = 9
toWord CPacked = 10
toWord BuiltIn = 11
toWord NoPerspective = 13
toWord Flat = 14
toWord Patch = 15
toWord Centroid = 16
toWord Sample = 17
toWord Invariant = 18
toWord Restrict = 19
toWord Aliased = 20
toWord Volatile = 21
toWord Constant = 22
toWord Coherent = 23
toWord NonWritable = 24
toWord NonReadable = 25
toWord Uniform = 26
toWord SaturatedConversion = 28
toWord Stream = 29
toWord Location = 30
toWord Component = 31
toWord Index = 32
toWord Binding = 33
toWord DescriptorSet = 34
toWord Offset = 35
toWord XfbBuffer = 36
toWord XfbStride = 37
toWord FuncParamAttr = 38
toWord FPRoundingMode = 39
toWord FPFastMathMode = 40
toWord LinkageAttributes = 41
toWord NoContraction = 42
toWord InputAttachmentIndex = 43
toWord Alignment = 44
fromWord 0 = Just RelaxedPrecision
fromWord 1 = Just SpecId
fromWord 2 = Just Block
fromWord 3 = Just BufferBlock
fromWord 4 = Just RowMajor
fromWord 5 = Just ColMajor
fromWord 6 = Just ArrayStride
fromWord 7 = Just MatrixStride
fromWord 8 = Just GLSLShared
fromWord 9 = Just GLSLPacked
fromWord 10 = Just CPacked
fromWord 11 = Just BuiltIn
fromWord 13 = Just NoPerspective
fromWord 14 = Just Flat
fromWord 15 = Just Patch
fromWord 16 = Just Centroid
fromWord 17 = Just Sample
fromWord 18 = Just Invariant
fromWord 19 = Just Restrict
fromWord 20 = Just Aliased
fromWord 21 = Just Volatile
fromWord 22 = Just Constant
fromWord 23 = Just Coherent
fromWord 24 = Just NonWritable
fromWord 25 = Just NonReadable
fromWord 26 = Just Uniform
fromWord 28 = Just SaturatedConversion
fromWord 29 = Just Stream
fromWord 30 = Just Location
fromWord 31 = Just Component
fromWord 32 = Just Index
fromWord 33 = Just Binding
fromWord 34 = Just DescriptorSet
fromWord 35 = Just Offset
fromWord 36 = Just XfbBuffer
fromWord 37 = Just XfbStride
fromWord 38 = Just FuncParamAttr
fromWord 39 = Just FPRoundingMode
fromWord 40 = Just FPFastMathMode
fromWord 41 = Just LinkageAttributes
fromWord 42 = Just NoContraction
fromWord 43 = Just InputAttachmentIndex
fromWord 44 = Just Alignment
fromWord _ = Nothing
requiredCapabilities RelaxedPrecision = [Capability.Shader]
requiredCapabilities SpecId = [Capability.Shader]
requiredCapabilities Block = [Capability.Shader]
requiredCapabilities BufferBlock = [Capability.Shader]
requiredCapabilities RowMajor = [Capability.Matrix]
requiredCapabilities ColMajor = [Capability.Matrix]
requiredCapabilities ArrayStride = [Capability.Shader]
requiredCapabilities MatrixStride = [Capability.Matrix]
requiredCapabilities GLSLShared = [Capability.Shader]
requiredCapabilities GLSLPacked = [Capability.Shader]
requiredCapabilities CPacked = [Capability.Kernel]
requiredCapabilities NoPerspective = [Capability.Shader]
requiredCapabilities Flat = [Capability.Shader]
requiredCapabilities Patch = [Capability.Tessellation]
requiredCapabilities Centroid = [Capability.Shader]
requiredCapabilities Sample = [Capability.SampleRateShading]
requiredCapabilities Invariant = [Capability.Shader]
requiredCapabilities Constant = [Capability.Kernel]
requiredCapabilities Uniform = [Capability.Shader]
requiredCapabilities SaturatedConversion = [Capability.Kernel]
requiredCapabilities Stream = [Capability.GeometryStreams]
requiredCapabilities Location = [Capability.Shader]
requiredCapabilities Component = [Capability.Shader]
requiredCapabilities Index = [Capability.Shader]
requiredCapabilities Binding = [Capability.Shader]
requiredCapabilities DescriptorSet = [Capability.Shader]
requiredCapabilities Offset = [Capability.Shader]
requiredCapabilities XfbBuffer = [Capability.TransformFeedback]
requiredCapabilities XfbStride = [Capability.TransformFeedback]
requiredCapabilities FuncParamAttr = [Capability.Kernel]
requiredCapabilities FPRoundingMode = [Capability.Kernel]
requiredCapabilities FPFastMathMode = [Capability.Kernel]
requiredCapabilities LinkageAttributes = [Capability.Linkage]
requiredCapabilities NoContraction = [Capability.Shader]
requiredCapabilities InputAttachmentIndex = [Capability.InputAttachment]
requiredCapabilities Alignment = [Capability.Kernel]
requiredCapabilities _ = []