{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE TypeSynonymInstances #-}

module Data.SpirV.Enum.FragmentShadingRate where

import Data.Bits (Bits, FiniteBits, (.|.))
import Data.Word (Word32)
import Foreign.Storable (Storable)

type FragmentShadingRate = FragmentShadingRateBits

newtype FragmentShadingRateBits = FragmentShadingRateBits Word32
  deriving newtype (FragmentShadingRateBits -> FragmentShadingRateBits -> Bool
(FragmentShadingRateBits -> FragmentShadingRateBits -> Bool)
-> (FragmentShadingRateBits -> FragmentShadingRateBits -> Bool)
-> Eq FragmentShadingRateBits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: FragmentShadingRateBits -> FragmentShadingRateBits -> Bool
== :: FragmentShadingRateBits -> FragmentShadingRateBits -> Bool
$c/= :: FragmentShadingRateBits -> FragmentShadingRateBits -> Bool
/= :: FragmentShadingRateBits -> FragmentShadingRateBits -> Bool
Eq, Eq FragmentShadingRateBits
Eq FragmentShadingRateBits =>
(FragmentShadingRateBits -> FragmentShadingRateBits -> Ordering)
-> (FragmentShadingRateBits -> FragmentShadingRateBits -> Bool)
-> (FragmentShadingRateBits -> FragmentShadingRateBits -> Bool)
-> (FragmentShadingRateBits -> FragmentShadingRateBits -> Bool)
-> (FragmentShadingRateBits -> FragmentShadingRateBits -> Bool)
-> (FragmentShadingRateBits
    -> FragmentShadingRateBits -> FragmentShadingRateBits)
-> (FragmentShadingRateBits
    -> FragmentShadingRateBits -> FragmentShadingRateBits)
-> Ord FragmentShadingRateBits
FragmentShadingRateBits -> FragmentShadingRateBits -> Bool
FragmentShadingRateBits -> FragmentShadingRateBits -> Ordering
FragmentShadingRateBits
-> FragmentShadingRateBits -> FragmentShadingRateBits
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: FragmentShadingRateBits -> FragmentShadingRateBits -> Ordering
compare :: FragmentShadingRateBits -> FragmentShadingRateBits -> Ordering
$c< :: FragmentShadingRateBits -> FragmentShadingRateBits -> Bool
< :: FragmentShadingRateBits -> FragmentShadingRateBits -> Bool
$c<= :: FragmentShadingRateBits -> FragmentShadingRateBits -> Bool
<= :: FragmentShadingRateBits -> FragmentShadingRateBits -> Bool
$c> :: FragmentShadingRateBits -> FragmentShadingRateBits -> Bool
> :: FragmentShadingRateBits -> FragmentShadingRateBits -> Bool
$c>= :: FragmentShadingRateBits -> FragmentShadingRateBits -> Bool
>= :: FragmentShadingRateBits -> FragmentShadingRateBits -> Bool
$cmax :: FragmentShadingRateBits
-> FragmentShadingRateBits -> FragmentShadingRateBits
max :: FragmentShadingRateBits
-> FragmentShadingRateBits -> FragmentShadingRateBits
$cmin :: FragmentShadingRateBits
-> FragmentShadingRateBits -> FragmentShadingRateBits
min :: FragmentShadingRateBits
-> FragmentShadingRateBits -> FragmentShadingRateBits
Ord, Ptr FragmentShadingRateBits -> IO FragmentShadingRateBits
Ptr FragmentShadingRateBits -> Int -> IO FragmentShadingRateBits
Ptr FragmentShadingRateBits
-> Int -> FragmentShadingRateBits -> IO ()
Ptr FragmentShadingRateBits -> FragmentShadingRateBits -> IO ()
FragmentShadingRateBits -> Int
(FragmentShadingRateBits -> Int)
-> (FragmentShadingRateBits -> Int)
-> (Ptr FragmentShadingRateBits
    -> Int -> IO FragmentShadingRateBits)
-> (Ptr FragmentShadingRateBits
    -> Int -> FragmentShadingRateBits -> IO ())
-> (forall b. Ptr b -> Int -> IO FragmentShadingRateBits)
-> (forall b. Ptr b -> Int -> FragmentShadingRateBits -> IO ())
-> (Ptr FragmentShadingRateBits -> IO FragmentShadingRateBits)
-> (Ptr FragmentShadingRateBits
    -> FragmentShadingRateBits -> IO ())
-> Storable FragmentShadingRateBits
forall b. Ptr b -> Int -> IO FragmentShadingRateBits
forall b. Ptr b -> Int -> FragmentShadingRateBits -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
$csizeOf :: FragmentShadingRateBits -> Int
sizeOf :: FragmentShadingRateBits -> Int
$calignment :: FragmentShadingRateBits -> Int
alignment :: FragmentShadingRateBits -> Int
$cpeekElemOff :: Ptr FragmentShadingRateBits -> Int -> IO FragmentShadingRateBits
peekElemOff :: Ptr FragmentShadingRateBits -> Int -> IO FragmentShadingRateBits
$cpokeElemOff :: Ptr FragmentShadingRateBits
-> Int -> FragmentShadingRateBits -> IO ()
pokeElemOff :: Ptr FragmentShadingRateBits
-> Int -> FragmentShadingRateBits -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO FragmentShadingRateBits
peekByteOff :: forall b. Ptr b -> Int -> IO FragmentShadingRateBits
$cpokeByteOff :: forall b. Ptr b -> Int -> FragmentShadingRateBits -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> FragmentShadingRateBits -> IO ()
$cpeek :: Ptr FragmentShadingRateBits -> IO FragmentShadingRateBits
peek :: Ptr FragmentShadingRateBits -> IO FragmentShadingRateBits
$cpoke :: Ptr FragmentShadingRateBits -> FragmentShadingRateBits -> IO ()
poke :: Ptr FragmentShadingRateBits -> FragmentShadingRateBits -> IO ()
Storable, Eq FragmentShadingRateBits
FragmentShadingRateBits
Eq FragmentShadingRateBits =>
(FragmentShadingRateBits
 -> FragmentShadingRateBits -> FragmentShadingRateBits)
-> (FragmentShadingRateBits
    -> FragmentShadingRateBits -> FragmentShadingRateBits)
-> (FragmentShadingRateBits
    -> FragmentShadingRateBits -> FragmentShadingRateBits)
-> (FragmentShadingRateBits -> FragmentShadingRateBits)
-> (FragmentShadingRateBits -> Int -> FragmentShadingRateBits)
-> (FragmentShadingRateBits -> Int -> FragmentShadingRateBits)
-> FragmentShadingRateBits
-> (Int -> FragmentShadingRateBits)
-> (FragmentShadingRateBits -> Int -> FragmentShadingRateBits)
-> (FragmentShadingRateBits -> Int -> FragmentShadingRateBits)
-> (FragmentShadingRateBits -> Int -> FragmentShadingRateBits)
-> (FragmentShadingRateBits -> Int -> Bool)
-> (FragmentShadingRateBits -> Maybe Int)
-> (FragmentShadingRateBits -> Int)
-> (FragmentShadingRateBits -> Bool)
-> (FragmentShadingRateBits -> Int -> FragmentShadingRateBits)
-> (FragmentShadingRateBits -> Int -> FragmentShadingRateBits)
-> (FragmentShadingRateBits -> Int -> FragmentShadingRateBits)
-> (FragmentShadingRateBits -> Int -> FragmentShadingRateBits)
-> (FragmentShadingRateBits -> Int -> FragmentShadingRateBits)
-> (FragmentShadingRateBits -> Int -> FragmentShadingRateBits)
-> (FragmentShadingRateBits -> Int)
-> Bits FragmentShadingRateBits
Int -> FragmentShadingRateBits
FragmentShadingRateBits -> Bool
FragmentShadingRateBits -> Int
FragmentShadingRateBits -> Maybe Int
FragmentShadingRateBits -> FragmentShadingRateBits
FragmentShadingRateBits -> Int -> Bool
FragmentShadingRateBits -> Int -> FragmentShadingRateBits
FragmentShadingRateBits
-> FragmentShadingRateBits -> FragmentShadingRateBits
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: FragmentShadingRateBits
-> FragmentShadingRateBits -> FragmentShadingRateBits
.&. :: FragmentShadingRateBits
-> FragmentShadingRateBits -> FragmentShadingRateBits
$c.|. :: FragmentShadingRateBits
-> FragmentShadingRateBits -> FragmentShadingRateBits
.|. :: FragmentShadingRateBits
-> FragmentShadingRateBits -> FragmentShadingRateBits
$cxor :: FragmentShadingRateBits
-> FragmentShadingRateBits -> FragmentShadingRateBits
xor :: FragmentShadingRateBits
-> FragmentShadingRateBits -> FragmentShadingRateBits
$ccomplement :: FragmentShadingRateBits -> FragmentShadingRateBits
complement :: FragmentShadingRateBits -> FragmentShadingRateBits
$cshift :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
shift :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
$crotate :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
rotate :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
$czeroBits :: FragmentShadingRateBits
zeroBits :: FragmentShadingRateBits
$cbit :: Int -> FragmentShadingRateBits
bit :: Int -> FragmentShadingRateBits
$csetBit :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
setBit :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
$cclearBit :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
clearBit :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
$ccomplementBit :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
complementBit :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
$ctestBit :: FragmentShadingRateBits -> Int -> Bool
testBit :: FragmentShadingRateBits -> Int -> Bool
$cbitSizeMaybe :: FragmentShadingRateBits -> Maybe Int
bitSizeMaybe :: FragmentShadingRateBits -> Maybe Int
$cbitSize :: FragmentShadingRateBits -> Int
bitSize :: FragmentShadingRateBits -> Int
$cisSigned :: FragmentShadingRateBits -> Bool
isSigned :: FragmentShadingRateBits -> Bool
$cshiftL :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
shiftL :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
$cunsafeShiftL :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
unsafeShiftL :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
$cshiftR :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
shiftR :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
$cunsafeShiftR :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
unsafeShiftR :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
$crotateL :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
rotateL :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
$crotateR :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
rotateR :: FragmentShadingRateBits -> Int -> FragmentShadingRateBits
$cpopCount :: FragmentShadingRateBits -> Int
popCount :: FragmentShadingRateBits -> Int
Bits, Bits FragmentShadingRateBits
Bits FragmentShadingRateBits =>
(FragmentShadingRateBits -> Int)
-> (FragmentShadingRateBits -> Int)
-> (FragmentShadingRateBits -> Int)
-> FiniteBits FragmentShadingRateBits
FragmentShadingRateBits -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: FragmentShadingRateBits -> Int
finiteBitSize :: FragmentShadingRateBits -> Int
$ccountLeadingZeros :: FragmentShadingRateBits -> Int
countLeadingZeros :: FragmentShadingRateBits -> Int
$ccountTrailingZeros :: FragmentShadingRateBits -> Int
countTrailingZeros :: FragmentShadingRateBits -> Int
FiniteBits)

instance Semigroup FragmentShadingRate where
  (FragmentShadingRateBits Word32
a) <> :: FragmentShadingRateBits
-> FragmentShadingRateBits -> FragmentShadingRateBits
<> (FragmentShadingRateBits Word32
b) = Word32 -> FragmentShadingRateBits
FragmentShadingRateBits (Word32
a Word32 -> Word32 -> Word32
forall a. Bits a => a -> a -> a
.|. Word32
b)

instance Monoid FragmentShadingRate where
  mempty :: FragmentShadingRateBits
mempty = Word32 -> FragmentShadingRateBits
FragmentShadingRateBits Word32
0

pattern Vertical2Pixels :: FragmentShadingRateBits
pattern $mVertical2Pixels :: forall {r}.
FragmentShadingRateBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bVertical2Pixels :: FragmentShadingRateBits
Vertical2Pixels = FragmentShadingRateBits 0x00000001

pattern Vertical4Pixels :: FragmentShadingRateBits
pattern $mVertical4Pixels :: forall {r}.
FragmentShadingRateBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bVertical4Pixels :: FragmentShadingRateBits
Vertical4Pixels = FragmentShadingRateBits 0x00000002

pattern Horizontal2Pixels :: FragmentShadingRateBits
pattern $mHorizontal2Pixels :: forall {r}.
FragmentShadingRateBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bHorizontal2Pixels :: FragmentShadingRateBits
Horizontal2Pixels = FragmentShadingRateBits 0x00000004

pattern Horizontal4Pixels :: FragmentShadingRateBits
pattern $mHorizontal4Pixels :: forall {r}.
FragmentShadingRateBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bHorizontal4Pixels :: FragmentShadingRateBits
Horizontal4Pixels = FragmentShadingRateBits 0x00000008