{-# LANGUAGE MultiParamTypeClasses #-} module Language.SpirV.BuiltIn where import Data.Word (Word32) import Language.SpirV.SpirEnum import qualified Language.SpirV.Capability as Capability -- | data BuiltIn = Position | PointSize | ClipDistance | CullDistance | VertexId | InstanceId | PrimitiveId | InvocationId | Layer | ViewportIndex | TessLevelOuter | TessLevelInner | TessCoord | PatchVertices | FragCoord | PointCoord | FrontFacing | SampleId | SamplePosition | SampleMask | FragDepth | HelperInvocation | NumWorkgroups | WorkgroupSize | WorkgroupId | LocalInvocationId | GlobalInvocationId | LocalInvocationIndex | WorkDim | GlobalSize | EnqueuedWorkgroupSize | GlobalOffset | GlobalLinearId | SubgroupSize | SubgroupMaxSize | NumSubgroups | NumEnqueuedSubgroups | SubgroupId | SubgroupLocalInvocationId | VertexIndex | InstanceIndex deriving(Read, Show, Eq, Ord) instance SpirEnum BuiltIn Word32 where toWord Position = 0 toWord PointSize = 1 toWord ClipDistance = 3 toWord CullDistance = 4 toWord VertexId = 5 toWord InstanceId = 6 toWord PrimitiveId = 7 toWord InvocationId = 8 toWord Layer = 9 toWord ViewportIndex = 10 toWord TessLevelOuter = 11 toWord TessLevelInner = 12 toWord TessCoord = 13 toWord PatchVertices = 14 toWord FragCoord = 15 toWord PointCoord = 16 toWord FrontFacing = 17 toWord SampleId = 18 toWord SamplePosition = 19 toWord SampleMask = 20 toWord FragDepth = 22 toWord HelperInvocation = 23 toWord NumWorkgroups = 24 toWord WorkgroupSize = 25 toWord WorkgroupId = 26 toWord LocalInvocationId = 27 toWord GlobalInvocationId = 28 toWord LocalInvocationIndex = 29 toWord WorkDim = 30 toWord GlobalSize = 31 toWord EnqueuedWorkgroupSize = 32 toWord GlobalOffset = 33 toWord GlobalLinearId = 34 toWord SubgroupSize = 36 toWord SubgroupMaxSize = 37 toWord NumSubgroups = 38 toWord NumEnqueuedSubgroups = 39 toWord SubgroupId = 40 toWord SubgroupLocalInvocationId = 41 toWord VertexIndex = 42 toWord InstanceIndex = 43 fromWord 0 = Just Position fromWord 1 = Just PointSize fromWord 3 = Just ClipDistance fromWord 4 = Just CullDistance fromWord 5 = Just VertexId fromWord 6 = Just InstanceId fromWord 7 = Just PrimitiveId fromWord 8 = Just InvocationId fromWord 9 = Just Layer fromWord 10 = Just ViewportIndex fromWord 11 = Just TessLevelOuter fromWord 12 = Just TessLevelInner fromWord 13 = Just TessCoord fromWord 14 = Just PatchVertices fromWord 15 = Just FragCoord fromWord 16 = Just PointCoord fromWord 17 = Just FrontFacing fromWord 18 = Just SampleId fromWord 19 = Just SamplePosition fromWord 20 = Just SampleMask fromWord 22 = Just FragDepth fromWord 23 = Just HelperInvocation fromWord 24 = Just NumWorkgroups fromWord 25 = Just WorkgroupSize fromWord 26 = Just WorkgroupId fromWord 27 = Just LocalInvocationId fromWord 28 = Just GlobalInvocationId fromWord 29 = Just LocalInvocationIndex fromWord 30 = Just WorkDim fromWord 31 = Just GlobalSize fromWord 32 = Just EnqueuedWorkgroupSize fromWord 33 = Just GlobalOffset fromWord 34 = Just GlobalLinearId fromWord 36 = Just SubgroupSize fromWord 37 = Just SubgroupMaxSize fromWord 38 = Just NumSubgroups fromWord 39 = Just NumEnqueuedSubgroups fromWord 40 = Just SubgroupId fromWord 41 = Just SubgroupLocalInvocationId fromWord 42 = Just VertexIndex fromWord 43 = Just InstanceIndex fromWord _ = Nothing requiredCapabilities Position = [Capability.Shader] requiredCapabilities PointSize = [Capability.Shader] requiredCapabilities ClipDistance = [Capability.ClipDistance] requiredCapabilities CullDistance = [Capability.CullDistance] requiredCapabilities VertexId = [Capability.Shader] requiredCapabilities InstanceId = [Capability.Shader] requiredCapabilities PrimitiveId = [Capability.Geometry , Capability.Tessellation] requiredCapabilities InvocationId = [Capability.Geometry , Capability.Tessellation] requiredCapabilities Layer = [Capability.Geometry] requiredCapabilities ViewportIndex = [Capability.MultiViewport] requiredCapabilities TessLevelOuter = [Capability.Tessellation] requiredCapabilities TessLevelInner = [Capability.Tessellation] requiredCapabilities TessCoord = [Capability.Tessellation] requiredCapabilities PatchVertices = [Capability.Tessellation] requiredCapabilities FragCoord = [Capability.Shader] requiredCapabilities PointCoord = [Capability.Shader] requiredCapabilities FrontFacing = [Capability.Shader] requiredCapabilities SampleId = [Capability.SampleRateShading] requiredCapabilities SamplePosition = [Capability.SampleRateShading] requiredCapabilities SampleMask = [Capability.SampleRateShading] requiredCapabilities FragDepth = [Capability.Shader] requiredCapabilities HelperInvocation = [Capability.Shader] requiredCapabilities WorkDim = [Capability.Kernel] requiredCapabilities GlobalSize = [Capability.Kernel] requiredCapabilities EnqueuedWorkgroupSize = [Capability.Kernel] requiredCapabilities GlobalOffset = [Capability.Kernel] requiredCapabilities GlobalLinearId = [Capability.Kernel] requiredCapabilities SubgroupSize = [Capability.Kernel] requiredCapabilities SubgroupMaxSize = [Capability.Kernel] requiredCapabilities NumSubgroups = [Capability.Kernel] requiredCapabilities NumEnqueuedSubgroups = [Capability.Kernel] requiredCapabilities SubgroupId = [Capability.Kernel] requiredCapabilities SubgroupLocalInvocationId = [Capability.Kernel] requiredCapabilities VertexIndex = [Capability.Shader] requiredCapabilities InstanceIndex = [Capability.Shader] requiredCapabilities _ = []