{-# LANGUAGE MultiParamTypeClasses #-} 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 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 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 _ = Nothing requiredCapabilities Bias = [Capability.Shader] requiredCapabilities Offset = [Capability.ImageGatherExtended] requiredCapabilities _ = []