{-# LANGUAGE MultiParamTypeClasses #-} 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 | Smooth | Noperspective | Flat | Patch | Centroid | Sample | Invariant | Restrict | Aliased | Volatile | Constant | Coherent | Nonwritable | Nonreadable | Uniform | NoStaticUse | SaturatedConversion | Stream | Location | Component | Index | Binding | DescriptorSet | Offset | XfbBuffer | XfbStride | FuncParamAttr | FPRoundingMode | FPFastMathMode | LinkageAttributes 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 Smooth = 12 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 NoStaticUse = 27 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 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 12 = Just Smooth 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 27 = Just NoStaticUse 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 _ = 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.Shader] requiredCapabilities GLSLShared = [Capability.Shader] requiredCapabilities GLSLPacked = [Capability.Shader] requiredCapabilities CPacked = [Capability.Kernel] requiredCapabilities BuiltIn = [Capability.Shader] requiredCapabilities Smooth = [Capability.Shader] requiredCapabilities Noperspective = [Capability.Shader] requiredCapabilities Flat = [Capability.Shader] requiredCapabilities Patch = [Capability.Tessellation] requiredCapabilities Centroid = [Capability.Shader] requiredCapabilities Sample = [Capability.Shader] requiredCapabilities Invariant = [Capability.Shader] requiredCapabilities Constant = [Capability.Kernel] requiredCapabilities Uniform = [Capability.Shader] requiredCapabilities SaturatedConversion = [Capability.Kernel] requiredCapabilities Stream = [Capability.Geometry] requiredCapabilities Location = [Capability.Shader] requiredCapabilities Component = [Capability.Shader] requiredCapabilities Index = [Capability.Shader] requiredCapabilities Binding = [Capability.Shader] requiredCapabilities DescriptorSet = [Capability.Shader] requiredCapabilities XfbBuffer = [Capability.Shader] requiredCapabilities XfbStride = [Capability.Shader] requiredCapabilities FuncParamAttr = [Capability.Kernel] requiredCapabilities FPRoundingMode = [Capability.Kernel] requiredCapabilities FPFastMathMode = [Capability.Kernel] requiredCapabilities LinkageAttributes = [Capability.Linkage] requiredCapabilities _ = []