{-# language CPP #-}
module Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 ( getBufferMemoryRequirements2
, getImageMemoryRequirements2
, getImageSparseMemoryRequirements2
, BufferMemoryRequirementsInfo2(..)
, ImageMemoryRequirementsInfo2(..)
, ImageSparseMemoryRequirementsInfo2(..)
, MemoryRequirements2(..)
, SparseImageMemoryRequirements2(..)
, StructureType(..)
) where
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Exception.Base (bracket)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Data.Typeable (eqT)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Marshal.Alloc (callocBytes)
import Foreign.Marshal.Alloc (free)
import GHC.IO (throwIO)
import GHC.Ptr (castPtr)
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 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.Type.Equality ((:~:)(Refl))
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.CStruct.Extends (forgetExtensions)
import Vulkan.NamedType ((:::))
import Vulkan.Core10.Handles (Buffer)
import Vulkan.CStruct.Extends (Chain)
import Vulkan.Core10.Handles (Device)
import Vulkan.Core10.Handles (Device(..))
import Vulkan.Core10.Handles (Device(Device))
import Vulkan.Dynamic (DeviceCmds(pVkGetBufferMemoryRequirements2))
import Vulkan.Dynamic (DeviceCmds(pVkGetImageMemoryRequirements2))
import Vulkan.Dynamic (DeviceCmds(pVkGetImageSparseMemoryRequirements2))
import Vulkan.Core10.Handles (Device_T)
import Vulkan.CStruct.Extends (Extends)
import Vulkan.CStruct.Extends (Extendss)
import Vulkan.CStruct.Extends (Extensible(..))
import Vulkan.Core10.Handles (Image)
import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (ImagePlaneMemoryRequirementsInfo)
import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation (MemoryDedicatedRequirements)
import Vulkan.Core10.MemoryManagement (MemoryRequirements)
import Vulkan.CStruct.Extends (PeekChain)
import Vulkan.CStruct.Extends (PeekChain(..))
import Vulkan.CStruct.Extends (PokeChain)
import Vulkan.CStruct.Extends (PokeChain(..))
import Vulkan.CStruct.Extends (SomeStruct)
import Vulkan.Core10.SparseResourceMemoryManagement (SparseImageMemoryRequirements)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2))
import Vulkan.Core10.Enums.StructureType (StructureType(..))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetBufferMemoryRequirements2
:: FunPtr (Ptr Device_T -> Ptr BufferMemoryRequirementsInfo2 -> Ptr (SomeStruct MemoryRequirements2) -> IO ()) -> Ptr Device_T -> Ptr BufferMemoryRequirementsInfo2 -> Ptr (SomeStruct MemoryRequirements2) -> IO ()
getBufferMemoryRequirements2 :: forall a io
. ( Extendss MemoryRequirements2 a
, PokeChain a
, PeekChain a
, MonadIO io )
=>
Device
->
BufferMemoryRequirementsInfo2
-> io (MemoryRequirements2 a)
getBufferMemoryRequirements2 :: forall (a :: [*]) (io :: * -> *).
(Extendss MemoryRequirements2 a, PokeChain a, PeekChain a,
MonadIO io) =>
Device
-> BufferMemoryRequirementsInfo2 -> io (MemoryRequirements2 a)
getBufferMemoryRequirements2 Device
device BufferMemoryRequirementsInfo2
info = 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 vkGetBufferMemoryRequirements2Ptr :: FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2)
-> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2))
-> IO ())
vkGetBufferMemoryRequirements2Ptr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2)
-> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2))
-> IO ())
pVkGetBufferMemoryRequirements2 (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
-> ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2)
-> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2))
-> IO ())
vkGetBufferMemoryRequirements2Ptr 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 vkGetBufferMemoryRequirements2 is null" forall a. Maybe a
Nothing forall a. Maybe a
Nothing
let vkGetBufferMemoryRequirements2' :: Ptr Device_T
-> ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2)
-> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2))
-> IO ()
vkGetBufferMemoryRequirements2' = FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2)
-> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2))
-> IO ())
-> Ptr Device_T
-> ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2)
-> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2))
-> IO ()
mkVkGetBufferMemoryRequirements2 FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2)
-> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2))
-> IO ())
vkGetBufferMemoryRequirements2Ptr
"pInfo" ::: Ptr BufferMemoryRequirementsInfo2
pInfo <- 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 (BufferMemoryRequirementsInfo2
info)
Ptr (MemoryRequirements2 a)
pPMemoryRequirements <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @(MemoryRequirements2 _))
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
"vkGetBufferMemoryRequirements2" (Ptr Device_T
-> ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2)
-> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2))
-> IO ()
vkGetBufferMemoryRequirements2'
(Device -> Ptr Device_T
deviceHandle (Device
device))
"pInfo" ::: Ptr BufferMemoryRequirementsInfo2
pInfo
(forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions (Ptr (MemoryRequirements2 a)
pPMemoryRequirements)))
MemoryRequirements2 a
pMemoryRequirements <- forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @(MemoryRequirements2 _) Ptr (MemoryRequirements2 a)
pPMemoryRequirements
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ (MemoryRequirements2 a
pMemoryRequirements)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetImageMemoryRequirements2
:: FunPtr (Ptr Device_T -> Ptr (SomeStruct ImageMemoryRequirementsInfo2) -> Ptr (SomeStruct MemoryRequirements2) -> IO ()) -> Ptr Device_T -> Ptr (SomeStruct ImageMemoryRequirementsInfo2) -> Ptr (SomeStruct MemoryRequirements2) -> IO ()
getImageMemoryRequirements2 :: forall a b io
. ( Extendss ImageMemoryRequirementsInfo2 a
, PokeChain a
, Extendss MemoryRequirements2 b
, PokeChain b
, PeekChain b
, MonadIO io )
=>
Device
->
(ImageMemoryRequirementsInfo2 a)
-> io (MemoryRequirements2 b)
getImageMemoryRequirements2 :: forall (a :: [*]) (b :: [*]) (io :: * -> *).
(Extendss ImageMemoryRequirementsInfo2 a, PokeChain a,
Extendss MemoryRequirements2 b, PokeChain b, PeekChain b,
MonadIO io) =>
Device
-> ImageMemoryRequirementsInfo2 a -> io (MemoryRequirements2 b)
getImageMemoryRequirements2 Device
device ImageMemoryRequirementsInfo2 a
info = 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 vkGetImageMemoryRequirements2Ptr :: FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr (SomeStruct ImageMemoryRequirementsInfo2))
-> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2))
-> IO ())
vkGetImageMemoryRequirements2Ptr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr (SomeStruct ImageMemoryRequirementsInfo2))
-> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2))
-> IO ())
pVkGetImageMemoryRequirements2 (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
$sel:deviceCmds:Device :: Device -> 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
-> ("pInfo" ::: Ptr (SomeStruct ImageMemoryRequirementsInfo2))
-> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2))
-> IO ())
vkGetImageMemoryRequirements2Ptr 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 vkGetImageMemoryRequirements2 is null" forall a. Maybe a
Nothing forall a. Maybe a
Nothing
let vkGetImageMemoryRequirements2' :: Ptr Device_T
-> ("pInfo" ::: Ptr (SomeStruct ImageMemoryRequirementsInfo2))
-> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2))
-> IO ()
vkGetImageMemoryRequirements2' = FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr (SomeStruct ImageMemoryRequirementsInfo2))
-> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2))
-> IO ())
-> Ptr Device_T
-> ("pInfo" ::: Ptr (SomeStruct ImageMemoryRequirementsInfo2))
-> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2))
-> IO ()
mkVkGetImageMemoryRequirements2 FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr (SomeStruct ImageMemoryRequirementsInfo2))
-> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2))
-> IO ())
vkGetImageMemoryRequirements2Ptr
Ptr (ImageMemoryRequirementsInfo2 a)
pInfo <- 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 (ImageMemoryRequirementsInfo2 a
info)
Ptr (MemoryRequirements2 b)
pPMemoryRequirements <- forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @(MemoryRequirements2 _))
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
"vkGetImageMemoryRequirements2" (Ptr Device_T
-> ("pInfo" ::: Ptr (SomeStruct ImageMemoryRequirementsInfo2))
-> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2))
-> IO ()
vkGetImageMemoryRequirements2'
(Device -> Ptr Device_T
deviceHandle (Device
device))
(forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions Ptr (ImageMemoryRequirementsInfo2 a)
pInfo)
(forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions (Ptr (MemoryRequirements2 b)
pPMemoryRequirements)))
MemoryRequirements2 b
pMemoryRequirements <- forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @(MemoryRequirements2 _) Ptr (MemoryRequirements2 b)
pPMemoryRequirements
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ (MemoryRequirements2 b
pMemoryRequirements)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetImageSparseMemoryRequirements2
:: FunPtr (Ptr Device_T -> Ptr ImageSparseMemoryRequirementsInfo2 -> Ptr Word32 -> Ptr SparseImageMemoryRequirements2 -> IO ()) -> Ptr Device_T -> Ptr ImageSparseMemoryRequirementsInfo2 -> Ptr Word32 -> Ptr SparseImageMemoryRequirements2 -> IO ()
getImageSparseMemoryRequirements2 :: forall io
. (MonadIO io)
=>
Device
->
ImageSparseMemoryRequirementsInfo2
-> io (("sparseMemoryRequirements" ::: Vector SparseImageMemoryRequirements2))
getImageSparseMemoryRequirements2 :: forall (io :: * -> *).
MonadIO io =>
Device
-> ImageSparseMemoryRequirementsInfo2
-> io
("sparseMemoryRequirements"
::: Vector SparseImageMemoryRequirements2)
getImageSparseMemoryRequirements2 Device
device ImageSparseMemoryRequirementsInfo2
info = 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 vkGetImageSparseMemoryRequirements2Ptr :: FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2)
-> ("pSparseMemoryRequirementCount" ::: Ptr Word32)
-> ("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> IO ())
vkGetImageSparseMemoryRequirements2Ptr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2)
-> ("pSparseMemoryRequirementCount" ::: Ptr Word32)
-> ("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> IO ())
pVkGetImageSparseMemoryRequirements2 (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
$sel:deviceCmds:Device :: Device -> 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
-> ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2)
-> ("pSparseMemoryRequirementCount" ::: Ptr Word32)
-> ("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> IO ())
vkGetImageSparseMemoryRequirements2Ptr 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 vkGetImageSparseMemoryRequirements2 is null" forall a. Maybe a
Nothing forall a. Maybe a
Nothing
let vkGetImageSparseMemoryRequirements2' :: Ptr Device_T
-> ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2)
-> ("pSparseMemoryRequirementCount" ::: Ptr Word32)
-> ("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> IO ()
vkGetImageSparseMemoryRequirements2' = FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2)
-> ("pSparseMemoryRequirementCount" ::: Ptr Word32)
-> ("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> IO ())
-> Ptr Device_T
-> ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2)
-> ("pSparseMemoryRequirementCount" ::: Ptr Word32)
-> ("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> IO ()
mkVkGetImageSparseMemoryRequirements2 FunPtr
(Ptr Device_T
-> ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2)
-> ("pSparseMemoryRequirementCount" ::: Ptr Word32)
-> ("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> IO ())
vkGetImageSparseMemoryRequirements2Ptr
let device' :: Ptr Device_T
device' = Device -> Ptr Device_T
deviceHandle (Device
device)
"pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
pInfo <- 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 (ImageSparseMemoryRequirementsInfo2
info)
"pSparseMemoryRequirementCount" ::: Ptr Word32
pPSparseMemoryRequirementCount <- 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
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
"vkGetImageSparseMemoryRequirements2" (Ptr Device_T
-> ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2)
-> ("pSparseMemoryRequirementCount" ::: Ptr Word32)
-> ("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> IO ()
vkGetImageSparseMemoryRequirements2'
Ptr Device_T
device'
"pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
pInfo
("pSparseMemoryRequirementCount" ::: Ptr Word32
pPSparseMemoryRequirementCount)
(forall a. Ptr a
nullPtr))
Word32
pSparseMemoryRequirementCount <- 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 "pSparseMemoryRequirementCount" ::: Ptr Word32
pPSparseMemoryRequirementCount
"pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
pPSparseMemoryRequirements <- 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 @SparseImageMemoryRequirements2 ((forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32
pSparseMemoryRequirementCount)) forall a. Num a => a -> a -> a
* Int
64)) forall a. Ptr a -> IO ()
free
[()]
_ <- forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse (\Int
i -> 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 => Ptr a -> IO b -> IO b
pokeZeroCStruct ("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
pPSparseMemoryRequirements forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
i forall a. Num a => a -> a -> a
* Int
64) :: Ptr SparseImageMemoryRequirements2) forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a b. (a -> b) -> a -> b
$ ())) [Int
0..(forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32
pSparseMemoryRequirementCount)) forall a. Num a => a -> a -> a
- Int
1]
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
"vkGetImageSparseMemoryRequirements2" (Ptr Device_T
-> ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2)
-> ("pSparseMemoryRequirementCount" ::: Ptr Word32)
-> ("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> IO ()
vkGetImageSparseMemoryRequirements2'
Ptr Device_T
device'
"pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
pInfo
("pSparseMemoryRequirementCount" ::: Ptr Word32
pPSparseMemoryRequirementCount)
(("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
pPSparseMemoryRequirements)))
Word32
pSparseMemoryRequirementCount' <- 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 "pSparseMemoryRequirementCount" ::: Ptr Word32
pPSparseMemoryRequirementCount
"sparseMemoryRequirements"
::: Vector SparseImageMemoryRequirements2
pSparseMemoryRequirements' <- 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
pSparseMemoryRequirementCount')) (\Int
i -> forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @SparseImageMemoryRequirements2 ((("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
pPSparseMemoryRequirements) forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
64 forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr SparseImageMemoryRequirements2)))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ("sparseMemoryRequirements"
::: Vector SparseImageMemoryRequirements2
pSparseMemoryRequirements')
data BufferMemoryRequirementsInfo2 = BufferMemoryRequirementsInfo2
{
BufferMemoryRequirementsInfo2 -> Buffer
buffer :: Buffer }
deriving (Typeable, BufferMemoryRequirementsInfo2
-> BufferMemoryRequirementsInfo2 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BufferMemoryRequirementsInfo2
-> BufferMemoryRequirementsInfo2 -> Bool
$c/= :: BufferMemoryRequirementsInfo2
-> BufferMemoryRequirementsInfo2 -> Bool
== :: BufferMemoryRequirementsInfo2
-> BufferMemoryRequirementsInfo2 -> Bool
$c== :: BufferMemoryRequirementsInfo2
-> BufferMemoryRequirementsInfo2 -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (BufferMemoryRequirementsInfo2)
#endif
deriving instance Show BufferMemoryRequirementsInfo2
instance ToCStruct BufferMemoryRequirementsInfo2 where
withCStruct :: forall b.
BufferMemoryRequirementsInfo2
-> (("pInfo" ::: Ptr BufferMemoryRequirementsInfo2) -> IO b)
-> IO b
withCStruct BufferMemoryRequirementsInfo2
x ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2) -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \"pInfo" ::: Ptr BufferMemoryRequirementsInfo2
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pInfo" ::: Ptr BufferMemoryRequirementsInfo2
p BufferMemoryRequirementsInfo2
x (("pInfo" ::: Ptr BufferMemoryRequirementsInfo2) -> IO b
f "pInfo" ::: Ptr BufferMemoryRequirementsInfo2
p)
pokeCStruct :: forall b.
("pInfo" ::: Ptr BufferMemoryRequirementsInfo2)
-> BufferMemoryRequirementsInfo2 -> IO b -> IO b
pokeCStruct "pInfo" ::: Ptr BufferMemoryRequirementsInfo2
p BufferMemoryRequirementsInfo2{Buffer
buffer :: Buffer
$sel:buffer:BufferMemoryRequirementsInfo2 :: BufferMemoryRequirementsInfo2 -> Buffer
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr BufferMemoryRequirementsInfo2
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2)
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr BufferMemoryRequirementsInfo2
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 (("pInfo" ::: Ptr BufferMemoryRequirementsInfo2
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Buffer)) (Buffer
buffer)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
("pInfo" ::: Ptr BufferMemoryRequirementsInfo2) -> IO b -> IO b
pokeZeroCStruct "pInfo" ::: Ptr BufferMemoryRequirementsInfo2
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr BufferMemoryRequirementsInfo2
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2)
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr BufferMemoryRequirementsInfo2
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 (("pInfo" ::: Ptr BufferMemoryRequirementsInfo2
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Buffer)) (forall a. Zero a => a
zero)
IO b
f
instance FromCStruct BufferMemoryRequirementsInfo2 where
peekCStruct :: ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2)
-> IO BufferMemoryRequirementsInfo2
peekCStruct "pInfo" ::: Ptr BufferMemoryRequirementsInfo2
p = do
Buffer
buffer <- forall a. Storable a => Ptr a -> IO a
peek @Buffer (("pInfo" ::: Ptr BufferMemoryRequirementsInfo2
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Buffer))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Buffer -> BufferMemoryRequirementsInfo2
BufferMemoryRequirementsInfo2
Buffer
buffer
instance Storable BufferMemoryRequirementsInfo2 where
sizeOf :: BufferMemoryRequirementsInfo2 -> Int
sizeOf ~BufferMemoryRequirementsInfo2
_ = Int
24
alignment :: BufferMemoryRequirementsInfo2 -> Int
alignment ~BufferMemoryRequirementsInfo2
_ = Int
8
peek :: ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2)
-> IO BufferMemoryRequirementsInfo2
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2)
-> BufferMemoryRequirementsInfo2 -> IO ()
poke "pInfo" ::: Ptr BufferMemoryRequirementsInfo2
ptr BufferMemoryRequirementsInfo2
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pInfo" ::: Ptr BufferMemoryRequirementsInfo2
ptr BufferMemoryRequirementsInfo2
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero BufferMemoryRequirementsInfo2 where
zero :: BufferMemoryRequirementsInfo2
zero = Buffer -> BufferMemoryRequirementsInfo2
BufferMemoryRequirementsInfo2
forall a. Zero a => a
zero
data ImageMemoryRequirementsInfo2 (es :: [Type]) = ImageMemoryRequirementsInfo2
{
forall (es :: [*]). ImageMemoryRequirementsInfo2 es -> Chain es
next :: Chain es
,
forall (es :: [*]). ImageMemoryRequirementsInfo2 es -> Image
image :: Image
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ImageMemoryRequirementsInfo2 (es :: [Type]))
#endif
deriving instance Show (Chain es) => Show (ImageMemoryRequirementsInfo2 es)
instance Extensible ImageMemoryRequirementsInfo2 where
extensibleTypeName :: String
extensibleTypeName = String
"ImageMemoryRequirementsInfo2"
setNext :: forall (ds :: [*]) (es :: [*]).
ImageMemoryRequirementsInfo2 ds
-> Chain es -> ImageMemoryRequirementsInfo2 es
setNext ImageMemoryRequirementsInfo2{Chain ds
Image
image :: Image
next :: Chain ds
$sel:image:ImageMemoryRequirementsInfo2 :: forall (es :: [*]). ImageMemoryRequirementsInfo2 es -> Image
$sel:next:ImageMemoryRequirementsInfo2 :: forall (es :: [*]). ImageMemoryRequirementsInfo2 es -> Chain es
..} Chain es
next' = ImageMemoryRequirementsInfo2{$sel:next:ImageMemoryRequirementsInfo2 :: Chain es
next = Chain es
next', Image
image :: Image
$sel:image:ImageMemoryRequirementsInfo2 :: Image
..}
getNext :: forall (es :: [*]). ImageMemoryRequirementsInfo2 es -> Chain es
getNext ImageMemoryRequirementsInfo2{Chain es
Image
image :: Image
next :: Chain es
$sel:image:ImageMemoryRequirementsInfo2 :: forall (es :: [*]). ImageMemoryRequirementsInfo2 es -> Image
$sel:next:ImageMemoryRequirementsInfo2 :: forall (es :: [*]). ImageMemoryRequirementsInfo2 es -> Chain es
..} = Chain es
next
extends :: forall e b proxy. Typeable e => proxy e -> (Extends ImageMemoryRequirementsInfo2 e => b) -> Maybe b
extends :: forall e b (proxy :: * -> *).
Typeable e =>
proxy e -> (Extends ImageMemoryRequirementsInfo2 e => b) -> Maybe b
extends proxy e
_ Extends ImageMemoryRequirementsInfo2 e => b
f
| Just e :~: ImagePlaneMemoryRequirementsInfo
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
eqT @e @ImagePlaneMemoryRequirementsInfo = forall a. a -> Maybe a
Just Extends ImageMemoryRequirementsInfo2 e => b
f
| Bool
otherwise = forall a. Maybe a
Nothing
instance ( Extendss ImageMemoryRequirementsInfo2 es
, PokeChain es ) => ToCStruct (ImageMemoryRequirementsInfo2 es) where
withCStruct :: forall b.
ImageMemoryRequirementsInfo2 es
-> (Ptr (ImageMemoryRequirementsInfo2 es) -> IO b) -> IO b
withCStruct ImageMemoryRequirementsInfo2 es
x Ptr (ImageMemoryRequirementsInfo2 es) -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr (ImageMemoryRequirementsInfo2 es)
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr (ImageMemoryRequirementsInfo2 es)
p ImageMemoryRequirementsInfo2 es
x (Ptr (ImageMemoryRequirementsInfo2 es) -> IO b
f Ptr (ImageMemoryRequirementsInfo2 es)
p)
pokeCStruct :: forall b.
Ptr (ImageMemoryRequirementsInfo2 es)
-> ImageMemoryRequirementsInfo2 es -> IO b -> IO b
pokeCStruct Ptr (ImageMemoryRequirementsInfo2 es)
p ImageMemoryRequirementsInfo2{Chain es
Image
image :: Image
next :: Chain es
$sel:image:ImageMemoryRequirementsInfo2 :: forall (es :: [*]). ImageMemoryRequirementsInfo2 es -> Image
$sel:next:ImageMemoryRequirementsInfo2 :: forall (es :: [*]). ImageMemoryRequirementsInfo2 es -> Chain es
..} IO b
f = forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT forall a b. (a -> b) -> a -> b
$ do
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 -> a -> IO ()
poke ((Ptr (ImageMemoryRequirementsInfo2 es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2)
Ptr ()
pNext'' <- forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. Ptr a -> Ptr b
castPtr forall b c a. (b -> c) -> (a -> b) -> a -> c
. 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 (es :: [*]) a.
PokeChain es =>
Chain es -> (Ptr (Chain es) -> IO a) -> IO a
withChain (Chain es
next)
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 -> a -> IO ()
poke ((Ptr (ImageMemoryRequirementsInfo2 es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) Ptr ()
pNext''
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 -> a -> IO ()
poke ((Ptr (ImageMemoryRequirementsInfo2 es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Image)) (Image
image)
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr (ImageMemoryRequirementsInfo2 es) -> IO b -> IO b
pokeZeroCStruct Ptr (ImageMemoryRequirementsInfo2 es)
p IO b
f = forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT forall a b. (a -> b) -> a -> b
$ do
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 -> a -> IO ()
poke ((Ptr (ImageMemoryRequirementsInfo2 es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2)
Ptr ()
pNext' <- forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. Ptr a -> Ptr b
castPtr forall b c a. (b -> c) -> (a -> b) -> a -> c
. 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 (es :: [*]) a.
PokeChain es =>
(Ptr (Chain es) -> IO a) -> IO a
withZeroChain @es
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 -> a -> IO ()
poke ((Ptr (ImageMemoryRequirementsInfo2 es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) Ptr ()
pNext'
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 -> a -> IO ()
poke ((Ptr (ImageMemoryRequirementsInfo2 es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Image)) (forall a. Zero a => a
zero)
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ IO b
f
instance ( Extendss ImageMemoryRequirementsInfo2 es
, PeekChain es ) => FromCStruct (ImageMemoryRequirementsInfo2 es) where
peekCStruct :: Ptr (ImageMemoryRequirementsInfo2 es)
-> IO (ImageMemoryRequirementsInfo2 es)
peekCStruct Ptr (ImageMemoryRequirementsInfo2 es)
p = do
Ptr ()
pNext <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr ()) ((Ptr (ImageMemoryRequirementsInfo2 es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ())))
Chain es
next <- forall (es :: [*]). PeekChain es => Ptr (Chain es) -> IO (Chain es)
peekChain (forall a b. Ptr a -> Ptr b
castPtr Ptr ()
pNext)
Image
image <- forall a. Storable a => Ptr a -> IO a
peek @Image ((Ptr (ImageMemoryRequirementsInfo2 es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Image))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ forall (es :: [*]).
Chain es -> Image -> ImageMemoryRequirementsInfo2 es
ImageMemoryRequirementsInfo2
Chain es
next Image
image
instance es ~ '[] => Zero (ImageMemoryRequirementsInfo2 es) where
zero :: ImageMemoryRequirementsInfo2 es
zero = forall (es :: [*]).
Chain es -> Image -> ImageMemoryRequirementsInfo2 es
ImageMemoryRequirementsInfo2
()
forall a. Zero a => a
zero
data ImageSparseMemoryRequirementsInfo2 = ImageSparseMemoryRequirementsInfo2
{
ImageSparseMemoryRequirementsInfo2 -> Image
image :: Image }
deriving (Typeable, ImageSparseMemoryRequirementsInfo2
-> ImageSparseMemoryRequirementsInfo2 -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ImageSparseMemoryRequirementsInfo2
-> ImageSparseMemoryRequirementsInfo2 -> Bool
$c/= :: ImageSparseMemoryRequirementsInfo2
-> ImageSparseMemoryRequirementsInfo2 -> Bool
== :: ImageSparseMemoryRequirementsInfo2
-> ImageSparseMemoryRequirementsInfo2 -> Bool
$c== :: ImageSparseMemoryRequirementsInfo2
-> ImageSparseMemoryRequirementsInfo2 -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ImageSparseMemoryRequirementsInfo2)
#endif
deriving instance Show ImageSparseMemoryRequirementsInfo2
instance ToCStruct ImageSparseMemoryRequirementsInfo2 where
withCStruct :: forall b.
ImageSparseMemoryRequirementsInfo2
-> (("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2) -> IO b)
-> IO b
withCStruct ImageSparseMemoryRequirementsInfo2
x ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2) -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \"pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
p ImageSparseMemoryRequirementsInfo2
x (("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2) -> IO b
f "pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
p)
pokeCStruct :: forall b.
("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2)
-> ImageSparseMemoryRequirementsInfo2 -> IO b -> IO b
pokeCStruct "pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
p ImageSparseMemoryRequirementsInfo2{Image
image :: Image
$sel:image:ImageSparseMemoryRequirementsInfo2 :: ImageSparseMemoryRequirementsInfo2 -> Image
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2)
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
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 (("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Image)) (Image
image)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2)
-> IO b -> IO b
pokeZeroCStruct "pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2)
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
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 (("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Image)) (forall a. Zero a => a
zero)
IO b
f
instance FromCStruct ImageSparseMemoryRequirementsInfo2 where
peekCStruct :: ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2)
-> IO ImageSparseMemoryRequirementsInfo2
peekCStruct "pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
p = do
Image
image <- forall a. Storable a => Ptr a -> IO a
peek @Image (("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Image))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ Image -> ImageSparseMemoryRequirementsInfo2
ImageSparseMemoryRequirementsInfo2
Image
image
instance Storable ImageSparseMemoryRequirementsInfo2 where
sizeOf :: ImageSparseMemoryRequirementsInfo2 -> Int
sizeOf ~ImageSparseMemoryRequirementsInfo2
_ = Int
24
alignment :: ImageSparseMemoryRequirementsInfo2 -> Int
alignment ~ImageSparseMemoryRequirementsInfo2
_ = Int
8
peek :: ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2)
-> IO ImageSparseMemoryRequirementsInfo2
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2)
-> ImageSparseMemoryRequirementsInfo2 -> IO ()
poke "pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
ptr ImageSparseMemoryRequirementsInfo2
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2
ptr ImageSparseMemoryRequirementsInfo2
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero ImageSparseMemoryRequirementsInfo2 where
zero :: ImageSparseMemoryRequirementsInfo2
zero = Image -> ImageSparseMemoryRequirementsInfo2
ImageSparseMemoryRequirementsInfo2
forall a. Zero a => a
zero
data MemoryRequirements2 (es :: [Type]) = MemoryRequirements2
{
forall (es :: [*]). MemoryRequirements2 es -> Chain es
next :: Chain es
,
forall (es :: [*]). MemoryRequirements2 es -> MemoryRequirements
memoryRequirements :: MemoryRequirements
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (MemoryRequirements2 (es :: [Type]))
#endif
deriving instance Show (Chain es) => Show (MemoryRequirements2 es)
instance Extensible MemoryRequirements2 where
extensibleTypeName :: String
extensibleTypeName = String
"MemoryRequirements2"
setNext :: forall (ds :: [*]) (es :: [*]).
MemoryRequirements2 ds -> Chain es -> MemoryRequirements2 es
setNext MemoryRequirements2{Chain ds
MemoryRequirements
memoryRequirements :: MemoryRequirements
next :: Chain ds
$sel:memoryRequirements:MemoryRequirements2 :: forall (es :: [*]). MemoryRequirements2 es -> MemoryRequirements
$sel:next:MemoryRequirements2 :: forall (es :: [*]). MemoryRequirements2 es -> Chain es
..} Chain es
next' = MemoryRequirements2{$sel:next:MemoryRequirements2 :: Chain es
next = Chain es
next', MemoryRequirements
memoryRequirements :: MemoryRequirements
$sel:memoryRequirements:MemoryRequirements2 :: MemoryRequirements
..}
getNext :: forall (es :: [*]). MemoryRequirements2 es -> Chain es
getNext MemoryRequirements2{Chain es
MemoryRequirements
memoryRequirements :: MemoryRequirements
next :: Chain es
$sel:memoryRequirements:MemoryRequirements2 :: forall (es :: [*]). MemoryRequirements2 es -> MemoryRequirements
$sel:next:MemoryRequirements2 :: forall (es :: [*]). MemoryRequirements2 es -> Chain es
..} = Chain es
next
extends :: forall e b proxy. Typeable e => proxy e -> (Extends MemoryRequirements2 e => b) -> Maybe b
extends :: forall e b (proxy :: * -> *).
Typeable e =>
proxy e -> (Extends MemoryRequirements2 e => b) -> Maybe b
extends proxy e
_ Extends MemoryRequirements2 e => b
f
| Just e :~: MemoryDedicatedRequirements
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
eqT @e @MemoryDedicatedRequirements = forall a. a -> Maybe a
Just Extends MemoryRequirements2 e => b
f
| Bool
otherwise = forall a. Maybe a
Nothing
instance ( Extendss MemoryRequirements2 es
, PokeChain es ) => ToCStruct (MemoryRequirements2 es) where
withCStruct :: forall b.
MemoryRequirements2 es
-> (Ptr (MemoryRequirements2 es) -> IO b) -> IO b
withCStruct MemoryRequirements2 es
x Ptr (MemoryRequirements2 es) -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
40 forall a b. (a -> b) -> a -> b
$ \Ptr (MemoryRequirements2 es)
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr (MemoryRequirements2 es)
p MemoryRequirements2 es
x (Ptr (MemoryRequirements2 es) -> IO b
f Ptr (MemoryRequirements2 es)
p)
pokeCStruct :: forall b.
Ptr (MemoryRequirements2 es)
-> MemoryRequirements2 es -> IO b -> IO b
pokeCStruct Ptr (MemoryRequirements2 es)
p MemoryRequirements2{Chain es
MemoryRequirements
memoryRequirements :: MemoryRequirements
next :: Chain es
$sel:memoryRequirements:MemoryRequirements2 :: forall (es :: [*]). MemoryRequirements2 es -> MemoryRequirements
$sel:next:MemoryRequirements2 :: forall (es :: [*]). MemoryRequirements2 es -> Chain es
..} IO b
f = forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT forall a b. (a -> b) -> a -> b
$ do
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 -> a -> IO ()
poke ((Ptr (MemoryRequirements2 es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2)
Ptr ()
pNext'' <- forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. Ptr a -> Ptr b
castPtr forall b c a. (b -> c) -> (a -> b) -> a -> c
. 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 (es :: [*]) a.
PokeChain es =>
Chain es -> (Ptr (Chain es) -> IO a) -> IO a
withChain (Chain es
next)
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 -> a -> IO ()
poke ((Ptr (MemoryRequirements2 es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) Ptr ()
pNext''
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 -> a -> IO ()
poke ((Ptr (MemoryRequirements2 es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr MemoryRequirements)) (MemoryRequirements
memoryRequirements)
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ IO b
f
cStructSize :: Int
cStructSize = Int
40
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr (MemoryRequirements2 es) -> IO b -> IO b
pokeZeroCStruct Ptr (MemoryRequirements2 es)
p IO b
f = forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT forall a b. (a -> b) -> a -> b
$ do
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 -> a -> IO ()
poke ((Ptr (MemoryRequirements2 es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2)
Ptr ()
pNext' <- forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a b. Ptr a -> Ptr b
castPtr forall b c a. (b -> c) -> (a -> b) -> a -> c
. 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 (es :: [*]) a.
PokeChain es =>
(Ptr (Chain es) -> IO a) -> IO a
withZeroChain @es
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 -> a -> IO ()
poke ((Ptr (MemoryRequirements2 es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) Ptr ()
pNext'
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 -> a -> IO ()
poke ((Ptr (MemoryRequirements2 es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr MemoryRequirements)) (forall a. Zero a => a
zero)
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift forall a b. (a -> b) -> a -> b
$ IO b
f
instance ( Extendss MemoryRequirements2 es
, PeekChain es ) => FromCStruct (MemoryRequirements2 es) where
peekCStruct :: Ptr (MemoryRequirements2 es) -> IO (MemoryRequirements2 es)
peekCStruct Ptr (MemoryRequirements2 es)
p = do
Ptr ()
pNext <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr ()) ((Ptr (MemoryRequirements2 es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ())))
Chain es
next <- forall (es :: [*]). PeekChain es => Ptr (Chain es) -> IO (Chain es)
peekChain (forall a b. Ptr a -> Ptr b
castPtr Ptr ()
pNext)
MemoryRequirements
memoryRequirements <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @MemoryRequirements ((Ptr (MemoryRequirements2 es)
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr MemoryRequirements))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ forall (es :: [*]).
Chain es -> MemoryRequirements -> MemoryRequirements2 es
MemoryRequirements2
Chain es
next MemoryRequirements
memoryRequirements
instance es ~ '[] => Zero (MemoryRequirements2 es) where
zero :: MemoryRequirements2 es
zero = forall (es :: [*]).
Chain es -> MemoryRequirements -> MemoryRequirements2 es
MemoryRequirements2
()
forall a. Zero a => a
zero
data SparseImageMemoryRequirements2 = SparseImageMemoryRequirements2
{
SparseImageMemoryRequirements2 -> SparseImageMemoryRequirements
memoryRequirements :: SparseImageMemoryRequirements }
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SparseImageMemoryRequirements2)
#endif
deriving instance Show SparseImageMemoryRequirements2
instance ToCStruct SparseImageMemoryRequirements2 where
withCStruct :: forall b.
SparseImageMemoryRequirements2
-> (("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> IO b)
-> IO b
withCStruct SparseImageMemoryRequirements2
x ("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
64 forall a b. (a -> b) -> a -> b
$ \"pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
p SparseImageMemoryRequirements2
x (("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> IO b
f "pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
p)
pokeCStruct :: forall b.
("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> SparseImageMemoryRequirements2 -> IO b -> IO b
pokeCStruct "pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
p SparseImageMemoryRequirements2{SparseImageMemoryRequirements
memoryRequirements :: SparseImageMemoryRequirements
$sel:memoryRequirements:SparseImageMemoryRequirements2 :: SparseImageMemoryRequirements2 -> SparseImageMemoryRequirements
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2)
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
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 (("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr SparseImageMemoryRequirements)) (SparseImageMemoryRequirements
memoryRequirements)
IO b
f
cStructSize :: Int
cStructSize = Int
64
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> IO b -> IO b
pokeZeroCStruct "pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2)
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
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 (("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr SparseImageMemoryRequirements)) (forall a. Zero a => a
zero)
IO b
f
instance FromCStruct SparseImageMemoryRequirements2 where
peekCStruct :: ("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> IO SparseImageMemoryRequirements2
peekCStruct "pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
p = do
SparseImageMemoryRequirements
memoryRequirements <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @SparseImageMemoryRequirements (("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr SparseImageMemoryRequirements))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ SparseImageMemoryRequirements -> SparseImageMemoryRequirements2
SparseImageMemoryRequirements2
SparseImageMemoryRequirements
memoryRequirements
instance Storable SparseImageMemoryRequirements2 where
sizeOf :: SparseImageMemoryRequirements2 -> Int
sizeOf ~SparseImageMemoryRequirements2
_ = Int
64
alignment :: SparseImageMemoryRequirements2 -> Int
alignment ~SparseImageMemoryRequirements2
_ = Int
8
peek :: ("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> IO SparseImageMemoryRequirements2
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: ("pSparseMemoryRequirements"
::: Ptr SparseImageMemoryRequirements2)
-> SparseImageMemoryRequirements2 -> IO ()
poke "pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
ptr SparseImageMemoryRequirements2
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2
ptr SparseImageMemoryRequirements2
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero SparseImageMemoryRequirements2 where
zero :: SparseImageMemoryRequirements2
zero = SparseImageMemoryRequirements -> SparseImageMemoryRequirements2
SparseImageMemoryRequirements2
forall a. Zero a => a
zero