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