{-# language CPP #-}
-- No documentation found for Chapter "DependencyFlagBits"
module Vulkan.Core10.Enums.DependencyFlagBits  ( DependencyFlags
                                               , DependencyFlagBits( DEPENDENCY_BY_REGION_BIT
                                                                   , DEPENDENCY_FEEDBACK_LOOP_BIT_EXT
                                                                   , DEPENDENCY_VIEW_LOCAL_BIT
                                                                   , DEPENDENCY_DEVICE_GROUP_BIT
                                                                   , ..
                                                                   )
                                               ) where

import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import GHC.Show (showString)
import Numeric (showHex)
import Vulkan.Zero (Zero)
import Foreign.Storable (Storable)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Vulkan.Core10.FundamentalTypes (Flags)
type DependencyFlags = DependencyFlagBits

-- | VkDependencyFlagBits - Bitmask specifying how execution and memory
-- dependencies are formed
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
-- 'DependencyFlags'
newtype DependencyFlagBits = DependencyFlagBits Flags
  deriving newtype (DependencyFlagBits -> DependencyFlagBits -> Bool
(DependencyFlagBits -> DependencyFlagBits -> Bool)
-> (DependencyFlagBits -> DependencyFlagBits -> Bool)
-> Eq DependencyFlagBits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DependencyFlagBits -> DependencyFlagBits -> Bool
== :: DependencyFlagBits -> DependencyFlagBits -> Bool
$c/= :: DependencyFlagBits -> DependencyFlagBits -> Bool
/= :: DependencyFlagBits -> DependencyFlagBits -> Bool
Eq, Eq DependencyFlagBits
Eq DependencyFlagBits =>
(DependencyFlagBits -> DependencyFlagBits -> Ordering)
-> (DependencyFlagBits -> DependencyFlagBits -> Bool)
-> (DependencyFlagBits -> DependencyFlagBits -> Bool)
-> (DependencyFlagBits -> DependencyFlagBits -> Bool)
-> (DependencyFlagBits -> DependencyFlagBits -> Bool)
-> (DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits)
-> (DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits)
-> Ord DependencyFlagBits
DependencyFlagBits -> DependencyFlagBits -> Bool
DependencyFlagBits -> DependencyFlagBits -> Ordering
DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits
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 :: DependencyFlagBits -> DependencyFlagBits -> Ordering
compare :: DependencyFlagBits -> DependencyFlagBits -> Ordering
$c< :: DependencyFlagBits -> DependencyFlagBits -> Bool
< :: DependencyFlagBits -> DependencyFlagBits -> Bool
$c<= :: DependencyFlagBits -> DependencyFlagBits -> Bool
<= :: DependencyFlagBits -> DependencyFlagBits -> Bool
$c> :: DependencyFlagBits -> DependencyFlagBits -> Bool
> :: DependencyFlagBits -> DependencyFlagBits -> Bool
$c>= :: DependencyFlagBits -> DependencyFlagBits -> Bool
>= :: DependencyFlagBits -> DependencyFlagBits -> Bool
$cmax :: DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits
max :: DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits
$cmin :: DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits
min :: DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits
Ord, Ptr DependencyFlagBits -> IO DependencyFlagBits
Ptr DependencyFlagBits -> Int -> IO DependencyFlagBits
Ptr DependencyFlagBits -> Int -> DependencyFlagBits -> IO ()
Ptr DependencyFlagBits -> DependencyFlagBits -> IO ()
DependencyFlagBits -> Int
(DependencyFlagBits -> Int)
-> (DependencyFlagBits -> Int)
-> (Ptr DependencyFlagBits -> Int -> IO DependencyFlagBits)
-> (Ptr DependencyFlagBits -> Int -> DependencyFlagBits -> IO ())
-> (forall b. Ptr b -> Int -> IO DependencyFlagBits)
-> (forall b. Ptr b -> Int -> DependencyFlagBits -> IO ())
-> (Ptr DependencyFlagBits -> IO DependencyFlagBits)
-> (Ptr DependencyFlagBits -> DependencyFlagBits -> IO ())
-> Storable DependencyFlagBits
forall b. Ptr b -> Int -> IO DependencyFlagBits
forall b. Ptr b -> Int -> DependencyFlagBits -> 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 :: DependencyFlagBits -> Int
sizeOf :: DependencyFlagBits -> Int
$calignment :: DependencyFlagBits -> Int
alignment :: DependencyFlagBits -> Int
$cpeekElemOff :: Ptr DependencyFlagBits -> Int -> IO DependencyFlagBits
peekElemOff :: Ptr DependencyFlagBits -> Int -> IO DependencyFlagBits
$cpokeElemOff :: Ptr DependencyFlagBits -> Int -> DependencyFlagBits -> IO ()
pokeElemOff :: Ptr DependencyFlagBits -> Int -> DependencyFlagBits -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO DependencyFlagBits
peekByteOff :: forall b. Ptr b -> Int -> IO DependencyFlagBits
$cpokeByteOff :: forall b. Ptr b -> Int -> DependencyFlagBits -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> DependencyFlagBits -> IO ()
$cpeek :: Ptr DependencyFlagBits -> IO DependencyFlagBits
peek :: Ptr DependencyFlagBits -> IO DependencyFlagBits
$cpoke :: Ptr DependencyFlagBits -> DependencyFlagBits -> IO ()
poke :: Ptr DependencyFlagBits -> DependencyFlagBits -> IO ()
Storable, DependencyFlagBits
DependencyFlagBits -> Zero DependencyFlagBits
forall a. a -> Zero a
$czero :: DependencyFlagBits
zero :: DependencyFlagBits
Zero, Eq DependencyFlagBits
DependencyFlagBits
Eq DependencyFlagBits =>
(DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits)
-> (DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits)
-> (DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits)
-> (DependencyFlagBits -> DependencyFlagBits)
-> (DependencyFlagBits -> Int -> DependencyFlagBits)
-> (DependencyFlagBits -> Int -> DependencyFlagBits)
-> DependencyFlagBits
-> (Int -> DependencyFlagBits)
-> (DependencyFlagBits -> Int -> DependencyFlagBits)
-> (DependencyFlagBits -> Int -> DependencyFlagBits)
-> (DependencyFlagBits -> Int -> DependencyFlagBits)
-> (DependencyFlagBits -> Int -> Bool)
-> (DependencyFlagBits -> Maybe Int)
-> (DependencyFlagBits -> Int)
-> (DependencyFlagBits -> Bool)
-> (DependencyFlagBits -> Int -> DependencyFlagBits)
-> (DependencyFlagBits -> Int -> DependencyFlagBits)
-> (DependencyFlagBits -> Int -> DependencyFlagBits)
-> (DependencyFlagBits -> Int -> DependencyFlagBits)
-> (DependencyFlagBits -> Int -> DependencyFlagBits)
-> (DependencyFlagBits -> Int -> DependencyFlagBits)
-> (DependencyFlagBits -> Int)
-> Bits DependencyFlagBits
Int -> DependencyFlagBits
DependencyFlagBits -> Bool
DependencyFlagBits -> Int
DependencyFlagBits -> Maybe Int
DependencyFlagBits -> DependencyFlagBits
DependencyFlagBits -> Int -> Bool
DependencyFlagBits -> Int -> DependencyFlagBits
DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits
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.&. :: DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits
.&. :: DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits
$c.|. :: DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits
.|. :: DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits
$cxor :: DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits
xor :: DependencyFlagBits -> DependencyFlagBits -> DependencyFlagBits
$ccomplement :: DependencyFlagBits -> DependencyFlagBits
complement :: DependencyFlagBits -> DependencyFlagBits
$cshift :: DependencyFlagBits -> Int -> DependencyFlagBits
shift :: DependencyFlagBits -> Int -> DependencyFlagBits
$crotate :: DependencyFlagBits -> Int -> DependencyFlagBits
rotate :: DependencyFlagBits -> Int -> DependencyFlagBits
$czeroBits :: DependencyFlagBits
zeroBits :: DependencyFlagBits
$cbit :: Int -> DependencyFlagBits
bit :: Int -> DependencyFlagBits
$csetBit :: DependencyFlagBits -> Int -> DependencyFlagBits
setBit :: DependencyFlagBits -> Int -> DependencyFlagBits
$cclearBit :: DependencyFlagBits -> Int -> DependencyFlagBits
clearBit :: DependencyFlagBits -> Int -> DependencyFlagBits
$ccomplementBit :: DependencyFlagBits -> Int -> DependencyFlagBits
complementBit :: DependencyFlagBits -> Int -> DependencyFlagBits
$ctestBit :: DependencyFlagBits -> Int -> Bool
testBit :: DependencyFlagBits -> Int -> Bool
$cbitSizeMaybe :: DependencyFlagBits -> Maybe Int
bitSizeMaybe :: DependencyFlagBits -> Maybe Int
$cbitSize :: DependencyFlagBits -> Int
bitSize :: DependencyFlagBits -> Int
$cisSigned :: DependencyFlagBits -> Bool
isSigned :: DependencyFlagBits -> Bool
$cshiftL :: DependencyFlagBits -> Int -> DependencyFlagBits
shiftL :: DependencyFlagBits -> Int -> DependencyFlagBits
$cunsafeShiftL :: DependencyFlagBits -> Int -> DependencyFlagBits
unsafeShiftL :: DependencyFlagBits -> Int -> DependencyFlagBits
$cshiftR :: DependencyFlagBits -> Int -> DependencyFlagBits
shiftR :: DependencyFlagBits -> Int -> DependencyFlagBits
$cunsafeShiftR :: DependencyFlagBits -> Int -> DependencyFlagBits
unsafeShiftR :: DependencyFlagBits -> Int -> DependencyFlagBits
$crotateL :: DependencyFlagBits -> Int -> DependencyFlagBits
rotateL :: DependencyFlagBits -> Int -> DependencyFlagBits
$crotateR :: DependencyFlagBits -> Int -> DependencyFlagBits
rotateR :: DependencyFlagBits -> Int -> DependencyFlagBits
$cpopCount :: DependencyFlagBits -> Int
popCount :: DependencyFlagBits -> Int
Bits, Bits DependencyFlagBits
Bits DependencyFlagBits =>
(DependencyFlagBits -> Int)
-> (DependencyFlagBits -> Int)
-> (DependencyFlagBits -> Int)
-> FiniteBits DependencyFlagBits
DependencyFlagBits -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: DependencyFlagBits -> Int
finiteBitSize :: DependencyFlagBits -> Int
$ccountLeadingZeros :: DependencyFlagBits -> Int
countLeadingZeros :: DependencyFlagBits -> Int
$ccountTrailingZeros :: DependencyFlagBits -> Int
countTrailingZeros :: DependencyFlagBits -> Int
FiniteBits)

-- | 'DEPENDENCY_BY_REGION_BIT' specifies that dependencies will be
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-local>.
pattern $bDEPENDENCY_BY_REGION_BIT :: DependencyFlagBits
$mDEPENDENCY_BY_REGION_BIT :: forall {r}. DependencyFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
DEPENDENCY_BY_REGION_BIT = DependencyFlagBits 0x00000001

-- | 'DEPENDENCY_FEEDBACK_LOOP_BIT_EXT' specifies that the render pass will
-- write to and read from the same image using the
-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT'
-- layout.
pattern $bDEPENDENCY_FEEDBACK_LOOP_BIT_EXT :: DependencyFlagBits
$mDEPENDENCY_FEEDBACK_LOOP_BIT_EXT :: forall {r}. DependencyFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = DependencyFlagBits 0x00000008

-- | 'DEPENDENCY_VIEW_LOCAL_BIT' specifies that dependencies will be
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-view-local-dependencies view-local>.
pattern $bDEPENDENCY_VIEW_LOCAL_BIT :: DependencyFlagBits
$mDEPENDENCY_VIEW_LOCAL_BIT :: forall {r}. DependencyFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
DEPENDENCY_VIEW_LOCAL_BIT = DependencyFlagBits 0x00000002

-- | 'DEPENDENCY_DEVICE_GROUP_BIT' specifies that dependencies are
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-device-local-dependencies non-device-local>.
pattern $bDEPENDENCY_DEVICE_GROUP_BIT :: DependencyFlagBits
$mDEPENDENCY_DEVICE_GROUP_BIT :: forall {r}. DependencyFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
DEPENDENCY_DEVICE_GROUP_BIT = DependencyFlagBits 0x00000004

conNameDependencyFlagBits :: String
conNameDependencyFlagBits :: String
conNameDependencyFlagBits = String
"DependencyFlagBits"

enumPrefixDependencyFlagBits :: String
enumPrefixDependencyFlagBits :: String
enumPrefixDependencyFlagBits = String
"DEPENDENCY_"

showTableDependencyFlagBits :: [(DependencyFlagBits, String)]
showTableDependencyFlagBits :: [(DependencyFlagBits, String)]
showTableDependencyFlagBits =
  [ (DependencyFlagBits
DEPENDENCY_BY_REGION_BIT, String
"BY_REGION_BIT")
  ,
    ( DependencyFlagBits
DEPENDENCY_FEEDBACK_LOOP_BIT_EXT
    , String
"FEEDBACK_LOOP_BIT_EXT"
    )
  , (DependencyFlagBits
DEPENDENCY_VIEW_LOCAL_BIT, String
"VIEW_LOCAL_BIT")
  ,
    ( DependencyFlagBits
DEPENDENCY_DEVICE_GROUP_BIT
    , String
"DEVICE_GROUP_BIT"
    )
  ]

instance Show DependencyFlagBits where
  showsPrec :: Int -> DependencyFlagBits -> ShowS
showsPrec =
    String
-> [(DependencyFlagBits, String)]
-> String
-> (DependencyFlagBits -> Flags)
-> (Flags -> ShowS)
-> Int
-> DependencyFlagBits
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixDependencyFlagBits
      [(DependencyFlagBits, String)]
showTableDependencyFlagBits
      String
conNameDependencyFlagBits
      (\(DependencyFlagBits Flags
x) -> Flags
x)
      (\Flags
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Flags -> ShowS
forall a. Integral a => a -> ShowS
showHex Flags
x)

instance Read DependencyFlagBits where
  readPrec :: ReadPrec DependencyFlagBits
readPrec =
    String
-> [(DependencyFlagBits, String)]
-> String
-> (Flags -> DependencyFlagBits)
-> ReadPrec DependencyFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixDependencyFlagBits
      [(DependencyFlagBits, String)]
showTableDependencyFlagBits
      String
conNameDependencyFlagBits
      Flags -> DependencyFlagBits
DependencyFlagBits