{-# language CPP #-}
module Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities ( getPhysicalDeviceExternalBufferProperties
, ExternalMemoryProperties(..)
, PhysicalDeviceExternalImageFormatInfo(..)
, ExternalImageFormatProperties(..)
, PhysicalDeviceExternalBufferInfo(..)
, ExternalBufferProperties(..)
, PhysicalDeviceIDProperties(..)
, StructureType(..)
, ExternalMemoryHandleTypeFlagBits(..)
, ExternalMemoryHandleTypeFlags
, ExternalMemoryFeatureFlagBits(..)
, ExternalMemoryFeatureFlags
, LUID_SIZE
, pattern LUID_SIZE
) where
import Vulkan.CStruct.Utils (FixedArray)
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Foreign.Marshal.Alloc (allocaBytes)
import GHC.IO (throwIO)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import 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.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.Word (Word8)
import Data.ByteString (ByteString)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)
import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Enums.BufferCreateFlagBits (BufferCreateFlags)
import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)
import Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits (ExternalMemoryFeatureFlags)
import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits)
import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlags)
import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceExternalBufferProperties))
import Vulkan.Core10.APIConstants (LUID_SIZE)
import Vulkan.Core10.Handles (PhysicalDevice)
import Vulkan.Core10.Handles (PhysicalDevice(..))
import Vulkan.Core10.Handles (PhysicalDevice(PhysicalDevice))
import Vulkan.Core10.Handles (PhysicalDevice_T)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.APIConstants (UUID_SIZE)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES))
import Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits (ExternalMemoryFeatureFlagBits(..))
import Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits (ExternalMemoryFeatureFlags)
import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(..))
import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlags)
import Vulkan.Core10.APIConstants (LUID_SIZE)
import Vulkan.Core10.Enums.StructureType (StructureType(..))
import Vulkan.Core10.APIConstants (pattern LUID_SIZE)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetPhysicalDeviceExternalBufferProperties
:: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceExternalBufferInfo -> Ptr ExternalBufferProperties -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceExternalBufferInfo -> Ptr ExternalBufferProperties -> IO ()
getPhysicalDeviceExternalBufferProperties :: forall io
. (MonadIO io)
=>
PhysicalDevice
->
PhysicalDeviceExternalBufferInfo
-> io (ExternalBufferProperties)
getPhysicalDeviceExternalBufferProperties :: forall (io :: * -> *).
MonadIO io =>
PhysicalDevice
-> PhysicalDeviceExternalBufferInfo -> io ExternalBufferProperties
getPhysicalDeviceExternalBufferProperties PhysicalDevice
physicalDevice
PhysicalDeviceExternalBufferInfo
externalBufferInfo = 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 vkGetPhysicalDeviceExternalBufferPropertiesPtr :: FunPtr
(Ptr PhysicalDevice_T
-> ("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo)
-> ("pExternalBufferProperties" ::: Ptr ExternalBufferProperties)
-> IO ())
vkGetPhysicalDeviceExternalBufferPropertiesPtr = InstanceCmds
-> FunPtr
(Ptr PhysicalDevice_T
-> ("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo)
-> ("pExternalBufferProperties" ::: Ptr ExternalBufferProperties)
-> IO ())
pVkGetPhysicalDeviceExternalBufferProperties (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
-> ("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo)
-> ("pExternalBufferProperties" ::: Ptr ExternalBufferProperties)
-> IO ())
vkGetPhysicalDeviceExternalBufferPropertiesPtr 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 vkGetPhysicalDeviceExternalBufferProperties is null" forall a. Maybe a
Nothing forall a. Maybe a
Nothing
let vkGetPhysicalDeviceExternalBufferProperties' :: Ptr PhysicalDevice_T
-> ("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo)
-> ("pExternalBufferProperties" ::: Ptr ExternalBufferProperties)
-> IO ()
vkGetPhysicalDeviceExternalBufferProperties' = FunPtr
(Ptr PhysicalDevice_T
-> ("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo)
-> ("pExternalBufferProperties" ::: Ptr ExternalBufferProperties)
-> IO ())
-> Ptr PhysicalDevice_T
-> ("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo)
-> ("pExternalBufferProperties" ::: Ptr ExternalBufferProperties)
-> IO ()
mkVkGetPhysicalDeviceExternalBufferProperties FunPtr
(Ptr PhysicalDevice_T
-> ("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo)
-> ("pExternalBufferProperties" ::: Ptr ExternalBufferProperties)
-> IO ())
vkGetPhysicalDeviceExternalBufferPropertiesPtr
"pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
pExternalBufferInfo <- 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 (PhysicalDeviceExternalBufferInfo
externalBufferInfo)
"pExternalBufferProperties" ::: Ptr ExternalBufferProperties
pPExternalBufferProperties <- 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 @ExternalBufferProperties)
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
"vkGetPhysicalDeviceExternalBufferProperties" (Ptr PhysicalDevice_T
-> ("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo)
-> ("pExternalBufferProperties" ::: Ptr ExternalBufferProperties)
-> IO ()
vkGetPhysicalDeviceExternalBufferProperties'
(PhysicalDevice -> Ptr PhysicalDevice_T
physicalDeviceHandle (PhysicalDevice
physicalDevice))
"pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
pExternalBufferInfo
("pExternalBufferProperties" ::: Ptr ExternalBufferProperties
pPExternalBufferProperties))
ExternalBufferProperties
pExternalBufferProperties <- 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 @ExternalBufferProperties "pExternalBufferProperties" ::: Ptr ExternalBufferProperties
pPExternalBufferProperties
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ (ExternalBufferProperties
pExternalBufferProperties)
data ExternalMemoryProperties = ExternalMemoryProperties
{
ExternalMemoryProperties -> ExternalMemoryFeatureFlags
externalMemoryFeatures :: ExternalMemoryFeatureFlags
,
ExternalMemoryProperties -> ExternalMemoryHandleTypeFlags
exportFromImportedHandleTypes :: ExternalMemoryHandleTypeFlags
,
ExternalMemoryProperties -> ExternalMemoryHandleTypeFlags
compatibleHandleTypes :: ExternalMemoryHandleTypeFlags
}
deriving (Typeable, ExternalMemoryProperties -> ExternalMemoryProperties -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ExternalMemoryProperties -> ExternalMemoryProperties -> Bool
$c/= :: ExternalMemoryProperties -> ExternalMemoryProperties -> Bool
== :: ExternalMemoryProperties -> ExternalMemoryProperties -> Bool
$c== :: ExternalMemoryProperties -> ExternalMemoryProperties -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ExternalMemoryProperties)
#endif
deriving instance Show ExternalMemoryProperties
instance ToCStruct ExternalMemoryProperties where
withCStruct :: forall b.
ExternalMemoryProperties
-> (Ptr ExternalMemoryProperties -> IO b) -> IO b
withCStruct ExternalMemoryProperties
x Ptr ExternalMemoryProperties -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
12 forall a b. (a -> b) -> a -> b
$ \Ptr ExternalMemoryProperties
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ExternalMemoryProperties
p ExternalMemoryProperties
x (Ptr ExternalMemoryProperties -> IO b
f Ptr ExternalMemoryProperties
p)
pokeCStruct :: forall b.
Ptr ExternalMemoryProperties
-> ExternalMemoryProperties -> IO b -> IO b
pokeCStruct Ptr ExternalMemoryProperties
p ExternalMemoryProperties{ExternalMemoryHandleTypeFlags
ExternalMemoryFeatureFlags
compatibleHandleTypes :: ExternalMemoryHandleTypeFlags
exportFromImportedHandleTypes :: ExternalMemoryHandleTypeFlags
externalMemoryFeatures :: ExternalMemoryFeatureFlags
$sel:compatibleHandleTypes:ExternalMemoryProperties :: ExternalMemoryProperties -> ExternalMemoryHandleTypeFlags
$sel:exportFromImportedHandleTypes:ExternalMemoryProperties :: ExternalMemoryProperties -> ExternalMemoryHandleTypeFlags
$sel:externalMemoryFeatures:ExternalMemoryProperties :: ExternalMemoryProperties -> ExternalMemoryFeatureFlags
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalMemoryProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr ExternalMemoryFeatureFlags)) (ExternalMemoryFeatureFlags
externalMemoryFeatures)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalMemoryProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr ExternalMemoryHandleTypeFlags)) (ExternalMemoryHandleTypeFlags
exportFromImportedHandleTypes)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalMemoryProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr ExternalMemoryHandleTypeFlags)) (ExternalMemoryHandleTypeFlags
compatibleHandleTypes)
IO b
f
cStructSize :: Int
cStructSize = Int
12
cStructAlignment :: Int
cStructAlignment = Int
4
pokeZeroCStruct :: forall b. Ptr ExternalMemoryProperties -> IO b -> IO b
pokeZeroCStruct Ptr ExternalMemoryProperties
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalMemoryProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr ExternalMemoryFeatureFlags)) (forall a. Zero a => a
zero)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalMemoryProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr ExternalMemoryHandleTypeFlags)) (forall a. Zero a => a
zero)
IO b
f
instance FromCStruct ExternalMemoryProperties where
peekCStruct :: Ptr ExternalMemoryProperties -> IO ExternalMemoryProperties
peekCStruct Ptr ExternalMemoryProperties
p = do
ExternalMemoryFeatureFlags
externalMemoryFeatures <- forall a. Storable a => Ptr a -> IO a
peek @ExternalMemoryFeatureFlags ((Ptr ExternalMemoryProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr ExternalMemoryFeatureFlags))
ExternalMemoryHandleTypeFlags
exportFromImportedHandleTypes <- forall a. Storable a => Ptr a -> IO a
peek @ExternalMemoryHandleTypeFlags ((Ptr ExternalMemoryProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr ExternalMemoryHandleTypeFlags))
ExternalMemoryHandleTypeFlags
compatibleHandleTypes <- forall a. Storable a => Ptr a -> IO a
peek @ExternalMemoryHandleTypeFlags ((Ptr ExternalMemoryProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr ExternalMemoryHandleTypeFlags))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ExternalMemoryFeatureFlags
-> ExternalMemoryHandleTypeFlags
-> ExternalMemoryHandleTypeFlags
-> ExternalMemoryProperties
ExternalMemoryProperties
ExternalMemoryFeatureFlags
externalMemoryFeatures
ExternalMemoryHandleTypeFlags
exportFromImportedHandleTypes
ExternalMemoryHandleTypeFlags
compatibleHandleTypes
instance Storable ExternalMemoryProperties where
sizeOf :: ExternalMemoryProperties -> Int
sizeOf ~ExternalMemoryProperties
_ = Int
12
alignment :: ExternalMemoryProperties -> Int
alignment ~ExternalMemoryProperties
_ = Int
4
peek :: Ptr ExternalMemoryProperties -> IO ExternalMemoryProperties
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr ExternalMemoryProperties -> ExternalMemoryProperties -> IO ()
poke Ptr ExternalMemoryProperties
ptr ExternalMemoryProperties
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ExternalMemoryProperties
ptr ExternalMemoryProperties
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero ExternalMemoryProperties where
zero :: ExternalMemoryProperties
zero = ExternalMemoryFeatureFlags
-> ExternalMemoryHandleTypeFlags
-> ExternalMemoryHandleTypeFlags
-> ExternalMemoryProperties
ExternalMemoryProperties
forall a. Zero a => a
zero
forall a. Zero a => a
zero
forall a. Zero a => a
zero
data PhysicalDeviceExternalImageFormatInfo = PhysicalDeviceExternalImageFormatInfo
{
PhysicalDeviceExternalImageFormatInfo
-> ExternalMemoryHandleTypeFlags
handleType :: ExternalMemoryHandleTypeFlagBits }
deriving (Typeable, PhysicalDeviceExternalImageFormatInfo
-> PhysicalDeviceExternalImageFormatInfo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceExternalImageFormatInfo
-> PhysicalDeviceExternalImageFormatInfo -> Bool
$c/= :: PhysicalDeviceExternalImageFormatInfo
-> PhysicalDeviceExternalImageFormatInfo -> Bool
== :: PhysicalDeviceExternalImageFormatInfo
-> PhysicalDeviceExternalImageFormatInfo -> Bool
$c== :: PhysicalDeviceExternalImageFormatInfo
-> PhysicalDeviceExternalImageFormatInfo -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceExternalImageFormatInfo)
#endif
deriving instance Show PhysicalDeviceExternalImageFormatInfo
instance ToCStruct PhysicalDeviceExternalImageFormatInfo where
withCStruct :: forall b.
PhysicalDeviceExternalImageFormatInfo
-> (Ptr PhysicalDeviceExternalImageFormatInfo -> IO b) -> IO b
withCStruct PhysicalDeviceExternalImageFormatInfo
x Ptr PhysicalDeviceExternalImageFormatInfo -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceExternalImageFormatInfo
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceExternalImageFormatInfo
p PhysicalDeviceExternalImageFormatInfo
x (Ptr PhysicalDeviceExternalImageFormatInfo -> IO b
f Ptr PhysicalDeviceExternalImageFormatInfo
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceExternalImageFormatInfo
-> PhysicalDeviceExternalImageFormatInfo -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceExternalImageFormatInfo
p PhysicalDeviceExternalImageFormatInfo{ExternalMemoryHandleTypeFlags
handleType :: ExternalMemoryHandleTypeFlags
$sel:handleType:PhysicalDeviceExternalImageFormatInfo :: PhysicalDeviceExternalImageFormatInfo
-> ExternalMemoryHandleTypeFlags
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceExternalImageFormatInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceExternalImageFormatInfo
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 PhysicalDeviceExternalImageFormatInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ExternalMemoryHandleTypeFlagBits)) (ExternalMemoryHandleTypeFlags
handleType)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr PhysicalDeviceExternalImageFormatInfo -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceExternalImageFormatInfo
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceExternalImageFormatInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceExternalImageFormatInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
IO b
f
instance FromCStruct PhysicalDeviceExternalImageFormatInfo where
peekCStruct :: Ptr PhysicalDeviceExternalImageFormatInfo
-> IO PhysicalDeviceExternalImageFormatInfo
peekCStruct Ptr PhysicalDeviceExternalImageFormatInfo
p = do
ExternalMemoryHandleTypeFlags
handleType <- forall a. Storable a => Ptr a -> IO a
peek @ExternalMemoryHandleTypeFlagBits ((Ptr PhysicalDeviceExternalImageFormatInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ExternalMemoryHandleTypeFlagBits))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ExternalMemoryHandleTypeFlags
-> PhysicalDeviceExternalImageFormatInfo
PhysicalDeviceExternalImageFormatInfo
ExternalMemoryHandleTypeFlags
handleType
instance Storable PhysicalDeviceExternalImageFormatInfo where
sizeOf :: PhysicalDeviceExternalImageFormatInfo -> Int
sizeOf ~PhysicalDeviceExternalImageFormatInfo
_ = Int
24
alignment :: PhysicalDeviceExternalImageFormatInfo -> Int
alignment ~PhysicalDeviceExternalImageFormatInfo
_ = Int
8
peek :: Ptr PhysicalDeviceExternalImageFormatInfo
-> IO PhysicalDeviceExternalImageFormatInfo
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceExternalImageFormatInfo
-> PhysicalDeviceExternalImageFormatInfo -> IO ()
poke Ptr PhysicalDeviceExternalImageFormatInfo
ptr PhysicalDeviceExternalImageFormatInfo
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceExternalImageFormatInfo
ptr PhysicalDeviceExternalImageFormatInfo
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceExternalImageFormatInfo where
zero :: PhysicalDeviceExternalImageFormatInfo
zero = ExternalMemoryHandleTypeFlags
-> PhysicalDeviceExternalImageFormatInfo
PhysicalDeviceExternalImageFormatInfo
forall a. Zero a => a
zero
data ExternalImageFormatProperties = ExternalImageFormatProperties
{
ExternalImageFormatProperties -> ExternalMemoryProperties
externalMemoryProperties :: ExternalMemoryProperties }
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ExternalImageFormatProperties)
#endif
deriving instance Show ExternalImageFormatProperties
instance ToCStruct ExternalImageFormatProperties where
withCStruct :: forall b.
ExternalImageFormatProperties
-> (Ptr ExternalImageFormatProperties -> IO b) -> IO b
withCStruct ExternalImageFormatProperties
x Ptr ExternalImageFormatProperties -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 forall a b. (a -> b) -> a -> b
$ \Ptr ExternalImageFormatProperties
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ExternalImageFormatProperties
p ExternalImageFormatProperties
x (Ptr ExternalImageFormatProperties -> IO b
f Ptr ExternalImageFormatProperties
p)
pokeCStruct :: forall b.
Ptr ExternalImageFormatProperties
-> ExternalImageFormatProperties -> IO b -> IO b
pokeCStruct Ptr ExternalImageFormatProperties
p ExternalImageFormatProperties{ExternalMemoryProperties
externalMemoryProperties :: ExternalMemoryProperties
$sel:externalMemoryProperties:ExternalImageFormatProperties :: ExternalImageFormatProperties -> ExternalMemoryProperties
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalImageFormatProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalImageFormatProperties
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 ExternalImageFormatProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ExternalMemoryProperties)) (ExternalMemoryProperties
externalMemoryProperties)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr ExternalImageFormatProperties -> IO b -> IO b
pokeZeroCStruct Ptr ExternalImageFormatProperties
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalImageFormatProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalImageFormatProperties
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 ExternalImageFormatProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ExternalMemoryProperties)) (forall a. Zero a => a
zero)
IO b
f
instance FromCStruct ExternalImageFormatProperties where
peekCStruct :: Ptr ExternalImageFormatProperties
-> IO ExternalImageFormatProperties
peekCStruct Ptr ExternalImageFormatProperties
p = do
ExternalMemoryProperties
externalMemoryProperties <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @ExternalMemoryProperties ((Ptr ExternalImageFormatProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ExternalMemoryProperties))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ExternalMemoryProperties -> ExternalImageFormatProperties
ExternalImageFormatProperties
ExternalMemoryProperties
externalMemoryProperties
instance Storable ExternalImageFormatProperties where
sizeOf :: ExternalImageFormatProperties -> Int
sizeOf ~ExternalImageFormatProperties
_ = Int
32
alignment :: ExternalImageFormatProperties -> Int
alignment ~ExternalImageFormatProperties
_ = Int
8
peek :: Ptr ExternalImageFormatProperties
-> IO ExternalImageFormatProperties
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr ExternalImageFormatProperties
-> ExternalImageFormatProperties -> IO ()
poke Ptr ExternalImageFormatProperties
ptr ExternalImageFormatProperties
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ExternalImageFormatProperties
ptr ExternalImageFormatProperties
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero ExternalImageFormatProperties where
zero :: ExternalImageFormatProperties
zero = ExternalMemoryProperties -> ExternalImageFormatProperties
ExternalImageFormatProperties
forall a. Zero a => a
zero
data PhysicalDeviceExternalBufferInfo = PhysicalDeviceExternalBufferInfo
{
PhysicalDeviceExternalBufferInfo -> BufferCreateFlags
flags :: BufferCreateFlags
,
PhysicalDeviceExternalBufferInfo -> BufferUsageFlags
usage :: BufferUsageFlags
,
PhysicalDeviceExternalBufferInfo -> ExternalMemoryHandleTypeFlags
handleType :: ExternalMemoryHandleTypeFlagBits
}
deriving (Typeable, PhysicalDeviceExternalBufferInfo
-> PhysicalDeviceExternalBufferInfo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceExternalBufferInfo
-> PhysicalDeviceExternalBufferInfo -> Bool
$c/= :: PhysicalDeviceExternalBufferInfo
-> PhysicalDeviceExternalBufferInfo -> Bool
== :: PhysicalDeviceExternalBufferInfo
-> PhysicalDeviceExternalBufferInfo -> Bool
$c== :: PhysicalDeviceExternalBufferInfo
-> PhysicalDeviceExternalBufferInfo -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceExternalBufferInfo)
#endif
deriving instance Show PhysicalDeviceExternalBufferInfo
instance ToCStruct PhysicalDeviceExternalBufferInfo where
withCStruct :: forall b.
PhysicalDeviceExternalBufferInfo
-> (("pExternalBufferInfo"
::: Ptr PhysicalDeviceExternalBufferInfo)
-> IO b)
-> IO b
withCStruct PhysicalDeviceExternalBufferInfo
x ("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo)
-> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 forall a b. (a -> b) -> a -> b
$ \"pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
p PhysicalDeviceExternalBufferInfo
x (("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo)
-> IO b
f "pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
p)
pokeCStruct :: forall b.
("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo)
-> PhysicalDeviceExternalBufferInfo -> IO b -> IO b
pokeCStruct "pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
p PhysicalDeviceExternalBufferInfo{ExternalMemoryHandleTypeFlags
BufferUsageFlags
BufferCreateFlags
handleType :: ExternalMemoryHandleTypeFlags
usage :: BufferUsageFlags
flags :: BufferCreateFlags
$sel:handleType:PhysicalDeviceExternalBufferInfo :: PhysicalDeviceExternalBufferInfo -> ExternalMemoryHandleTypeFlags
$sel:usage:PhysicalDeviceExternalBufferInfo :: PhysicalDeviceExternalBufferInfo -> BufferUsageFlags
$sel:flags:PhysicalDeviceExternalBufferInfo :: PhysicalDeviceExternalBufferInfo -> BufferCreateFlags
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO)
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
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 (("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr BufferCreateFlags)) (BufferCreateFlags
flags)
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr BufferUsageFlags)) (BufferUsageFlags
usage)
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ExternalMemoryHandleTypeFlagBits)) (ExternalMemoryHandleTypeFlags
handleType)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo)
-> IO b -> IO b
pokeZeroCStruct "pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO)
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
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 (("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr BufferUsageFlags)) (forall a. Zero a => a
zero)
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ExternalMemoryHandleTypeFlagBits)) (forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PhysicalDeviceExternalBufferInfo where
peekCStruct :: ("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo)
-> IO PhysicalDeviceExternalBufferInfo
peekCStruct "pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
p = do
BufferCreateFlags
flags <- forall a. Storable a => Ptr a -> IO a
peek @BufferCreateFlags (("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr BufferCreateFlags))
BufferUsageFlags
usage <- forall a. Storable a => Ptr a -> IO a
peek @BufferUsageFlags (("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr BufferUsageFlags))
ExternalMemoryHandleTypeFlags
handleType <- forall a. Storable a => Ptr a -> IO a
peek @ExternalMemoryHandleTypeFlagBits (("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ExternalMemoryHandleTypeFlagBits))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ BufferCreateFlags
-> BufferUsageFlags
-> ExternalMemoryHandleTypeFlags
-> PhysicalDeviceExternalBufferInfo
PhysicalDeviceExternalBufferInfo
BufferCreateFlags
flags BufferUsageFlags
usage ExternalMemoryHandleTypeFlags
handleType
instance Storable PhysicalDeviceExternalBufferInfo where
sizeOf :: PhysicalDeviceExternalBufferInfo -> Int
sizeOf ~PhysicalDeviceExternalBufferInfo
_ = Int
32
alignment :: PhysicalDeviceExternalBufferInfo -> Int
alignment ~PhysicalDeviceExternalBufferInfo
_ = Int
8
peek :: ("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo)
-> IO PhysicalDeviceExternalBufferInfo
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: ("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo)
-> PhysicalDeviceExternalBufferInfo -> IO ()
poke "pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
ptr PhysicalDeviceExternalBufferInfo
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo
ptr PhysicalDeviceExternalBufferInfo
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceExternalBufferInfo where
zero :: PhysicalDeviceExternalBufferInfo
zero = BufferCreateFlags
-> BufferUsageFlags
-> ExternalMemoryHandleTypeFlags
-> PhysicalDeviceExternalBufferInfo
PhysicalDeviceExternalBufferInfo
forall a. Zero a => a
zero
forall a. Zero a => a
zero
forall a. Zero a => a
zero
data ExternalBufferProperties = ExternalBufferProperties
{
ExternalBufferProperties -> ExternalMemoryProperties
externalMemoryProperties :: ExternalMemoryProperties }
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ExternalBufferProperties)
#endif
deriving instance Show ExternalBufferProperties
instance ToCStruct ExternalBufferProperties where
withCStruct :: forall b.
ExternalBufferProperties
-> (("pExternalBufferProperties" ::: Ptr ExternalBufferProperties)
-> IO b)
-> IO b
withCStruct ExternalBufferProperties
x ("pExternalBufferProperties" ::: Ptr ExternalBufferProperties)
-> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 forall a b. (a -> b) -> a -> b
$ \"pExternalBufferProperties" ::: Ptr ExternalBufferProperties
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pExternalBufferProperties" ::: Ptr ExternalBufferProperties
p ExternalBufferProperties
x (("pExternalBufferProperties" ::: Ptr ExternalBufferProperties)
-> IO b
f "pExternalBufferProperties" ::: Ptr ExternalBufferProperties
p)
pokeCStruct :: forall b.
("pExternalBufferProperties" ::: Ptr ExternalBufferProperties)
-> ExternalBufferProperties -> IO b -> IO b
pokeCStruct "pExternalBufferProperties" ::: Ptr ExternalBufferProperties
p ExternalBufferProperties{ExternalMemoryProperties
externalMemoryProperties :: ExternalMemoryProperties
$sel:externalMemoryProperties:ExternalBufferProperties :: ExternalBufferProperties -> ExternalMemoryProperties
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pExternalBufferProperties" ::: Ptr ExternalBufferProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES)
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pExternalBufferProperties" ::: Ptr ExternalBufferProperties
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 (("pExternalBufferProperties" ::: Ptr ExternalBufferProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ExternalMemoryProperties)) (ExternalMemoryProperties
externalMemoryProperties)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
("pExternalBufferProperties" ::: Ptr ExternalBufferProperties)
-> IO b -> IO b
pokeZeroCStruct "pExternalBufferProperties" ::: Ptr ExternalBufferProperties
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pExternalBufferProperties" ::: Ptr ExternalBufferProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES)
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pExternalBufferProperties" ::: Ptr ExternalBufferProperties
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 (("pExternalBufferProperties" ::: Ptr ExternalBufferProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ExternalMemoryProperties)) (forall a. Zero a => a
zero)
IO b
f
instance FromCStruct ExternalBufferProperties where
peekCStruct :: ("pExternalBufferProperties" ::: Ptr ExternalBufferProperties)
-> IO ExternalBufferProperties
peekCStruct "pExternalBufferProperties" ::: Ptr ExternalBufferProperties
p = do
ExternalMemoryProperties
externalMemoryProperties <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @ExternalMemoryProperties (("pExternalBufferProperties" ::: Ptr ExternalBufferProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ExternalMemoryProperties))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ExternalMemoryProperties -> ExternalBufferProperties
ExternalBufferProperties
ExternalMemoryProperties
externalMemoryProperties
instance Storable ExternalBufferProperties where
sizeOf :: ExternalBufferProperties -> Int
sizeOf ~ExternalBufferProperties
_ = Int
32
alignment :: ExternalBufferProperties -> Int
alignment ~ExternalBufferProperties
_ = Int
8
peek :: ("pExternalBufferProperties" ::: Ptr ExternalBufferProperties)
-> IO ExternalBufferProperties
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: ("pExternalBufferProperties" ::: Ptr ExternalBufferProperties)
-> ExternalBufferProperties -> IO ()
poke "pExternalBufferProperties" ::: Ptr ExternalBufferProperties
ptr ExternalBufferProperties
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pExternalBufferProperties" ::: Ptr ExternalBufferProperties
ptr ExternalBufferProperties
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero ExternalBufferProperties where
zero :: ExternalBufferProperties
zero = ExternalMemoryProperties -> ExternalBufferProperties
ExternalBufferProperties
forall a. Zero a => a
zero
data PhysicalDeviceIDProperties = PhysicalDeviceIDProperties
{
PhysicalDeviceIDProperties -> ByteString
deviceUUID :: ByteString
,
PhysicalDeviceIDProperties -> ByteString
driverUUID :: ByteString
,
PhysicalDeviceIDProperties -> ByteString
deviceLUID :: ByteString
,
PhysicalDeviceIDProperties -> Word32
deviceNodeMask :: Word32
,
PhysicalDeviceIDProperties -> Bool
deviceLUIDValid :: Bool
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceIDProperties)
#endif
deriving instance Show PhysicalDeviceIDProperties
instance ToCStruct PhysicalDeviceIDProperties where
withCStruct :: forall b.
PhysicalDeviceIDProperties
-> (Ptr PhysicalDeviceIDProperties -> IO b) -> IO b
withCStruct PhysicalDeviceIDProperties
x Ptr PhysicalDeviceIDProperties -> IO b
f = forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
64 forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceIDProperties
p -> forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceIDProperties
p PhysicalDeviceIDProperties
x (Ptr PhysicalDeviceIDProperties -> IO b
f Ptr PhysicalDeviceIDProperties
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceIDProperties
-> PhysicalDeviceIDProperties -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceIDProperties
p PhysicalDeviceIDProperties{Bool
Word32
ByteString
deviceLUIDValid :: Bool
deviceNodeMask :: Word32
deviceLUID :: ByteString
driverUUID :: ByteString
deviceUUID :: ByteString
$sel:deviceLUIDValid:PhysicalDeviceIDProperties :: PhysicalDeviceIDProperties -> Bool
$sel:deviceNodeMask:PhysicalDeviceIDProperties :: PhysicalDeviceIDProperties -> Word32
$sel:deviceLUID:PhysicalDeviceIDProperties :: PhysicalDeviceIDProperties -> ByteString
$sel:driverUUID:PhysicalDeviceIDProperties :: PhysicalDeviceIDProperties -> ByteString
$sel:deviceUUID:PhysicalDeviceIDProperties :: PhysicalDeviceIDProperties -> ByteString
..} IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (FixedArray UUID_SIZE Word8))) (ByteString
deviceUUID)
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr (FixedArray UUID_SIZE Word8))) (ByteString
driverUUID)
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr (FixedArray LUID_SIZE Word8))) (ByteString
deviceLUID)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Word32)) (Word32
deviceNodeMask)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
deviceLUIDValid))
IO b
f
cStructSize :: Int
cStructSize = Int
64
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr PhysicalDeviceIDProperties -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceIDProperties
p IO b
f = do
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (forall a. Ptr a
nullPtr)
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (FixedArray UUID_SIZE Word8))) (forall a. Monoid a => a
mempty)
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr (FixedArray UUID_SIZE Word8))) (forall a. Monoid a => a
mempty)
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ByteString -> IO ()
pokeFixedLengthByteString ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr (FixedArray LUID_SIZE Word8))) (forall a. Monoid a => a
mempty)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Word32)) (forall a. Zero a => a
zero)
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceIDProperties where
peekCStruct :: Ptr PhysicalDeviceIDProperties -> IO PhysicalDeviceIDProperties
peekCStruct Ptr PhysicalDeviceIDProperties
p = do
ByteString
deviceUUID <- forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> IO ByteString
peekByteStringFromSizedVectorPtr ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (FixedArray UUID_SIZE Word8)))
ByteString
driverUUID <- forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> IO ByteString
peekByteStringFromSizedVectorPtr ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr (FixedArray UUID_SIZE Word8)))
ByteString
deviceLUID <- forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> IO ByteString
peekByteStringFromSizedVectorPtr ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr (FixedArray LUID_SIZE Word8)))
Word32
deviceNodeMask <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Word32))
Bool32
deviceLUIDValid <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceIDProperties
p forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32))
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ ByteString
-> ByteString
-> ByteString
-> Word32
-> Bool
-> PhysicalDeviceIDProperties
PhysicalDeviceIDProperties
ByteString
deviceUUID
ByteString
driverUUID
ByteString
deviceLUID
Word32
deviceNodeMask
(Bool32 -> Bool
bool32ToBool Bool32
deviceLUIDValid)
instance Storable PhysicalDeviceIDProperties where
sizeOf :: PhysicalDeviceIDProperties -> Int
sizeOf ~PhysicalDeviceIDProperties
_ = Int
64
alignment :: PhysicalDeviceIDProperties -> Int
alignment ~PhysicalDeviceIDProperties
_ = Int
8
peek :: Ptr PhysicalDeviceIDProperties -> IO PhysicalDeviceIDProperties
peek = forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceIDProperties
-> PhysicalDeviceIDProperties -> IO ()
poke Ptr PhysicalDeviceIDProperties
ptr PhysicalDeviceIDProperties
poked = forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceIDProperties
ptr PhysicalDeviceIDProperties
poked (forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceIDProperties where
zero :: PhysicalDeviceIDProperties
zero = ByteString
-> ByteString
-> ByteString
-> Word32
-> Bool
-> PhysicalDeviceIDProperties
PhysicalDeviceIDProperties
forall a. Monoid a => a
mempty
forall a. Monoid a => a
mempty
forall a. Monoid a => a
mempty
forall a. Zero a => a
zero
forall a. Zero a => a
zero