{-# language CPP #-}
module Vulkan.Extensions.VK_KHR_present_wait2 ( waitForPresent2KHR
, waitForPresent2KHRSafe
, PresentWait2InfoKHR(..)
, PhysicalDevicePresentWait2FeaturesKHR(..)
, SurfaceCapabilitiesPresentWait2KHR(..)
, KHR_PRESENT_WAIT_2_SPEC_VERSION
, pattern KHR_PRESENT_WAIT_2_SPEC_VERSION
, KHR_PRESENT_WAIT_2_EXTENSION_NAME
, pattern KHR_PRESENT_WAIT_2_EXTENSION_NAME
, SwapchainKHR(..)
, SwapchainCreateFlagBitsKHR(..)
, SwapchainCreateFlagsKHR
) where
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Foreign.Marshal.Alloc (allocaBytes)
import GHC.Base (when)
import GHC.IO (throwIO)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
import Control.Monad.IO.Class (MonadIO)
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 GHC.IO.Exception (IOErrorType(..))
import GHC.IO.Exception (IOException(..))
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import Data.Word (Word64)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Handles (Device)
import Vulkan.Core10.Handles (Device(..))
import Vulkan.Core10.Handles (Device(Device))
import Vulkan.Dynamic (DeviceCmds(pVkWaitForPresent2KHR))
import Vulkan.Core10.Handles (Device_T)
import Vulkan.Core10.Enums.Result (Result)
import Vulkan.Core10.Enums.Result (Result(..))
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Extensions.Handles (SwapchainKHR)
import Vulkan.Extensions.Handles (SwapchainKHR(..))
import Vulkan.Exception (VulkanException(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagBitsKHR(..))
import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagsKHR)
import Vulkan.Extensions.Handles (SwapchainKHR(..))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkWaitForPresent2KHRUnsafe
:: FunPtr (Ptr Device_T -> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result
foreign import ccall
"dynamic" mkVkWaitForPresent2KHRSafe
:: FunPtr (Ptr Device_T -> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result
waitForPresent2KHRSafeOrUnsafe :: forall io
. (MonadIO io)
=> (FunPtr (Ptr Device_T -> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
->
Device
->
SwapchainKHR
->
PresentWait2InfoKHR
-> io (Result)
waitForPresent2KHRSafeOrUnsafe :: forall (io :: * -> *).
MonadIO io =>
(FunPtr
(Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
-> Ptr Device_T
-> SwapchainKHR
-> Ptr PresentWait2InfoKHR
-> IO Result)
-> Device -> SwapchainKHR -> PresentWait2InfoKHR -> io Result
waitForPresent2KHRSafeOrUnsafe FunPtr
(Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
-> Ptr Device_T
-> SwapchainKHR
-> Ptr PresentWait2InfoKHR
-> IO Result
mkVkWaitForPresent2KHR Device
device
SwapchainKHR
swapchain
PresentWait2InfoKHR
presentWait2Info = IO Result -> io Result
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Result -> io Result)
-> (ContT Result IO Result -> IO Result)
-> ContT Result IO Result
-> io Result
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT Result IO Result -> IO Result
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT Result IO Result -> io Result)
-> ContT Result IO Result -> io Result
forall a b. (a -> b) -> a -> b
$ do
let vkWaitForPresent2KHRPtr :: FunPtr
(Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
vkWaitForPresent2KHRPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
pVkWaitForPresent2KHR (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds :: Device -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT Result IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT Result m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT Result IO ()) -> IO () -> ContT Result IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
vkWaitForPresent2KHRPtr FunPtr
(Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
-> FunPtr
(Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkWaitForPresent2KHR is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkWaitForPresent2KHR' :: Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result
vkWaitForPresent2KHR' = FunPtr
(Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
-> Ptr Device_T
-> SwapchainKHR
-> Ptr PresentWait2InfoKHR
-> IO Result
mkVkWaitForPresent2KHR FunPtr
(Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
vkWaitForPresent2KHRPtr
pPresentWait2Info <- ((Ptr PresentWait2InfoKHR -> IO Result) -> IO Result)
-> ContT Result IO (Ptr PresentWait2InfoKHR)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr PresentWait2InfoKHR -> IO Result) -> IO Result)
-> ContT Result IO (Ptr PresentWait2InfoKHR))
-> ((Ptr PresentWait2InfoKHR -> IO Result) -> IO Result)
-> ContT Result IO (Ptr PresentWait2InfoKHR)
forall a b. (a -> b) -> a -> b
$ PresentWait2InfoKHR
-> (Ptr PresentWait2InfoKHR -> IO Result) -> IO Result
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
PresentWait2InfoKHR -> (Ptr PresentWait2InfoKHR -> IO b) -> IO b
withCStruct (PresentWait2InfoKHR
presentWait2Info)
r <- lift $ traceAroundEvent "vkWaitForPresent2KHR" (vkWaitForPresent2KHR'
(deviceHandle (device))
(swapchain)
pPresentWait2Info)
lift $ when (r < SUCCESS) (throwIO (VulkanException r))
pure $ (r)
waitForPresent2KHR :: forall io
. (MonadIO io)
=>
Device
->
SwapchainKHR
->
PresentWait2InfoKHR
-> io (Result)
waitForPresent2KHR :: forall (io :: * -> *).
MonadIO io =>
Device -> SwapchainKHR -> PresentWait2InfoKHR -> io Result
waitForPresent2KHR = (FunPtr
(Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
-> Ptr Device_T
-> SwapchainKHR
-> Ptr PresentWait2InfoKHR
-> IO Result)
-> Device -> SwapchainKHR -> PresentWait2InfoKHR -> io Result
forall (io :: * -> *).
MonadIO io =>
(FunPtr
(Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
-> Ptr Device_T
-> SwapchainKHR
-> Ptr PresentWait2InfoKHR
-> IO Result)
-> Device -> SwapchainKHR -> PresentWait2InfoKHR -> io Result
waitForPresent2KHRSafeOrUnsafe FunPtr
(Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
-> Ptr Device_T
-> SwapchainKHR
-> Ptr PresentWait2InfoKHR
-> IO Result
mkVkWaitForPresent2KHRUnsafe
waitForPresent2KHRSafe :: forall io
. (MonadIO io)
=>
Device
->
SwapchainKHR
->
PresentWait2InfoKHR
-> io (Result)
waitForPresent2KHRSafe :: forall (io :: * -> *).
MonadIO io =>
Device -> SwapchainKHR -> PresentWait2InfoKHR -> io Result
waitForPresent2KHRSafe = (FunPtr
(Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
-> Ptr Device_T
-> SwapchainKHR
-> Ptr PresentWait2InfoKHR
-> IO Result)
-> Device -> SwapchainKHR -> PresentWait2InfoKHR -> io Result
forall (io :: * -> *).
MonadIO io =>
(FunPtr
(Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
-> Ptr Device_T
-> SwapchainKHR
-> Ptr PresentWait2InfoKHR
-> IO Result)
-> Device -> SwapchainKHR -> PresentWait2InfoKHR -> io Result
waitForPresent2KHRSafeOrUnsafe FunPtr
(Ptr Device_T
-> SwapchainKHR -> Ptr PresentWait2InfoKHR -> IO Result)
-> Ptr Device_T
-> SwapchainKHR
-> Ptr PresentWait2InfoKHR
-> IO Result
mkVkWaitForPresent2KHRSafe
data PresentWait2InfoKHR = PresentWait2InfoKHR
{
PresentWait2InfoKHR -> Word64
presentId :: Word64
,
PresentWait2InfoKHR -> Word64
timeout :: Word64
}
deriving (Typeable, PresentWait2InfoKHR -> PresentWait2InfoKHR -> Bool
(PresentWait2InfoKHR -> PresentWait2InfoKHR -> Bool)
-> (PresentWait2InfoKHR -> PresentWait2InfoKHR -> Bool)
-> Eq PresentWait2InfoKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PresentWait2InfoKHR -> PresentWait2InfoKHR -> Bool
== :: PresentWait2InfoKHR -> PresentWait2InfoKHR -> Bool
$c/= :: PresentWait2InfoKHR -> PresentWait2InfoKHR -> Bool
/= :: PresentWait2InfoKHR -> PresentWait2InfoKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PresentWait2InfoKHR)
#endif
deriving instance Show PresentWait2InfoKHR
instance ToCStruct PresentWait2InfoKHR where
withCStruct :: forall b.
PresentWait2InfoKHR -> (Ptr PresentWait2InfoKHR -> IO b) -> IO b
withCStruct PresentWait2InfoKHR
x Ptr PresentWait2InfoKHR -> IO b
f = Int -> (Ptr PresentWait2InfoKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr PresentWait2InfoKHR -> IO b) -> IO b)
-> (Ptr PresentWait2InfoKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PresentWait2InfoKHR
p -> Ptr PresentWait2InfoKHR -> PresentWait2InfoKHR -> IO b -> IO b
forall b.
Ptr PresentWait2InfoKHR -> PresentWait2InfoKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PresentWait2InfoKHR
p PresentWait2InfoKHR
x (Ptr PresentWait2InfoKHR -> IO b
f Ptr PresentWait2InfoKHR
p)
pokeCStruct :: forall b.
Ptr PresentWait2InfoKHR -> PresentWait2InfoKHR -> IO b -> IO b
pokeCStruct Ptr PresentWait2InfoKHR
p PresentWait2InfoKHR{Word64
presentId :: PresentWait2InfoKHR -> Word64
timeout :: PresentWait2InfoKHR -> Word64
presentId :: Word64
timeout :: Word64
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PresentWait2InfoKHR
p Ptr PresentWait2InfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PresentWait2InfoKHR
p Ptr PresentWait2InfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word64 -> Word64 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PresentWait2InfoKHR
p Ptr PresentWait2InfoKHR -> Int -> Ptr Word64
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word64)) (Word64
presentId)
Ptr Word64 -> Word64 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PresentWait2InfoKHR
p Ptr PresentWait2InfoKHR -> Int -> Ptr Word64
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word64)) (Word64
timeout)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr PresentWait2InfoKHR -> IO b -> IO b
pokeZeroCStruct Ptr PresentWait2InfoKHR
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PresentWait2InfoKHR
p Ptr PresentWait2InfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PresentWait2InfoKHR
p Ptr PresentWait2InfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word64 -> Word64 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PresentWait2InfoKHR
p Ptr PresentWait2InfoKHR -> Int -> Ptr Word64
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word64)) (Word64
forall a. Zero a => a
zero)
Ptr Word64 -> Word64 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PresentWait2InfoKHR
p Ptr PresentWait2InfoKHR -> Int -> Ptr Word64
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word64)) (Word64
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PresentWait2InfoKHR where
peekCStruct :: Ptr PresentWait2InfoKHR -> IO PresentWait2InfoKHR
peekCStruct Ptr PresentWait2InfoKHR
p = do
presentId <- forall a. Storable a => Ptr a -> IO a
peek @Word64 ((Ptr PresentWait2InfoKHR
p Ptr PresentWait2InfoKHR -> Int -> Ptr Word64
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word64))
timeout <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
pure $ PresentWait2InfoKHR
presentId timeout
instance Storable PresentWait2InfoKHR where
sizeOf :: PresentWait2InfoKHR -> Int
sizeOf ~PresentWait2InfoKHR
_ = Int
32
alignment :: PresentWait2InfoKHR -> Int
alignment ~PresentWait2InfoKHR
_ = Int
8
peek :: Ptr PresentWait2InfoKHR -> IO PresentWait2InfoKHR
peek = Ptr PresentWait2InfoKHR -> IO PresentWait2InfoKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PresentWait2InfoKHR -> PresentWait2InfoKHR -> IO ()
poke Ptr PresentWait2InfoKHR
ptr PresentWait2InfoKHR
poked = Ptr PresentWait2InfoKHR -> PresentWait2InfoKHR -> IO () -> IO ()
forall b.
Ptr PresentWait2InfoKHR -> PresentWait2InfoKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PresentWait2InfoKHR
ptr PresentWait2InfoKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PresentWait2InfoKHR where
zero :: PresentWait2InfoKHR
zero = Word64 -> Word64 -> PresentWait2InfoKHR
PresentWait2InfoKHR
Word64
forall a. Zero a => a
zero
Word64
forall a. Zero a => a
zero
data PhysicalDevicePresentWait2FeaturesKHR = PhysicalDevicePresentWait2FeaturesKHR
{
PhysicalDevicePresentWait2FeaturesKHR -> Bool
presentWait2 :: Bool }
deriving (Typeable, PhysicalDevicePresentWait2FeaturesKHR
-> PhysicalDevicePresentWait2FeaturesKHR -> Bool
(PhysicalDevicePresentWait2FeaturesKHR
-> PhysicalDevicePresentWait2FeaturesKHR -> Bool)
-> (PhysicalDevicePresentWait2FeaturesKHR
-> PhysicalDevicePresentWait2FeaturesKHR -> Bool)
-> Eq PhysicalDevicePresentWait2FeaturesKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDevicePresentWait2FeaturesKHR
-> PhysicalDevicePresentWait2FeaturesKHR -> Bool
== :: PhysicalDevicePresentWait2FeaturesKHR
-> PhysicalDevicePresentWait2FeaturesKHR -> Bool
$c/= :: PhysicalDevicePresentWait2FeaturesKHR
-> PhysicalDevicePresentWait2FeaturesKHR -> Bool
/= :: PhysicalDevicePresentWait2FeaturesKHR
-> PhysicalDevicePresentWait2FeaturesKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDevicePresentWait2FeaturesKHR)
#endif
deriving instance Show PhysicalDevicePresentWait2FeaturesKHR
instance ToCStruct PhysicalDevicePresentWait2FeaturesKHR where
withCStruct :: forall b.
PhysicalDevicePresentWait2FeaturesKHR
-> (Ptr PhysicalDevicePresentWait2FeaturesKHR -> IO b) -> IO b
withCStruct PhysicalDevicePresentWait2FeaturesKHR
x Ptr PhysicalDevicePresentWait2FeaturesKHR -> IO b
f = Int -> (Ptr PhysicalDevicePresentWait2FeaturesKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDevicePresentWait2FeaturesKHR -> IO b) -> IO b)
-> (Ptr PhysicalDevicePresentWait2FeaturesKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDevicePresentWait2FeaturesKHR
p -> Ptr PhysicalDevicePresentWait2FeaturesKHR
-> PhysicalDevicePresentWait2FeaturesKHR -> IO b -> IO b
forall b.
Ptr PhysicalDevicePresentWait2FeaturesKHR
-> PhysicalDevicePresentWait2FeaturesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDevicePresentWait2FeaturesKHR
p PhysicalDevicePresentWait2FeaturesKHR
x (Ptr PhysicalDevicePresentWait2FeaturesKHR -> IO b
f Ptr PhysicalDevicePresentWait2FeaturesKHR
p)
pokeCStruct :: forall b.
Ptr PhysicalDevicePresentWait2FeaturesKHR
-> PhysicalDevicePresentWait2FeaturesKHR -> IO b -> IO b
pokeCStruct Ptr PhysicalDevicePresentWait2FeaturesKHR
p PhysicalDevicePresentWait2FeaturesKHR{Bool
presentWait2 :: PhysicalDevicePresentWait2FeaturesKHR -> Bool
presentWait2 :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePresentWait2FeaturesKHR
p Ptr PhysicalDevicePresentWait2FeaturesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePresentWait2FeaturesKHR
p Ptr PhysicalDevicePresentWait2FeaturesKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePresentWait2FeaturesKHR
p Ptr PhysicalDevicePresentWait2FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
presentWait2))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr PhysicalDevicePresentWait2FeaturesKHR -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDevicePresentWait2FeaturesKHR
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePresentWait2FeaturesKHR
p Ptr PhysicalDevicePresentWait2FeaturesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePresentWait2FeaturesKHR
p Ptr PhysicalDevicePresentWait2FeaturesKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePresentWait2FeaturesKHR
p Ptr PhysicalDevicePresentWait2FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDevicePresentWait2FeaturesKHR where
peekCStruct :: Ptr PhysicalDevicePresentWait2FeaturesKHR
-> IO PhysicalDevicePresentWait2FeaturesKHR
peekCStruct Ptr PhysicalDevicePresentWait2FeaturesKHR
p = do
presentWait2 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDevicePresentWait2FeaturesKHR
p Ptr PhysicalDevicePresentWait2FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
pure $ PhysicalDevicePresentWait2FeaturesKHR
(bool32ToBool presentWait2)
instance Storable PhysicalDevicePresentWait2FeaturesKHR where
sizeOf :: PhysicalDevicePresentWait2FeaturesKHR -> Int
sizeOf ~PhysicalDevicePresentWait2FeaturesKHR
_ = Int
24
alignment :: PhysicalDevicePresentWait2FeaturesKHR -> Int
alignment ~PhysicalDevicePresentWait2FeaturesKHR
_ = Int
8
peek :: Ptr PhysicalDevicePresentWait2FeaturesKHR
-> IO PhysicalDevicePresentWait2FeaturesKHR
peek = Ptr PhysicalDevicePresentWait2FeaturesKHR
-> IO PhysicalDevicePresentWait2FeaturesKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDevicePresentWait2FeaturesKHR
-> PhysicalDevicePresentWait2FeaturesKHR -> IO ()
poke Ptr PhysicalDevicePresentWait2FeaturesKHR
ptr PhysicalDevicePresentWait2FeaturesKHR
poked = Ptr PhysicalDevicePresentWait2FeaturesKHR
-> PhysicalDevicePresentWait2FeaturesKHR -> IO () -> IO ()
forall b.
Ptr PhysicalDevicePresentWait2FeaturesKHR
-> PhysicalDevicePresentWait2FeaturesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDevicePresentWait2FeaturesKHR
ptr PhysicalDevicePresentWait2FeaturesKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDevicePresentWait2FeaturesKHR where
zero :: PhysicalDevicePresentWait2FeaturesKHR
zero = Bool -> PhysicalDevicePresentWait2FeaturesKHR
PhysicalDevicePresentWait2FeaturesKHR
Bool
forall a. Zero a => a
zero
data SurfaceCapabilitiesPresentWait2KHR = SurfaceCapabilitiesPresentWait2KHR
{
SurfaceCapabilitiesPresentWait2KHR -> Bool
presentWait2Supported :: Bool }
deriving (Typeable, SurfaceCapabilitiesPresentWait2KHR
-> SurfaceCapabilitiesPresentWait2KHR -> Bool
(SurfaceCapabilitiesPresentWait2KHR
-> SurfaceCapabilitiesPresentWait2KHR -> Bool)
-> (SurfaceCapabilitiesPresentWait2KHR
-> SurfaceCapabilitiesPresentWait2KHR -> Bool)
-> Eq SurfaceCapabilitiesPresentWait2KHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SurfaceCapabilitiesPresentWait2KHR
-> SurfaceCapabilitiesPresentWait2KHR -> Bool
== :: SurfaceCapabilitiesPresentWait2KHR
-> SurfaceCapabilitiesPresentWait2KHR -> Bool
$c/= :: SurfaceCapabilitiesPresentWait2KHR
-> SurfaceCapabilitiesPresentWait2KHR -> Bool
/= :: SurfaceCapabilitiesPresentWait2KHR
-> SurfaceCapabilitiesPresentWait2KHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SurfaceCapabilitiesPresentWait2KHR)
#endif
deriving instance Show SurfaceCapabilitiesPresentWait2KHR
instance ToCStruct SurfaceCapabilitiesPresentWait2KHR where
withCStruct :: forall b.
SurfaceCapabilitiesPresentWait2KHR
-> (Ptr SurfaceCapabilitiesPresentWait2KHR -> IO b) -> IO b
withCStruct SurfaceCapabilitiesPresentWait2KHR
x Ptr SurfaceCapabilitiesPresentWait2KHR -> IO b
f = Int -> (Ptr SurfaceCapabilitiesPresentWait2KHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr SurfaceCapabilitiesPresentWait2KHR -> IO b) -> IO b)
-> (Ptr SurfaceCapabilitiesPresentWait2KHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceCapabilitiesPresentWait2KHR
p -> Ptr SurfaceCapabilitiesPresentWait2KHR
-> SurfaceCapabilitiesPresentWait2KHR -> IO b -> IO b
forall b.
Ptr SurfaceCapabilitiesPresentWait2KHR
-> SurfaceCapabilitiesPresentWait2KHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SurfaceCapabilitiesPresentWait2KHR
p SurfaceCapabilitiesPresentWait2KHR
x (Ptr SurfaceCapabilitiesPresentWait2KHR -> IO b
f Ptr SurfaceCapabilitiesPresentWait2KHR
p)
pokeCStruct :: forall b.
Ptr SurfaceCapabilitiesPresentWait2KHR
-> SurfaceCapabilitiesPresentWait2KHR -> IO b -> IO b
pokeCStruct Ptr SurfaceCapabilitiesPresentWait2KHR
p SurfaceCapabilitiesPresentWait2KHR{Bool
presentWait2Supported :: SurfaceCapabilitiesPresentWait2KHR -> Bool
presentWait2Supported :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceCapabilitiesPresentWait2KHR
p Ptr SurfaceCapabilitiesPresentWait2KHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceCapabilitiesPresentWait2KHR
p Ptr SurfaceCapabilitiesPresentWait2KHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceCapabilitiesPresentWait2KHR
p Ptr SurfaceCapabilitiesPresentWait2KHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
presentWait2Supported))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr SurfaceCapabilitiesPresentWait2KHR -> IO b -> IO b
pokeZeroCStruct Ptr SurfaceCapabilitiesPresentWait2KHR
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceCapabilitiesPresentWait2KHR
p Ptr SurfaceCapabilitiesPresentWait2KHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceCapabilitiesPresentWait2KHR
p Ptr SurfaceCapabilitiesPresentWait2KHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceCapabilitiesPresentWait2KHR
p Ptr SurfaceCapabilitiesPresentWait2KHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct SurfaceCapabilitiesPresentWait2KHR where
peekCStruct :: Ptr SurfaceCapabilitiesPresentWait2KHR
-> IO SurfaceCapabilitiesPresentWait2KHR
peekCStruct Ptr SurfaceCapabilitiesPresentWait2KHR
p = do
presentWait2Supported <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr SurfaceCapabilitiesPresentWait2KHR
p Ptr SurfaceCapabilitiesPresentWait2KHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
pure $ SurfaceCapabilitiesPresentWait2KHR
(bool32ToBool presentWait2Supported)
instance Storable SurfaceCapabilitiesPresentWait2KHR where
sizeOf :: SurfaceCapabilitiesPresentWait2KHR -> Int
sizeOf ~SurfaceCapabilitiesPresentWait2KHR
_ = Int
24
alignment :: SurfaceCapabilitiesPresentWait2KHR -> Int
alignment ~SurfaceCapabilitiesPresentWait2KHR
_ = Int
8
peek :: Ptr SurfaceCapabilitiesPresentWait2KHR
-> IO SurfaceCapabilitiesPresentWait2KHR
peek = Ptr SurfaceCapabilitiesPresentWait2KHR
-> IO SurfaceCapabilitiesPresentWait2KHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr SurfaceCapabilitiesPresentWait2KHR
-> SurfaceCapabilitiesPresentWait2KHR -> IO ()
poke Ptr SurfaceCapabilitiesPresentWait2KHR
ptr SurfaceCapabilitiesPresentWait2KHR
poked = Ptr SurfaceCapabilitiesPresentWait2KHR
-> SurfaceCapabilitiesPresentWait2KHR -> IO () -> IO ()
forall b.
Ptr SurfaceCapabilitiesPresentWait2KHR
-> SurfaceCapabilitiesPresentWait2KHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SurfaceCapabilitiesPresentWait2KHR
ptr SurfaceCapabilitiesPresentWait2KHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero SurfaceCapabilitiesPresentWait2KHR where
zero :: SurfaceCapabilitiesPresentWait2KHR
zero = Bool -> SurfaceCapabilitiesPresentWait2KHR
SurfaceCapabilitiesPresentWait2KHR
Bool
forall a. Zero a => a
zero
type KHR_PRESENT_WAIT_2_SPEC_VERSION = 1
pattern KHR_PRESENT_WAIT_2_SPEC_VERSION :: forall a . Integral a => a
pattern $mKHR_PRESENT_WAIT_2_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_PRESENT_WAIT_2_SPEC_VERSION :: forall a. Integral a => a
KHR_PRESENT_WAIT_2_SPEC_VERSION = 1
type KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2"
pattern KHR_PRESENT_WAIT_2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mKHR_PRESENT_WAIT_2_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_PRESENT_WAIT_2_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
KHR_PRESENT_WAIT_2_EXTENSION_NAME = "VK_KHR_present_wait2"