{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_zero_initialize_device_memory ( PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT(..)
, EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION
, pattern EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION
, EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME
, pattern EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME
) where
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero(..))
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 Foreign.Ptr (Ptr)
import Data.Kind (Type)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT))
data PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT = PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
{
PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT -> Bool
zeroInitializeDeviceMemory :: Bool }
deriving (Typeable, PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT -> Bool
(PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT -> Bool)
-> (PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT -> Bool)
-> Eq PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT -> Bool
== :: PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT -> Bool
$c/= :: PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT -> Bool
/= :: PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT)
#endif
deriving instance Show PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
instance ToCStruct PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT where
withCStruct :: forall b.
PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> (Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> IO b)
-> IO b
withCStruct PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
x Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT -> IO b
f = Int
-> (Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT -> IO b)
-> IO b)
-> (Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
p -> Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> IO b
-> IO b
forall b.
Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
p PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
x (Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT -> IO b
f Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
p PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT{Bool
zeroInitializeDeviceMemory :: PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT -> Bool
zeroInitializeDeviceMemory :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
p Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
p Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> 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 PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
p Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
zeroInitializeDeviceMemory))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
p Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
p Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> 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 PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
p Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> 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 PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT where
peekCStruct :: Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> IO PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
peekCStruct Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
p = do
zeroInitializeDeviceMemory <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
p Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
pure $ PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
(bool32ToBool zeroInitializeDeviceMemory)
instance Storable PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT where
sizeOf :: PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT -> Int
sizeOf ~PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
_ = Int
24
alignment :: PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT -> Int
alignment ~PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
_ = Int
8
peek :: Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> IO PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
peek = Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> IO PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT -> IO ()
poke Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
poked = Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> IO ()
-> IO ()
forall b.
Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
ptr PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT where
zero :: PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
zero = Bool -> PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT
Bool
forall a. Zero a => a
zero
type EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1
pattern EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION :: forall a . Integral a => a
pattern $mEXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION :: forall a. Integral a => a
EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION = 1
type EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory"
pattern EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mEXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME = "VK_EXT_zero_initialize_device_memory"