module Language.SpirV.ImageOperands where
import Data.Word (Word32)
import Language.SpirV.SpirEnum
import qualified Language.SpirV.Capability as Capability
data ImageOperands =
None
| Bias
| Lod
| Grad
| ConstOffset
| Offset
| ConstOffsets
| Sample
| MinLod
deriving(Read, Show, Eq, Ord)
instance SpirEnum ImageOperands Word32 where
toWord None = 0
toWord Bias = 1
toWord Lod = 2
toWord Grad = 4
toWord ConstOffset = 8
toWord Offset = 16
toWord ConstOffsets = 32
toWord Sample = 64
toWord MinLod = 128
fromWord 0 = Just None
fromWord 1 = Just Bias
fromWord 2 = Just Lod
fromWord 4 = Just Grad
fromWord 8 = Just ConstOffset
fromWord 16 = Just Offset
fromWord 32 = Just ConstOffsets
fromWord 64 = Just Sample
fromWord 128 = Just MinLod
fromWord _ = Nothing
requiredCapabilities Bias = [Capability.Shader]
requiredCapabilities Offset = [Capability.ImageGatherExtended]
requiredCapabilities MinLod = [Capability.MinLod]
requiredCapabilities _ = []