{-# language CPP #-}
module Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory ( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(..)
, StructureType(..)
) 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.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_WORKGROUP_MEMORY_FEATURES))
import Vulkan.Core10.Enums.StructureType (StructureType(..))
data PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
{
PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures -> Bool
shaderZeroInitializeWorkgroupMemory :: Bool }
deriving (Typeable, PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures -> Bool
(PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures -> Bool)
-> (PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures -> Bool)
-> Eq PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures -> Bool
$c/= :: PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures -> Bool
== :: PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures -> Bool
$c== :: PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures)
#endif
deriving instance Show PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
instance ToCStruct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures where
withCStruct :: PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> (Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> IO b)
-> IO b
withCStruct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
x Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures -> IO b
f = Int
-> (Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures -> IO b)
-> IO b)
-> (Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
p -> Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
p PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
x (Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures -> IO b
f Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
p)
pokeCStruct :: Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
p PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures{Bool
shaderZeroInitializeWorkgroupMemory :: Bool
$sel:shaderZeroInitializeWorkgroupMemory:PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures :: PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures -> Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
p Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
p Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> 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 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
p Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderZeroInitializeWorkgroupMemory))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
p Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
p Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> 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 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
p Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> 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 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures where
peekCStruct :: Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> IO PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
peekCStruct Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
p = do
Bool32
shaderZeroInitializeWorkgroupMemory <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
p Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> IO PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> IO PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures)
-> PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> IO PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
forall a b. (a -> b) -> a -> b
$ Bool -> PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
(Bool32 -> Bool
bool32ToBool Bool32
shaderZeroInitializeWorkgroupMemory)
instance Storable PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures where
sizeOf :: PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures -> Int
sizeOf ~PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
_ = Int
24
alignment :: PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures -> Int
alignment ~PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
_ = Int
8
peek :: Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> IO PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
peek = Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> IO PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures -> IO ()
poke Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
poked = Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
-> IO ()
-> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
ptr PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures where
zero :: PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
zero = Bool -> PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
Bool
forall a. Zero a => a
zero