module Language.SpirV.MemoryModel where
import Data.Word (Word32)
import Language.SpirV.SpirEnum
import qualified Language.SpirV.Capability as Capability
data MemoryModel =
Simple
| GLSL450
| OpenCL
deriving(Read, Show, Eq, Ord)
instance SpirEnum MemoryModel Word32 where
toWord Simple = 0
toWord GLSL450 = 1
toWord OpenCL = 2
fromWord 0 = Just Simple
fromWord 1 = Just GLSL450
fromWord 2 = Just OpenCL
fromWord _ = Nothing
requiredCapabilities Simple = [Capability.Shader]
requiredCapabilities GLSL450 = [Capability.Shader]
requiredCapabilities OpenCL = [Capability.Kernel]