{-# LANGUAGE MultiParamTypeClasses #-} module Language.SpirV.ExecutionMode where import Data.Word (Word32) import Language.SpirV.SpirEnum import qualified Language.SpirV.Capability as Capability data ExecutionMode = Invocations | SpacingEqual | SpacingFractionalEven | SpacingFractionalOdd | VertexOrderCw | VertexOrderCcw | PixelCenterInteger | OriginUpperLeft | OriginLowerLeft | EarlyFragmentTests | PointMode | Xfb | DepthReplacing | DepthAny | DepthGreater | DepthLess | DepthUnchanged | LocalSize | LocalSizeHint | InputPoints | InputLines | InputLinesAdjacency | InputTriangles | InputTrianglesAdjacency | InputQuads | InputIsolines | OutputVertices | OutputPoints | OutputLineStrip | OutputTriangleStrip | VecTypeHint | ContractionOff deriving(Read, Show, Eq, Ord) instance SpirEnum ExecutionMode Word32 where toWord Invocations = 0 toWord SpacingEqual = 1 toWord SpacingFractionalEven = 2 toWord SpacingFractionalOdd = 3 toWord VertexOrderCw = 4 toWord VertexOrderCcw = 5 toWord PixelCenterInteger = 6 toWord OriginUpperLeft = 7 toWord OriginLowerLeft = 8 toWord EarlyFragmentTests = 9 toWord PointMode = 10 toWord Xfb = 11 toWord DepthReplacing = 12 toWord DepthAny = 13 toWord DepthGreater = 14 toWord DepthLess = 15 toWord DepthUnchanged = 16 toWord LocalSize = 17 toWord LocalSizeHint = 18 toWord InputPoints = 19 toWord InputLines = 20 toWord InputLinesAdjacency = 21 toWord InputTriangles = 22 toWord InputTrianglesAdjacency = 23 toWord InputQuads = 24 toWord InputIsolines = 25 toWord OutputVertices = 26 toWord OutputPoints = 27 toWord OutputLineStrip = 28 toWord OutputTriangleStrip = 29 toWord VecTypeHint = 30 toWord ContractionOff = 31 fromWord 0 = Just Invocations fromWord 1 = Just SpacingEqual fromWord 2 = Just SpacingFractionalEven fromWord 3 = Just SpacingFractionalOdd fromWord 4 = Just VertexOrderCw fromWord 5 = Just VertexOrderCcw fromWord 6 = Just PixelCenterInteger fromWord 7 = Just OriginUpperLeft fromWord 8 = Just OriginLowerLeft fromWord 9 = Just EarlyFragmentTests fromWord 10 = Just PointMode fromWord 11 = Just Xfb fromWord 12 = Just DepthReplacing fromWord 13 = Just DepthAny fromWord 14 = Just DepthGreater fromWord 15 = Just DepthLess fromWord 16 = Just DepthUnchanged fromWord 17 = Just LocalSize fromWord 18 = Just LocalSizeHint fromWord 19 = Just InputPoints fromWord 20 = Just InputLines fromWord 21 = Just InputLinesAdjacency fromWord 22 = Just InputTriangles fromWord 23 = Just InputTrianglesAdjacency fromWord 24 = Just InputQuads fromWord 25 = Just InputIsolines fromWord 26 = Just OutputVertices fromWord 27 = Just OutputPoints fromWord 28 = Just OutputLineStrip fromWord 29 = Just OutputTriangleStrip fromWord 30 = Just VecTypeHint fromWord 31 = Just ContractionOff fromWord _ = Nothing requiredCapabilities Invocations = [Capability.Geometry] requiredCapabilities SpacingEqual = [Capability.Tessellation] requiredCapabilities SpacingFractionalEven = [Capability.Tessellation] requiredCapabilities SpacingFractionalOdd = [Capability.Tessellation] requiredCapabilities VertexOrderCw = [Capability.Tessellation] requiredCapabilities VertexOrderCcw = [Capability.Tessellation] requiredCapabilities PixelCenterInteger = [Capability.Shader] requiredCapabilities OriginUpperLeft = [Capability.Shader] requiredCapabilities OriginLowerLeft = [Capability.Shader] requiredCapabilities EarlyFragmentTests = [Capability.Shader] requiredCapabilities PointMode = [Capability.Tessellation] requiredCapabilities Xfb = [Capability.Shader] requiredCapabilities DepthReplacing = [Capability.Shader] requiredCapabilities DepthAny = [Capability.Shader] requiredCapabilities DepthGreater = [Capability.Shader] requiredCapabilities DepthLess = [Capability.Shader] requiredCapabilities DepthUnchanged = [Capability.Shader] requiredCapabilities LocalSizeHint = [Capability.Kernel] requiredCapabilities InputPoints = [Capability.Geometry] requiredCapabilities InputLines = [Capability.Geometry] requiredCapabilities InputLinesAdjacency = [Capability.Geometry] requiredCapabilities InputTriangles = [Capability.Geometry] requiredCapabilities InputTrianglesAdjacency = [Capability.Geometry] requiredCapabilities InputQuads = [Capability.Tessellation] requiredCapabilities InputIsolines = [Capability.Tessellation] requiredCapabilities OutputVertices = [Capability.Geometry] requiredCapabilities OutputPoints = [Capability.Geometry] requiredCapabilities OutputLineStrip = [Capability.Geometry] requiredCapabilities OutputTriangleStrip = [Capability.Geometry] requiredCapabilities VecTypeHint = [Capability.Kernel] requiredCapabilities ContractionOff = [Capability.Kernel] requiredCapabilities _ = []