module Language.SpirV.ImageChannelOrder where
import Data.Word (Word32)
import Language.SpirV.SpirEnum
import qualified Language.SpirV.Capability as Capability
data ImageChannelOrder =
R
| A
| RG
| RA
| RGB
| RGBA
| BGRA
| ARGB
| Intensity
| Luminance
| Rx
| RGx
| RGBx
| Depth
| DepthStencil
| SRGB
| SRGBx
| SRGBA
| SBGRA
deriving(Read, Show, Eq, Ord)
instance SpirEnum ImageChannelOrder Word32 where
toWord R = 0
toWord A = 1
toWord RG = 2
toWord RA = 3
toWord RGB = 4
toWord RGBA = 5
toWord BGRA = 6
toWord ARGB = 7
toWord Intensity = 8
toWord Luminance = 9
toWord Rx = 10
toWord RGx = 11
toWord RGBx = 12
toWord Depth = 13
toWord DepthStencil = 14
toWord SRGB = 15
toWord SRGBx = 16
toWord SRGBA = 17
toWord SBGRA = 18
fromWord 0 = Just R
fromWord 1 = Just A
fromWord 2 = Just RG
fromWord 3 = Just RA
fromWord 4 = Just RGB
fromWord 5 = Just RGBA
fromWord 6 = Just BGRA
fromWord 7 = Just ARGB
fromWord 8 = Just Intensity
fromWord 9 = Just Luminance
fromWord 10 = Just Rx
fromWord 11 = Just RGx
fromWord 12 = Just RGBx
fromWord 13 = Just Depth
fromWord 14 = Just DepthStencil
fromWord 15 = Just SRGB
fromWord 16 = Just SRGBx
fromWord 17 = Just SRGBA
fromWord 18 = Just SBGRA
fromWord _ = Nothing
requiredCapabilities R = [Capability.Kernel]
requiredCapabilities A = [Capability.Kernel]
requiredCapabilities RG = [Capability.Kernel]
requiredCapabilities RA = [Capability.Kernel]
requiredCapabilities RGB = [Capability.Kernel]
requiredCapabilities RGBA = [Capability.Kernel]
requiredCapabilities BGRA = [Capability.Kernel]
requiredCapabilities ARGB = [Capability.Kernel]
requiredCapabilities Intensity = [Capability.Kernel]
requiredCapabilities Luminance = [Capability.Kernel]
requiredCapabilities Rx = [Capability.Kernel]
requiredCapabilities RGx = [Capability.Kernel]
requiredCapabilities RGBx = [Capability.Kernel]
requiredCapabilities Depth = [Capability.Kernel]
requiredCapabilities DepthStencil = [Capability.Kernel]
requiredCapabilities SRGB = [Capability.Kernel]
requiredCapabilities SRGBx = [Capability.Kernel]
requiredCapabilities SRGBA = [Capability.Kernel]
requiredCapabilities SBGRA = [Capability.Kernel]