vulkan-2.1.0.0: src/Graphics/Vulkan/Extensions/VK_EXT_global_priority.hs
{-# language Strict #-}
{-# language CPP #-}
{-# language GeneralizedNewtypeDeriving #-}
{-# language PatternSynonyms #-}
{-# language OverloadedStrings #-}
{-# language DuplicateRecordFields #-}
module Graphics.Vulkan.Extensions.VK_EXT_global_priority
( VkQueueGlobalPriorityEXT(..)
, pattern VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT
, pattern VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT
, pattern VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT
, pattern VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT
, pattern VK_ERROR_NOT_PERMITTED_EXT
, pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT
, pattern VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION
, pattern VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME
, VkDeviceQueueGlobalPriorityCreateInfoEXT(..)
) where
import Data.Int
( Int32
)
import Data.String
( IsString
)
import Foreign.Ptr
( Ptr
, plusPtr
)
import Foreign.Storable
( Storable
, Storable(..)
)
import GHC.Read
( choose
, expectP
)
import Text.ParserCombinators.ReadPrec
( (+++)
, prec
, step
)
import Text.Read
( Read(..)
, parens
)
import Text.Read.Lex
( Lexeme(Ident)
)
import Graphics.Vulkan.Core10.Core
( VkResult(..)
, VkStructureType(..)
)
-- ** VkQueueGlobalPriorityEXT
-- | 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.
--
-- - @VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT@ is below the system default.
-- Useful for non-interactive tasks.
--
-- - @VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT@ is the system default
-- priority.
--
-- - @VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT@ is above the system default.
--
-- - @VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT@ is the highest priority.
-- Useful for critical tasks.
--
-- = See Also
--
-- 'VkDeviceQueueGlobalPriorityCreateInfoEXT'
newtype VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityEXT Int32
deriving (Eq, Ord, Storable)
instance Show VkQueueGlobalPriorityEXT where
showsPrec _ VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = showString "VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT"
showsPrec _ VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = showString "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT"
showsPrec _ VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = showString "VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT"
showsPrec _ VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = showString "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"
showsPrec p (VkQueueGlobalPriorityEXT x) = showParen (p >= 11) (showString "VkQueueGlobalPriorityEXT " . showsPrec 11 x)
instance Read VkQueueGlobalPriorityEXT where
readPrec = parens ( choose [ ("VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT", pure VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT)
, ("VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT", pure VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT)
, ("VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT", pure VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT)
, ("VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT", pure VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT)
] +++
prec 10 (do
expectP (Ident "VkQueueGlobalPriorityEXT")
v <- step readPrec
pure (VkQueueGlobalPriorityEXT v)
)
)
-- No documentation found for Nested "VkQueueGlobalPriorityEXT" "VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT"
pattern VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT :: VkQueueGlobalPriorityEXT
pattern VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = VkQueueGlobalPriorityEXT 128
-- No documentation found for Nested "VkQueueGlobalPriorityEXT" "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT"
pattern VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT :: VkQueueGlobalPriorityEXT
pattern VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = VkQueueGlobalPriorityEXT 256
-- No documentation found for Nested "VkQueueGlobalPriorityEXT" "VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT"
pattern VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT :: VkQueueGlobalPriorityEXT
pattern VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = VkQueueGlobalPriorityEXT 512
-- No documentation found for Nested "VkQueueGlobalPriorityEXT" "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"
pattern VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT :: VkQueueGlobalPriorityEXT
pattern VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = VkQueueGlobalPriorityEXT 1024
-- No documentation found for Nested "VkResult" "VK_ERROR_NOT_PERMITTED_EXT"
pattern VK_ERROR_NOT_PERMITTED_EXT :: VkResult
pattern VK_ERROR_NOT_PERMITTED_EXT = VkResult (-1000174001)
-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"
pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT :: VkStructureType
pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = VkStructureType 1000174000
-- No documentation found for TopLevel "VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION"
pattern VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION :: Integral a => a
pattern VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2
-- No documentation found for TopLevel "VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME"
pattern VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME :: (Eq a ,IsString a) => a
pattern VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority"
-- | VkDeviceQueueGlobalPriorityCreateInfoEXT - Specify a system wide
-- priority
--
-- = Description
--
-- A queue created without specifying
-- @VkDeviceQueueGlobalPriorityCreateInfoEXT@ will default to
-- @VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT@.
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT@
--
-- - @globalPriority@ /must/ be a valid 'VkQueueGlobalPriorityEXT' value
--
-- = See Also
--
-- 'VkQueueGlobalPriorityEXT',
-- 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoEXT
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @globalPriority@ is the system-wide priority associated to this queue as
-- specified by 'VkQueueGlobalPriorityEXT'
vkGlobalPriority :: VkQueueGlobalPriorityEXT
}
deriving (Eq, Show)
instance Storable VkDeviceQueueGlobalPriorityCreateInfoEXT where
sizeOf ~_ = 24
alignment ~_ = 8
peek ptr = VkDeviceQueueGlobalPriorityCreateInfoEXT <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDeviceQueueGlobalPriorityCreateInfoEXT))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDeviceQueueGlobalPriorityCreateInfoEXT))
*> poke (ptr `plusPtr` 16) (vkGlobalPriority (poked :: VkDeviceQueueGlobalPriorityCreateInfoEXT))