{-# language CPP #-}
module Vulkan.Extensions.VK_KHR_display_swapchain ( createSharedSwapchainsKHR
, DisplayPresentInfoKHR(..)
, KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION
, pattern KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION
, KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME
, pattern KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME
, SurfaceKHR(..)
, SwapchainKHR(..)
, SwapchainCreateInfoKHR(..)
, PresentModeKHR(..)
, ColorSpaceKHR(..)
, CompositeAlphaFlagBitsKHR(..)
, CompositeAlphaFlagsKHR
, SurfaceTransformFlagBitsKHR(..)
, SurfaceTransformFlagsKHR
, SwapchainCreateFlagBitsKHR(..)
, SwapchainCreateFlagsKHR
) where
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Exception.Base (bracket)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Marshal.Alloc (callocBytes)
import Foreign.Marshal.Alloc (free)
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.CStruct.Extends (forgetExtensions)
import Vulkan.CStruct.Extends (pokeSomeCStruct)
import Vulkan.NamedType ((:::))
import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
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(pVkCreateSharedSwapchainsKHR))
import Vulkan.Core10.Handles (Device_T)
import Vulkan.Core10.FundamentalTypes (Rect2D)
import Vulkan.Core10.Enums.Result (Result)
import Vulkan.Core10.Enums.Result (Result(..))
import Vulkan.CStruct.Extends (SomeStruct)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateInfoKHR)
import Vulkan.Extensions.Handles (SwapchainKHR)
import Vulkan.Extensions.Handles (SwapchainKHR(..))
import Vulkan.Exception (VulkanException(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
import Vulkan.Extensions.VK_KHR_surface (ColorSpaceKHR(..))
import Vulkan.Extensions.VK_KHR_surface (CompositeAlphaFlagBitsKHR(..))
import Vulkan.Extensions.VK_KHR_surface (CompositeAlphaFlagsKHR)
import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR(..))
import Vulkan.Extensions.Handles (SurfaceKHR(..))
import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagBitsKHR(..))
import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagsKHR)
import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagBitsKHR(..))
import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagsKHR)
import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateInfoKHR(..))
import Vulkan.Extensions.Handles (SwapchainKHR(..))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCreateSharedSwapchainsKHR
:: FunPtr (Ptr Device_T -> Word32 -> Ptr (SomeStruct SwapchainCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr SwapchainKHR -> IO Result) -> Ptr Device_T -> Word32 -> Ptr (SomeStruct SwapchainCreateInfoKHR) -> Ptr AllocationCallbacks -> Ptr SwapchainKHR -> IO Result
createSharedSwapchainsKHR :: forall io
. (MonadIO io)
=>
Device
->
("createInfos" ::: Vector (SomeStruct SwapchainCreateInfoKHR))
->
("allocator" ::: Maybe AllocationCallbacks)
-> io (("swapchains" ::: Vector SwapchainKHR))
createSharedSwapchainsKHR :: forall (io :: * -> *).
MonadIO io =>
Device
-> ("createInfos" ::: Vector (SomeStruct SwapchainCreateInfoKHR))
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ("swapchains" ::: Vector SwapchainKHR)
createSharedSwapchainsKHR Device
device "createInfos" ::: Vector (SomeStruct SwapchainCreateInfoKHR)
createInfos "allocator" ::: Maybe AllocationCallbacks
allocator = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT forall a b. (a -> b) -> a -> b
$ do
let vkCreateSharedSwapchainsKHRPtr :: FunPtr
(Ptr Device_T
-> ("swapchainCount" ::: Word32)
-> ("pCreateInfos" ::: Ptr (SomeStruct SwapchainCreateInfoKHR))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pSwapchains" ::: Ptr SwapchainKHR)
-> IO Result)
vkCreateSharedSwapchainsKHRPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> ("swapchainCount" ::: Word32)
-> ("pCreateInfos" ::: Ptr (SomeStruct SwapchainCreateInfoKHR))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pSwapchains" ::: Ptr SwapchainKHR)
-> IO Result)
pVkCreateSharedSwapchainsKHR (case Device
device of Device{DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> ("swapchainCount" ::: Word32)
-> ("pCreateInfos" ::: Ptr (SomeStruct SwapchainCreateInfoKHR))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pSwapchains" ::: Ptr SwapchainKHR)
-> IO Result)
vkCreateSharedSwapchainsKHRPtr forall a. Eq a => a -> a -> Bool
/= forall a. FunPtr a
nullFunPtr) forall a b. (a -> b) -> a -> b
$
forall e a. Exception e => e -> IO a
throwIO forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkCreateSharedSwapchainsKHR is null" forall a. Maybe a
Nothing forall a. Maybe a
Nothing
let vkCreateSharedSwapchainsKHR' :: Ptr Device_T
-> ("swapchainCount" ::: Word32)
-> ("pCreateInfos" ::: Ptr (SomeStruct SwapchainCreateInfoKHR))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pSwapchains" ::: Ptr SwapchainKHR)
-> IO Result
vkCreateSharedSwapchainsKHR' = FunPtr
(Ptr Device_T
-> ("swapchainCount" ::: Word32)
-> ("pCreateInfos" ::: Ptr (SomeStruct SwapchainCreateInfoKHR))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pSwapchains" ::: Ptr SwapchainKHR)
-> IO Result)
-> Ptr Device_T
-> ("swapchainCount" ::: Word32)
-> ("pCreateInfos" ::: Ptr (SomeStruct SwapchainCreateInfoKHR))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pSwapchains" ::: Ptr SwapchainKHR)
-> IO Result
mkVkCreateSharedSwapchainsKHR FunPtr
(Ptr Device_T
-> ("swapchainCount" ::: Word32)
-> ("pCreateInfos" ::: Ptr (SomeStruct SwapchainCreateInfoKHR))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pSwapchains" ::: Ptr SwapchainKHR)
-> IO Result)
vkCreateSharedSwapchainsKHRPtr
Ptr (SwapchainCreateInfoKHR Any)
pPCreateInfos <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @(SwapchainCreateInfoKHR _) ((forall a. Vector a -> Int
Data.Vector.length ("createInfos" ::: Vector (SomeStruct SwapchainCreateInfoKHR)
createInfos)) forall a. Num a => a -> a -> a
* Int
104)
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i SomeStruct SwapchainCreateInfoKHR
e -> forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT forall a b. (a -> b) -> a -> b
$ forall (a :: [*] -> *) b.
(forall (es :: [*]).
(Extendss a es, PokeChain es) =>
ToCStruct (a es)) =>
Ptr (SomeStruct a) -> SomeStruct a -> IO b -> IO b
pokeSomeCStruct (forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions (Ptr (SwapchainCreateInfoKHR Any)
pPCreateInfos forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
104 forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr (SwapchainCreateInfoKHR _))) (SomeStruct SwapchainCreateInfoKHR
e) forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a b. (a -> b) -> a -> b
$ ())) ("createInfos" ::: Vector (SomeStruct SwapchainCreateInfoKHR)
createInfos)
"pAllocator" ::: Ptr AllocationCallbacks
pAllocator <- case ("allocator" ::: Maybe AllocationCallbacks
allocator) of
"allocator" ::: Maybe AllocationCallbacks
Nothing -> forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a. Ptr a
nullPtr
Just AllocationCallbacks
j -> forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT forall a b. (a -> b) -> a -> b
$ forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
withCStruct (AllocationCallbacks
j)
"pSwapchains" ::: Ptr SwapchainKHR
pPSwapchains <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT forall a b. (a -> b) -> a -> b
$ forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (forall a. Int -> IO (Ptr a)
callocBytes @SwapchainKHR ((forall a b. (Integral a, Num b) => a -> b
fromIntegral ((forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall a. Vector a -> Int
Data.Vector.length forall a b. (a -> b) -> a -> b
$ ("createInfos" ::: Vector (SomeStruct SwapchainCreateInfoKHR)
createInfos)) :: Word32))) forall a. Num a => a -> a -> a
* Int
8)) forall a. Ptr a -> IO ()
free
Result
r <- forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. String -> IO a -> IO a
traceAroundEvent String
"vkCreateSharedSwapchainsKHR" (Ptr Device_T
-> ("swapchainCount" ::: Word32)
-> ("pCreateInfos" ::: Ptr (SomeStruct SwapchainCreateInfoKHR))
-> ("pAllocator" ::: Ptr AllocationCallbacks)
-> ("pSwapchains" ::: Ptr SwapchainKHR)
-> IO Result
vkCreateSharedSwapchainsKHR'
(Device -> Ptr Device_T
deviceHandle (Device
device))
((forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall a. Vector a -> Int
Data.Vector.length forall a b. (a -> b) -> a -> b
$ ("createInfos" ::: Vector (SomeStruct SwapchainCreateInfoKHR)
createInfos)) :: Word32))
(forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions (Ptr (SwapchainCreateInfoKHR Any)
pPCreateInfos))
"pAllocator" ::: Ptr AllocationCallbacks
pAllocator
("pSwapchains" ::: Ptr SwapchainKHR
pPSwapchains))
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
"swapchains" ::: Vector SwapchainKHR
pSwapchains <- forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (forall a b. (Integral a, Num b) => a -> b
fromIntegral ((forall a b. (Integral a, Num b) => a -> b
fromIntegral (forall a. Vector a -> Int
Data.Vector.length forall a b. (a -> b) -> a -> b
$ ("createInfos" ::: Vector (SomeStruct SwapchainCreateInfoKHR)
createInfos)) :: Word32))) (\Int
i -> forall a. Storable a => Ptr a -> IO a
peek @SwapchainKHR (("pSwapchains" ::: Ptr SwapchainKHR
pPSwapchains forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
8 forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr SwapchainKHR)))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ("swapchains" ::: Vector SwapchainKHR
pSwapchains)
data DisplayPresentInfoKHR = DisplayPresentInfoKHR
{
DisplayPresentInfoKHR -> Rect2D
srcRect :: Rect2D
,
DisplayPresentInfoKHR -> Rect2D
dstRect :: Rect2D
,
DisplayPresentInfoKHR -> Bool
persistent :: Bool
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (DisplayPresentInfoKHR)
#endif
deriving instance Show DisplayPresentInfoKHR
instance ToCStruct DisplayPresentInfoKHR where
withCStruct :: forall b.
DisplayPresentInfoKHR
-> (Ptr DisplayPresentInfoKHR -> IO b) -> IO b
withCStruct DisplayPresentInfoKHR
x Ptr DisplayPresentInfoKHR -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
56 forall a b. (a -> b) -> a -> b
$ \Ptr DisplayPresentInfoKHR
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr DisplayPresentInfoKHR
p DisplayPresentInfoKHR
x (Ptr DisplayPresentInfoKHR -> IO b
f Ptr DisplayPresentInfoKHR
p)
pokeCStruct :: forall b.
Ptr DisplayPresentInfoKHR -> DisplayPresentInfoKHR -> IO b -> IO b
pokeCStruct Ptr DisplayPresentInfoKHR
p DisplayPresentInfoKHR{Bool
Rect2D
persistent :: Bool
dstRect :: Rect2D
srcRect :: Rect2D
$sel:persistent:DisplayPresentInfoKHR :: DisplayPresentInfoKHR -> Bool
$sel:dstRect:DisplayPresentInfoKHR :: DisplayPresentInfoKHR -> Rect2D
$sel:srcRect:DisplayPresentInfoKHR :: DisplayPresentInfoKHR -> Rect2D
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DisplayPresentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DisplayPresentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DisplayPresentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Rect2D)) (Rect2D
srcRect)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DisplayPresentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Rect2D)) (Rect2D
dstRect)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DisplayPresentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
persistent))
IO b
f
cStructSize :: Int
cStructSize = Int
56
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr DisplayPresentInfoKHR -> IO b -> IO b
pokeZeroCStruct Ptr DisplayPresentInfoKHR
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DisplayPresentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DisplayPresentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DisplayPresentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Rect2D)) (forall a. Zero a => a
zero)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DisplayPresentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Rect2D)) (forall a. Zero a => a
zero)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DisplayPresentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
IO b
f
instance FromCStruct DisplayPresentInfoKHR where
peekCStruct :: Ptr DisplayPresentInfoKHR -> IO DisplayPresentInfoKHR
peekCStruct Ptr DisplayPresentInfoKHR
p = do
Rect2D
srcRect <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @Rect2D ((Ptr DisplayPresentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Rect2D))
Rect2D
dstRect <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @Rect2D ((Ptr DisplayPresentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Rect2D))
Bool32
persistent <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr DisplayPresentInfoKHR
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Rect2D -> Rect2D -> Bool -> DisplayPresentInfoKHR
DisplayPresentInfoKHR
Rect2D
srcRect Rect2D
dstRect (Bool32 -> Bool
bool32ToBool Bool32
persistent)
instance Storable DisplayPresentInfoKHR where
sizeOf :: DisplayPresentInfoKHR -> Int
sizeOf ~DisplayPresentInfoKHR
_ = Int
56
alignment :: DisplayPresentInfoKHR -> Int
alignment ~DisplayPresentInfoKHR
_ = Int
8
peek :: Ptr DisplayPresentInfoKHR -> IO DisplayPresentInfoKHR
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr DisplayPresentInfoKHR -> DisplayPresentInfoKHR -> IO ()
poke Ptr DisplayPresentInfoKHR
ptr DisplayPresentInfoKHR
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr DisplayPresentInfoKHR
ptr DisplayPresentInfoKHR
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero DisplayPresentInfoKHR where
zero :: DisplayPresentInfoKHR
zero = Rect2D -> Rect2D -> Bool -> DisplayPresentInfoKHR
DisplayPresentInfoKHR
forall a. Zero a => a
zero
forall a. Zero a => a
zero
forall a. Zero a => a
zero
type KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10
pattern KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION :: forall a . Integral a => a
pattern $bKHR_DISPLAY_SWAPCHAIN_SPEC_VERSION :: forall a. Integral a => a
$mKHR_DISPLAY_SWAPCHAIN_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10
type KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain"
pattern KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bKHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mKHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain"