{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_external_memory_metal ( getMemoryMetalHandleEXT
, getMemoryMetalHandlePropertiesEXT
, ImportMemoryMetalHandleInfoEXT(..)
, MemoryMetalHandlePropertiesEXT(..)
, MemoryGetMetalHandleInfoEXT(..)
, EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION
, pattern EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION
, EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME
, pattern EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME
) where
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Exception.Base (bracket)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Marshal.Alloc (callocBytes)
import Foreign.Marshal.Alloc (free)
import GHC.Base (when)
import GHC.IO (throwIO)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
import Control.Monad.IO.Class (MonadIO)
import Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import GHC.IO.Exception (IOErrorType(..))
import GHC.IO.Exception (IOException(..))
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import Data.Word (Word32)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Vulkan.NamedType ((:::))
import Vulkan.Core10.Handles (Device)
import Vulkan.Core10.Handles (Device(..))
import Vulkan.Core10.Handles (Device(Device))
import Vulkan.Dynamic (DeviceCmds(pVkGetMemoryMetalHandleEXT))
import Vulkan.Dynamic (DeviceCmds(pVkGetMemoryMetalHandlePropertiesEXT))
import Vulkan.Core10.Handles (DeviceMemory)
import Vulkan.Core10.Handles (Device_T)
import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits)
import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(..))
import Vulkan.Core10.Enums.Result (Result)
import Vulkan.Core10.Enums.Result (Result(..))
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Exception (VulkanException(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetMemoryMetalHandleEXT
:: FunPtr (Ptr Device_T -> Ptr MemoryGetMetalHandleInfoEXT -> Ptr (Ptr ()) -> IO Result) -> Ptr Device_T -> Ptr MemoryGetMetalHandleInfoEXT -> Ptr (Ptr ()) -> IO Result
getMemoryMetalHandleEXT :: forall io
. (MonadIO io)
=>
Device
->
MemoryGetMetalHandleInfoEXT
-> io (("handle" ::: Ptr ()))
getMemoryMetalHandleEXT :: forall (io :: * -> *).
MonadIO io =>
Device -> MemoryGetMetalHandleInfoEXT -> io ("handle" ::: Ptr ())
getMemoryMetalHandleEXT Device
device MemoryGetMetalHandleInfoEXT
getMetalHandleInfo = IO ("handle" ::: Ptr ()) -> io ("handle" ::: Ptr ())
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO ("handle" ::: Ptr ()) -> io ("handle" ::: Ptr ()))
-> (ContT ("handle" ::: Ptr ()) IO ("handle" ::: Ptr ())
-> IO ("handle" ::: Ptr ()))
-> ContT ("handle" ::: Ptr ()) IO ("handle" ::: Ptr ())
-> io ("handle" ::: Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT ("handle" ::: Ptr ()) IO ("handle" ::: Ptr ())
-> IO ("handle" ::: Ptr ())
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT ("handle" ::: Ptr ()) IO ("handle" ::: Ptr ())
-> io ("handle" ::: Ptr ()))
-> ContT ("handle" ::: Ptr ()) IO ("handle" ::: Ptr ())
-> io ("handle" ::: Ptr ())
forall a b. (a -> b) -> a -> b
$ do
let vkGetMemoryMetalHandleEXTPtr :: FunPtr
(Ptr Device_T
-> Ptr MemoryGetMetalHandleInfoEXT
-> Ptr ("handle" ::: Ptr ())
-> IO Result)
vkGetMemoryMetalHandleEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> Ptr MemoryGetMetalHandleInfoEXT
-> Ptr ("handle" ::: Ptr ())
-> IO Result)
pVkGetMemoryMetalHandleEXT (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds :: Device -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT ("handle" ::: Ptr ()) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT ("handle" ::: Ptr ()) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT ("handle" ::: Ptr ()) IO ())
-> IO () -> ContT ("handle" ::: Ptr ()) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> Ptr MemoryGetMetalHandleInfoEXT
-> Ptr ("handle" ::: Ptr ())
-> IO Result)
vkGetMemoryMetalHandleEXTPtr FunPtr
(Ptr Device_T
-> Ptr MemoryGetMetalHandleInfoEXT
-> Ptr ("handle" ::: Ptr ())
-> IO Result)
-> FunPtr
(Ptr Device_T
-> Ptr MemoryGetMetalHandleInfoEXT
-> Ptr ("handle" ::: Ptr ())
-> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> Ptr MemoryGetMetalHandleInfoEXT
-> Ptr ("handle" ::: Ptr ())
-> IO Result)
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetMemoryMetalHandleEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetMemoryMetalHandleEXT' :: Ptr Device_T
-> Ptr MemoryGetMetalHandleInfoEXT
-> Ptr ("handle" ::: Ptr ())
-> IO Result
vkGetMemoryMetalHandleEXT' = FunPtr
(Ptr Device_T
-> Ptr MemoryGetMetalHandleInfoEXT
-> Ptr ("handle" ::: Ptr ())
-> IO Result)
-> Ptr Device_T
-> Ptr MemoryGetMetalHandleInfoEXT
-> Ptr ("handle" ::: Ptr ())
-> IO Result
mkVkGetMemoryMetalHandleEXT FunPtr
(Ptr Device_T
-> Ptr MemoryGetMetalHandleInfoEXT
-> Ptr ("handle" ::: Ptr ())
-> IO Result)
vkGetMemoryMetalHandleEXTPtr
pGetMetalHandleInfo <- ((Ptr MemoryGetMetalHandleInfoEXT -> IO ("handle" ::: Ptr ()))
-> IO ("handle" ::: Ptr ()))
-> ContT ("handle" ::: Ptr ()) IO (Ptr MemoryGetMetalHandleInfoEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr MemoryGetMetalHandleInfoEXT -> IO ("handle" ::: Ptr ()))
-> IO ("handle" ::: Ptr ()))
-> ContT
("handle" ::: Ptr ()) IO (Ptr MemoryGetMetalHandleInfoEXT))
-> ((Ptr MemoryGetMetalHandleInfoEXT -> IO ("handle" ::: Ptr ()))
-> IO ("handle" ::: Ptr ()))
-> ContT ("handle" ::: Ptr ()) IO (Ptr MemoryGetMetalHandleInfoEXT)
forall a b. (a -> b) -> a -> b
$ MemoryGetMetalHandleInfoEXT
-> (Ptr MemoryGetMetalHandleInfoEXT -> IO ("handle" ::: Ptr ()))
-> IO ("handle" ::: Ptr ())
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
MemoryGetMetalHandleInfoEXT
-> (Ptr MemoryGetMetalHandleInfoEXT -> IO b) -> IO b
withCStruct (MemoryGetMetalHandleInfoEXT
getMetalHandleInfo)
pPHandle <- ContT $ bracket (callocBytes @(Ptr ()) 8) free
r <- lift $ traceAroundEvent "vkGetMemoryMetalHandleEXT" (vkGetMemoryMetalHandleEXT'
(deviceHandle (device))
pGetMetalHandleInfo
(pPHandle))
lift $ when (r < SUCCESS) (throwIO (VulkanException r))
pHandle <- lift $ peek @(Ptr ()) pPHandle
pure $ (pHandle)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetMemoryMetalHandlePropertiesEXT
:: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> Ptr () -> Ptr MemoryMetalHandlePropertiesEXT -> IO Result) -> Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> Ptr () -> Ptr MemoryMetalHandlePropertiesEXT -> IO Result
getMemoryMetalHandlePropertiesEXT :: forall io
. (MonadIO io)
=>
Device
->
ExternalMemoryHandleTypeFlagBits
->
("handle" ::: Ptr ())
-> io (MemoryMetalHandlePropertiesEXT)
getMemoryMetalHandlePropertiesEXT :: forall (io :: * -> *).
MonadIO io =>
Device
-> ExternalMemoryHandleTypeFlagBits
-> ("handle" ::: Ptr ())
-> io MemoryMetalHandlePropertiesEXT
getMemoryMetalHandlePropertiesEXT Device
device
ExternalMemoryHandleTypeFlagBits
handleType
"handle" ::: Ptr ()
handle = IO MemoryMetalHandlePropertiesEXT
-> io MemoryMetalHandlePropertiesEXT
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO MemoryMetalHandlePropertiesEXT
-> io MemoryMetalHandlePropertiesEXT)
-> (ContT
MemoryMetalHandlePropertiesEXT IO MemoryMetalHandlePropertiesEXT
-> IO MemoryMetalHandlePropertiesEXT)
-> ContT
MemoryMetalHandlePropertiesEXT IO MemoryMetalHandlePropertiesEXT
-> io MemoryMetalHandlePropertiesEXT
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT
MemoryMetalHandlePropertiesEXT IO MemoryMetalHandlePropertiesEXT
-> IO MemoryMetalHandlePropertiesEXT
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT
MemoryMetalHandlePropertiesEXT IO MemoryMetalHandlePropertiesEXT
-> io MemoryMetalHandlePropertiesEXT)
-> ContT
MemoryMetalHandlePropertiesEXT IO MemoryMetalHandlePropertiesEXT
-> io MemoryMetalHandlePropertiesEXT
forall a b. (a -> b) -> a -> b
$ do
let vkGetMemoryMetalHandlePropertiesEXTPtr :: FunPtr
(Ptr Device_T
-> ExternalMemoryHandleTypeFlagBits
-> ("handle" ::: Ptr ())
-> Ptr MemoryMetalHandlePropertiesEXT
-> IO Result)
vkGetMemoryMetalHandlePropertiesEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> ExternalMemoryHandleTypeFlagBits
-> ("handle" ::: Ptr ())
-> Ptr MemoryMetalHandlePropertiesEXT
-> IO Result)
pVkGetMemoryMetalHandlePropertiesEXT (case Device
device of Device{DeviceCmds
deviceCmds :: Device -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT MemoryMetalHandlePropertiesEXT IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT MemoryMetalHandlePropertiesEXT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT MemoryMetalHandlePropertiesEXT IO ())
-> IO () -> ContT MemoryMetalHandlePropertiesEXT IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> ExternalMemoryHandleTypeFlagBits
-> ("handle" ::: Ptr ())
-> Ptr MemoryMetalHandlePropertiesEXT
-> IO Result)
vkGetMemoryMetalHandlePropertiesEXTPtr FunPtr
(Ptr Device_T
-> ExternalMemoryHandleTypeFlagBits
-> ("handle" ::: Ptr ())
-> Ptr MemoryMetalHandlePropertiesEXT
-> IO Result)
-> FunPtr
(Ptr Device_T
-> ExternalMemoryHandleTypeFlagBits
-> ("handle" ::: Ptr ())
-> Ptr MemoryMetalHandlePropertiesEXT
-> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> ExternalMemoryHandleTypeFlagBits
-> ("handle" ::: Ptr ())
-> Ptr MemoryMetalHandlePropertiesEXT
-> IO Result)
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkGetMemoryMetalHandlePropertiesEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetMemoryMetalHandlePropertiesEXT' :: Ptr Device_T
-> ExternalMemoryHandleTypeFlagBits
-> ("handle" ::: Ptr ())
-> Ptr MemoryMetalHandlePropertiesEXT
-> IO Result
vkGetMemoryMetalHandlePropertiesEXT' = FunPtr
(Ptr Device_T
-> ExternalMemoryHandleTypeFlagBits
-> ("handle" ::: Ptr ())
-> Ptr MemoryMetalHandlePropertiesEXT
-> IO Result)
-> Ptr Device_T
-> ExternalMemoryHandleTypeFlagBits
-> ("handle" ::: Ptr ())
-> Ptr MemoryMetalHandlePropertiesEXT
-> IO Result
mkVkGetMemoryMetalHandlePropertiesEXT FunPtr
(Ptr Device_T
-> ExternalMemoryHandleTypeFlagBits
-> ("handle" ::: Ptr ())
-> Ptr MemoryMetalHandlePropertiesEXT
-> IO Result)
vkGetMemoryMetalHandlePropertiesEXTPtr
pPMemoryMetalHandleProperties <- ((Ptr MemoryMetalHandlePropertiesEXT
-> IO MemoryMetalHandlePropertiesEXT)
-> IO MemoryMetalHandlePropertiesEXT)
-> ContT
MemoryMetalHandlePropertiesEXT
IO
(Ptr MemoryMetalHandlePropertiesEXT)
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 @MemoryMetalHandlePropertiesEXT)
r <- lift $ traceAroundEvent "vkGetMemoryMetalHandlePropertiesEXT" (vkGetMemoryMetalHandlePropertiesEXT'
(deviceHandle (device))
(handleType)
(handle)
(pPMemoryMetalHandleProperties))
lift $ when (r < SUCCESS) (throwIO (VulkanException r))
pMemoryMetalHandleProperties <- lift $ peekCStruct @MemoryMetalHandlePropertiesEXT pPMemoryMetalHandleProperties
pure $ (pMemoryMetalHandleProperties)
data ImportMemoryMetalHandleInfoEXT = ImportMemoryMetalHandleInfoEXT
{
ImportMemoryMetalHandleInfoEXT -> ExternalMemoryHandleTypeFlagBits
handleType :: ExternalMemoryHandleTypeFlagBits
,
ImportMemoryMetalHandleInfoEXT -> "handle" ::: Ptr ()
handle :: Ptr ()
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ImportMemoryMetalHandleInfoEXT)
#endif
deriving instance Show ImportMemoryMetalHandleInfoEXT
instance ToCStruct ImportMemoryMetalHandleInfoEXT where
withCStruct :: forall b.
ImportMemoryMetalHandleInfoEXT
-> (Ptr ImportMemoryMetalHandleInfoEXT -> IO b) -> IO b
withCStruct ImportMemoryMetalHandleInfoEXT
x Ptr ImportMemoryMetalHandleInfoEXT -> IO b
f = Int -> (Ptr ImportMemoryMetalHandleInfoEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr ImportMemoryMetalHandleInfoEXT -> IO b) -> IO b)
-> (Ptr ImportMemoryMetalHandleInfoEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr ImportMemoryMetalHandleInfoEXT
p -> Ptr ImportMemoryMetalHandleInfoEXT
-> ImportMemoryMetalHandleInfoEXT -> IO b -> IO b
forall b.
Ptr ImportMemoryMetalHandleInfoEXT
-> ImportMemoryMetalHandleInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ImportMemoryMetalHandleInfoEXT
p ImportMemoryMetalHandleInfoEXT
x (Ptr ImportMemoryMetalHandleInfoEXT -> IO b
f Ptr ImportMemoryMetalHandleInfoEXT
p)
pokeCStruct :: forall b.
Ptr ImportMemoryMetalHandleInfoEXT
-> ImportMemoryMetalHandleInfoEXT -> IO b -> IO b
pokeCStruct Ptr ImportMemoryMetalHandleInfoEXT
p ImportMemoryMetalHandleInfoEXT{"handle" ::: Ptr ()
ExternalMemoryHandleTypeFlagBits
handleType :: ImportMemoryMetalHandleInfoEXT -> ExternalMemoryHandleTypeFlagBits
handle :: ImportMemoryMetalHandleInfoEXT -> "handle" ::: Ptr ()
handleType :: ExternalMemoryHandleTypeFlagBits
handle :: "handle" ::: Ptr ()
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImportMemoryMetalHandleInfoEXT
p Ptr ImportMemoryMetalHandleInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT)
Ptr ("handle" ::: Ptr ()) -> ("handle" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImportMemoryMetalHandleInfoEXT
p Ptr ImportMemoryMetalHandleInfoEXT
-> Int -> Ptr ("handle" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) ("handle" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImportMemoryMetalHandleInfoEXT
p Ptr ImportMemoryMetalHandleInfoEXT
-> Int -> Ptr ExternalMemoryHandleTypeFlagBits
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ExternalMemoryHandleTypeFlagBits)) (ExternalMemoryHandleTypeFlagBits
handleType)
Ptr ("handle" ::: Ptr ()) -> ("handle" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImportMemoryMetalHandleInfoEXT
p Ptr ImportMemoryMetalHandleInfoEXT
-> Int -> Ptr ("handle" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ()))) ("handle" ::: Ptr ()
handle)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr ImportMemoryMetalHandleInfoEXT -> IO b -> IO b
pokeZeroCStruct Ptr ImportMemoryMetalHandleInfoEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImportMemoryMetalHandleInfoEXT
p Ptr ImportMemoryMetalHandleInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT)
Ptr ("handle" ::: Ptr ()) -> ("handle" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ImportMemoryMetalHandleInfoEXT
p Ptr ImportMemoryMetalHandleInfoEXT
-> Int -> Ptr ("handle" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) ("handle" ::: Ptr ()
forall a. Ptr a
nullPtr)
IO b
f
instance FromCStruct ImportMemoryMetalHandleInfoEXT where
peekCStruct :: Ptr ImportMemoryMetalHandleInfoEXT
-> IO ImportMemoryMetalHandleInfoEXT
peekCStruct Ptr ImportMemoryMetalHandleInfoEXT
p = do
handleType <- forall a. Storable a => Ptr a -> IO a
peek @ExternalMemoryHandleTypeFlagBits ((Ptr ImportMemoryMetalHandleInfoEXT
p Ptr ImportMemoryMetalHandleInfoEXT
-> Int -> Ptr ExternalMemoryHandleTypeFlagBits
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ExternalMemoryHandleTypeFlagBits))
handle <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))
pure $ ImportMemoryMetalHandleInfoEXT
handleType handle
instance Storable ImportMemoryMetalHandleInfoEXT where
sizeOf :: ImportMemoryMetalHandleInfoEXT -> Int
sizeOf ~ImportMemoryMetalHandleInfoEXT
_ = Int
32
alignment :: ImportMemoryMetalHandleInfoEXT -> Int
alignment ~ImportMemoryMetalHandleInfoEXT
_ = Int
8
peek :: Ptr ImportMemoryMetalHandleInfoEXT
-> IO ImportMemoryMetalHandleInfoEXT
peek = Ptr ImportMemoryMetalHandleInfoEXT
-> IO ImportMemoryMetalHandleInfoEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr ImportMemoryMetalHandleInfoEXT
-> ImportMemoryMetalHandleInfoEXT -> IO ()
poke Ptr ImportMemoryMetalHandleInfoEXT
ptr ImportMemoryMetalHandleInfoEXT
poked = Ptr ImportMemoryMetalHandleInfoEXT
-> ImportMemoryMetalHandleInfoEXT -> IO () -> IO ()
forall b.
Ptr ImportMemoryMetalHandleInfoEXT
-> ImportMemoryMetalHandleInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ImportMemoryMetalHandleInfoEXT
ptr ImportMemoryMetalHandleInfoEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero ImportMemoryMetalHandleInfoEXT where
zero :: ImportMemoryMetalHandleInfoEXT
zero = ExternalMemoryHandleTypeFlagBits
-> ("handle" ::: Ptr ()) -> ImportMemoryMetalHandleInfoEXT
ImportMemoryMetalHandleInfoEXT
ExternalMemoryHandleTypeFlagBits
forall a. Zero a => a
zero
"handle" ::: Ptr ()
forall a. Zero a => a
zero
data MemoryMetalHandlePropertiesEXT = MemoryMetalHandlePropertiesEXT
{
MemoryMetalHandlePropertiesEXT -> Word32
memoryTypeBits :: Word32 }
deriving (Typeable, MemoryMetalHandlePropertiesEXT
-> MemoryMetalHandlePropertiesEXT -> Bool
(MemoryMetalHandlePropertiesEXT
-> MemoryMetalHandlePropertiesEXT -> Bool)
-> (MemoryMetalHandlePropertiesEXT
-> MemoryMetalHandlePropertiesEXT -> Bool)
-> Eq MemoryMetalHandlePropertiesEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MemoryMetalHandlePropertiesEXT
-> MemoryMetalHandlePropertiesEXT -> Bool
== :: MemoryMetalHandlePropertiesEXT
-> MemoryMetalHandlePropertiesEXT -> Bool
$c/= :: MemoryMetalHandlePropertiesEXT
-> MemoryMetalHandlePropertiesEXT -> Bool
/= :: MemoryMetalHandlePropertiesEXT
-> MemoryMetalHandlePropertiesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (MemoryMetalHandlePropertiesEXT)
#endif
deriving instance Show MemoryMetalHandlePropertiesEXT
instance ToCStruct MemoryMetalHandlePropertiesEXT where
withCStruct :: forall b.
MemoryMetalHandlePropertiesEXT
-> (Ptr MemoryMetalHandlePropertiesEXT -> IO b) -> IO b
withCStruct MemoryMetalHandlePropertiesEXT
x Ptr MemoryMetalHandlePropertiesEXT -> IO b
f = Int -> (Ptr MemoryMetalHandlePropertiesEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr MemoryMetalHandlePropertiesEXT -> IO b) -> IO b)
-> (Ptr MemoryMetalHandlePropertiesEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr MemoryMetalHandlePropertiesEXT
p -> Ptr MemoryMetalHandlePropertiesEXT
-> MemoryMetalHandlePropertiesEXT -> IO b -> IO b
forall b.
Ptr MemoryMetalHandlePropertiesEXT
-> MemoryMetalHandlePropertiesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr MemoryMetalHandlePropertiesEXT
p MemoryMetalHandlePropertiesEXT
x (Ptr MemoryMetalHandlePropertiesEXT -> IO b
f Ptr MemoryMetalHandlePropertiesEXT
p)
pokeCStruct :: forall b.
Ptr MemoryMetalHandlePropertiesEXT
-> MemoryMetalHandlePropertiesEXT -> IO b -> IO b
pokeCStruct Ptr MemoryMetalHandlePropertiesEXT
p MemoryMetalHandlePropertiesEXT{Word32
memoryTypeBits :: MemoryMetalHandlePropertiesEXT -> Word32
memoryTypeBits :: Word32
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryMetalHandlePropertiesEXT
p Ptr MemoryMetalHandlePropertiesEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT)
Ptr ("handle" ::: Ptr ()) -> ("handle" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryMetalHandlePropertiesEXT
p Ptr MemoryMetalHandlePropertiesEXT
-> Int -> Ptr ("handle" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) ("handle" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryMetalHandlePropertiesEXT
p Ptr MemoryMetalHandlePropertiesEXT -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
memoryTypeBits)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr MemoryMetalHandlePropertiesEXT -> IO b -> IO b
pokeZeroCStruct Ptr MemoryMetalHandlePropertiesEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryMetalHandlePropertiesEXT
p Ptr MemoryMetalHandlePropertiesEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT)
Ptr ("handle" ::: Ptr ()) -> ("handle" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryMetalHandlePropertiesEXT
p Ptr MemoryMetalHandlePropertiesEXT
-> Int -> Ptr ("handle" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) ("handle" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryMetalHandlePropertiesEXT
p Ptr MemoryMetalHandlePropertiesEXT -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct MemoryMetalHandlePropertiesEXT where
peekCStruct :: Ptr MemoryMetalHandlePropertiesEXT
-> IO MemoryMetalHandlePropertiesEXT
peekCStruct Ptr MemoryMetalHandlePropertiesEXT
p = do
memoryTypeBits <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr MemoryMetalHandlePropertiesEXT
p Ptr MemoryMetalHandlePropertiesEXT -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
pure $ MemoryMetalHandlePropertiesEXT
memoryTypeBits
instance Storable MemoryMetalHandlePropertiesEXT where
sizeOf :: MemoryMetalHandlePropertiesEXT -> Int
sizeOf ~MemoryMetalHandlePropertiesEXT
_ = Int
24
alignment :: MemoryMetalHandlePropertiesEXT -> Int
alignment ~MemoryMetalHandlePropertiesEXT
_ = Int
8
peek :: Ptr MemoryMetalHandlePropertiesEXT
-> IO MemoryMetalHandlePropertiesEXT
peek = Ptr MemoryMetalHandlePropertiesEXT
-> IO MemoryMetalHandlePropertiesEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr MemoryMetalHandlePropertiesEXT
-> MemoryMetalHandlePropertiesEXT -> IO ()
poke Ptr MemoryMetalHandlePropertiesEXT
ptr MemoryMetalHandlePropertiesEXT
poked = Ptr MemoryMetalHandlePropertiesEXT
-> MemoryMetalHandlePropertiesEXT -> IO () -> IO ()
forall b.
Ptr MemoryMetalHandlePropertiesEXT
-> MemoryMetalHandlePropertiesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr MemoryMetalHandlePropertiesEXT
ptr MemoryMetalHandlePropertiesEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero MemoryMetalHandlePropertiesEXT where
zero :: MemoryMetalHandlePropertiesEXT
zero = Word32 -> MemoryMetalHandlePropertiesEXT
MemoryMetalHandlePropertiesEXT
Word32
forall a. Zero a => a
zero
data MemoryGetMetalHandleInfoEXT = MemoryGetMetalHandleInfoEXT
{
MemoryGetMetalHandleInfoEXT -> DeviceMemory
memory :: DeviceMemory
,
MemoryGetMetalHandleInfoEXT -> ExternalMemoryHandleTypeFlagBits
handleType :: ExternalMemoryHandleTypeFlagBits
}
deriving (Typeable, MemoryGetMetalHandleInfoEXT -> MemoryGetMetalHandleInfoEXT -> Bool
(MemoryGetMetalHandleInfoEXT
-> MemoryGetMetalHandleInfoEXT -> Bool)
-> (MemoryGetMetalHandleInfoEXT
-> MemoryGetMetalHandleInfoEXT -> Bool)
-> Eq MemoryGetMetalHandleInfoEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MemoryGetMetalHandleInfoEXT -> MemoryGetMetalHandleInfoEXT -> Bool
== :: MemoryGetMetalHandleInfoEXT -> MemoryGetMetalHandleInfoEXT -> Bool
$c/= :: MemoryGetMetalHandleInfoEXT -> MemoryGetMetalHandleInfoEXT -> Bool
/= :: MemoryGetMetalHandleInfoEXT -> MemoryGetMetalHandleInfoEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (MemoryGetMetalHandleInfoEXT)
#endif
deriving instance Show MemoryGetMetalHandleInfoEXT
instance ToCStruct MemoryGetMetalHandleInfoEXT where
withCStruct :: forall b.
MemoryGetMetalHandleInfoEXT
-> (Ptr MemoryGetMetalHandleInfoEXT -> IO b) -> IO b
withCStruct MemoryGetMetalHandleInfoEXT
x Ptr MemoryGetMetalHandleInfoEXT -> IO b
f = Int -> (Ptr MemoryGetMetalHandleInfoEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr MemoryGetMetalHandleInfoEXT -> IO b) -> IO b)
-> (Ptr MemoryGetMetalHandleInfoEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr MemoryGetMetalHandleInfoEXT
p -> Ptr MemoryGetMetalHandleInfoEXT
-> MemoryGetMetalHandleInfoEXT -> IO b -> IO b
forall b.
Ptr MemoryGetMetalHandleInfoEXT
-> MemoryGetMetalHandleInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr MemoryGetMetalHandleInfoEXT
p MemoryGetMetalHandleInfoEXT
x (Ptr MemoryGetMetalHandleInfoEXT -> IO b
f Ptr MemoryGetMetalHandleInfoEXT
p)
pokeCStruct :: forall b.
Ptr MemoryGetMetalHandleInfoEXT
-> MemoryGetMetalHandleInfoEXT -> IO b -> IO b
pokeCStruct Ptr MemoryGetMetalHandleInfoEXT
p MemoryGetMetalHandleInfoEXT{ExternalMemoryHandleTypeFlagBits
DeviceMemory
memory :: MemoryGetMetalHandleInfoEXT -> DeviceMemory
handleType :: MemoryGetMetalHandleInfoEXT -> ExternalMemoryHandleTypeFlagBits
memory :: DeviceMemory
handleType :: ExternalMemoryHandleTypeFlagBits
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryGetMetalHandleInfoEXT
p Ptr MemoryGetMetalHandleInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT)
Ptr ("handle" ::: Ptr ()) -> ("handle" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryGetMetalHandleInfoEXT
p Ptr MemoryGetMetalHandleInfoEXT -> Int -> Ptr ("handle" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) ("handle" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr DeviceMemory -> DeviceMemory -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryGetMetalHandleInfoEXT
p Ptr MemoryGetMetalHandleInfoEXT -> Int -> Ptr DeviceMemory
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceMemory)) (DeviceMemory
memory)
Ptr ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryGetMetalHandleInfoEXT
p Ptr MemoryGetMetalHandleInfoEXT
-> Int -> Ptr ExternalMemoryHandleTypeFlagBits
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ExternalMemoryHandleTypeFlagBits)) (ExternalMemoryHandleTypeFlagBits
handleType)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr MemoryGetMetalHandleInfoEXT -> IO b -> IO b
pokeZeroCStruct Ptr MemoryGetMetalHandleInfoEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryGetMetalHandleInfoEXT
p Ptr MemoryGetMetalHandleInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT)
Ptr ("handle" ::: Ptr ()) -> ("handle" ::: Ptr ()) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryGetMetalHandleInfoEXT
p Ptr MemoryGetMetalHandleInfoEXT -> Int -> Ptr ("handle" ::: Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) ("handle" ::: Ptr ()
forall a. Ptr a
nullPtr)
Ptr DeviceMemory -> DeviceMemory -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryGetMetalHandleInfoEXT
p Ptr MemoryGetMetalHandleInfoEXT -> Int -> Ptr DeviceMemory
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceMemory)) (DeviceMemory
forall a. Zero a => a
zero)
Ptr ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr MemoryGetMetalHandleInfoEXT
p Ptr MemoryGetMetalHandleInfoEXT
-> Int -> Ptr ExternalMemoryHandleTypeFlagBits
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ExternalMemoryHandleTypeFlagBits)) (ExternalMemoryHandleTypeFlagBits
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct MemoryGetMetalHandleInfoEXT where
peekCStruct :: Ptr MemoryGetMetalHandleInfoEXT -> IO MemoryGetMetalHandleInfoEXT
peekCStruct Ptr MemoryGetMetalHandleInfoEXT
p = do
memory <- forall a. Storable a => Ptr a -> IO a
peek @DeviceMemory ((Ptr MemoryGetMetalHandleInfoEXT
p Ptr MemoryGetMetalHandleInfoEXT -> Int -> Ptr DeviceMemory
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceMemory))
handleType <- peek @ExternalMemoryHandleTypeFlagBits ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits))
pure $ MemoryGetMetalHandleInfoEXT
memory handleType
instance Storable MemoryGetMetalHandleInfoEXT where
sizeOf :: MemoryGetMetalHandleInfoEXT -> Int
sizeOf ~MemoryGetMetalHandleInfoEXT
_ = Int
32
alignment :: MemoryGetMetalHandleInfoEXT -> Int
alignment ~MemoryGetMetalHandleInfoEXT
_ = Int
8
peek :: Ptr MemoryGetMetalHandleInfoEXT -> IO MemoryGetMetalHandleInfoEXT
peek = Ptr MemoryGetMetalHandleInfoEXT -> IO MemoryGetMetalHandleInfoEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr MemoryGetMetalHandleInfoEXT
-> MemoryGetMetalHandleInfoEXT -> IO ()
poke Ptr MemoryGetMetalHandleInfoEXT
ptr MemoryGetMetalHandleInfoEXT
poked = Ptr MemoryGetMetalHandleInfoEXT
-> MemoryGetMetalHandleInfoEXT -> IO () -> IO ()
forall b.
Ptr MemoryGetMetalHandleInfoEXT
-> MemoryGetMetalHandleInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr MemoryGetMetalHandleInfoEXT
ptr MemoryGetMetalHandleInfoEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero MemoryGetMetalHandleInfoEXT where
zero :: MemoryGetMetalHandleInfoEXT
zero = DeviceMemory
-> ExternalMemoryHandleTypeFlagBits -> MemoryGetMetalHandleInfoEXT
MemoryGetMetalHandleInfoEXT
DeviceMemory
forall a. Zero a => a
zero
ExternalMemoryHandleTypeFlagBits
forall a. Zero a => a
zero
type EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION = 1
pattern EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION :: forall a . Integral a => a
pattern $mEXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION :: forall a. Integral a => a
EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION = 1
type EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME = "VK_EXT_external_memory_metal"
pattern EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mEXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME = "VK_EXT_external_memory_metal"