fir-0.1.0.0: src/SPIRV/Capability.hs
{-# LANGUAGE DeriveLift #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-|
Module: SPIRV.Capability
Enumeration of SPIR-V capabilities. These are used at the value-level only.
A capability must be declared whenever an operation is used which requires it.
See the SPIR-V specification, section 3.31 __Capability__.
-}
module SPIRV.Capability where
-- base
import Data.String
( IsString(..) )
import Data.Word
( Word32 )
-- template-haskell
import Language.Haskell.TH.Syntax
( Lift )
-- fir
import Data.Binary.Class.Put
( Put )
--------------------------------------------------
newtype Capability = Capability Word32
deriving newtype ( Eq, Ord, Put )
deriving stock Lift
instance Show Capability where
show capability = "Capability " ++ showCapability capability
pattern Matrix :: Capability
pattern Matrix = Capability 0
pattern Shader :: Capability
pattern Shader = Capability 1
pattern Geometry :: Capability
pattern Geometry = Capability 2
pattern Tessellation :: Capability
pattern Tessellation = Capability 3
pattern Addresses :: Capability
pattern Addresses = Capability 4
pattern Linkage :: Capability
pattern Linkage = Capability 5
pattern ComputeKernel :: Capability
pattern ComputeKernel = Capability 6
pattern Vector16 :: Capability
pattern Vector16 = Capability 7
pattern Float16Buffer :: Capability
pattern Float16Buffer = Capability 8
pattern Float16 :: Capability
pattern Float16 = Capability 9
pattern Float64 :: Capability
pattern Float64 = Capability 10
pattern Int64 :: Capability
pattern Int64 = Capability 11
pattern Int64Atomics :: Capability
pattern Int64Atomics = Capability 12
pattern ImageBasic :: Capability
pattern ImageBasic = Capability 13
pattern ImageReadWrite :: Capability
pattern ImageReadWrite = Capability 14
pattern ImageMipmap :: Capability
pattern ImageMipmap = Capability 15
-- no 16
pattern Pipes :: Capability
pattern Pipes = Capability 17
pattern Groups :: Capability
pattern Groups = Capability 18
pattern DeviceEnqueue :: Capability
pattern DeviceEnqueue = Capability 19
pattern LiteralSampler :: Capability
pattern LiteralSampler = Capability 20
pattern AtomicStorage :: Capability
pattern AtomicStorage = Capability 21
pattern Int16 :: Capability
pattern Int16 = Capability 22
pattern TessellationPointSize :: Capability
pattern TessellationPointSize = Capability 23
pattern GeometryPointSize :: Capability
pattern GeometryPointSize = Capability 24
pattern ImageGatherExtended :: Capability
pattern ImageGatherExtended = Capability 25
-- no 26
pattern StorageImageMultisample :: Capability
pattern StorageImageMultisample = Capability 27
pattern UniformBufferArrayDynamicIndexing :: Capability
pattern UniformBufferArrayDynamicIndexing = Capability 28
pattern SampledImageArrayDynamicIndexing :: Capability
pattern SampledImageArrayDynamicIndexing = Capability 29
pattern StorageBufferArrayDynamicIndexing :: Capability
pattern StorageBufferArrayDynamicIndexing = Capability 30
pattern StorageImageArrayDynamicIndexing :: Capability
pattern StorageImageArrayDynamicIndexing = Capability 31
pattern ClipDistance :: Capability
pattern ClipDistance = Capability 32
pattern CullDistance :: Capability
pattern CullDistance = Capability 33
pattern ImageCubeArray :: Capability
pattern ImageCubeArray = Capability 34
pattern SampleRateShading :: Capability
pattern SampleRateShading = Capability 35
pattern ImageRect :: Capability
pattern ImageRect = Capability 36
pattern SampledRect :: Capability
pattern SampledRect = Capability 37
pattern GenericPointer :: Capability
pattern GenericPointer = Capability 38
pattern Int8 :: Capability
pattern Int8 = Capability 39
pattern InputAttachment :: Capability
pattern InputAttachment = Capability 40
pattern SparseResidency :: Capability
pattern SparseResidency = Capability 41
pattern MinLod :: Capability
pattern MinLod = Capability 42
pattern Sampled1D :: Capability
pattern Sampled1D = Capability 43
pattern Image1D :: Capability
pattern Image1D = Capability 44
pattern SampledCubeArray :: Capability
pattern SampledCubeArray = Capability 45
pattern SampledBuffer :: Capability
pattern SampledBuffer = Capability 46
pattern ImageBuffer :: Capability
pattern ImageBuffer = Capability 47
pattern ImageMSArray :: Capability
pattern ImageMSArray = Capability 48
pattern StorageImageExtendedFormats :: Capability
pattern StorageImageExtendedFormats = Capability 49
pattern ImageQuery :: Capability
pattern ImageQuery = Capability 50
pattern DerivativeControl :: Capability
pattern DerivativeControl = Capability 51
pattern InterpolationFunction :: Capability
pattern InterpolationFunction = Capability 52
pattern TransformFeedback :: Capability
pattern TransformFeedback = Capability 53
pattern GeometryStreams :: Capability
pattern GeometryStreams = Capability 54
pattern StorageImageReadWithoutFormat :: Capability
pattern StorageImageReadWithoutFormat = Capability 55
pattern StorageImageWriteWithoutFormat :: Capability
pattern StorageImageWriteWithoutFormat = Capability 56
pattern MultiViewport :: Capability
pattern MultiViewport = Capability 57
-- no 61
pattern GroupNonUniform :: Capability
pattern GroupNonUniform = Capability 61
pattern GroupNonUniformVote :: Capability
pattern GroupNonUniformVote = Capability 62
pattern GroupNonUniformArithmetic :: Capability
pattern GroupNonUniformArithmetic = Capability 63
pattern GroupNonUniformBallot :: Capability
pattern GroupNonUniformBallot = Capability 64
pattern GroupNonUniformShuffle :: Capability
pattern GroupNonUniformShuffle = Capability 65
pattern GroupNonUniformShuffleRelative :: Capability
pattern GroupNonUniformShuffleRelative = Capability 66
pattern GroupNonUniformClustered :: Capability
pattern GroupNonUniformClustered = Capability 67
pattern GroupNonUniformQuad :: Capability
pattern GroupNonUniformQuad = Capability 68
-- extensions
pattern RayQueryKHR :: Capability
pattern RayQueryKHR = Capability 4472
pattern RayTraversalPrimitiveCullingKHR :: Capability
pattern RayTraversalPrimitiveCullingKHR = Capability 4478
pattern RayTracingKHR :: Capability
pattern RayTracingKHR = Capability 4479
pattern MeshShadingNV :: Capability
pattern MeshShadingNV = Capability 5266
pattern BitInstructions :: Capability
pattern BitInstructions = Capability 6025
pattern AtomicFloat32MinMaxEXT :: Capability
pattern AtomicFloat32MinMaxEXT = Capability 5612
pattern AtomicFloat64MinMaxEXT :: Capability
pattern AtomicFloat64MinMaxEXT = Capability 5613
pattern AtomicFloat16MinMaxEXT :: Capability
pattern AtomicFloat16MinMaxEXT = Capability 5616
pattern AtomicFloat32AddEXT :: Capability
pattern AtomicFloat32AddEXT = Capability 6033
pattern AtomicFloat64AddEXT :: Capability
pattern AtomicFloat64AddEXT = Capability 6034
pattern AtomicFloat16AddEXT :: Capability
pattern AtomicFloat16AddEXT = Capability 6095
showCapability :: IsString string => Capability -> string
showCapability Matrix = "Matrix"
showCapability Shader = "Shader"
showCapability Geometry = "Geometry"
showCapability Tessellation = "Tessellation"
showCapability Addresses = "Addresses"
showCapability Linkage = "Linkage"
showCapability ComputeKernel = "ComputeKernel"
showCapability Vector16 = "Vector16"
showCapability Float16Buffer = "Float16Buffer"
showCapability Float16 = "Float16"
showCapability Float64 = "Float64"
showCapability Int64 = "Int64"
showCapability Int64Atomics = "Int64Atomics"
showCapability ImageBasic = "ImageBasic"
showCapability ImageReadWrite = "ImageReadWrite"
showCapability ImageMipmap = "ImageMipmap"
showCapability Pipes = "Pipes"
showCapability Groups = "Groups"
showCapability DeviceEnqueue = "DeviceEnqueue"
showCapability LiteralSampler = "LiteralSampler"
showCapability AtomicStorage = "AtomicStorage"
showCapability Int16 = "Int16"
showCapability TessellationPointSize = "TessellationPointSize"
showCapability GeometryPointSize = "GeometryPointSize"
showCapability ImageGatherExtended = "ImageGatherExtended"
showCapability StorageImageMultisample = "StorageImageMultisample"
showCapability UniformBufferArrayDynamicIndexing = "UniformBufferArrayDynamicIndexing"
showCapability SampledImageArrayDynamicIndexing = "SampledImageArrayDynamicIndexing"
showCapability StorageBufferArrayDynamicIndexing = "StorageBufferArrayDynamicIndexing"
showCapability StorageImageArrayDynamicIndexing = "StorageImageArrayDynamicIndexing"
showCapability ClipDistance = "ClipDistance"
showCapability CullDistance = "CullDistance"
showCapability ImageCubeArray = "ImageCubeArray"
showCapability SampleRateShading = "SampleRateShading"
showCapability ImageRect = "ImageRect"
showCapability SampledRect = "SampledRect"
showCapability GenericPointer = "GenericPointer"
showCapability Int8 = "Int8"
showCapability InputAttachment = "InputAttachment"
showCapability SparseResidency = "SparseResidency"
showCapability MinLod = "MinLod"
showCapability Sampled1D = "Sampled1D"
showCapability Image1D = "Image1D"
showCapability SampledCubeArray = "SampledCubeArray"
showCapability SampledBuffer = "SampledBuffer"
showCapability ImageBuffer = "ImageBuffer"
showCapability ImageMSArray = "ImageMSArray"
showCapability StorageImageExtendedFormats = "StorageImageExtendedFormats"
showCapability ImageQuery = "ImageQuery"
showCapability DerivativeControl = "DerivativeControl"
showCapability InterpolationFunction = "InterpolationFunction"
showCapability TransformFeedback = "TransformFeedback"
showCapability GeometryStreams = "GeometryStreams"
showCapability StorageImageReadWithoutFormat = "StorageImageReadWithoutFormat"
showCapability StorageImageWriteWithoutFormat = "StorageImageWriteWithoutFormat"
showCapability MultiViewport = "MultiViewport"
showCapability GroupNonUniform = "GroupNonUniform"
showCapability GroupNonUniformVote = "GroupNonUniformVote"
showCapability GroupNonUniformArithmetic = "GroupNonUniformArithmetic"
showCapability GroupNonUniformBallot = "GroupNonUniformBallot"
showCapability GroupNonUniformShuffle = "GroupNonUniformShuffle"
showCapability GroupNonUniformShuffleRelative = "GroupNonUniformShuffleRelative"
showCapability GroupNonUniformClustered = "GroupNonUniformClustered"
showCapability GroupNonUniformQuad = "GroupNonUniformQuad"
showCapability RayQueryKHR = "RayQueryKHR"
showCapability RayTraversalPrimitiveCullingKHR = "RayTraversalPrimitiveCullingKHR"
showCapability RayTracingKHR = "RayTracingKHR"
showCapability MeshShadingNV = "MeshShadingNV"
showCapability BitInstructions = "BitInstructions"
showCapability AtomicFloat32MinMaxEXT = "AtomicFloat32MinMaxEXT"
showCapability AtomicFloat64MinMaxEXT = "AtomicFloat64MinMaxEXT"
showCapability AtomicFloat16MinMaxEXT = "AtomicFloat16MinMaxEXT"
showCapability AtomicFloat32AddEXT = "AtomicFloat32AddEXT"
showCapability AtomicFloat64AddEXT = "AtomicFloat64AddEXT"
showCapability AtomicFloat16AddEXT = "AtomicFloat16AddEXT"
showCapability (Capability i) = fromString ( show i )