module Language.SpirV.Dim where
import Data.Word (Word32)
import Language.SpirV.SpirEnum
import qualified Language.SpirV.Capability as Capability
data Dim =
OneD
| TwoD
| ThreeD
| Cube
| Rect
| Buffer
| SubpassData
deriving(Read, Show, Eq, Ord)
instance SpirEnum Dim Word32 where
toWord OneD = 0
toWord TwoD = 1
toWord ThreeD = 2
toWord Cube = 3
toWord Rect = 4
toWord Buffer = 5
toWord SubpassData = 6
fromWord 0 = Just OneD
fromWord 1 = Just TwoD
fromWord 2 = Just ThreeD
fromWord 3 = Just Cube
fromWord 4 = Just Rect
fromWord 5 = Just Buffer
fromWord 6 = Just SubpassData
fromWord _ = Nothing
requiredCapabilities OneD = [Capability.Sampled1D]
requiredCapabilities Cube = [Capability.Shader]
requiredCapabilities Rect = [Capability.SampledRect]
requiredCapabilities Buffer = [Capability.SampledBuffer]
requiredCapabilities SubpassData = [Capability.InputAttachment]
requiredCapabilities _ = []