{-# language CPP #-}
-- No documentation found for Chapter "SubpassDescriptionFlagBits"
module Vulkan.Core10.Enums.SubpassDescriptionFlagBits  ( SubpassDescriptionFlags
                                                       , SubpassDescriptionFlagBits( SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM
                                                                                   , SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM
                                                                                   , SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
                                                                                   , SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX
                                                                                   , ..
                                                                                   )
                                                       ) where

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

-- | VkSubpassDescriptionFlagBits - Bitmask specifying usage of a subpass
--
-- = Description
--
-- Note
--
-- Shader resolve operations allow for custom resolve operations, but
-- overdrawing pixels /may/ have a performance and\/or power cost.
-- Furthermore, since the content of any depth stencil attachment or color
-- attachment is undefined at the begining of a shader resolve subpass, any
-- depth testing, stencil testing, or blending operation which sources
-- these undefined values also has undefined result value.
--
-- = See Also
--
-- 'SubpassDescriptionFlags'
newtype SubpassDescriptionFlagBits = SubpassDescriptionFlagBits Flags
  deriving newtype (SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits -> Bool
(SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits -> Bool)
-> (SubpassDescriptionFlagBits
    -> SubpassDescriptionFlagBits -> Bool)
-> Eq SubpassDescriptionFlagBits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits -> Bool
$c/= :: SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits -> Bool
== :: SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits -> Bool
$c== :: SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits -> Bool
Eq, Eq SubpassDescriptionFlagBits
Eq SubpassDescriptionFlagBits =>
(SubpassDescriptionFlagBits
 -> SubpassDescriptionFlagBits -> Ordering)
-> (SubpassDescriptionFlagBits
    -> SubpassDescriptionFlagBits -> Bool)
-> (SubpassDescriptionFlagBits
    -> SubpassDescriptionFlagBits -> Bool)
-> (SubpassDescriptionFlagBits
    -> SubpassDescriptionFlagBits -> Bool)
-> (SubpassDescriptionFlagBits
    -> SubpassDescriptionFlagBits -> Bool)
-> (SubpassDescriptionFlagBits
    -> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits)
-> (SubpassDescriptionFlagBits
    -> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits)
-> Ord SubpassDescriptionFlagBits
SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits -> Bool
SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> Ordering
SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits
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
min :: SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits
$cmin :: SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits
max :: SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits
$cmax :: SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits
>= :: SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits -> Bool
$c>= :: SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits -> Bool
> :: SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits -> Bool
$c> :: SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits -> Bool
<= :: SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits -> Bool
$c<= :: SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits -> Bool
< :: SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits -> Bool
$c< :: SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits -> Bool
compare :: SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> Ordering
$ccompare :: SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> Ordering
$cp1Ord :: Eq SubpassDescriptionFlagBits
Ord, Ptr b -> Int -> IO SubpassDescriptionFlagBits
Ptr b -> Int -> SubpassDescriptionFlagBits -> IO ()
Ptr SubpassDescriptionFlagBits -> IO SubpassDescriptionFlagBits
Ptr SubpassDescriptionFlagBits
-> Int -> IO SubpassDescriptionFlagBits
Ptr SubpassDescriptionFlagBits
-> Int -> SubpassDescriptionFlagBits -> IO ()
Ptr SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> IO ()
SubpassDescriptionFlagBits -> Int
(SubpassDescriptionFlagBits -> Int)
-> (SubpassDescriptionFlagBits -> Int)
-> (Ptr SubpassDescriptionFlagBits
    -> Int -> IO SubpassDescriptionFlagBits)
-> (Ptr SubpassDescriptionFlagBits
    -> Int -> SubpassDescriptionFlagBits -> IO ())
-> (forall b. Ptr b -> Int -> IO SubpassDescriptionFlagBits)
-> (forall b. Ptr b -> Int -> SubpassDescriptionFlagBits -> IO ())
-> (Ptr SubpassDescriptionFlagBits
    -> IO SubpassDescriptionFlagBits)
-> (Ptr SubpassDescriptionFlagBits
    -> SubpassDescriptionFlagBits -> IO ())
-> Storable SubpassDescriptionFlagBits
forall b. Ptr b -> Int -> IO SubpassDescriptionFlagBits
forall b. Ptr b -> Int -> SubpassDescriptionFlagBits -> 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
poke :: Ptr SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> IO ()
$cpoke :: Ptr SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> IO ()
peek :: Ptr SubpassDescriptionFlagBits -> IO SubpassDescriptionFlagBits
$cpeek :: Ptr SubpassDescriptionFlagBits -> IO SubpassDescriptionFlagBits
pokeByteOff :: Ptr b -> Int -> SubpassDescriptionFlagBits -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> SubpassDescriptionFlagBits -> IO ()
peekByteOff :: Ptr b -> Int -> IO SubpassDescriptionFlagBits
$cpeekByteOff :: forall b. Ptr b -> Int -> IO SubpassDescriptionFlagBits
pokeElemOff :: Ptr SubpassDescriptionFlagBits
-> Int -> SubpassDescriptionFlagBits -> IO ()
$cpokeElemOff :: Ptr SubpassDescriptionFlagBits
-> Int -> SubpassDescriptionFlagBits -> IO ()
peekElemOff :: Ptr SubpassDescriptionFlagBits
-> Int -> IO SubpassDescriptionFlagBits
$cpeekElemOff :: Ptr SubpassDescriptionFlagBits
-> Int -> IO SubpassDescriptionFlagBits
alignment :: SubpassDescriptionFlagBits -> Int
$calignment :: SubpassDescriptionFlagBits -> Int
sizeOf :: SubpassDescriptionFlagBits -> Int
$csizeOf :: SubpassDescriptionFlagBits -> Int
Storable, SubpassDescriptionFlagBits
SubpassDescriptionFlagBits -> Zero SubpassDescriptionFlagBits
forall a. a -> Zero a
zero :: SubpassDescriptionFlagBits
$czero :: SubpassDescriptionFlagBits
Zero, Eq SubpassDescriptionFlagBits
SubpassDescriptionFlagBits
Eq SubpassDescriptionFlagBits =>
(SubpassDescriptionFlagBits
 -> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits)
-> (SubpassDescriptionFlagBits
    -> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits)
-> (SubpassDescriptionFlagBits
    -> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits)
-> (SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits)
-> (SubpassDescriptionFlagBits
    -> Int -> SubpassDescriptionFlagBits)
-> (SubpassDescriptionFlagBits
    -> Int -> SubpassDescriptionFlagBits)
-> SubpassDescriptionFlagBits
-> (Int -> SubpassDescriptionFlagBits)
-> (SubpassDescriptionFlagBits
    -> Int -> SubpassDescriptionFlagBits)
-> (SubpassDescriptionFlagBits
    -> Int -> SubpassDescriptionFlagBits)
-> (SubpassDescriptionFlagBits
    -> Int -> SubpassDescriptionFlagBits)
-> (SubpassDescriptionFlagBits -> Int -> Bool)
-> (SubpassDescriptionFlagBits -> Maybe Int)
-> (SubpassDescriptionFlagBits -> Int)
-> (SubpassDescriptionFlagBits -> Bool)
-> (SubpassDescriptionFlagBits
    -> Int -> SubpassDescriptionFlagBits)
-> (SubpassDescriptionFlagBits
    -> Int -> SubpassDescriptionFlagBits)
-> (SubpassDescriptionFlagBits
    -> Int -> SubpassDescriptionFlagBits)
-> (SubpassDescriptionFlagBits
    -> Int -> SubpassDescriptionFlagBits)
-> (SubpassDescriptionFlagBits
    -> Int -> SubpassDescriptionFlagBits)
-> (SubpassDescriptionFlagBits
    -> Int -> SubpassDescriptionFlagBits)
-> (SubpassDescriptionFlagBits -> Int)
-> Bits SubpassDescriptionFlagBits
Int -> SubpassDescriptionFlagBits
SubpassDescriptionFlagBits -> Bool
SubpassDescriptionFlagBits -> Int
SubpassDescriptionFlagBits -> Maybe Int
SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits
SubpassDescriptionFlagBits -> Int -> Bool
SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits
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
popCount :: SubpassDescriptionFlagBits -> Int
$cpopCount :: SubpassDescriptionFlagBits -> Int
rotateR :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
$crotateR :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
rotateL :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
$crotateL :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
unsafeShiftR :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
$cunsafeShiftR :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
shiftR :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
$cshiftR :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
unsafeShiftL :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
$cunsafeShiftL :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
shiftL :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
$cshiftL :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
isSigned :: SubpassDescriptionFlagBits -> Bool
$cisSigned :: SubpassDescriptionFlagBits -> Bool
bitSize :: SubpassDescriptionFlagBits -> Int
$cbitSize :: SubpassDescriptionFlagBits -> Int
bitSizeMaybe :: SubpassDescriptionFlagBits -> Maybe Int
$cbitSizeMaybe :: SubpassDescriptionFlagBits -> Maybe Int
testBit :: SubpassDescriptionFlagBits -> Int -> Bool
$ctestBit :: SubpassDescriptionFlagBits -> Int -> Bool
complementBit :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
$ccomplementBit :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
clearBit :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
$cclearBit :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
setBit :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
$csetBit :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
bit :: Int -> SubpassDescriptionFlagBits
$cbit :: Int -> SubpassDescriptionFlagBits
zeroBits :: SubpassDescriptionFlagBits
$czeroBits :: SubpassDescriptionFlagBits
rotate :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
$crotate :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
shift :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
$cshift :: SubpassDescriptionFlagBits -> Int -> SubpassDescriptionFlagBits
complement :: SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits
$ccomplement :: SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits
xor :: SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits
$cxor :: SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits
.|. :: SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits
$c.|. :: SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits
.&. :: SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits
$c.&. :: SubpassDescriptionFlagBits
-> SubpassDescriptionFlagBits -> SubpassDescriptionFlagBits
$cp1Bits :: Eq SubpassDescriptionFlagBits
Bits, Bits SubpassDescriptionFlagBits
Bits SubpassDescriptionFlagBits =>
(SubpassDescriptionFlagBits -> Int)
-> (SubpassDescriptionFlagBits -> Int)
-> (SubpassDescriptionFlagBits -> Int)
-> FiniteBits SubpassDescriptionFlagBits
SubpassDescriptionFlagBits -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
countTrailingZeros :: SubpassDescriptionFlagBits -> Int
$ccountTrailingZeros :: SubpassDescriptionFlagBits -> Int
countLeadingZeros :: SubpassDescriptionFlagBits -> Int
$ccountLeadingZeros :: SubpassDescriptionFlagBits -> Int
finiteBitSize :: SubpassDescriptionFlagBits -> Int
$cfiniteBitSize :: SubpassDescriptionFlagBits -> Int
$cp1FiniteBits :: Bits SubpassDescriptionFlagBits
FiniteBits)

-- | 'SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM' specifies that the subpass
-- performs shader resolve operations.
pattern $bSUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM :: SubpassDescriptionFlagBits
$mSUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM :: forall r.
SubpassDescriptionFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM          = SubpassDescriptionFlagBits 0x00000008
-- | 'SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM' specifies that the
-- framebuffer region is the fragment region, that is, the minimum region
-- dependencies are by pixel rather than by sample, such that any fragment
-- shader invocation /can/ access any sample associated with that fragment
-- shader invocation.
pattern $bSUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM :: SubpassDescriptionFlagBits
$mSUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM :: forall r.
SubpassDescriptionFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM         = SubpassDescriptionFlagBits 0x00000004
-- | 'SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX' specifies that
-- shaders compiled for this subpass use per-view positions which only
-- differ in value in the x component. Per-view viewport mask /can/ also be
-- used.
pattern $bSUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX :: SubpassDescriptionFlagBits
$mSUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX :: forall r.
SubpassDescriptionFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = SubpassDescriptionFlagBits 0x00000002
-- | 'SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX' specifies that shaders
-- compiled for this subpass write the attributes for all views in a single
-- invocation of each vertex processing stage. All pipelines compiled
-- against a subpass that includes this bit /must/ write per-view
-- attributes to the @*PerViewNV[]@ shader outputs, in addition to the
-- non-per-view (e.g. @Position@) outputs.
pattern $bSUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX :: SubpassDescriptionFlagBits
$mSUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX :: forall r.
SubpassDescriptionFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX      = SubpassDescriptionFlagBits 0x00000001

conNameSubpassDescriptionFlagBits :: String
conNameSubpassDescriptionFlagBits :: String
conNameSubpassDescriptionFlagBits = "SubpassDescriptionFlagBits"

enumPrefixSubpassDescriptionFlagBits :: String
enumPrefixSubpassDescriptionFlagBits :: String
enumPrefixSubpassDescriptionFlagBits = "SUBPASS_DESCRIPTION_"

showTableSubpassDescriptionFlagBits :: [(SubpassDescriptionFlagBits, String)]
showTableSubpassDescriptionFlagBits :: [(SubpassDescriptionFlagBits, String)]
showTableSubpassDescriptionFlagBits =
  [ (SubpassDescriptionFlagBits
SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM         , "SHADER_RESOLVE_BIT_QCOM")
  , (SubpassDescriptionFlagBits
SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM        , "FRAGMENT_REGION_BIT_QCOM")
  , (SubpassDescriptionFlagBits
SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX, "PER_VIEW_POSITION_X_ONLY_BIT_NVX")
  , (SubpassDescriptionFlagBits
SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX     , "PER_VIEW_ATTRIBUTES_BIT_NVX")
  ]

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

instance Read SubpassDescriptionFlagBits where
  readPrec :: ReadPrec SubpassDescriptionFlagBits
readPrec = String
-> [(SubpassDescriptionFlagBits, String)]
-> String
-> (Flags -> SubpassDescriptionFlagBits)
-> ReadPrec SubpassDescriptionFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec String
enumPrefixSubpassDescriptionFlagBits
                          [(SubpassDescriptionFlagBits, String)]
showTableSubpassDescriptionFlagBits
                          String
conNameSubpassDescriptionFlagBits
                          Flags -> SubpassDescriptionFlagBits
SubpassDescriptionFlagBits