{-# language CPP #-}
module Vulkan.Extensions.VK_QCOM_tile_memory_heap ( cmdBindTileMemoryQCOM
, TileMemoryBindInfoQCOM(..)
, PhysicalDeviceTileMemoryHeapFeaturesQCOM(..)
, PhysicalDeviceTileMemoryHeapPropertiesQCOM(..)
, TileMemorySizeInfoQCOM(..)
, TileMemoryRequirementsQCOM(..)
, QCOM_TILE_MEMORY_HEAP_SPEC_VERSION
, pattern QCOM_TILE_MEMORY_HEAP_SPEC_VERSION
, QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME
, pattern QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME
) where
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.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.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.NamedType ((:::))
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Handles (CommandBuffer)
import Vulkan.Core10.Handles (CommandBuffer(..))
import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
import Vulkan.Core10.Handles (CommandBuffer_T)
import Vulkan.Dynamic (DeviceCmds(pVkCmdBindTileMemoryQCOM))
import Vulkan.Core10.Handles (DeviceMemory)
import Vulkan.Core10.FundamentalTypes (DeviceSize)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCmdBindTileMemoryQCOM
:: FunPtr (Ptr CommandBuffer_T -> Ptr TileMemoryBindInfoQCOM -> IO ()) -> Ptr CommandBuffer_T -> Ptr TileMemoryBindInfoQCOM -> IO ()
cmdBindTileMemoryQCOM :: forall io
. (MonadIO io)
=>
CommandBuffer
->
("tileMemoryBindInfo" ::: Maybe TileMemoryBindInfoQCOM)
-> io ()
cmdBindTileMemoryQCOM :: forall (io :: * -> *).
MonadIO io =>
CommandBuffer
-> ("tileMemoryBindInfo" ::: Maybe TileMemoryBindInfoQCOM) -> io ()
cmdBindTileMemoryQCOM CommandBuffer
commandBuffer "tileMemoryBindInfo" ::: Maybe TileMemoryBindInfoQCOM
tileMemoryBindInfo = IO () -> io ()
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ())
-> (ContT () IO () -> IO ()) -> ContT () IO () -> io ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT () IO () -> IO ()
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkCmdBindTileMemoryQCOMPtr :: FunPtr (Ptr CommandBuffer_T -> Ptr TileMemoryBindInfoQCOM -> IO ())
vkCmdBindTileMemoryQCOMPtr = DeviceCmds
-> FunPtr
(Ptr CommandBuffer_T -> Ptr TileMemoryBindInfoQCOM -> IO ())
pVkCmdBindTileMemoryQCOM (case CommandBuffer
commandBuffer of CommandBuffer{DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds :: CommandBuffer -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr (Ptr CommandBuffer_T -> Ptr TileMemoryBindInfoQCOM -> IO ())
vkCmdBindTileMemoryQCOMPtr FunPtr (Ptr CommandBuffer_T -> Ptr TileMemoryBindInfoQCOM -> IO ())
-> FunPtr
(Ptr CommandBuffer_T -> Ptr TileMemoryBindInfoQCOM -> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr (Ptr CommandBuffer_T -> Ptr TileMemoryBindInfoQCOM -> IO ())
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 vkCmdBindTileMemoryQCOM is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCmdBindTileMemoryQCOM' :: Ptr CommandBuffer_T -> Ptr TileMemoryBindInfoQCOM -> IO ()
vkCmdBindTileMemoryQCOM' = FunPtr (Ptr CommandBuffer_T -> Ptr TileMemoryBindInfoQCOM -> IO ())
-> Ptr CommandBuffer_T -> Ptr TileMemoryBindInfoQCOM -> IO ()
mkVkCmdBindTileMemoryQCOM FunPtr (Ptr CommandBuffer_T -> Ptr TileMemoryBindInfoQCOM -> IO ())
vkCmdBindTileMemoryQCOMPtr
pTileMemoryBindInfo <- case ("tileMemoryBindInfo" ::: Maybe TileMemoryBindInfoQCOM
tileMemoryBindInfo) of
"tileMemoryBindInfo" ::: Maybe TileMemoryBindInfoQCOM
Nothing -> Ptr TileMemoryBindInfoQCOM
-> ContT () IO (Ptr TileMemoryBindInfoQCOM)
forall a. a -> ContT () IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr TileMemoryBindInfoQCOM
forall a. Ptr a
nullPtr
Just TileMemoryBindInfoQCOM
j -> ((Ptr TileMemoryBindInfoQCOM -> IO ()) -> IO ())
-> ContT () IO (Ptr TileMemoryBindInfoQCOM)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr TileMemoryBindInfoQCOM -> IO ()) -> IO ())
-> ContT () IO (Ptr TileMemoryBindInfoQCOM))
-> ((Ptr TileMemoryBindInfoQCOM -> IO ()) -> IO ())
-> ContT () IO (Ptr TileMemoryBindInfoQCOM)
forall a b. (a -> b) -> a -> b
$ TileMemoryBindInfoQCOM
-> (Ptr TileMemoryBindInfoQCOM -> IO ()) -> IO ()
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
TileMemoryBindInfoQCOM
-> (Ptr TileMemoryBindInfoQCOM -> IO b) -> IO b
withCStruct (TileMemoryBindInfoQCOM
j)
lift $ traceAroundEvent "vkCmdBindTileMemoryQCOM" (vkCmdBindTileMemoryQCOM'
(commandBufferHandle (commandBuffer))
pTileMemoryBindInfo)
pure $ ()
data TileMemoryBindInfoQCOM = TileMemoryBindInfoQCOM
{
TileMemoryBindInfoQCOM -> DeviceMemory
memory :: DeviceMemory }
deriving (Typeable, TileMemoryBindInfoQCOM -> TileMemoryBindInfoQCOM -> Bool
(TileMemoryBindInfoQCOM -> TileMemoryBindInfoQCOM -> Bool)
-> (TileMemoryBindInfoQCOM -> TileMemoryBindInfoQCOM -> Bool)
-> Eq TileMemoryBindInfoQCOM
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TileMemoryBindInfoQCOM -> TileMemoryBindInfoQCOM -> Bool
== :: TileMemoryBindInfoQCOM -> TileMemoryBindInfoQCOM -> Bool
$c/= :: TileMemoryBindInfoQCOM -> TileMemoryBindInfoQCOM -> Bool
/= :: TileMemoryBindInfoQCOM -> TileMemoryBindInfoQCOM -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (TileMemoryBindInfoQCOM)
#endif
deriving instance Show TileMemoryBindInfoQCOM
instance ToCStruct TileMemoryBindInfoQCOM where
withCStruct :: forall b.
TileMemoryBindInfoQCOM
-> (Ptr TileMemoryBindInfoQCOM -> IO b) -> IO b
withCStruct TileMemoryBindInfoQCOM
x Ptr TileMemoryBindInfoQCOM -> IO b
f = Int -> (Ptr TileMemoryBindInfoQCOM -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr TileMemoryBindInfoQCOM -> IO b) -> IO b)
-> (Ptr TileMemoryBindInfoQCOM -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr TileMemoryBindInfoQCOM
p -> Ptr TileMemoryBindInfoQCOM
-> TileMemoryBindInfoQCOM -> IO b -> IO b
forall b.
Ptr TileMemoryBindInfoQCOM
-> TileMemoryBindInfoQCOM -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr TileMemoryBindInfoQCOM
p TileMemoryBindInfoQCOM
x (Ptr TileMemoryBindInfoQCOM -> IO b
f Ptr TileMemoryBindInfoQCOM
p)
pokeCStruct :: forall b.
Ptr TileMemoryBindInfoQCOM
-> TileMemoryBindInfoQCOM -> IO b -> IO b
pokeCStruct Ptr TileMemoryBindInfoQCOM
p TileMemoryBindInfoQCOM{DeviceMemory
memory :: TileMemoryBindInfoQCOM -> DeviceMemory
memory :: DeviceMemory
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemoryBindInfoQCOM
p Ptr TileMemoryBindInfoQCOM -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemoryBindInfoQCOM
p Ptr TileMemoryBindInfoQCOM -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr DeviceMemory -> DeviceMemory -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemoryBindInfoQCOM
p Ptr TileMemoryBindInfoQCOM -> Int -> Ptr DeviceMemory
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceMemory)) (DeviceMemory
memory)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr TileMemoryBindInfoQCOM -> IO b -> IO b
pokeZeroCStruct Ptr TileMemoryBindInfoQCOM
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemoryBindInfoQCOM
p Ptr TileMemoryBindInfoQCOM -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemoryBindInfoQCOM
p Ptr TileMemoryBindInfoQCOM -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr DeviceMemory -> DeviceMemory -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemoryBindInfoQCOM
p Ptr TileMemoryBindInfoQCOM -> Int -> Ptr DeviceMemory
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceMemory)) (DeviceMemory
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct TileMemoryBindInfoQCOM where
peekCStruct :: Ptr TileMemoryBindInfoQCOM -> IO TileMemoryBindInfoQCOM
peekCStruct Ptr TileMemoryBindInfoQCOM
p = do
memory <- forall a. Storable a => Ptr a -> IO a
peek @DeviceMemory ((Ptr TileMemoryBindInfoQCOM
p Ptr TileMemoryBindInfoQCOM -> Int -> Ptr DeviceMemory
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceMemory))
pure $ TileMemoryBindInfoQCOM
memory
instance Storable TileMemoryBindInfoQCOM where
sizeOf :: TileMemoryBindInfoQCOM -> Int
sizeOf ~TileMemoryBindInfoQCOM
_ = Int
24
alignment :: TileMemoryBindInfoQCOM -> Int
alignment ~TileMemoryBindInfoQCOM
_ = Int
8
peek :: Ptr TileMemoryBindInfoQCOM -> IO TileMemoryBindInfoQCOM
peek = Ptr TileMemoryBindInfoQCOM -> IO TileMemoryBindInfoQCOM
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr TileMemoryBindInfoQCOM -> TileMemoryBindInfoQCOM -> IO ()
poke Ptr TileMemoryBindInfoQCOM
ptr TileMemoryBindInfoQCOM
poked = Ptr TileMemoryBindInfoQCOM
-> TileMemoryBindInfoQCOM -> IO () -> IO ()
forall b.
Ptr TileMemoryBindInfoQCOM
-> TileMemoryBindInfoQCOM -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr TileMemoryBindInfoQCOM
ptr TileMemoryBindInfoQCOM
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero TileMemoryBindInfoQCOM where
zero :: TileMemoryBindInfoQCOM
zero = DeviceMemory -> TileMemoryBindInfoQCOM
TileMemoryBindInfoQCOM
DeviceMemory
forall a. Zero a => a
zero
data PhysicalDeviceTileMemoryHeapFeaturesQCOM = PhysicalDeviceTileMemoryHeapFeaturesQCOM
{
PhysicalDeviceTileMemoryHeapFeaturesQCOM -> Bool
tileMemoryHeap :: Bool }
deriving (Typeable, PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> PhysicalDeviceTileMemoryHeapFeaturesQCOM -> Bool
(PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> PhysicalDeviceTileMemoryHeapFeaturesQCOM -> Bool)
-> (PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> PhysicalDeviceTileMemoryHeapFeaturesQCOM -> Bool)
-> Eq PhysicalDeviceTileMemoryHeapFeaturesQCOM
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> PhysicalDeviceTileMemoryHeapFeaturesQCOM -> Bool
== :: PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> PhysicalDeviceTileMemoryHeapFeaturesQCOM -> Bool
$c/= :: PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> PhysicalDeviceTileMemoryHeapFeaturesQCOM -> Bool
/= :: PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> PhysicalDeviceTileMemoryHeapFeaturesQCOM -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceTileMemoryHeapFeaturesQCOM)
#endif
deriving instance Show PhysicalDeviceTileMemoryHeapFeaturesQCOM
instance ToCStruct PhysicalDeviceTileMemoryHeapFeaturesQCOM where
withCStruct :: forall b.
PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> (Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM -> IO b) -> IO b
withCStruct PhysicalDeviceTileMemoryHeapFeaturesQCOM
x Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM -> IO b
f = Int
-> (Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM -> IO b) -> IO b)
-> (Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
p -> Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> PhysicalDeviceTileMemoryHeapFeaturesQCOM -> IO b -> IO b
forall b.
Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> PhysicalDeviceTileMemoryHeapFeaturesQCOM -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
p PhysicalDeviceTileMemoryHeapFeaturesQCOM
x (Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM -> IO b
f Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> PhysicalDeviceTileMemoryHeapFeaturesQCOM -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
p PhysicalDeviceTileMemoryHeapFeaturesQCOM{Bool
tileMemoryHeap :: PhysicalDeviceTileMemoryHeapFeaturesQCOM -> Bool
tileMemoryHeap :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
p Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
p Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
p Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
tileMemoryHeap))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
p Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
p Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
p Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceTileMemoryHeapFeaturesQCOM where
peekCStruct :: Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> IO PhysicalDeviceTileMemoryHeapFeaturesQCOM
peekCStruct Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
p = do
tileMemoryHeap <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
p Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
pure $ PhysicalDeviceTileMemoryHeapFeaturesQCOM
(bool32ToBool tileMemoryHeap)
instance Storable PhysicalDeviceTileMemoryHeapFeaturesQCOM where
sizeOf :: PhysicalDeviceTileMemoryHeapFeaturesQCOM -> Int
sizeOf ~PhysicalDeviceTileMemoryHeapFeaturesQCOM
_ = Int
24
alignment :: PhysicalDeviceTileMemoryHeapFeaturesQCOM -> Int
alignment ~PhysicalDeviceTileMemoryHeapFeaturesQCOM
_ = Int
8
peek :: Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> IO PhysicalDeviceTileMemoryHeapFeaturesQCOM
peek = Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> IO PhysicalDeviceTileMemoryHeapFeaturesQCOM
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> PhysicalDeviceTileMemoryHeapFeaturesQCOM -> IO ()
poke Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
poked = Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> PhysicalDeviceTileMemoryHeapFeaturesQCOM -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
-> PhysicalDeviceTileMemoryHeapFeaturesQCOM -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
ptr PhysicalDeviceTileMemoryHeapFeaturesQCOM
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceTileMemoryHeapFeaturesQCOM where
zero :: PhysicalDeviceTileMemoryHeapFeaturesQCOM
zero = Bool -> PhysicalDeviceTileMemoryHeapFeaturesQCOM
PhysicalDeviceTileMemoryHeapFeaturesQCOM
Bool
forall a. Zero a => a
zero
data PhysicalDeviceTileMemoryHeapPropertiesQCOM = PhysicalDeviceTileMemoryHeapPropertiesQCOM
{
PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Bool
queueSubmitBoundary :: Bool
,
PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Bool
tileBufferTransfers :: Bool
}
deriving (Typeable, PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Bool
(PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Bool)
-> (PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Bool)
-> Eq PhysicalDeviceTileMemoryHeapPropertiesQCOM
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Bool
== :: PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Bool
$c/= :: PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Bool
/= :: PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceTileMemoryHeapPropertiesQCOM)
#endif
deriving instance Show PhysicalDeviceTileMemoryHeapPropertiesQCOM
instance ToCStruct PhysicalDeviceTileMemoryHeapPropertiesQCOM where
withCStruct :: forall b.
PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> (Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM -> IO b) -> IO b
withCStruct PhysicalDeviceTileMemoryHeapPropertiesQCOM
x Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM -> IO b
f = Int
-> (Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM -> IO b) -> IO b)
-> (Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
p -> Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> PhysicalDeviceTileMemoryHeapPropertiesQCOM -> IO b -> IO b
forall b.
Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> PhysicalDeviceTileMemoryHeapPropertiesQCOM -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
p PhysicalDeviceTileMemoryHeapPropertiesQCOM
x (Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM -> IO b
f Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> PhysicalDeviceTileMemoryHeapPropertiesQCOM -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
p PhysicalDeviceTileMemoryHeapPropertiesQCOM{Bool
queueSubmitBoundary :: PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Bool
tileBufferTransfers :: PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Bool
queueSubmitBoundary :: Bool
tileBufferTransfers :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
p Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
p Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
p Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
queueSubmitBoundary))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
p Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
tileBufferTransfers))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
p Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
p Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
p Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
p Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceTileMemoryHeapPropertiesQCOM where
peekCStruct :: Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> IO PhysicalDeviceTileMemoryHeapPropertiesQCOM
peekCStruct Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
p = do
queueSubmitBoundary <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
p Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
tileBufferTransfers <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
pure $ PhysicalDeviceTileMemoryHeapPropertiesQCOM
(bool32ToBool queueSubmitBoundary)
(bool32ToBool tileBufferTransfers)
instance Storable PhysicalDeviceTileMemoryHeapPropertiesQCOM where
sizeOf :: PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Int
sizeOf ~PhysicalDeviceTileMemoryHeapPropertiesQCOM
_ = Int
24
alignment :: PhysicalDeviceTileMemoryHeapPropertiesQCOM -> Int
alignment ~PhysicalDeviceTileMemoryHeapPropertiesQCOM
_ = Int
8
peek :: Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> IO PhysicalDeviceTileMemoryHeapPropertiesQCOM
peek = Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> IO PhysicalDeviceTileMemoryHeapPropertiesQCOM
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> PhysicalDeviceTileMemoryHeapPropertiesQCOM -> IO ()
poke Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
poked = Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> PhysicalDeviceTileMemoryHeapPropertiesQCOM -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
-> PhysicalDeviceTileMemoryHeapPropertiesQCOM -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
ptr PhysicalDeviceTileMemoryHeapPropertiesQCOM
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceTileMemoryHeapPropertiesQCOM where
zero :: PhysicalDeviceTileMemoryHeapPropertiesQCOM
zero = Bool -> Bool -> PhysicalDeviceTileMemoryHeapPropertiesQCOM
PhysicalDeviceTileMemoryHeapPropertiesQCOM
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
data TileMemorySizeInfoQCOM = TileMemorySizeInfoQCOM
{
TileMemorySizeInfoQCOM -> DeviceSize
size :: DeviceSize }
deriving (Typeable, TileMemorySizeInfoQCOM -> TileMemorySizeInfoQCOM -> Bool
(TileMemorySizeInfoQCOM -> TileMemorySizeInfoQCOM -> Bool)
-> (TileMemorySizeInfoQCOM -> TileMemorySizeInfoQCOM -> Bool)
-> Eq TileMemorySizeInfoQCOM
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TileMemorySizeInfoQCOM -> TileMemorySizeInfoQCOM -> Bool
== :: TileMemorySizeInfoQCOM -> TileMemorySizeInfoQCOM -> Bool
$c/= :: TileMemorySizeInfoQCOM -> TileMemorySizeInfoQCOM -> Bool
/= :: TileMemorySizeInfoQCOM -> TileMemorySizeInfoQCOM -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (TileMemorySizeInfoQCOM)
#endif
deriving instance Show TileMemorySizeInfoQCOM
instance ToCStruct TileMemorySizeInfoQCOM where
withCStruct :: forall b.
TileMemorySizeInfoQCOM
-> (Ptr TileMemorySizeInfoQCOM -> IO b) -> IO b
withCStruct TileMemorySizeInfoQCOM
x Ptr TileMemorySizeInfoQCOM -> IO b
f = Int -> (Ptr TileMemorySizeInfoQCOM -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr TileMemorySizeInfoQCOM -> IO b) -> IO b)
-> (Ptr TileMemorySizeInfoQCOM -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr TileMemorySizeInfoQCOM
p -> Ptr TileMemorySizeInfoQCOM
-> TileMemorySizeInfoQCOM -> IO b -> IO b
forall b.
Ptr TileMemorySizeInfoQCOM
-> TileMemorySizeInfoQCOM -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr TileMemorySizeInfoQCOM
p TileMemorySizeInfoQCOM
x (Ptr TileMemorySizeInfoQCOM -> IO b
f Ptr TileMemorySizeInfoQCOM
p)
pokeCStruct :: forall b.
Ptr TileMemorySizeInfoQCOM
-> TileMemorySizeInfoQCOM -> IO b -> IO b
pokeCStruct Ptr TileMemorySizeInfoQCOM
p TileMemorySizeInfoQCOM{DeviceSize
size :: TileMemorySizeInfoQCOM -> DeviceSize
size :: DeviceSize
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemorySizeInfoQCOM
p Ptr TileMemorySizeInfoQCOM -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemorySizeInfoQCOM
p Ptr TileMemorySizeInfoQCOM -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemorySizeInfoQCOM
p Ptr TileMemorySizeInfoQCOM -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceSize)) (DeviceSize
size)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr TileMemorySizeInfoQCOM -> IO b -> IO b
pokeZeroCStruct Ptr TileMemorySizeInfoQCOM
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemorySizeInfoQCOM
p Ptr TileMemorySizeInfoQCOM -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemorySizeInfoQCOM
p Ptr TileMemorySizeInfoQCOM -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemorySizeInfoQCOM
p Ptr TileMemorySizeInfoQCOM -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct TileMemorySizeInfoQCOM where
peekCStruct :: Ptr TileMemorySizeInfoQCOM -> IO TileMemorySizeInfoQCOM
peekCStruct Ptr TileMemorySizeInfoQCOM
p = do
size <- forall a. Storable a => Ptr a -> IO a
peek @DeviceSize ((Ptr TileMemorySizeInfoQCOM
p Ptr TileMemorySizeInfoQCOM -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceSize))
pure $ TileMemorySizeInfoQCOM
size
instance Storable TileMemorySizeInfoQCOM where
sizeOf :: TileMemorySizeInfoQCOM -> Int
sizeOf ~TileMemorySizeInfoQCOM
_ = Int
24
alignment :: TileMemorySizeInfoQCOM -> Int
alignment ~TileMemorySizeInfoQCOM
_ = Int
8
peek :: Ptr TileMemorySizeInfoQCOM -> IO TileMemorySizeInfoQCOM
peek = Ptr TileMemorySizeInfoQCOM -> IO TileMemorySizeInfoQCOM
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr TileMemorySizeInfoQCOM -> TileMemorySizeInfoQCOM -> IO ()
poke Ptr TileMemorySizeInfoQCOM
ptr TileMemorySizeInfoQCOM
poked = Ptr TileMemorySizeInfoQCOM
-> TileMemorySizeInfoQCOM -> IO () -> IO ()
forall b.
Ptr TileMemorySizeInfoQCOM
-> TileMemorySizeInfoQCOM -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr TileMemorySizeInfoQCOM
ptr TileMemorySizeInfoQCOM
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero TileMemorySizeInfoQCOM where
zero :: TileMemorySizeInfoQCOM
zero = DeviceSize -> TileMemorySizeInfoQCOM
TileMemorySizeInfoQCOM
DeviceSize
forall a. Zero a => a
zero
data TileMemoryRequirementsQCOM = TileMemoryRequirementsQCOM
{
TileMemoryRequirementsQCOM -> DeviceSize
size :: DeviceSize
,
TileMemoryRequirementsQCOM -> DeviceSize
alignment :: DeviceSize
}
deriving (Typeable, TileMemoryRequirementsQCOM -> TileMemoryRequirementsQCOM -> Bool
(TileMemoryRequirementsQCOM -> TileMemoryRequirementsQCOM -> Bool)
-> (TileMemoryRequirementsQCOM
-> TileMemoryRequirementsQCOM -> Bool)
-> Eq TileMemoryRequirementsQCOM
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TileMemoryRequirementsQCOM -> TileMemoryRequirementsQCOM -> Bool
== :: TileMemoryRequirementsQCOM -> TileMemoryRequirementsQCOM -> Bool
$c/= :: TileMemoryRequirementsQCOM -> TileMemoryRequirementsQCOM -> Bool
/= :: TileMemoryRequirementsQCOM -> TileMemoryRequirementsQCOM -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (TileMemoryRequirementsQCOM)
#endif
deriving instance Show TileMemoryRequirementsQCOM
instance ToCStruct TileMemoryRequirementsQCOM where
withCStruct :: forall b.
TileMemoryRequirementsQCOM
-> (Ptr TileMemoryRequirementsQCOM -> IO b) -> IO b
withCStruct TileMemoryRequirementsQCOM
x Ptr TileMemoryRequirementsQCOM -> IO b
f = Int -> (Ptr TileMemoryRequirementsQCOM -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr TileMemoryRequirementsQCOM -> IO b) -> IO b)
-> (Ptr TileMemoryRequirementsQCOM -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr TileMemoryRequirementsQCOM
p -> Ptr TileMemoryRequirementsQCOM
-> TileMemoryRequirementsQCOM -> IO b -> IO b
forall b.
Ptr TileMemoryRequirementsQCOM
-> TileMemoryRequirementsQCOM -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr TileMemoryRequirementsQCOM
p TileMemoryRequirementsQCOM
x (Ptr TileMemoryRequirementsQCOM -> IO b
f Ptr TileMemoryRequirementsQCOM
p)
pokeCStruct :: forall b.
Ptr TileMemoryRequirementsQCOM
-> TileMemoryRequirementsQCOM -> IO b -> IO b
pokeCStruct Ptr TileMemoryRequirementsQCOM
p TileMemoryRequirementsQCOM{DeviceSize
size :: TileMemoryRequirementsQCOM -> DeviceSize
alignment :: TileMemoryRequirementsQCOM -> DeviceSize
size :: DeviceSize
alignment :: DeviceSize
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemoryRequirementsQCOM
p Ptr TileMemoryRequirementsQCOM -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemoryRequirementsQCOM
p Ptr TileMemoryRequirementsQCOM -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemoryRequirementsQCOM
p Ptr TileMemoryRequirementsQCOM -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceSize)) (DeviceSize
size)
Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemoryRequirementsQCOM
p Ptr TileMemoryRequirementsQCOM -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr DeviceSize)) (DeviceSize
alignment)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr TileMemoryRequirementsQCOM -> IO b -> IO b
pokeZeroCStruct Ptr TileMemoryRequirementsQCOM
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemoryRequirementsQCOM
p Ptr TileMemoryRequirementsQCOM -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemoryRequirementsQCOM
p Ptr TileMemoryRequirementsQCOM -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemoryRequirementsQCOM
p Ptr TileMemoryRequirementsQCOM -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
Ptr DeviceSize -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr TileMemoryRequirementsQCOM
p Ptr TileMemoryRequirementsQCOM -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct TileMemoryRequirementsQCOM where
peekCStruct :: Ptr TileMemoryRequirementsQCOM -> IO TileMemoryRequirementsQCOM
peekCStruct Ptr TileMemoryRequirementsQCOM
p = do
size <- forall a. Storable a => Ptr a -> IO a
peek @DeviceSize ((Ptr TileMemoryRequirementsQCOM
p Ptr TileMemoryRequirementsQCOM -> Int -> Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr DeviceSize))
alignment <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
pure $ TileMemoryRequirementsQCOM
size alignment
instance Storable TileMemoryRequirementsQCOM where
sizeOf :: TileMemoryRequirementsQCOM -> Int
sizeOf ~TileMemoryRequirementsQCOM
_ = Int
32
alignment :: TileMemoryRequirementsQCOM -> Int
alignment ~TileMemoryRequirementsQCOM
_ = Int
8
peek :: Ptr TileMemoryRequirementsQCOM -> IO TileMemoryRequirementsQCOM
peek = Ptr TileMemoryRequirementsQCOM -> IO TileMemoryRequirementsQCOM
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr TileMemoryRequirementsQCOM
-> TileMemoryRequirementsQCOM -> IO ()
poke Ptr TileMemoryRequirementsQCOM
ptr TileMemoryRequirementsQCOM
poked = Ptr TileMemoryRequirementsQCOM
-> TileMemoryRequirementsQCOM -> IO () -> IO ()
forall b.
Ptr TileMemoryRequirementsQCOM
-> TileMemoryRequirementsQCOM -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr TileMemoryRequirementsQCOM
ptr TileMemoryRequirementsQCOM
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero TileMemoryRequirementsQCOM where
zero :: TileMemoryRequirementsQCOM
zero = DeviceSize -> DeviceSize -> TileMemoryRequirementsQCOM
TileMemoryRequirementsQCOM
DeviceSize
forall a. Zero a => a
zero
DeviceSize
forall a. Zero a => a
zero
type QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1
pattern QCOM_TILE_MEMORY_HEAP_SPEC_VERSION :: forall a . Integral a => a
pattern $mQCOM_TILE_MEMORY_HEAP_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bQCOM_TILE_MEMORY_HEAP_SPEC_VERSION :: forall a. Integral a => a
QCOM_TILE_MEMORY_HEAP_SPEC_VERSION = 1
type QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap"
pattern QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mQCOM_TILE_MEMORY_HEAP_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bQCOM_TILE_MEMORY_HEAP_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME = "VK_QCOM_tile_memory_heap"