{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_full_screen_exclusive ( getPhysicalDeviceSurfacePresentModes2EXT
, getDeviceGroupSurfacePresentModes2EXT
, acquireFullScreenExclusiveModeEXT
, releaseFullScreenExclusiveModeEXT
, SurfaceFullScreenExclusiveInfoEXT(..)
, SurfaceFullScreenExclusiveWin32InfoEXT(..)
, SurfaceCapabilitiesFullScreenExclusiveEXT(..)
, FullScreenExclusiveEXT( FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT
, FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT
, FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT
, FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
, ..
)
, EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION
, pattern EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION
, EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME
, pattern EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME
, HMONITOR
, SurfaceKHR(..)
, SwapchainKHR(..)
, PhysicalDeviceSurfaceInfo2KHR(..)
, PresentModeKHR(..)
, DeviceGroupPresentModeFlagBitsKHR(..)
, DeviceGroupPresentModeFlagsKHR
) where
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
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 GHC.Show (showsPrec)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Data.Vector (generateM)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
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 Data.Int (Int32)
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
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.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(pVkAcquireFullScreenExclusiveModeEXT))
import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceGroupSurfacePresentModes2EXT))
import Vulkan.Dynamic (DeviceCmds(pVkReleaseFullScreenExclusiveModeEXT))
import Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagBitsKHR(..))
import Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagsKHR)
import Vulkan.Core10.Handles (Device_T)
import Vulkan.CStruct.Extends (Extendss)
import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSurfacePresentModes2EXT))
import Vulkan.Core10.Handles (PhysicalDevice)
import Vulkan.Core10.Handles (PhysicalDevice(..))
import Vulkan.Core10.Handles (PhysicalDevice(PhysicalDevice))
import Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (PhysicalDeviceSurfaceInfo2KHR)
import Vulkan.Core10.Handles (PhysicalDevice_T)
import Vulkan.CStruct.Extends (PokeChain)
import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR)
import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR(..))
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.Handles (SwapchainKHR)
import Vulkan.Extensions.Handles (SwapchainKHR(..))
import Vulkan.Exception (VulkanException(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
import Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagBitsKHR(..))
import Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagsKHR)
import Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (PhysicalDeviceSurfaceInfo2KHR(..))
import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR(..))
import Vulkan.Extensions.Handles (SurfaceKHR(..))
import Vulkan.Extensions.Handles (SwapchainKHR(..))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetPhysicalDeviceSurfacePresentModes2EXT
:: FunPtr (Ptr PhysicalDevice_T -> Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR) -> Ptr Word32 -> Ptr PresentModeKHR -> IO Result) -> Ptr PhysicalDevice_T -> Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR) -> Ptr Word32 -> Ptr PresentModeKHR -> IO Result
getPhysicalDeviceSurfacePresentModes2EXT :: forall a io
. ( Extendss PhysicalDeviceSurfaceInfo2KHR a
, PokeChain a
, MonadIO io )
=>
PhysicalDevice
->
(PhysicalDeviceSurfaceInfo2KHR a)
-> io (Result, ("presentModes" ::: Vector PresentModeKHR))
getPhysicalDeviceSurfacePresentModes2EXT :: forall (a :: [*]) (io :: * -> *).
(Extendss PhysicalDeviceSurfaceInfo2KHR a, PokeChain a,
MonadIO io) =>
PhysicalDevice
-> PhysicalDeviceSurfaceInfo2KHR a
-> io (Result, "presentModes" ::: Vector PresentModeKHR)
getPhysicalDeviceSurfacePresentModes2EXT PhysicalDevice
physicalDevice
PhysicalDeviceSurfaceInfo2KHR a
surfaceInfo = 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 vkGetPhysicalDeviceSurfacePresentModes2EXTPtr :: FunPtr
(Ptr PhysicalDevice_T
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pPresentModeCount" ::: Ptr Word32)
-> ("pPresentModes" ::: Ptr PresentModeKHR)
-> IO Result)
vkGetPhysicalDeviceSurfacePresentModes2EXTPtr = InstanceCmds
-> FunPtr
(Ptr PhysicalDevice_T
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pPresentModeCount" ::: Ptr Word32)
-> ("pPresentModes" ::: Ptr PresentModeKHR)
-> IO Result)
pVkGetPhysicalDeviceSurfacePresentModes2EXT (case PhysicalDevice
physicalDevice of PhysicalDevice{InstanceCmds
$sel:instanceCmds:PhysicalDevice :: PhysicalDevice -> InstanceCmds
instanceCmds :: InstanceCmds
instanceCmds} -> InstanceCmds
instanceCmds)
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 PhysicalDevice_T
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pPresentModeCount" ::: Ptr Word32)
-> ("pPresentModes" ::: Ptr PresentModeKHR)
-> IO Result)
vkGetPhysicalDeviceSurfacePresentModes2EXTPtr 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 vkGetPhysicalDeviceSurfacePresentModes2EXT is null" forall a. Maybe a
Nothing forall a. Maybe a
Nothing
let vkGetPhysicalDeviceSurfacePresentModes2EXT' :: Ptr PhysicalDevice_T
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pPresentModeCount" ::: Ptr Word32)
-> ("pPresentModes" ::: Ptr PresentModeKHR)
-> IO Result
vkGetPhysicalDeviceSurfacePresentModes2EXT' = FunPtr
(Ptr PhysicalDevice_T
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pPresentModeCount" ::: Ptr Word32)
-> ("pPresentModes" ::: Ptr PresentModeKHR)
-> IO Result)
-> Ptr PhysicalDevice_T
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pPresentModeCount" ::: Ptr Word32)
-> ("pPresentModes" ::: Ptr PresentModeKHR)
-> IO Result
mkVkGetPhysicalDeviceSurfacePresentModes2EXT FunPtr
(Ptr PhysicalDevice_T
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pPresentModeCount" ::: Ptr Word32)
-> ("pPresentModes" ::: Ptr PresentModeKHR)
-> IO Result)
vkGetPhysicalDeviceSurfacePresentModes2EXTPtr
let physicalDevice' :: Ptr PhysicalDevice_T
physicalDevice' = PhysicalDevice -> Ptr PhysicalDevice_T
physicalDeviceHandle (PhysicalDevice
physicalDevice)
Ptr (PhysicalDeviceSurfaceInfo2KHR a)
pSurfaceInfo <- 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 (PhysicalDeviceSurfaceInfo2KHR a
surfaceInfo)
let x9 :: "pSurfaceInfo" ::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR)
x9 = forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions Ptr (PhysicalDeviceSurfaceInfo2KHR a)
pSurfaceInfo
"pPresentModeCount" ::: Ptr Word32
pPPresentModeCount <- 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 @Word32 Int
4) 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
"vkGetPhysicalDeviceSurfacePresentModes2EXT" (Ptr PhysicalDevice_T
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pPresentModeCount" ::: Ptr Word32)
-> ("pPresentModes" ::: Ptr PresentModeKHR)
-> IO Result
vkGetPhysicalDeviceSurfacePresentModes2EXT'
Ptr PhysicalDevice_T
physicalDevice'
"pSurfaceInfo" ::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR)
x9
("pPresentModeCount" ::: Ptr Word32
pPPresentModeCount)
(forall a. Ptr a
nullPtr))
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))
Word32
pPresentModeCount <- forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> IO a
peek @Word32 "pPresentModeCount" ::: Ptr Word32
pPPresentModeCount
"pPresentModes" ::: Ptr PresentModeKHR
pPPresentModes <- 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 @PresentModeKHR ((forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32
pPresentModeCount)) forall a. Num a => a -> a -> a
* Int
4)) 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
"vkGetPhysicalDeviceSurfacePresentModes2EXT" (Ptr PhysicalDevice_T
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pPresentModeCount" ::: Ptr Word32)
-> ("pPresentModes" ::: Ptr PresentModeKHR)
-> IO Result
vkGetPhysicalDeviceSurfacePresentModes2EXT'
Ptr PhysicalDevice_T
physicalDevice'
"pSurfaceInfo" ::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR)
x9
("pPresentModeCount" ::: Ptr Word32
pPPresentModeCount)
("pPresentModes" ::: Ptr PresentModeKHR
pPPresentModes))
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'))
Word32
pPresentModeCount' <- forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> IO a
peek @Word32 "pPresentModeCount" ::: Ptr Word32
pPPresentModeCount
"presentModes" ::: Vector PresentModeKHR
pPresentModes' <- 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 (Word32
pPresentModeCount')) (\Int
i -> forall a. Storable a => Ptr a -> IO a
peek @PresentModeKHR (("pPresentModes" ::: Ptr PresentModeKHR
pPPresentModes forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
4 forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr PresentModeKHR)))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ((Result
r'), "presentModes" ::: Vector PresentModeKHR
pPresentModes')
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetDeviceGroupSurfacePresentModes2EXT
:: FunPtr (Ptr Device_T -> Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR) -> Ptr DeviceGroupPresentModeFlagsKHR -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR) -> Ptr DeviceGroupPresentModeFlagsKHR -> IO Result
getDeviceGroupSurfacePresentModes2EXT :: forall a io
. ( Extendss PhysicalDeviceSurfaceInfo2KHR a
, PokeChain a
, MonadIO io )
=>
Device
->
(PhysicalDeviceSurfaceInfo2KHR a)
-> io (("modes" ::: DeviceGroupPresentModeFlagsKHR))
getDeviceGroupSurfacePresentModes2EXT :: forall (a :: [*]) (io :: * -> *).
(Extendss PhysicalDeviceSurfaceInfo2KHR a, PokeChain a,
MonadIO io) =>
Device
-> PhysicalDeviceSurfaceInfo2KHR a
-> io ("modes" ::: DeviceGroupPresentModeFlagsKHR)
getDeviceGroupSurfacePresentModes2EXT Device
device
PhysicalDeviceSurfaceInfo2KHR a
surfaceInfo = 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 vkGetDeviceGroupSurfacePresentModes2EXTPtr :: FunPtr
(Ptr Device_T
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pModes" ::: Ptr ("modes" ::: DeviceGroupPresentModeFlagsKHR))
-> IO Result)
vkGetDeviceGroupSurfacePresentModes2EXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pModes" ::: Ptr ("modes" ::: DeviceGroupPresentModeFlagsKHR))
-> IO Result)
pVkGetDeviceGroupSurfacePresentModes2EXT (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
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pModes" ::: Ptr ("modes" ::: DeviceGroupPresentModeFlagsKHR))
-> IO Result)
vkGetDeviceGroupSurfacePresentModes2EXTPtr 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 vkGetDeviceGroupSurfacePresentModes2EXT is null" forall a. Maybe a
Nothing forall a. Maybe a
Nothing
let vkGetDeviceGroupSurfacePresentModes2EXT' :: Ptr Device_T
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pModes" ::: Ptr ("modes" ::: DeviceGroupPresentModeFlagsKHR))
-> IO Result
vkGetDeviceGroupSurfacePresentModes2EXT' = FunPtr
(Ptr Device_T
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pModes" ::: Ptr ("modes" ::: DeviceGroupPresentModeFlagsKHR))
-> IO Result)
-> Ptr Device_T
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pModes" ::: Ptr ("modes" ::: DeviceGroupPresentModeFlagsKHR))
-> IO Result
mkVkGetDeviceGroupSurfacePresentModes2EXT FunPtr
(Ptr Device_T
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pModes" ::: Ptr ("modes" ::: DeviceGroupPresentModeFlagsKHR))
-> IO Result)
vkGetDeviceGroupSurfacePresentModes2EXTPtr
Ptr (PhysicalDeviceSurfaceInfo2KHR a)
pSurfaceInfo <- 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 (PhysicalDeviceSurfaceInfo2KHR a
surfaceInfo)
"pModes" ::: Ptr ("modes" ::: DeviceGroupPresentModeFlagsKHR)
pPModes <- 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 @DeviceGroupPresentModeFlagsKHR Int
4) 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
"vkGetDeviceGroupSurfacePresentModes2EXT" (Ptr Device_T
-> ("pSurfaceInfo"
::: Ptr (SomeStruct PhysicalDeviceSurfaceInfo2KHR))
-> ("pModes" ::: Ptr ("modes" ::: DeviceGroupPresentModeFlagsKHR))
-> IO Result
vkGetDeviceGroupSurfacePresentModes2EXT'
(Device -> Ptr Device_T
deviceHandle (Device
device))
(forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions Ptr (PhysicalDeviceSurfaceInfo2KHR a)
pSurfaceInfo)
("pModes" ::: Ptr ("modes" ::: DeviceGroupPresentModeFlagsKHR)
pPModes))
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))
"modes" ::: DeviceGroupPresentModeFlagsKHR
pModes <- forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> IO a
peek @DeviceGroupPresentModeFlagsKHR "pModes" ::: Ptr ("modes" ::: DeviceGroupPresentModeFlagsKHR)
pPModes
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ("modes" ::: DeviceGroupPresentModeFlagsKHR
pModes)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkAcquireFullScreenExclusiveModeEXT
:: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result) -> Ptr Device_T -> SwapchainKHR -> IO Result
acquireFullScreenExclusiveModeEXT :: forall io
. (MonadIO io)
=>
Device
->
SwapchainKHR
-> io ()
acquireFullScreenExclusiveModeEXT :: forall (io :: * -> *).
MonadIO io =>
Device -> SwapchainKHR -> io ()
acquireFullScreenExclusiveModeEXT Device
device SwapchainKHR
swapchain = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
let vkAcquireFullScreenExclusiveModeEXTPtr :: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)
vkAcquireFullScreenExclusiveModeEXTPtr = DeviceCmds -> FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)
pVkAcquireFullScreenExclusiveModeEXT (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)
vkAcquireFullScreenExclusiveModeEXTPtr 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 vkAcquireFullScreenExclusiveModeEXT is null" forall a. Maybe a
Nothing forall a. Maybe a
Nothing
let vkAcquireFullScreenExclusiveModeEXT' :: Ptr Device_T -> SwapchainKHR -> IO Result
vkAcquireFullScreenExclusiveModeEXT' = FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)
-> Ptr Device_T -> SwapchainKHR -> IO Result
mkVkAcquireFullScreenExclusiveModeEXT FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)
vkAcquireFullScreenExclusiveModeEXTPtr
Result
r <- forall a. String -> IO a -> IO a
traceAroundEvent String
"vkAcquireFullScreenExclusiveModeEXT" (Ptr Device_T -> SwapchainKHR -> IO Result
vkAcquireFullScreenExclusiveModeEXT'
(Device -> Ptr Device_T
deviceHandle (Device
device))
(SwapchainKHR
swapchain))
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))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkReleaseFullScreenExclusiveModeEXT
:: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result) -> Ptr Device_T -> SwapchainKHR -> IO Result
releaseFullScreenExclusiveModeEXT :: forall io
. (MonadIO io)
=>
Device
->
SwapchainKHR
-> io ()
releaseFullScreenExclusiveModeEXT :: forall (io :: * -> *).
MonadIO io =>
Device -> SwapchainKHR -> io ()
releaseFullScreenExclusiveModeEXT Device
device SwapchainKHR
swapchain = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
let vkReleaseFullScreenExclusiveModeEXTPtr :: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)
vkReleaseFullScreenExclusiveModeEXTPtr = DeviceCmds -> FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)
pVkReleaseFullScreenExclusiveModeEXT (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)
vkReleaseFullScreenExclusiveModeEXTPtr 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 vkReleaseFullScreenExclusiveModeEXT is null" forall a. Maybe a
Nothing forall a. Maybe a
Nothing
let vkReleaseFullScreenExclusiveModeEXT' :: Ptr Device_T -> SwapchainKHR -> IO Result
vkReleaseFullScreenExclusiveModeEXT' = FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)
-> Ptr Device_T -> SwapchainKHR -> IO Result
mkVkReleaseFullScreenExclusiveModeEXT FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)
vkReleaseFullScreenExclusiveModeEXTPtr
Result
r <- forall a. String -> IO a -> IO a
traceAroundEvent String
"vkReleaseFullScreenExclusiveModeEXT" (Ptr Device_T -> SwapchainKHR -> IO Result
vkReleaseFullScreenExclusiveModeEXT'
(Device -> Ptr Device_T
deviceHandle (Device
device))
(SwapchainKHR
swapchain))
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))
data SurfaceFullScreenExclusiveInfoEXT = SurfaceFullScreenExclusiveInfoEXT
{
SurfaceFullScreenExclusiveInfoEXT -> FullScreenExclusiveEXT
fullScreenExclusive :: FullScreenExclusiveEXT }
deriving (Typeable, SurfaceFullScreenExclusiveInfoEXT
-> SurfaceFullScreenExclusiveInfoEXT -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SurfaceFullScreenExclusiveInfoEXT
-> SurfaceFullScreenExclusiveInfoEXT -> Bool
$c/= :: SurfaceFullScreenExclusiveInfoEXT
-> SurfaceFullScreenExclusiveInfoEXT -> Bool
== :: SurfaceFullScreenExclusiveInfoEXT
-> SurfaceFullScreenExclusiveInfoEXT -> Bool
$c== :: SurfaceFullScreenExclusiveInfoEXT
-> SurfaceFullScreenExclusiveInfoEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SurfaceFullScreenExclusiveInfoEXT)
#endif
deriving instance Show SurfaceFullScreenExclusiveInfoEXT
instance ToCStruct SurfaceFullScreenExclusiveInfoEXT where
withCStruct :: forall b.
SurfaceFullScreenExclusiveInfoEXT
-> (Ptr SurfaceFullScreenExclusiveInfoEXT -> IO b) -> IO b
withCStruct SurfaceFullScreenExclusiveInfoEXT
x Ptr SurfaceFullScreenExclusiveInfoEXT -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceFullScreenExclusiveInfoEXT
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SurfaceFullScreenExclusiveInfoEXT
p SurfaceFullScreenExclusiveInfoEXT
x (Ptr SurfaceFullScreenExclusiveInfoEXT -> IO b
f Ptr SurfaceFullScreenExclusiveInfoEXT
p)
pokeCStruct :: forall b.
Ptr SurfaceFullScreenExclusiveInfoEXT
-> SurfaceFullScreenExclusiveInfoEXT -> IO b -> IO b
pokeCStruct Ptr SurfaceFullScreenExclusiveInfoEXT
p SurfaceFullScreenExclusiveInfoEXT{FullScreenExclusiveEXT
fullScreenExclusive :: FullScreenExclusiveEXT
$sel:fullScreenExclusive:SurfaceFullScreenExclusiveInfoEXT :: SurfaceFullScreenExclusiveInfoEXT -> FullScreenExclusiveEXT
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceFullScreenExclusiveInfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceFullScreenExclusiveInfoEXT
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 SurfaceFullScreenExclusiveInfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr FullScreenExclusiveEXT)) (FullScreenExclusiveEXT
fullScreenExclusive)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr SurfaceFullScreenExclusiveInfoEXT -> IO b -> IO b
pokeZeroCStruct Ptr SurfaceFullScreenExclusiveInfoEXT
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceFullScreenExclusiveInfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceFullScreenExclusiveInfoEXT
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 SurfaceFullScreenExclusiveInfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr FullScreenExclusiveEXT)) (forall a. Zero a => a
zero)
IO b
f
instance FromCStruct SurfaceFullScreenExclusiveInfoEXT where
peekCStruct :: Ptr SurfaceFullScreenExclusiveInfoEXT
-> IO SurfaceFullScreenExclusiveInfoEXT
peekCStruct Ptr SurfaceFullScreenExclusiveInfoEXT
p = do
FullScreenExclusiveEXT
fullScreenExclusive <- forall a. Storable a => Ptr a -> IO a
peek @FullScreenExclusiveEXT ((Ptr SurfaceFullScreenExclusiveInfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr FullScreenExclusiveEXT))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ FullScreenExclusiveEXT -> SurfaceFullScreenExclusiveInfoEXT
SurfaceFullScreenExclusiveInfoEXT
FullScreenExclusiveEXT
fullScreenExclusive
instance Storable SurfaceFullScreenExclusiveInfoEXT where
sizeOf :: SurfaceFullScreenExclusiveInfoEXT -> Int
sizeOf ~SurfaceFullScreenExclusiveInfoEXT
_ = Int
24
alignment :: SurfaceFullScreenExclusiveInfoEXT -> Int
alignment ~SurfaceFullScreenExclusiveInfoEXT
_ = Int
8
peek :: Ptr SurfaceFullScreenExclusiveInfoEXT
-> IO SurfaceFullScreenExclusiveInfoEXT
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr SurfaceFullScreenExclusiveInfoEXT
-> SurfaceFullScreenExclusiveInfoEXT -> IO ()
poke Ptr SurfaceFullScreenExclusiveInfoEXT
ptr SurfaceFullScreenExclusiveInfoEXT
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SurfaceFullScreenExclusiveInfoEXT
ptr SurfaceFullScreenExclusiveInfoEXT
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero SurfaceFullScreenExclusiveInfoEXT where
zero :: SurfaceFullScreenExclusiveInfoEXT
zero = FullScreenExclusiveEXT -> SurfaceFullScreenExclusiveInfoEXT
SurfaceFullScreenExclusiveInfoEXT
forall a. Zero a => a
zero
data SurfaceFullScreenExclusiveWin32InfoEXT = SurfaceFullScreenExclusiveWin32InfoEXT
{
SurfaceFullScreenExclusiveWin32InfoEXT -> Ptr ()
hmonitor :: HMONITOR }
deriving (Typeable, SurfaceFullScreenExclusiveWin32InfoEXT
-> SurfaceFullScreenExclusiveWin32InfoEXT -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SurfaceFullScreenExclusiveWin32InfoEXT
-> SurfaceFullScreenExclusiveWin32InfoEXT -> Bool
$c/= :: SurfaceFullScreenExclusiveWin32InfoEXT
-> SurfaceFullScreenExclusiveWin32InfoEXT -> Bool
== :: SurfaceFullScreenExclusiveWin32InfoEXT
-> SurfaceFullScreenExclusiveWin32InfoEXT -> Bool
$c== :: SurfaceFullScreenExclusiveWin32InfoEXT
-> SurfaceFullScreenExclusiveWin32InfoEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SurfaceFullScreenExclusiveWin32InfoEXT)
#endif
deriving instance Show SurfaceFullScreenExclusiveWin32InfoEXT
instance ToCStruct SurfaceFullScreenExclusiveWin32InfoEXT where
withCStruct :: forall b.
SurfaceFullScreenExclusiveWin32InfoEXT
-> (Ptr SurfaceFullScreenExclusiveWin32InfoEXT -> IO b) -> IO b
withCStruct SurfaceFullScreenExclusiveWin32InfoEXT
x Ptr SurfaceFullScreenExclusiveWin32InfoEXT -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceFullScreenExclusiveWin32InfoEXT
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SurfaceFullScreenExclusiveWin32InfoEXT
p SurfaceFullScreenExclusiveWin32InfoEXT
x (Ptr SurfaceFullScreenExclusiveWin32InfoEXT -> IO b
f Ptr SurfaceFullScreenExclusiveWin32InfoEXT
p)
pokeCStruct :: forall b.
Ptr SurfaceFullScreenExclusiveWin32InfoEXT
-> SurfaceFullScreenExclusiveWin32InfoEXT -> IO b -> IO b
pokeCStruct Ptr SurfaceFullScreenExclusiveWin32InfoEXT
p SurfaceFullScreenExclusiveWin32InfoEXT{Ptr ()
hmonitor :: Ptr ()
$sel:hmonitor:SurfaceFullScreenExclusiveWin32InfoEXT :: SurfaceFullScreenExclusiveWin32InfoEXT -> Ptr ()
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceFullScreenExclusiveWin32InfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceFullScreenExclusiveWin32InfoEXT
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 SurfaceFullScreenExclusiveWin32InfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr HMONITOR)) (Ptr ()
hmonitor)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr SurfaceFullScreenExclusiveWin32InfoEXT -> IO b -> IO b
pokeZeroCStruct Ptr SurfaceFullScreenExclusiveWin32InfoEXT
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceFullScreenExclusiveWin32InfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceFullScreenExclusiveWin32InfoEXT
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 SurfaceFullScreenExclusiveWin32InfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr HMONITOR)) (forall a. Zero a => a
zero)
IO b
f
instance FromCStruct SurfaceFullScreenExclusiveWin32InfoEXT where
peekCStruct :: Ptr SurfaceFullScreenExclusiveWin32InfoEXT
-> IO SurfaceFullScreenExclusiveWin32InfoEXT
peekCStruct Ptr SurfaceFullScreenExclusiveWin32InfoEXT
p = do
Ptr ()
hmonitor <- forall a. Storable a => Ptr a -> IO a
peek @HMONITOR ((Ptr SurfaceFullScreenExclusiveWin32InfoEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr HMONITOR))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Ptr () -> SurfaceFullScreenExclusiveWin32InfoEXT
SurfaceFullScreenExclusiveWin32InfoEXT
Ptr ()
hmonitor
instance Storable SurfaceFullScreenExclusiveWin32InfoEXT where
sizeOf :: SurfaceFullScreenExclusiveWin32InfoEXT -> Int
sizeOf ~SurfaceFullScreenExclusiveWin32InfoEXT
_ = Int
24
alignment :: SurfaceFullScreenExclusiveWin32InfoEXT -> Int
alignment ~SurfaceFullScreenExclusiveWin32InfoEXT
_ = Int
8
peek :: Ptr SurfaceFullScreenExclusiveWin32InfoEXT
-> IO SurfaceFullScreenExclusiveWin32InfoEXT
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr SurfaceFullScreenExclusiveWin32InfoEXT
-> SurfaceFullScreenExclusiveWin32InfoEXT -> IO ()
poke Ptr SurfaceFullScreenExclusiveWin32InfoEXT
ptr SurfaceFullScreenExclusiveWin32InfoEXT
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SurfaceFullScreenExclusiveWin32InfoEXT
ptr SurfaceFullScreenExclusiveWin32InfoEXT
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero SurfaceFullScreenExclusiveWin32InfoEXT where
zero :: SurfaceFullScreenExclusiveWin32InfoEXT
zero = Ptr () -> SurfaceFullScreenExclusiveWin32InfoEXT
SurfaceFullScreenExclusiveWin32InfoEXT
forall a. Zero a => a
zero
data SurfaceCapabilitiesFullScreenExclusiveEXT = SurfaceCapabilitiesFullScreenExclusiveEXT
{
SurfaceCapabilitiesFullScreenExclusiveEXT -> Bool
fullScreenExclusiveSupported :: Bool }
deriving (Typeable, SurfaceCapabilitiesFullScreenExclusiveEXT
-> SurfaceCapabilitiesFullScreenExclusiveEXT -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SurfaceCapabilitiesFullScreenExclusiveEXT
-> SurfaceCapabilitiesFullScreenExclusiveEXT -> Bool
$c/= :: SurfaceCapabilitiesFullScreenExclusiveEXT
-> SurfaceCapabilitiesFullScreenExclusiveEXT -> Bool
== :: SurfaceCapabilitiesFullScreenExclusiveEXT
-> SurfaceCapabilitiesFullScreenExclusiveEXT -> Bool
$c== :: SurfaceCapabilitiesFullScreenExclusiveEXT
-> SurfaceCapabilitiesFullScreenExclusiveEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SurfaceCapabilitiesFullScreenExclusiveEXT)
#endif
deriving instance Show SurfaceCapabilitiesFullScreenExclusiveEXT
instance ToCStruct SurfaceCapabilitiesFullScreenExclusiveEXT where
withCStruct :: forall b.
SurfaceCapabilitiesFullScreenExclusiveEXT
-> (Ptr SurfaceCapabilitiesFullScreenExclusiveEXT -> IO b) -> IO b
withCStruct SurfaceCapabilitiesFullScreenExclusiveEXT
x Ptr SurfaceCapabilitiesFullScreenExclusiveEXT -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
p SurfaceCapabilitiesFullScreenExclusiveEXT
x (Ptr SurfaceCapabilitiesFullScreenExclusiveEXT -> IO b
f Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
p)
pokeCStruct :: forall b.
Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
-> SurfaceCapabilitiesFullScreenExclusiveEXT -> IO b -> IO b
pokeCStruct Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
p SurfaceCapabilitiesFullScreenExclusiveEXT{Bool
fullScreenExclusiveSupported :: Bool
$sel:fullScreenExclusiveSupported:SurfaceCapabilitiesFullScreenExclusiveEXT :: SurfaceCapabilitiesFullScreenExclusiveEXT -> Bool
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
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 SurfaceCapabilitiesFullScreenExclusiveEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
fullScreenExclusiveSupported))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr SurfaceCapabilitiesFullScreenExclusiveEXT -> IO b -> IO b
pokeZeroCStruct Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
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 SurfaceCapabilitiesFullScreenExclusiveEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
IO b
f
instance FromCStruct SurfaceCapabilitiesFullScreenExclusiveEXT where
peekCStruct :: Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
-> IO SurfaceCapabilitiesFullScreenExclusiveEXT
peekCStruct Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
p = do
Bool32
fullScreenExclusiveSupported <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Bool -> SurfaceCapabilitiesFullScreenExclusiveEXT
SurfaceCapabilitiesFullScreenExclusiveEXT
(Bool32 -> Bool
bool32ToBool Bool32
fullScreenExclusiveSupported)
instance Storable SurfaceCapabilitiesFullScreenExclusiveEXT where
sizeOf :: SurfaceCapabilitiesFullScreenExclusiveEXT -> Int
sizeOf ~SurfaceCapabilitiesFullScreenExclusiveEXT
_ = Int
24
alignment :: SurfaceCapabilitiesFullScreenExclusiveEXT -> Int
alignment ~SurfaceCapabilitiesFullScreenExclusiveEXT
_ = Int
8
peek :: Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
-> IO SurfaceCapabilitiesFullScreenExclusiveEXT
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
-> SurfaceCapabilitiesFullScreenExclusiveEXT -> IO ()
poke Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
ptr SurfaceCapabilitiesFullScreenExclusiveEXT
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SurfaceCapabilitiesFullScreenExclusiveEXT
ptr SurfaceCapabilitiesFullScreenExclusiveEXT
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero SurfaceCapabilitiesFullScreenExclusiveEXT where
zero :: SurfaceCapabilitiesFullScreenExclusiveEXT
zero = Bool -> SurfaceCapabilitiesFullScreenExclusiveEXT
SurfaceCapabilitiesFullScreenExclusiveEXT
forall a. Zero a => a
zero
newtype FullScreenExclusiveEXT = FullScreenExclusiveEXT Int32
deriving newtype (FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Bool
$c/= :: FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Bool
== :: FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Bool
$c== :: FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Bool
Eq, Eq FullScreenExclusiveEXT
FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Bool
FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Ordering
FullScreenExclusiveEXT
-> FullScreenExclusiveEXT -> FullScreenExclusiveEXT
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: FullScreenExclusiveEXT
-> FullScreenExclusiveEXT -> FullScreenExclusiveEXT
$cmin :: FullScreenExclusiveEXT
-> FullScreenExclusiveEXT -> FullScreenExclusiveEXT
max :: FullScreenExclusiveEXT
-> FullScreenExclusiveEXT -> FullScreenExclusiveEXT
$cmax :: FullScreenExclusiveEXT
-> FullScreenExclusiveEXT -> FullScreenExclusiveEXT
>= :: FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Bool
$c>= :: FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Bool
> :: FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Bool
$c> :: FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Bool
<= :: FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Bool
$c<= :: FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Bool
< :: FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Bool
$c< :: FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Bool
compare :: FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Ordering
$ccompare :: FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> Ordering
Ord, Ptr FullScreenExclusiveEXT -> IO FullScreenExclusiveEXT
Ptr FullScreenExclusiveEXT -> Int -> IO FullScreenExclusiveEXT
Ptr FullScreenExclusiveEXT
-> Int -> FullScreenExclusiveEXT -> IO ()
Ptr FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> IO ()
FullScreenExclusiveEXT -> Int
forall b. Ptr b -> Int -> IO FullScreenExclusiveEXT
forall b. Ptr b -> Int -> FullScreenExclusiveEXT -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
poke :: Ptr FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> IO ()
$cpoke :: Ptr FullScreenExclusiveEXT -> FullScreenExclusiveEXT -> IO ()
peek :: Ptr FullScreenExclusiveEXT -> IO FullScreenExclusiveEXT
$cpeek :: Ptr FullScreenExclusiveEXT -> IO FullScreenExclusiveEXT
pokeByteOff :: forall b. Ptr b -> Int -> FullScreenExclusiveEXT -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> FullScreenExclusiveEXT -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO FullScreenExclusiveEXT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO FullScreenExclusiveEXT
pokeElemOff :: Ptr FullScreenExclusiveEXT
-> Int -> FullScreenExclusiveEXT -> IO ()
$cpokeElemOff :: Ptr FullScreenExclusiveEXT
-> Int -> FullScreenExclusiveEXT -> IO ()
peekElemOff :: Ptr FullScreenExclusiveEXT -> Int -> IO FullScreenExclusiveEXT
$cpeekElemOff :: Ptr FullScreenExclusiveEXT -> Int -> IO FullScreenExclusiveEXT
alignment :: FullScreenExclusiveEXT -> Int
$calignment :: FullScreenExclusiveEXT -> Int
sizeOf :: FullScreenExclusiveEXT -> Int
$csizeOf :: FullScreenExclusiveEXT -> Int
Storable, FullScreenExclusiveEXT
forall a. a -> Zero a
zero :: FullScreenExclusiveEXT
$czero :: FullScreenExclusiveEXT
Zero)
pattern $bFULL_SCREEN_EXCLUSIVE_DEFAULT_EXT :: FullScreenExclusiveEXT
$mFULL_SCREEN_EXCLUSIVE_DEFAULT_EXT :: forall {r}.
FullScreenExclusiveEXT -> ((# #) -> r) -> ((# #) -> r) -> r
FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = FullScreenExclusiveEXT 0
pattern $bFULL_SCREEN_EXCLUSIVE_ALLOWED_EXT :: FullScreenExclusiveEXT
$mFULL_SCREEN_EXCLUSIVE_ALLOWED_EXT :: forall {r}.
FullScreenExclusiveEXT -> ((# #) -> r) -> ((# #) -> r) -> r
FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = FullScreenExclusiveEXT 1
pattern $bFULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT :: FullScreenExclusiveEXT
$mFULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT :: forall {r}.
FullScreenExclusiveEXT -> ((# #) -> r) -> ((# #) -> r) -> r
FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = FullScreenExclusiveEXT 2
pattern $bFULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT :: FullScreenExclusiveEXT
$mFULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT :: forall {r}.
FullScreenExclusiveEXT -> ((# #) -> r) -> ((# #) -> r) -> r
FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = FullScreenExclusiveEXT 3
{-# COMPLETE
FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT
, FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT
, FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT
, FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT ::
FullScreenExclusiveEXT
#-}
conNameFullScreenExclusiveEXT :: String
conNameFullScreenExclusiveEXT :: String
conNameFullScreenExclusiveEXT = String
"FullScreenExclusiveEXT"
enumPrefixFullScreenExclusiveEXT :: String
enumPrefixFullScreenExclusiveEXT :: String
enumPrefixFullScreenExclusiveEXT = String
"FULL_SCREEN_EXCLUSIVE_"
showTableFullScreenExclusiveEXT :: [(FullScreenExclusiveEXT, String)]
showTableFullScreenExclusiveEXT :: [(FullScreenExclusiveEXT, String)]
showTableFullScreenExclusiveEXT =
[
( FullScreenExclusiveEXT
FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT
, String
"DEFAULT_EXT"
)
,
( FullScreenExclusiveEXT
FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT
, String
"ALLOWED_EXT"
)
,
( FullScreenExclusiveEXT
FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT
, String
"DISALLOWED_EXT"
)
,
( FullScreenExclusiveEXT
FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
, String
"APPLICATION_CONTROLLED_EXT"
)
]
instance Show FullScreenExclusiveEXT where
showsPrec :: Int -> FullScreenExclusiveEXT -> ShowS
showsPrec =
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
String
enumPrefixFullScreenExclusiveEXT
[(FullScreenExclusiveEXT, String)]
showTableFullScreenExclusiveEXT
String
conNameFullScreenExclusiveEXT
(\(FullScreenExclusiveEXT Int32
x) -> Int32
x)
(forall a. Show a => Int -> a -> ShowS
showsPrec Int
11)
instance Read FullScreenExclusiveEXT where
readPrec :: ReadPrec FullScreenExclusiveEXT
readPrec =
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
String
enumPrefixFullScreenExclusiveEXT
[(FullScreenExclusiveEXT, String)]
showTableFullScreenExclusiveEXT
String
conNameFullScreenExclusiveEXT
Int32 -> FullScreenExclusiveEXT
FullScreenExclusiveEXT
type EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION = 4
pattern EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION :: forall a . Integral a => a
pattern $bEXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION :: forall a. Integral a => a
$mEXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION = 4
type EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME = "VK_EXT_full_screen_exclusive"
pattern EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bEXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mEXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME = "VK_EXT_full_screen_exclusive"
type HMONITOR = Ptr ()