{-# language CPP #-}
module Vulkan.Core11.Promoted_From_VK_KHR_maintenance1 ( trimCommandPool
, CommandPoolTrimFlags(..)
, Result(..)
, ImageCreateFlagBits(..)
, ImageCreateFlags
, FormatFeatureFlagBits(..)
, FormatFeatureFlags
) where
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import GHC.IO (throwIO)
import GHC.Ptr (nullFunPtr)
import Control.Monad.IO.Class (MonadIO)
import GHC.IO.Exception (IOErrorType(..))
import GHC.IO.Exception (IOException(..))
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import Vulkan.Core10.Handles (CommandPool)
import Vulkan.Core10.Handles (CommandPool(..))
import Vulkan.Core11.Enums.CommandPoolTrimFlags (CommandPoolTrimFlags)
import Vulkan.Core11.Enums.CommandPoolTrimFlags (CommandPoolTrimFlags(..))
import Vulkan.Core10.Handles (Device)
import Vulkan.Core10.Handles (Device(..))
import Vulkan.Dynamic (DeviceCmds(pVkTrimCommandPool))
import Vulkan.Core10.Handles (Device_T)
import Vulkan.Core11.Enums.CommandPoolTrimFlags (CommandPoolTrimFlags(..))
import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(..))
import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)
import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))
import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
import Vulkan.Core10.Enums.Result (Result(..))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkTrimCommandPool
:: FunPtr (Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ()) -> Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ()
trimCommandPool :: forall io
. (MonadIO io)
=>
Device
->
CommandPool
->
CommandPoolTrimFlags
-> io ()
trimCommandPool :: Device -> CommandPool -> CommandPoolTrimFlags -> io ()
trimCommandPool device :: Device
device commandPool :: CommandPool
commandPool flags :: CommandPoolTrimFlags
flags = IO () -> io ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ()) -> IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkTrimCommandPoolPtr :: FunPtr
(Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ())
vkTrimCommandPoolPtr = DeviceCmds
-> FunPtr
(Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ())
pVkTrimCommandPool (Device -> DeviceCmds
deviceCmds (Device
device :: Device))
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ())
vkTrimCommandPoolPtr FunPtr
(Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ())
-> FunPtr
(Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. 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 "" "The function pointer for vkTrimCommandPool is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkTrimCommandPool' :: Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ()
vkTrimCommandPool' = FunPtr
(Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ())
-> Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ()
mkVkTrimCommandPool FunPtr
(Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ())
vkTrimCommandPoolPtr
Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ()
vkTrimCommandPool' (Device -> Ptr Device_T
deviceHandle (Device
device)) (CommandPool
commandPool) (CommandPoolTrimFlags
flags)
() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure (() -> IO ()) -> () -> IO ()
forall a b. (a -> b) -> a -> b
$ ()