{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_global_priority  ( DeviceQueueGlobalPriorityCreateInfoEXT(..)
                                                 , QueueGlobalPriorityEXT( QUEUE_GLOBAL_PRIORITY_LOW_EXT
                                                                         , QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT
                                                                         , QUEUE_GLOBAL_PRIORITY_HIGH_EXT
                                                                         , QUEUE_GLOBAL_PRIORITY_REALTIME_EXT
                                                                         , ..
                                                                         )
                                                 , EXT_GLOBAL_PRIORITY_SPEC_VERSION
                                                 , pattern EXT_GLOBAL_PRIORITY_SPEC_VERSION
                                                 , EXT_GLOBAL_PRIORITY_EXTENSION_NAME
                                                 , pattern EXT_GLOBAL_PRIORITY_EXTENSION_NAME
                                                 ) where

import Foreign.Marshal.Alloc (allocaBytesAligned)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Read (choose)
import GHC.Read (expectP)
import GHC.Read (parens)
import GHC.Show (showParen)
import GHC.Show (showString)
import GHC.Show (showsPrec)
import Text.ParserCombinators.ReadPrec ((+++))
import Text.ParserCombinators.ReadPrec (prec)
import Text.ParserCombinators.ReadPrec (step)
import Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import Data.Int (Int32)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import Text.Read.Lex (Lexeme(Ident))
import Data.Kind (Type)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT))
-- | VkDeviceQueueGlobalPriorityCreateInfoEXT - Specify a system wide
-- priority
--
-- = Description
--
-- A queue created without specifying
-- 'DeviceQueueGlobalPriorityCreateInfoEXT' will default to
-- 'QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT'.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- 'QueueGlobalPriorityEXT',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfoEXT
  { -- | @globalPriority@ is the system-wide priority associated to this queue as
    -- specified by 'QueueGlobalPriorityEXT'
    --
    -- @globalPriority@ /must/ be a valid 'QueueGlobalPriorityEXT' value
    DeviceQueueGlobalPriorityCreateInfoEXT -> QueueGlobalPriorityEXT
globalPriority :: QueueGlobalPriorityEXT }
  deriving (Typeable, DeviceQueueGlobalPriorityCreateInfoEXT
-> DeviceQueueGlobalPriorityCreateInfoEXT -> Bool
(DeviceQueueGlobalPriorityCreateInfoEXT
 -> DeviceQueueGlobalPriorityCreateInfoEXT -> Bool)
-> (DeviceQueueGlobalPriorityCreateInfoEXT
    -> DeviceQueueGlobalPriorityCreateInfoEXT -> Bool)
-> Eq DeviceQueueGlobalPriorityCreateInfoEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeviceQueueGlobalPriorityCreateInfoEXT
-> DeviceQueueGlobalPriorityCreateInfoEXT -> Bool
$c/= :: DeviceQueueGlobalPriorityCreateInfoEXT
-> DeviceQueueGlobalPriorityCreateInfoEXT -> Bool
== :: DeviceQueueGlobalPriorityCreateInfoEXT
-> DeviceQueueGlobalPriorityCreateInfoEXT -> Bool
$c== :: DeviceQueueGlobalPriorityCreateInfoEXT
-> DeviceQueueGlobalPriorityCreateInfoEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (DeviceQueueGlobalPriorityCreateInfoEXT)
#endif
deriving instance Show DeviceQueueGlobalPriorityCreateInfoEXT

instance ToCStruct DeviceQueueGlobalPriorityCreateInfoEXT where
  withCStruct :: DeviceQueueGlobalPriorityCreateInfoEXT
-> (Ptr DeviceQueueGlobalPriorityCreateInfoEXT -> IO b) -> IO b
withCStruct x :: DeviceQueueGlobalPriorityCreateInfoEXT
x f :: Ptr DeviceQueueGlobalPriorityCreateInfoEXT -> IO b
f = Int
-> Int
-> (Ptr DeviceQueueGlobalPriorityCreateInfoEXT -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 24 8 ((Ptr DeviceQueueGlobalPriorityCreateInfoEXT -> IO b) -> IO b)
-> (Ptr DeviceQueueGlobalPriorityCreateInfoEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr DeviceQueueGlobalPriorityCreateInfoEXT
p -> Ptr DeviceQueueGlobalPriorityCreateInfoEXT
-> DeviceQueueGlobalPriorityCreateInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr DeviceQueueGlobalPriorityCreateInfoEXT
p DeviceQueueGlobalPriorityCreateInfoEXT
x (Ptr DeviceQueueGlobalPriorityCreateInfoEXT -> IO b
f Ptr DeviceQueueGlobalPriorityCreateInfoEXT
p)
  pokeCStruct :: Ptr DeviceQueueGlobalPriorityCreateInfoEXT
-> DeviceQueueGlobalPriorityCreateInfoEXT -> IO b -> IO b
pokeCStruct p :: Ptr DeviceQueueGlobalPriorityCreateInfoEXT
p DeviceQueueGlobalPriorityCreateInfoEXT{..} f :: IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceQueueGlobalPriorityCreateInfoEXT
p Ptr DeviceQueueGlobalPriorityCreateInfoEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceQueueGlobalPriorityCreateInfoEXT
p Ptr DeviceQueueGlobalPriorityCreateInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceQueueGlobalPriorityCreateInfoEXT
p Ptr DeviceQueueGlobalPriorityCreateInfoEXT
-> Int -> Ptr QueueGlobalPriorityEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr QueueGlobalPriorityEXT)) (QueueGlobalPriorityEXT
globalPriority)
    IO b
f
  cStructSize :: Int
cStructSize = 24
  cStructAlignment :: Int
cStructAlignment = 8
  pokeZeroCStruct :: Ptr DeviceQueueGlobalPriorityCreateInfoEXT -> IO b -> IO b
pokeZeroCStruct p :: Ptr DeviceQueueGlobalPriorityCreateInfoEXT
p f :: IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceQueueGlobalPriorityCreateInfoEXT
p Ptr DeviceQueueGlobalPriorityCreateInfoEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceQueueGlobalPriorityCreateInfoEXT
p Ptr DeviceQueueGlobalPriorityCreateInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DeviceQueueGlobalPriorityCreateInfoEXT
p Ptr DeviceQueueGlobalPriorityCreateInfoEXT
-> Int -> Ptr QueueGlobalPriorityEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr QueueGlobalPriorityEXT)) (QueueGlobalPriorityEXT
forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct DeviceQueueGlobalPriorityCreateInfoEXT where
  peekCStruct :: Ptr DeviceQueueGlobalPriorityCreateInfoEXT
-> IO DeviceQueueGlobalPriorityCreateInfoEXT
peekCStruct p :: Ptr DeviceQueueGlobalPriorityCreateInfoEXT
p = do
    QueueGlobalPriorityEXT
globalPriority <- Ptr QueueGlobalPriorityEXT -> IO QueueGlobalPriorityEXT
forall a. Storable a => Ptr a -> IO a
peek @QueueGlobalPriorityEXT ((Ptr DeviceQueueGlobalPriorityCreateInfoEXT
p Ptr DeviceQueueGlobalPriorityCreateInfoEXT
-> Int -> Ptr QueueGlobalPriorityEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr QueueGlobalPriorityEXT))
    DeviceQueueGlobalPriorityCreateInfoEXT
-> IO DeviceQueueGlobalPriorityCreateInfoEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DeviceQueueGlobalPriorityCreateInfoEXT
 -> IO DeviceQueueGlobalPriorityCreateInfoEXT)
-> DeviceQueueGlobalPriorityCreateInfoEXT
-> IO DeviceQueueGlobalPriorityCreateInfoEXT
forall a b. (a -> b) -> a -> b
$ QueueGlobalPriorityEXT -> DeviceQueueGlobalPriorityCreateInfoEXT
DeviceQueueGlobalPriorityCreateInfoEXT
             QueueGlobalPriorityEXT
globalPriority

instance Storable DeviceQueueGlobalPriorityCreateInfoEXT where
  sizeOf :: DeviceQueueGlobalPriorityCreateInfoEXT -> Int
sizeOf ~DeviceQueueGlobalPriorityCreateInfoEXT
_ = 24
  alignment :: DeviceQueueGlobalPriorityCreateInfoEXT -> Int
alignment ~DeviceQueueGlobalPriorityCreateInfoEXT
_ = 8
  peek :: Ptr DeviceQueueGlobalPriorityCreateInfoEXT
-> IO DeviceQueueGlobalPriorityCreateInfoEXT
peek = Ptr DeviceQueueGlobalPriorityCreateInfoEXT
-> IO DeviceQueueGlobalPriorityCreateInfoEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr DeviceQueueGlobalPriorityCreateInfoEXT
-> DeviceQueueGlobalPriorityCreateInfoEXT -> IO ()
poke ptr :: Ptr DeviceQueueGlobalPriorityCreateInfoEXT
ptr poked :: DeviceQueueGlobalPriorityCreateInfoEXT
poked = Ptr DeviceQueueGlobalPriorityCreateInfoEXT
-> DeviceQueueGlobalPriorityCreateInfoEXT -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr DeviceQueueGlobalPriorityCreateInfoEXT
ptr DeviceQueueGlobalPriorityCreateInfoEXT
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero DeviceQueueGlobalPriorityCreateInfoEXT where
  zero :: DeviceQueueGlobalPriorityCreateInfoEXT
