{-# language CPP #-}
-- No documentation found for Chapter "QueueGlobalPriority"
module Vulkan.Core14.Enums.QueueGlobalPriority  (QueueGlobalPriority( QUEUE_GLOBAL_PRIORITY_LOW
                                                                    , QUEUE_GLOBAL_PRIORITY_MEDIUM
                                                                    , QUEUE_GLOBAL_PRIORITY_HIGH
                                                                    , QUEUE_GLOBAL_PRIORITY_REALTIME
                                                                    , ..
                                                                    )) where

import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import GHC.Show (showsPrec)
import Vulkan.Zero (Zero)
import Foreign.Storable (Storable)
import Data.Int (Int32)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))

-- | VkQueueGlobalPriority - 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.
--
-- -   'QUEUE_GLOBAL_PRIORITY_LOW' is below the system default. Useful for
--     non-interactive tasks.
--
-- -   'QUEUE_GLOBAL_PRIORITY_MEDIUM' is the system default priority.
--
-- -   'QUEUE_GLOBAL_PRIORITY_HIGH' is above the system default.
--
-- -   'QUEUE_GLOBAL_PRIORITY_REALTIME' is the highest priority. Useful for
--     critical tasks.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority VK_EXT_global_priority>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_global_priority VK_KHR_global_priority>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_4 VK_VERSION_1_4>,
-- 'Vulkan.Core14.Promoted_From_VK_KHR_global_priority.DeviceQueueGlobalPriorityCreateInfo',
-- 'Vulkan.Core14.Promoted_From_VK_KHR_global_priority.QueueFamilyGlobalPriorityProperties'
newtype QueueGlobalPriority = QueueGlobalPriority Int32
  deriving newtype (QueueGlobalPriority -> QueueGlobalPriority -> Bool
(QueueGlobalPriority -> QueueGlobalPriority -> Bool)
-> (QueueGlobalPriority -> QueueGlobalPriority -> Bool)
-> Eq QueueGlobalPriority
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: QueueGlobalPriority -> QueueGlobalPriority -> Bool
== :: QueueGlobalPriority -> QueueGlobalPriority -> Bool
$c/= :: QueueGlobalPriority -> QueueGlobalPriority -> Bool
/= :: QueueGlobalPriority -> QueueGlobalPriority -> Bool
Eq, Eq QueueGlobalPriority
Eq QueueGlobalPriority =>
(QueueGlobalPriority -> QueueGlobalPriority -> Ordering)
-> (QueueGlobalPriority -> QueueGlobalPriority -> Bool)
-> (QueueGlobalPriority -> QueueGlobalPriority -> Bool)
-> (QueueGlobalPriority -> QueueGlobalPriority -> Bool)
-> (QueueGlobalPriority -> QueueGlobalPriority -> Bool)
-> (QueueGlobalPriority
    -> QueueGlobalPriority -> QueueGlobalPriority)
-> (QueueGlobalPriority
    -> QueueGlobalPriority -> QueueGlobalPriority)
-> Ord QueueGlobalPriority
QueueGlobalPriority -> QueueGlobalPriority -> Bool
QueueGlobalPriority -> QueueGlobalPriority -> Ordering
QueueGlobalPriority -> QueueGlobalPriority -> QueueGlobalPriority
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 :: QueueGlobalPriority -> QueueGlobalPriority -> Ordering
compare :: QueueGlobalPriority -> QueueGlobalPriority -> Ordering
$c< :: QueueGlobalPriority -> QueueGlobalPriority -> Bool
< :: QueueGlobalPriority -> QueueGlobalPriority -> Bool
$c<= :: QueueGlobalPriority -> QueueGlobalPriority -> Bool
<= :: QueueGlobalPriority -> QueueGlobalPriority -> Bool
$c> :: QueueGlobalPriority -> QueueGlobalPriority -> Bool
> :: QueueGlobalPriority -> QueueGlobalPriority -> Bool
$c>= :: QueueGlobalPriority -> QueueGlobalPriority -> Bool
>= :: QueueGlobalPriority -> QueueGlobalPriority -> Bool
$cmax :: QueueGlobalPriority -> QueueGlobalPriority -> QueueGlobalPriority
max :: QueueGlobalPriority -> QueueGlobalPriority -> QueueGlobalPriority
$cmin :: QueueGlobalPriority -> QueueGlobalPriority -> QueueGlobalPriority
min :: QueueGlobalPriority -> QueueGlobalPriority -> QueueGlobalPriority
Ord, Ptr QueueGlobalPriority -> IO QueueGlobalPriority
Ptr QueueGlobalPriority -> Int -> IO QueueGlobalPriority
Ptr QueueGlobalPriority -> Int -> QueueGlobalPriority -> IO ()
Ptr QueueGlobalPriority -> QueueGlobalPriority -> IO ()
QueueGlobalPriority -> Int
(QueueGlobalPriority -> Int)
-> (QueueGlobalPriority -> Int)
-> (Ptr QueueGlobalPriority -> Int -> IO QueueGlobalPriority)
-> (Ptr QueueGlobalPriority -> Int -> QueueGlobalPriority -> IO ())
-> (forall b. Ptr b -> Int -> IO QueueGlobalPriority)
-> (forall b. Ptr b -> Int -> QueueGlobalPriority -> IO ())
-> (Ptr QueueGlobalPriority -> IO QueueGlobalPriority)
-> (Ptr QueueGlobalPriority -> QueueGlobalPriority -> IO ())
-> Storable QueueGlobalPriority
forall b. Ptr b -> Int -> IO QueueGlobalPriority
forall b. Ptr b -> Int -> QueueGlobalPriority -> 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 :: QueueGlobalPriority -> Int
sizeOf :: QueueGlobalPriority -> Int
$calignment :: QueueGlobalPriority -> Int
alignment :: QueueGlobalPriority -> Int
$cpeekElemOff :: Ptr QueueGlobalPriority -> Int -> IO QueueGlobalPriority
peekElemOff :: Ptr QueueGlobalPriority -> Int -> IO QueueGlobalPriority
$cpokeElemOff :: Ptr QueueGlobalPriority -> Int -> QueueGlobalPriority -> IO ()
pokeElemOff :: Ptr QueueGlobalPriority -> Int -> QueueGlobalPriority -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO QueueGlobalPriority
peekByteOff :: forall b. Ptr b -> Int -> IO QueueGlobalPriority
$cpokeByteOff :: forall b. Ptr b -> Int -> QueueGlobalPriority -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> QueueGlobalPriority -> IO ()
$cpeek :: Ptr QueueGlobalPriority -> IO QueueGlobalPriority
peek :: Ptr QueueGlobalPriority -> IO QueueGlobalPriority
$cpoke :: Ptr QueueGlobalPriority -> QueueGlobalPriority -> IO ()
poke :: Ptr QueueGlobalPriority -> QueueGlobalPriority -> IO ()
Storable, QueueGlobalPriority
QueueGlobalPriority -> Zero QueueGlobalPriority
forall a. a -> Zero a
$czero :: QueueGlobalPriority
zero :: QueueGlobalPriority
Zero)

-- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error

-- No documentation found for Nested "VkQueueGlobalPriority" "VK_QUEUE_GLOBAL_PRIORITY_LOW"
pattern $mQUEUE_GLOBAL_PRIORITY_LOW :: forall {r}.
QueueGlobalPriority -> ((# #) -> r) -> ((# #) -> r) -> r
$bQUEUE_GLOBAL_PRIORITY_LOW :: QueueGlobalPriority
QUEUE_GLOBAL_PRIORITY_LOW = QueueGlobalPriority 128

-- No documentation found for Nested "VkQueueGlobalPriority" "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM"
pattern $mQUEUE_GLOBAL_PRIORITY_MEDIUM :: forall {r}.
QueueGlobalPriority -> ((# #) -> r) -> ((# #) -> r) -> r
$bQUEUE_GLOBAL_PRIORITY_MEDIUM :: QueueGlobalPriority
QUEUE_GLOBAL_PRIORITY_MEDIUM = QueueGlobalPriority 256

-- No documentation found for Nested "VkQueueGlobalPriority" "VK_QUEUE_GLOBAL_PRIORITY_HIGH"
pattern $mQUEUE_GLOBAL_PRIORITY_HIGH :: forall {r}.
QueueGlobalPriority -> ((# #) -> r) -> ((# #) -> r) -> r
$bQUEUE_GLOBAL_PRIORITY_HIGH :: QueueGlobalPriority
QUEUE_GLOBAL_PRIORITY_HIGH = QueueGlobalPriority 512

-- No documentation found for Nested "VkQueueGlobalPriority" "VK_QUEUE_GLOBAL_PRIORITY_REALTIME"
pattern $mQUEUE_GLOBAL_PRIORITY_REALTIME :: forall {r}.
QueueGlobalPriority -> ((# #) -> r) -> ((# #) -> r) -> r
$bQUEUE_GLOBAL_PRIORITY_REALTIME :: QueueGlobalPriority
QUEUE_GLOBAL_PRIORITY_REALTIME = QueueGlobalPriority 1024

{-# COMPLETE
  QUEUE_GLOBAL_PRIORITY_LOW
  , QUEUE_GLOBAL_PRIORITY_MEDIUM
  , QUEUE_GLOBAL_PRIORITY_HIGH
  , QUEUE_GLOBAL_PRIORITY_REALTIME ::
    QueueGlobalPriority
  #-}

conNameQueueGlobalPriority :: String
conNameQueueGlobalPriority :: String
conNameQueueGlobalPriority = String
"QueueGlobalPriority"

enumPrefixQueueGlobalPriority :: String
enumPrefixQueueGlobalPriority :: String
enumPrefixQueueGlobalPriority = String
"QUEUE_GLOBAL_PRIORITY_"

showTableQueueGlobalPriority :: [(QueueGlobalPriority, String)]
showTableQueueGlobalPriority :: [(QueueGlobalPriority, String)]
showTableQueueGlobalPriority =
  [ (QueueGlobalPriority
QUEUE_GLOBAL_PRIORITY_LOW, String
"LOW")
  , (QueueGlobalPriority
QUEUE_GLOBAL_PRIORITY_MEDIUM, String
"MEDIUM")
  , (QueueGlobalPriority
QUEUE_GLOBAL_PRIORITY_HIGH, String
"HIGH")
  , (QueueGlobalPriority
QUEUE_GLOBAL_PRIORITY_REALTIME, String
"REALTIME")
  ]

instance Show QueueGlobalPriority where
  showsPrec :: Int -> QueueGlobalPriority -> ShowS
showsPrec =
    String
-> [(QueueGlobalPriority, String)]
-> String
-> (QueueGlobalPriority -> Int32)
-> (Int32 -> ShowS)
-> Int
-> QueueGlobalPriority
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixQueueGlobalPriority
      [(QueueGlobalPriority, String)]
showTableQueueGlobalPriority
      String
conNameQueueGlobalPriority
      (\(QueueGlobalPriority Int32
x) -> Int32
x)
      (Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
11)

instance Read QueueGlobalPriority where
  readPrec :: ReadPrec QueueGlobalPriority
readPrec =
    String
-> [(QueueGlobalPriority, String)]
-> String
-> (Int32 -> QueueGlobalPriority)
-> ReadPrec QueueGlobalPriority
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixQueueGlobalPriority
      [(QueueGlobalPriority, String)]
showTableQueueGlobalPriority
      String
conNameQueueGlobalPriority
      Int32 -> QueueGlobalPriority
QueueGlobalPriority