{-# language CPP #-}
-- No documentation found for Chapter "CommandBufferUsageFlagBits"
module Vulkan.Core10.Enums.CommandBufferUsageFlagBits  ( CommandBufferUsageFlags
                                                       , CommandBufferUsageFlagBits( COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
                                                                                   , COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
                                                                                   , COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_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 CommandBufferUsageFlags = CommandBufferUsageFlagBits

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

-- | 'COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT' specifies that each recording
-- of the command buffer will only be submitted once, and the command
-- buffer will be reset and recorded again between each submission.
pattern $bCOMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT :: CommandBufferUsageFlagBits
$mCOMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT :: forall {r}.
CommandBufferUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = CommandBufferUsageFlagBits 0x00000001

-- | 'COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT' specifies that a
-- secondary command buffer is considered to be entirely inside a render
-- pass. If this is a primary command buffer, then this bit is ignored.
pattern $bCOMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT :: CommandBufferUsageFlagBits
$mCOMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT :: forall {r}.
CommandBufferUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = CommandBufferUsageFlagBits 0x00000002

-- | 'COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT' specifies that a command
-- buffer /can/ be resubmitted to any queue of the same queue family while
-- it is in the /pending state/, and recorded into multiple primary command
-- buffers.
pattern $bCOMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT :: CommandBufferUsageFlagBits
$mCOMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT :: forall {r}.
CommandBufferUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = CommandBufferUsageFlagBits 0x00000004

conNameCommandBufferUsageFlagBits :: String
conNameCommandBufferUsageFlagBits :: String
conNameCommandBufferUsageFlagBits = String
"CommandBufferUsageFlagBits"

enumPrefixCommandBufferUsageFlagBits :: String
enumPrefixCommandBufferUsageFlagBits :: String
enumPrefixCommandBufferUsageFlagBits = String
"COMMAND_BUFFER_USAGE_"

showTableCommandBufferUsageFlagBits :: [(CommandBufferUsageFlagBits, String)]
showTableCommandBufferUsageFlagBits :: [(CommandBufferUsageFlagBits, String)]
showTableCommandBufferUsageFlagBits =
  [
    ( CommandBufferUsageFlagBits
COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
    , String
"ONE_TIME_SUBMIT_BIT"
    )
  ,
    ( CommandBufferUsageFlagBits
COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
    , String
"RENDER_PASS_CONTINUE_BIT"
    )
  ,
    ( CommandBufferUsageFlagBits
COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
    , String
"SIMULTANEOUS_USE_BIT"
    )
  ]

instance Show CommandBufferUsageFlagBits where
  showsPrec :: Int -> CommandBufferUsageFlagBits -> ShowS
showsPrec =
    String
-> [(CommandBufferUsageFlagBits, String)]
-> String
-> (CommandBufferUsageFlagBits -> Flags)
-> (Flags -> ShowS)
-> Int
-> CommandBufferUsageFlagBits
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixCommandBufferUsageFlagBits
      [(CommandBufferUsageFlagBits, String)]
showTableCommandBufferUsageFlagBits
      String
conNameCommandBufferUsageFlagBits
      (\(CommandBufferUsageFlagBits 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 CommandBufferUsageFlagBits where
  readPrec :: ReadPrec CommandBufferUsageFlagBits
readPrec =
    String
-> [(CommandBufferUsageFlagBits, String)]
-> String
-> (Flags -> CommandBufferUsageFlagBits)
-> ReadPrec CommandBufferUsageFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixCommandBufferUsageFlagBits
      [(CommandBufferUsageFlagBits, String)]
showTableCommandBufferUsageFlagBits
      String
conNameCommandBufferUsageFlagBits
      Flags -> CommandBufferUsageFlagBits
CommandBufferUsageFlagBits