zero = QueueGlobalPriorityEXT -> DeviceQueueGlobalPriorityCreateInfoEXT
DeviceQueueGlobalPriorityCreateInfoEXT
           QueueGlobalPriorityEXT
forall a. Zero a => a
zero


-- | VkQueueGlobalPriorityEXT - Values specifying a system-wide queue
-- priority
--
-- = Description
--
-- Priority values are sorted in ascending order. A comparison operation on
-- the enum values can be used to determine the priority order.
--
-- = See Also
--
-- 'DeviceQueueGlobalPriorityCreateInfoEXT'
newtype QueueGlobalPriorityEXT = QueueGlobalPriorityEXT Int32
  deriving newtype (QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool
(QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool)
-> (QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool)
-> Eq QueueGlobalPriorityEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool
$c/= :: QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool
== :: QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool
$c== :: QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool
Eq, Eq QueueGlobalPriorityEXT
Eq QueueGlobalPriorityEXT =>
(QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Ordering)
-> (QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool)
-> (QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool)
-> (QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool)
-> (QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool)
-> (QueueGlobalPriorityEXT
    -> QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT)
-> (QueueGlobalPriorityEXT
    -> QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT)
-> Ord QueueGlobalPriorityEXT
QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool
QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Ordering
QueueGlobalPriorityEXT
-> QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT
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 :: QueueGlobalPriorityEXT
-> QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT
$cmin :: QueueGlobalPriorityEXT
-> QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT
max :: QueueGlobalPriorityEXT
-> QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT
$cmax :: QueueGlobalPriorityEXT
-> QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT
>= :: QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool
$c>= :: QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool
> :: QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool
$c> :: QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool
<= :: QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool
$c<= :: QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool
< :: QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool
$c< :: QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Bool
compare :: QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Ordering
$ccompare :: QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> Ordering
$cp1Ord :: Eq QueueGlobalPriorityEXT
Ord, Ptr b -> Int -> IO QueueGlobalPriorityEXT
Ptr b -> Int -> QueueGlobalPriorityEXT -> IO ()
Ptr QueueGlobalPriorityEXT -> IO QueueGlobalPriorityEXT
Ptr QueueGlobalPriorityEXT -> Int -> IO QueueGlobalPriorityEXT
Ptr QueueGlobalPriorityEXT
-> Int -> QueueGlobalPriorityEXT -> IO ()
Ptr QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> IO ()
QueueGlobalPriorityEXT -> Int
(QueueGlobalPriorityEXT -> Int)
-> (QueueGlobalPriorityEXT -> Int)
-> (Ptr QueueGlobalPriorityEXT -> Int -> IO QueueGlobalPriorityEXT)
-> (Ptr QueueGlobalPriorityEXT
    -> Int -> QueueGlobalPriorityEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO QueueGlobalPriorityEXT)
-> (forall b. Ptr b -> Int -> QueueGlobalPriorityEXT -> IO ())
-> (Ptr QueueGlobalPriorityEXT -> IO QueueGlobalPriorityEXT)
-> (Ptr QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> IO ())
-> Storable QueueGlobalPriorityEXT
forall b. Ptr b -> Int -> IO QueueGlobalPriorityEXT
forall b. Ptr b -> Int -> QueueGlobalPriorityEXT -> 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 QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> IO ()
$cpoke :: Ptr QueueGlobalPriorityEXT -> QueueGlobalPriorityEXT -> IO ()
peek :: Ptr QueueGlobalPriorityEXT -> IO QueueGlobalPriorityEXT
$cpeek :: Ptr QueueGlobalPriorityEXT -> IO QueueGlobalPriorityEXT
pokeByteOff :: Ptr b -> Int -> QueueGlobalPriorityEXT -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> QueueGlobalPriorityEXT -> IO ()
peekByteOff :: Ptr b -> Int -> IO QueueGlobalPriorityEXT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO QueueGlobalPriorityEXT
pokeElemOff :: Ptr QueueGlobalPriorityEXT
-> Int -> QueueGlobalPriorityEXT -> IO ()
$cpokeElemOff :: Ptr QueueGlobalPriorityEXT
-> Int -> QueueGlobalPriorityEXT -> IO ()
peekElemOff :: Ptr QueueGlobalPriorityEXT -> Int -> IO QueueGlobalPriorityEXT
$cpeekElemOff :: Ptr QueueGlobalPriorityEXT -> Int -> IO QueueGlobalPriorityEXT
alignment :: QueueGlobalPriorityEXT -> Int
$calignment :: QueueGlobalPriorityEXT -> Int
sizeOf :: QueueGlobalPriorityEXT -> Int
$csizeOf :: QueueGlobalPriorityEXT -> Int
Storable, QueueGlobalPriorityEXT
QueueGlobalPriorityEXT -> Zero QueueGlobalPriorityEXT
forall a. a -> Zero a
zero :: QueueGlobalPriorityEXT
$czero :: QueueGlobalPriorityEXT
Zero)
-- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error

