{-# language CPP #-}
module Vulkan.Extensions.VK_KHR_swapchain_maintenance1 ( releaseSwapchainImagesKHR
, PhysicalDeviceSwapchainMaintenance1FeaturesKHR(..)
, SwapchainPresentFenceInfoKHR(..)
, SwapchainPresentModesCreateInfoKHR(..)
, SwapchainPresentModeInfoKHR(..)
, SwapchainPresentScalingCreateInfoKHR(..)
, ReleaseSwapchainImagesInfoKHR(..)
, KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION
, pattern KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION
, KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME
, pattern KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME
, SwapchainKHR(..)
, PresentModeKHR(..)
, SwapchainCreateFlagBitsKHR(..)
, SwapchainCreateFlagsKHR
, PresentScalingFlagBitsKHR(..)
, PresentScalingFlagsKHR
, PresentGravityFlagBitsKHR(..)
, PresentGravityFlagsKHR
) 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 Data.Vector (generateM)
import qualified Data.Vector (imapM_)
import qualified Data.Vector (length)
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 (Word32)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Data.Vector (Vector)
import Vulkan.CStruct.Utils (advancePtrBytes)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.NamedType ((:::))
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(pVkReleaseSwapchainImagesKHR))
import Vulkan.Core10.Handles (Device_T)
import Vulkan.Core10.Handles (Fence)
import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentGravityFlagsKHR)
import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR)
import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentScalingFlagsKHR)
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.Exception (VulkanException(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentGravityFlagBitsKHR(..))
import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentGravityFlagsKHR)
import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR(..))
import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentScalingFlagBitsKHR(..))
import Vulkan.Extensions.VK_KHR_surface_maintenance1 (PresentScalingFlagsKHR)
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" mkVkReleaseSwapchainImagesKHR
:: FunPtr (Ptr Device_T -> Ptr ReleaseSwapchainImagesInfoKHR -> IO Result) -> Ptr Device_T -> Ptr ReleaseSwapchainImagesInfoKHR -> IO Result
releaseSwapchainImagesKHR :: forall io
. (MonadIO io)
=>
Device
->
("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> io ()
releaseSwapchainImagesKHR :: forall (io :: * -> *).
MonadIO io =>
Device
-> ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR) -> io ()
releaseSwapchainImagesKHR Device
device "releaseInfo" ::: ReleaseSwapchainImagesInfoKHR
releaseInfo = IO () -> io ()
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ())
-> (ContT () IO () -> IO ()) -> ContT () IO () -> io ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT () IO () -> IO ()
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkReleaseSwapchainImagesKHRPtr :: FunPtr
(Ptr Device_T
-> Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> IO Result)
vkReleaseSwapchainImagesKHRPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> IO Result)
pVkReleaseSwapchainImagesKHR (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds :: Device -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> IO Result)
vkReleaseSwapchainImagesKHRPtr FunPtr
(Ptr Device_T
-> Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> IO Result)
-> FunPtr
(Ptr Device_T
-> Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> 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 vkReleaseSwapchainImagesKHR is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkReleaseSwapchainImagesKHR' :: Ptr Device_T
-> Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> IO Result
vkReleaseSwapchainImagesKHR' = FunPtr
(Ptr Device_T
-> Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> IO Result)
-> Ptr Device_T
-> Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> IO Result
mkVkReleaseSwapchainImagesKHR FunPtr
(Ptr Device_T
-> Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> IO Result)
vkReleaseSwapchainImagesKHRPtr
pReleaseInfo <- ((Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR) -> IO ())
-> IO ())
-> ContT
() IO (Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR) -> IO ())
-> IO ())
-> ContT
() IO (Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)))
-> ((Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> IO ())
-> IO ())
-> ContT
() IO (Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR))
forall a b. (a -> b) -> a -> b
$ ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> (Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR) -> IO ())
-> IO ()
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> (Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR) -> IO b)
-> IO b
withCStruct ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR
releaseInfo)
r <- lift $ traceAroundEvent "vkReleaseSwapchainImagesKHR" (vkReleaseSwapchainImagesKHR'
(deviceHandle (device))
pReleaseInfo)
lift $ when (r < SUCCESS) (throwIO (VulkanException r))
data PhysicalDeviceSwapchainMaintenance1FeaturesKHR = PhysicalDeviceSwapchainMaintenance1FeaturesKHR
{
PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> Bool
swapchainMaintenance1 :: Bool }
deriving (Typeable, PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> Bool
(PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> Bool)
-> (PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> Bool)
-> Eq PhysicalDeviceSwapchainMaintenance1FeaturesKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> Bool
== :: PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> Bool
$c/= :: PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> Bool
/= :: PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceSwapchainMaintenance1FeaturesKHR)
#endif
deriving instance Show PhysicalDeviceSwapchainMaintenance1FeaturesKHR
instance ToCStruct PhysicalDeviceSwapchainMaintenance1FeaturesKHR where
withCStruct :: forall b.
PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> (Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> IO b)
-> IO b
withCStruct PhysicalDeviceSwapchainMaintenance1FeaturesKHR
x Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> IO b
f = Int
-> (Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> IO b)
-> IO b)
-> (Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
p -> Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> IO b -> IO b
forall b.
Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
p PhysicalDeviceSwapchainMaintenance1FeaturesKHR
x (Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> IO b
f Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
p PhysicalDeviceSwapchainMaintenance1FeaturesKHR{Bool
swapchainMaintenance1 :: PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> Bool
swapchainMaintenance1 :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
p Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
p Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> 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 PhysicalDeviceSwapchainMaintenance1FeaturesKHR
p Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
swapchainMaintenance1))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
p Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
p Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> 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 PhysicalDeviceSwapchainMaintenance1FeaturesKHR
p Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> 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 PhysicalDeviceSwapchainMaintenance1FeaturesKHR where
peekCStruct :: Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> IO PhysicalDeviceSwapchainMaintenance1FeaturesKHR
peekCStruct Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
p = do
swapchainMaintenance1 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
p Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
pure $ PhysicalDeviceSwapchainMaintenance1FeaturesKHR
(bool32ToBool swapchainMaintenance1)
instance Storable PhysicalDeviceSwapchainMaintenance1FeaturesKHR where
sizeOf :: PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> Int
sizeOf ~PhysicalDeviceSwapchainMaintenance1FeaturesKHR
_ = Int
24
alignment :: PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> Int
alignment ~PhysicalDeviceSwapchainMaintenance1FeaturesKHR
_ = Int
8
peek :: Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> IO PhysicalDeviceSwapchainMaintenance1FeaturesKHR
peek = Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> IO PhysicalDeviceSwapchainMaintenance1FeaturesKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> IO ()
poke Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
poked = Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
-> PhysicalDeviceSwapchainMaintenance1FeaturesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
ptr PhysicalDeviceSwapchainMaintenance1FeaturesKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceSwapchainMaintenance1FeaturesKHR where
zero :: PhysicalDeviceSwapchainMaintenance1FeaturesKHR
zero = Bool -> PhysicalDeviceSwapchainMaintenance1FeaturesKHR
PhysicalDeviceSwapchainMaintenance1FeaturesKHR
Bool
forall a. Zero a => a
zero
data SwapchainPresentFenceInfoKHR = SwapchainPresentFenceInfoKHR
{
SwapchainPresentFenceInfoKHR -> Vector Fence
fences :: Vector Fence }
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SwapchainPresentFenceInfoKHR)
#endif
deriving instance Show SwapchainPresentFenceInfoKHR
instance ToCStruct SwapchainPresentFenceInfoKHR where
withCStruct :: forall b.
SwapchainPresentFenceInfoKHR
-> (Ptr SwapchainPresentFenceInfoKHR -> IO b) -> IO b
withCStruct SwapchainPresentFenceInfoKHR
x Ptr SwapchainPresentFenceInfoKHR -> IO b
f = Int -> (Ptr SwapchainPresentFenceInfoKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr SwapchainPresentFenceInfoKHR -> IO b) -> IO b)
-> (Ptr SwapchainPresentFenceInfoKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr SwapchainPresentFenceInfoKHR
p -> Ptr SwapchainPresentFenceInfoKHR
-> SwapchainPresentFenceInfoKHR -> IO b -> IO b
forall b.
Ptr SwapchainPresentFenceInfoKHR
-> SwapchainPresentFenceInfoKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SwapchainPresentFenceInfoKHR
p SwapchainPresentFenceInfoKHR
x (Ptr SwapchainPresentFenceInfoKHR -> IO b
f Ptr SwapchainPresentFenceInfoKHR
p)
pokeCStruct :: forall b.
Ptr SwapchainPresentFenceInfoKHR
-> SwapchainPresentFenceInfoKHR -> IO b -> IO b
pokeCStruct Ptr SwapchainPresentFenceInfoKHR
p SwapchainPresentFenceInfoKHR{Vector Fence
fences :: SwapchainPresentFenceInfoKHR -> Vector Fence
fences :: Vector Fence
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentFenceInfoKHR
p Ptr SwapchainPresentFenceInfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentFenceInfoKHR
p Ptr SwapchainPresentFenceInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentFenceInfoKHR
p Ptr SwapchainPresentFenceInfoKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) ((Int -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Vector Fence -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Fence -> Int) -> Vector Fence -> Int
forall a b. (a -> b) -> a -> b
$ (Vector Fence
fences)) :: Word32))
pPFences' <- ((Ptr Fence -> IO b) -> IO b) -> ContT b IO (Ptr Fence)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr Fence -> IO b) -> IO b) -> ContT b IO (Ptr Fence))
-> ((Ptr Fence -> IO b) -> IO b) -> ContT b IO (Ptr Fence)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @Fence ((Vector Fence -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Fence
fences)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
8)
lift $ Data.Vector.imapM_ (\Int
i Fence
e -> Ptr Fence -> Fence -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Fence
pPFences' Ptr Fence -> Int -> Ptr Fence
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Fence) (Fence
e)) (fences)
lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Fence))) (pPFences')
lift $ f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr SwapchainPresentFenceInfoKHR -> IO b -> IO b
pokeZeroCStruct Ptr SwapchainPresentFenceInfoKHR
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentFenceInfoKHR
p Ptr SwapchainPresentFenceInfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentFenceInfoKHR
p Ptr SwapchainPresentFenceInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO b
f
instance FromCStruct SwapchainPresentFenceInfoKHR where
peekCStruct :: Ptr SwapchainPresentFenceInfoKHR -> IO SwapchainPresentFenceInfoKHR
peekCStruct Ptr SwapchainPresentFenceInfoKHR
p = do
swapchainCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr SwapchainPresentFenceInfoKHR
p Ptr SwapchainPresentFenceInfoKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
pFences <- peek @(Ptr Fence) ((p `plusPtr` 24 :: Ptr (Ptr Fence)))
pFences' <- generateM (fromIntegral swapchainCount) (\Int
i -> forall a. Storable a => Ptr a -> IO a
peek @Fence ((Ptr Fence
pFences Ptr Fence -> Int -> Ptr Fence
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Fence)))
pure $ SwapchainPresentFenceInfoKHR
pFences'
instance Zero SwapchainPresentFenceInfoKHR where
zero :: SwapchainPresentFenceInfoKHR
zero = Vector Fence -> SwapchainPresentFenceInfoKHR
SwapchainPresentFenceInfoKHR
Vector Fence
forall a. Monoid a => a
mempty
data SwapchainPresentModesCreateInfoKHR = SwapchainPresentModesCreateInfoKHR
{
SwapchainPresentModesCreateInfoKHR -> Vector PresentModeKHR
presentModes :: Vector PresentModeKHR }
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SwapchainPresentModesCreateInfoKHR)
#endif
deriving instance Show SwapchainPresentModesCreateInfoKHR
instance ToCStruct SwapchainPresentModesCreateInfoKHR where
withCStruct :: forall b.
SwapchainPresentModesCreateInfoKHR
-> (Ptr SwapchainPresentModesCreateInfoKHR -> IO b) -> IO b
withCStruct SwapchainPresentModesCreateInfoKHR
x Ptr SwapchainPresentModesCreateInfoKHR -> IO b
f = Int -> (Ptr SwapchainPresentModesCreateInfoKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr SwapchainPresentModesCreateInfoKHR -> IO b) -> IO b)
-> (Ptr SwapchainPresentModesCreateInfoKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr SwapchainPresentModesCreateInfoKHR
p -> Ptr SwapchainPresentModesCreateInfoKHR
-> SwapchainPresentModesCreateInfoKHR -> IO b -> IO b
forall b.
Ptr SwapchainPresentModesCreateInfoKHR
-> SwapchainPresentModesCreateInfoKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SwapchainPresentModesCreateInfoKHR
p SwapchainPresentModesCreateInfoKHR
x (Ptr SwapchainPresentModesCreateInfoKHR -> IO b
f Ptr SwapchainPresentModesCreateInfoKHR
p)
pokeCStruct :: forall b.
Ptr SwapchainPresentModesCreateInfoKHR
-> SwapchainPresentModesCreateInfoKHR -> IO b -> IO b
pokeCStruct Ptr SwapchainPresentModesCreateInfoKHR
p SwapchainPresentModesCreateInfoKHR{Vector PresentModeKHR
presentModes :: SwapchainPresentModesCreateInfoKHR -> Vector PresentModeKHR
presentModes :: Vector PresentModeKHR
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentModesCreateInfoKHR
p Ptr SwapchainPresentModesCreateInfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentModesCreateInfoKHR
p Ptr SwapchainPresentModesCreateInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentModesCreateInfoKHR
p Ptr SwapchainPresentModesCreateInfoKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) ((Int -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Vector PresentModeKHR -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector PresentModeKHR -> Int) -> Vector PresentModeKHR -> Int
forall a b. (a -> b) -> a -> b
$ (Vector PresentModeKHR
presentModes)) :: Word32))
pPPresentModes' <- ((Ptr PresentModeKHR -> IO b) -> IO b)
-> ContT b IO (Ptr PresentModeKHR)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr PresentModeKHR -> IO b) -> IO b)
-> ContT b IO (Ptr PresentModeKHR))
-> ((Ptr PresentModeKHR -> IO b) -> IO b)
-> ContT b IO (Ptr PresentModeKHR)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @PresentModeKHR ((Vector PresentModeKHR -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector PresentModeKHR
presentModes)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
4)
lift $ Data.Vector.imapM_ (\Int
i PresentModeKHR
e -> Ptr PresentModeKHR -> PresentModeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr PresentModeKHR
pPPresentModes' Ptr PresentModeKHR -> Int -> Ptr PresentModeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr PresentModeKHR) (PresentModeKHR
e)) (presentModes)
lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR))) (pPPresentModes')
lift $ f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr SwapchainPresentModesCreateInfoKHR -> IO b -> IO b
pokeZeroCStruct Ptr SwapchainPresentModesCreateInfoKHR
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentModesCreateInfoKHR
p Ptr SwapchainPresentModesCreateInfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentModesCreateInfoKHR
p Ptr SwapchainPresentModesCreateInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO b
f
instance FromCStruct SwapchainPresentModesCreateInfoKHR where
peekCStruct :: Ptr SwapchainPresentModesCreateInfoKHR
-> IO SwapchainPresentModesCreateInfoKHR
peekCStruct Ptr SwapchainPresentModesCreateInfoKHR
p = do
presentModeCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr SwapchainPresentModesCreateInfoKHR
p Ptr SwapchainPresentModesCreateInfoKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
pPresentModes <- peek @(Ptr PresentModeKHR) ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR)))
pPresentModes' <- generateM (fromIntegral presentModeCount) (\Int
i -> forall a. Storable a => Ptr a -> IO a
peek @PresentModeKHR ((Ptr PresentModeKHR
pPresentModes Ptr PresentModeKHR -> Int -> Ptr PresentModeKHR
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr PresentModeKHR)))
pure $ SwapchainPresentModesCreateInfoKHR
pPresentModes'
instance Zero SwapchainPresentModesCreateInfoKHR where
zero :: SwapchainPresentModesCreateInfoKHR
zero = Vector PresentModeKHR -> SwapchainPresentModesCreateInfoKHR
SwapchainPresentModesCreateInfoKHR
Vector PresentModeKHR
forall a. Monoid a => a
mempty
data SwapchainPresentModeInfoKHR = SwapchainPresentModeInfoKHR
{
SwapchainPresentModeInfoKHR -> Vector PresentModeKHR
presentModes :: Vector PresentModeKHR }
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SwapchainPresentModeInfoKHR)
#endif
deriving instance Show SwapchainPresentModeInfoKHR
instance ToCStruct SwapchainPresentModeInfoKHR where
withCStruct :: forall b.
SwapchainPresentModeInfoKHR
-> (Ptr SwapchainPresentModeInfoKHR -> IO b) -> IO b
withCStruct SwapchainPresentModeInfoKHR
x Ptr SwapchainPresentModeInfoKHR -> IO b
f = Int -> (Ptr SwapchainPresentModeInfoKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr SwapchainPresentModeInfoKHR -> IO b) -> IO b)
-> (Ptr SwapchainPresentModeInfoKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr SwapchainPresentModeInfoKHR
p -> Ptr SwapchainPresentModeInfoKHR
-> SwapchainPresentModeInfoKHR -> IO b -> IO b
forall b.
Ptr SwapchainPresentModeInfoKHR
-> SwapchainPresentModeInfoKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SwapchainPresentModeInfoKHR
p SwapchainPresentModeInfoKHR
x (Ptr SwapchainPresentModeInfoKHR -> IO b
f Ptr SwapchainPresentModeInfoKHR
p)
pokeCStruct :: forall b.
Ptr SwapchainPresentModeInfoKHR
-> SwapchainPresentModeInfoKHR -> IO b -> IO b
pokeCStruct Ptr SwapchainPresentModeInfoKHR
p SwapchainPresentModeInfoKHR{Vector PresentModeKHR
presentModes :: SwapchainPresentModeInfoKHR -> Vector PresentModeKHR
presentModes :: Vector PresentModeKHR
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentModeInfoKHR
p Ptr SwapchainPresentModeInfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentModeInfoKHR
p Ptr SwapchainPresentModeInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentModeInfoKHR
p Ptr SwapchainPresentModeInfoKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) ((Int -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Vector PresentModeKHR -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector PresentModeKHR -> Int) -> Vector PresentModeKHR -> Int
forall a b. (a -> b) -> a -> b
$ (Vector PresentModeKHR
presentModes)) :: Word32))
pPPresentModes' <- ((Ptr PresentModeKHR -> IO b) -> IO b)
-> ContT b IO (Ptr PresentModeKHR)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr PresentModeKHR -> IO b) -> IO b)
-> ContT b IO (Ptr PresentModeKHR))
-> ((Ptr PresentModeKHR -> IO b) -> IO b)
-> ContT b IO (Ptr PresentModeKHR)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @PresentModeKHR ((Vector PresentModeKHR -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector PresentModeKHR
presentModes)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
4)
lift $ Data.Vector.imapM_ (\Int
i PresentModeKHR
e -> Ptr PresentModeKHR -> PresentModeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr PresentModeKHR
pPPresentModes' Ptr PresentModeKHR -> Int -> Ptr PresentModeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr PresentModeKHR) (PresentModeKHR
e)) (presentModes)
lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR))) (pPPresentModes')
lift $ f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr SwapchainPresentModeInfoKHR -> IO b -> IO b
pokeZeroCStruct Ptr SwapchainPresentModeInfoKHR
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentModeInfoKHR
p Ptr SwapchainPresentModeInfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentModeInfoKHR
p Ptr SwapchainPresentModeInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO b
f
instance FromCStruct SwapchainPresentModeInfoKHR where
peekCStruct :: Ptr SwapchainPresentModeInfoKHR -> IO SwapchainPresentModeInfoKHR
peekCStruct Ptr SwapchainPresentModeInfoKHR
p = do
swapchainCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr SwapchainPresentModeInfoKHR
p Ptr SwapchainPresentModeInfoKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
pPresentModes <- peek @(Ptr PresentModeKHR) ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR)))
pPresentModes' <- generateM (fromIntegral swapchainCount) (\Int
i -> forall a. Storable a => Ptr a -> IO a
peek @PresentModeKHR ((Ptr PresentModeKHR
pPresentModes Ptr PresentModeKHR -> Int -> Ptr PresentModeKHR
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr PresentModeKHR)))
pure $ SwapchainPresentModeInfoKHR
pPresentModes'
instance Zero SwapchainPresentModeInfoKHR where
zero :: SwapchainPresentModeInfoKHR
zero = Vector PresentModeKHR -> SwapchainPresentModeInfoKHR
SwapchainPresentModeInfoKHR
Vector PresentModeKHR
forall a. Monoid a => a
mempty
data SwapchainPresentScalingCreateInfoKHR = SwapchainPresentScalingCreateInfoKHR
{
SwapchainPresentScalingCreateInfoKHR -> PresentScalingFlagsKHR
scalingBehavior :: PresentScalingFlagsKHR
,
SwapchainPresentScalingCreateInfoKHR -> PresentGravityFlagsKHR
presentGravityX :: PresentGravityFlagsKHR
,
SwapchainPresentScalingCreateInfoKHR -> PresentGravityFlagsKHR
presentGravityY :: PresentGravityFlagsKHR
}
deriving (Typeable, SwapchainPresentScalingCreateInfoKHR
-> SwapchainPresentScalingCreateInfoKHR -> Bool
(SwapchainPresentScalingCreateInfoKHR
-> SwapchainPresentScalingCreateInfoKHR -> Bool)
-> (SwapchainPresentScalingCreateInfoKHR
-> SwapchainPresentScalingCreateInfoKHR -> Bool)
-> Eq SwapchainPresentScalingCreateInfoKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SwapchainPresentScalingCreateInfoKHR
-> SwapchainPresentScalingCreateInfoKHR -> Bool
== :: SwapchainPresentScalingCreateInfoKHR
-> SwapchainPresentScalingCreateInfoKHR -> Bool
$c/= :: SwapchainPresentScalingCreateInfoKHR
-> SwapchainPresentScalingCreateInfoKHR -> Bool
/= :: SwapchainPresentScalingCreateInfoKHR
-> SwapchainPresentScalingCreateInfoKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SwapchainPresentScalingCreateInfoKHR)
#endif
deriving instance Show SwapchainPresentScalingCreateInfoKHR
instance ToCStruct SwapchainPresentScalingCreateInfoKHR where
withCStruct :: forall b.
SwapchainPresentScalingCreateInfoKHR
-> (Ptr SwapchainPresentScalingCreateInfoKHR -> IO b) -> IO b
withCStruct SwapchainPresentScalingCreateInfoKHR
x Ptr SwapchainPresentScalingCreateInfoKHR -> IO b
f = Int -> (Ptr SwapchainPresentScalingCreateInfoKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr SwapchainPresentScalingCreateInfoKHR -> IO b) -> IO b)
-> (Ptr SwapchainPresentScalingCreateInfoKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr SwapchainPresentScalingCreateInfoKHR
p -> Ptr SwapchainPresentScalingCreateInfoKHR
-> SwapchainPresentScalingCreateInfoKHR -> IO b -> IO b
forall b.
Ptr SwapchainPresentScalingCreateInfoKHR
-> SwapchainPresentScalingCreateInfoKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SwapchainPresentScalingCreateInfoKHR
p SwapchainPresentScalingCreateInfoKHR
x (Ptr SwapchainPresentScalingCreateInfoKHR -> IO b
f Ptr SwapchainPresentScalingCreateInfoKHR
p)
pokeCStruct :: forall b.
Ptr SwapchainPresentScalingCreateInfoKHR
-> SwapchainPresentScalingCreateInfoKHR -> IO b -> IO b
pokeCStruct Ptr SwapchainPresentScalingCreateInfoKHR
p SwapchainPresentScalingCreateInfoKHR{PresentGravityFlagsKHR
PresentScalingFlagsKHR
scalingBehavior :: SwapchainPresentScalingCreateInfoKHR -> PresentScalingFlagsKHR
presentGravityX :: SwapchainPresentScalingCreateInfoKHR -> PresentGravityFlagsKHR
presentGravityY :: SwapchainPresentScalingCreateInfoKHR -> PresentGravityFlagsKHR
scalingBehavior :: PresentScalingFlagsKHR
presentGravityX :: PresentGravityFlagsKHR
presentGravityY :: PresentGravityFlagsKHR
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentScalingCreateInfoKHR
p Ptr SwapchainPresentScalingCreateInfoKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentScalingCreateInfoKHR
p Ptr SwapchainPresentScalingCreateInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr PresentScalingFlagsKHR -> PresentScalingFlagsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentScalingCreateInfoKHR
p Ptr SwapchainPresentScalingCreateInfoKHR
-> Int -> Ptr PresentScalingFlagsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PresentScalingFlagsKHR)) (PresentScalingFlagsKHR
scalingBehavior)
Ptr PresentGravityFlagsKHR -> PresentGravityFlagsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentScalingCreateInfoKHR
p Ptr SwapchainPresentScalingCreateInfoKHR
-> Int -> Ptr PresentGravityFlagsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr PresentGravityFlagsKHR)) (PresentGravityFlagsKHR
presentGravityX)
Ptr PresentGravityFlagsKHR -> PresentGravityFlagsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentScalingCreateInfoKHR
p Ptr SwapchainPresentScalingCreateInfoKHR
-> Int -> Ptr PresentGravityFlagsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr PresentGravityFlagsKHR)) (PresentGravityFlagsKHR
presentGravityY)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr SwapchainPresentScalingCreateInfoKHR -> IO b -> IO b
pokeZeroCStruct Ptr SwapchainPresentScalingCreateInfoKHR
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentScalingCreateInfoKHR
p Ptr SwapchainPresentScalingCreateInfoKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SwapchainPresentScalingCreateInfoKHR
p Ptr SwapchainPresentScalingCreateInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO b
f
instance FromCStruct SwapchainPresentScalingCreateInfoKHR where
peekCStruct :: Ptr SwapchainPresentScalingCreateInfoKHR
-> IO SwapchainPresentScalingCreateInfoKHR
peekCStruct Ptr SwapchainPresentScalingCreateInfoKHR
p = do
scalingBehavior <- forall a. Storable a => Ptr a -> IO a
peek @PresentScalingFlagsKHR ((Ptr SwapchainPresentScalingCreateInfoKHR
p Ptr SwapchainPresentScalingCreateInfoKHR
-> Int -> Ptr PresentScalingFlagsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PresentScalingFlagsKHR))
presentGravityX <- peek @PresentGravityFlagsKHR ((p `plusPtr` 20 :: Ptr PresentGravityFlagsKHR))
presentGravityY <- peek @PresentGravityFlagsKHR ((p `plusPtr` 24 :: Ptr PresentGravityFlagsKHR))
pure $ SwapchainPresentScalingCreateInfoKHR
scalingBehavior presentGravityX presentGravityY
instance Storable SwapchainPresentScalingCreateInfoKHR where
sizeOf :: SwapchainPresentScalingCreateInfoKHR -> Int
sizeOf ~SwapchainPresentScalingCreateInfoKHR
_ = Int
32
alignment :: SwapchainPresentScalingCreateInfoKHR -> Int
alignment ~SwapchainPresentScalingCreateInfoKHR
_ = Int
8
peek :: Ptr SwapchainPresentScalingCreateInfoKHR
-> IO SwapchainPresentScalingCreateInfoKHR
peek = Ptr SwapchainPresentScalingCreateInfoKHR
-> IO SwapchainPresentScalingCreateInfoKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr SwapchainPresentScalingCreateInfoKHR
-> SwapchainPresentScalingCreateInfoKHR -> IO ()
poke Ptr SwapchainPresentScalingCreateInfoKHR
ptr SwapchainPresentScalingCreateInfoKHR
poked = Ptr SwapchainPresentScalingCreateInfoKHR
-> SwapchainPresentScalingCreateInfoKHR -> IO () -> IO ()
forall b.
Ptr SwapchainPresentScalingCreateInfoKHR
-> SwapchainPresentScalingCreateInfoKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SwapchainPresentScalingCreateInfoKHR
ptr SwapchainPresentScalingCreateInfoKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero SwapchainPresentScalingCreateInfoKHR where
zero :: SwapchainPresentScalingCreateInfoKHR
zero = PresentScalingFlagsKHR
-> PresentGravityFlagsKHR
-> PresentGravityFlagsKHR
-> SwapchainPresentScalingCreateInfoKHR
SwapchainPresentScalingCreateInfoKHR
PresentScalingFlagsKHR
forall a. Zero a => a
zero
PresentGravityFlagsKHR
forall a. Zero a => a
zero
PresentGravityFlagsKHR
forall a. Zero a => a
zero
data ReleaseSwapchainImagesInfoKHR = ReleaseSwapchainImagesInfoKHR
{
("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR) -> SwapchainKHR
swapchain :: SwapchainKHR
,
("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR) -> Vector Word32
imageIndices :: Vector Word32
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ReleaseSwapchainImagesInfoKHR)
#endif
deriving instance Show ReleaseSwapchainImagesInfoKHR
instance ToCStruct ReleaseSwapchainImagesInfoKHR where
withCStruct :: forall b.
("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> (Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR) -> IO b)
-> IO b
withCStruct "releaseInfo" ::: ReleaseSwapchainImagesInfoKHR
x Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR) -> IO b
f = Int
-> (Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR) -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
40 ((Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR) -> IO b)
-> IO b)
-> (Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR) -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
p -> Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> IO b
-> IO b
forall b.
Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
p "releaseInfo" ::: ReleaseSwapchainImagesInfoKHR
x (Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR) -> IO b
f Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
p)
pokeCStruct :: forall b.
Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> IO b
-> IO b
pokeCStruct Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
p ReleaseSwapchainImagesInfoKHR{Vector Word32
SwapchainKHR
swapchain :: ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR) -> SwapchainKHR
imageIndices :: ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR) -> Vector Word32
swapchain :: SwapchainKHR
imageIndices :: Vector Word32
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
p Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
p Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr SwapchainKHR -> SwapchainKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
p Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> Int -> Ptr SwapchainKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr SwapchainKHR)) (SwapchainKHR
swapchain)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
p Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) ((Int -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Vector Word32 -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Word32 -> Int) -> Vector Word32 -> Int
forall a b. (a -> b) -> a -> b
$ (Vector Word32
imageIndices)) :: Word32))
pPImageIndices' <- ((Ptr Word32 -> IO b) -> IO b) -> ContT b IO (Ptr Word32)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr Word32 -> IO b) -> IO b) -> ContT b IO (Ptr Word32))
-> ((Ptr Word32 -> IO b) -> IO b) -> ContT b IO (Ptr Word32)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @Word32 ((Vector Word32 -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector Word32
imageIndices)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
4)
lift $ Data.Vector.imapM_ (\Int
i Word32
e -> Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr Word32
pPImageIndices' Ptr Word32 -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Word32) (Word32
e)) (imageIndices)
lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word32))) (pPImageIndices')
lift $ f
cStructSize :: Int
cStructSize = Int
40
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> IO b -> IO b
pokeZeroCStruct Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
p Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
p Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr SwapchainKHR -> SwapchainKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
p Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> Int -> Ptr SwapchainKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr SwapchainKHR)) (SwapchainKHR
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct ReleaseSwapchainImagesInfoKHR where
peekCStruct :: Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> IO ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
peekCStruct Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
p = do
swapchain <- forall a. Storable a => Ptr a -> IO a
peek @SwapchainKHR ((Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
p Ptr ("releaseInfo" ::: ReleaseSwapchainImagesInfoKHR)
-> Int -> Ptr SwapchainKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr SwapchainKHR))
imageIndexCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
pImageIndices <- peek @(Ptr Word32) ((p `plusPtr` 32 :: Ptr (Ptr Word32)))
pImageIndices' <- generateM (fromIntegral imageIndexCount) (\Int
i -> forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr Word32
pImageIndices Ptr Word32 -> Int -> Ptr Word32
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Word32)))
pure $ ReleaseSwapchainImagesInfoKHR
swapchain pImageIndices'
instance Zero ReleaseSwapchainImagesInfoKHR where
zero :: "releaseInfo" ::: ReleaseSwapchainImagesInfoKHR
zero = SwapchainKHR
-> Vector Word32 -> "releaseInfo" ::: ReleaseSwapchainImagesInfoKHR
ReleaseSwapchainImagesInfoKHR
SwapchainKHR
forall a. Zero a => a
zero
Vector Word32
forall a. Monoid a => a
mempty
type KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1
pattern KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION :: forall a . Integral a => a
pattern $mKHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION :: forall a. Integral a => a
KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION = 1
type KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1"
pattern KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mKHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_swapchain_maintenance1"