-- | 'QUEUE_GLOBAL_PRIORITY_LOW_EXT' is below the system default. Useful for
-- non-interactive tasks.
pattern $bQUEUE_GLOBAL_PRIORITY_LOW_EXT :: QueueGlobalPriorityEXT
$mQUEUE_GLOBAL_PRIORITY_LOW_EXT :: forall r.
QueueGlobalPriorityEXT -> (Void# -> r) -> (Void# -> r) -> r
QUEUE_GLOBAL_PRIORITY_LOW_EXT = QueueGlobalPriorityEXT 128
-- | 'QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT' is the system default priority.
pattern $bQUEUE_GLOBAL_PRIORITY_MEDIUM_EXT :: QueueGlobalPriorityEXT
$mQUEUE_GLOBAL_PRIORITY_MEDIUM_EXT :: forall r.
QueueGlobalPriorityEXT -> (Void# -> r) -> (Void# -> r) -> r
QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = QueueGlobalPriorityEXT 256
-- | 'QUEUE_GLOBAL_PRIORITY_HIGH_EXT' is above the system default.
pattern $bQUEUE_GLOBAL_PRIORITY_HIGH_EXT :: QueueGlobalPriorityEXT
$mQUEUE_GLOBAL_PRIORITY_HIGH_EXT :: forall r.
QueueGlobalPriorityEXT -> (Void# -> r) -> (Void# -> r) -> r
QUEUE_GLOBAL_PRIORITY_HIGH_EXT = QueueGlobalPriorityEXT 512
-- | 'QUEUE_GLOBAL_PRIORITY_REALTIME_EXT' is the highest priority. Useful for
-- critical tasks.
pattern $bQUEUE_GLOBAL_PRIORITY_REALTIME_EXT :: QueueGlobalPriorityEXT
$mQUEUE_GLOBAL_PRIORITY_REALTIME_EXT :: forall r.
QueueGlobalPriorityEXT -> (Void# -> r) -> (Void# -> r) -> r
QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = QueueGlobalPriorityEXT 1024
{-# complete QUEUE_GLOBAL_PRIORITY_LOW_EXT,
             QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT,
             QUEUE_GLOBAL_PRIORITY_HIGH_EXT,
             QUEUE_GLOBAL_PRIORITY_REALTIME_EXT :: QueueGlobalPriorityEXT #-}

instance Show QueueGlobalPriorityEXT where
  showsPrec :: Int -> QueueGlobalPriorityEXT -> ShowS
showsPrec p :: Int
p = \case
    QUEUE_GLOBAL_PRIORITY_LOW_EXT -> String -> ShowS
showString "QUEUE_GLOBAL_PRIORITY_LOW_EXT"
    QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT -> String -> ShowS
showString "QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT"
    QUEUE_GLOBAL_PRIORITY_HIGH_EXT -> String -> ShowS
showString "QUEUE_GLOBAL_PRIORITY_HIGH_EXT"
    QUEUE_GLOBAL_PRIORITY_REALTIME_EXT -> String -> ShowS
showString "QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"
    QueueGlobalPriorityEXT x :: Int32
x -> Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 11) (String -> ShowS
showString "QueueGlobalPriorityEXT " ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 Int32
x)

instance Read QueueGlobalPriorityEXT where
  readPrec :: ReadPrec QueueGlobalPriorityEXT
readPrec = ReadPrec QueueGlobalPriorityEXT -> ReadPrec QueueGlobalPriorityEXT
forall a. ReadPrec a -> ReadPrec a
parens ([(String, ReadPrec QueueGlobalPriorityEXT)]
-> ReadPrec QueueGlobalPriorityEXT
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose [("QUEUE_GLOBAL_PRIORITY_LOW_EXT", QueueGlobalPriorityEXT -> ReadPrec QueueGlobalPriorityEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure QueueGlobalPriorityEXT
QUEUE_GLOBAL_PRIORITY_LOW_EXT)
                            , ("QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT", QueueGlobalPriorityEXT -> ReadPrec QueueGlobalPriorityEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure QueueGlobalPriorityEXT
QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT)
                            , ("QUEUE_GLOBAL_PRIORITY_HIGH_EXT", QueueGlobalPriorityEXT -> ReadPrec QueueGlobalPriorityEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure QueueGlobalPriorityEXT
QUEUE_GLOBAL_PRIORITY_HIGH_EXT)
                            , ("QUEUE_GLOBAL_PRIORITY_REALTIME_EXT", QueueGlobalPriorityEXT -> ReadPrec QueueGlobalPriorityEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure QueueGlobalPriorityEXT
QUEUE_GLOBAL_PRIORITY_REALTIME_EXT)]
                     ReadPrec QueueGlobalPriorityEXT
-> ReadPrec QueueGlobalPriorityEXT
-> ReadPrec QueueGlobalPriorityEXT
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
                     Int
-> ReadPrec QueueGlobalPriorityEXT
-> ReadPrec QueueGlobalPriorityEXT
forall a. Int -> ReadPrec a -> ReadPrec a
prec 10 (do
                       Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident "QueueGlobalPriorityEXT")
                       Int32
v <- ReadPrec Int32 -> ReadPrec Int32
forall a. ReadPrec a -> ReadPrec a
step ReadPrec Int32
forall a. Read a => ReadPrec a
readPrec
                       QueueGlobalPriorityEXT -> ReadPrec QueueGlobalPriorityEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Int32 -> QueueGlobalPriorityEXT
QueueGlobalPriorityEXT Int32
v)))


type EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2

-- No documentation found for TopLevel "VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION"
pattern EXT_GLOBAL_PRIORITY_SPEC_VERSION :: forall a . Integral a => a
pattern $bEXT_GLOBAL_PRIORITY_SPEC_VERSION :: a
$mEXT_GLOBAL_PRIORITY_SPEC_VERSION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2


type EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority"

-- No documentation found for TopLevel "VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME"
pattern EXT_GLOBAL_PRIORITY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bEXT_GLOBAL_PRIORITY_EXTENSION_NAME :: a
$mEXT_GLOBAL_PRIORITY_EXTENSION_NAME :: forall r a.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority"