{-# language CPP #-}
module Vulkan.Extensions.VK_NV_command_buffer_inheritance ( PhysicalDeviceCommandBufferInheritanceFeaturesNV(..)
, NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION
, pattern NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION
, NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME
, pattern NV_COMMAND_BUFFER_INHERITANCE_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_COMMAND_BUFFER_INHERITANCE_FEATURES_NV))
data PhysicalDeviceCommandBufferInheritanceFeaturesNV = PhysicalDeviceCommandBufferInheritanceFeaturesNV
{
PhysicalDeviceCommandBufferInheritanceFeaturesNV -> Bool
commandBufferInheritance :: Bool }
deriving (Typeable, PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> PhysicalDeviceCommandBufferInheritanceFeaturesNV -> Bool
(PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> PhysicalDeviceCommandBufferInheritanceFeaturesNV -> Bool)
-> (PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> PhysicalDeviceCommandBufferInheritanceFeaturesNV -> Bool)
-> Eq PhysicalDeviceCommandBufferInheritanceFeaturesNV
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> PhysicalDeviceCommandBufferInheritanceFeaturesNV -> Bool
== :: PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> PhysicalDeviceCommandBufferInheritanceFeaturesNV -> Bool
$c/= :: PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> PhysicalDeviceCommandBufferInheritanceFeaturesNV -> Bool
/= :: PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> PhysicalDeviceCommandBufferInheritanceFeaturesNV -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceCommandBufferInheritanceFeaturesNV)
#endif
deriving instance Show PhysicalDeviceCommandBufferInheritanceFeaturesNV
instance ToCStruct PhysicalDeviceCommandBufferInheritanceFeaturesNV where
withCStruct :: forall b.
PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> (Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV -> IO b)
-> IO b
withCStruct PhysicalDeviceCommandBufferInheritanceFeaturesNV
x Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV -> IO b
f = Int
-> (Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV -> IO b)
-> IO b)
-> (Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
p -> Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> PhysicalDeviceCommandBufferInheritanceFeaturesNV -> IO b -> IO b
forall b.
Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> PhysicalDeviceCommandBufferInheritanceFeaturesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
p PhysicalDeviceCommandBufferInheritanceFeaturesNV
x (Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV -> IO b
f Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> PhysicalDeviceCommandBufferInheritanceFeaturesNV -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
p PhysicalDeviceCommandBufferInheritanceFeaturesNV{Bool
commandBufferInheritance :: PhysicalDeviceCommandBufferInheritanceFeaturesNV -> Bool
commandBufferInheritance :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
p Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
p Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> 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 PhysicalDeviceCommandBufferInheritanceFeaturesNV
p Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
commandBufferInheritance))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
p Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
p Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> 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 PhysicalDeviceCommandBufferInheritanceFeaturesNV
p Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> 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 PhysicalDeviceCommandBufferInheritanceFeaturesNV where
peekCStruct :: Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> IO PhysicalDeviceCommandBufferInheritanceFeaturesNV
peekCStruct Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
p = do
commandBufferInheritance <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
p Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
pure $ PhysicalDeviceCommandBufferInheritanceFeaturesNV
(bool32ToBool commandBufferInheritance)
instance Storable PhysicalDeviceCommandBufferInheritanceFeaturesNV where
sizeOf :: PhysicalDeviceCommandBufferInheritanceFeaturesNV -> Int
sizeOf ~PhysicalDeviceCommandBufferInheritanceFeaturesNV
_ = Int
24
alignment :: PhysicalDeviceCommandBufferInheritanceFeaturesNV -> Int
alignment ~PhysicalDeviceCommandBufferInheritanceFeaturesNV
_ = Int
8
peek :: Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> IO PhysicalDeviceCommandBufferInheritanceFeaturesNV
peek = Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> IO PhysicalDeviceCommandBufferInheritanceFeaturesNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> PhysicalDeviceCommandBufferInheritanceFeaturesNV -> IO ()
poke Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
poked = Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> IO ()
-> IO ()
forall b.
Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
-> PhysicalDeviceCommandBufferInheritanceFeaturesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
ptr PhysicalDeviceCommandBufferInheritanceFeaturesNV
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceCommandBufferInheritanceFeaturesNV where
zero :: PhysicalDeviceCommandBufferInheritanceFeaturesNV
zero = Bool -> PhysicalDeviceCommandBufferInheritanceFeaturesNV
PhysicalDeviceCommandBufferInheritanceFeaturesNV
Bool
forall a. Zero a => a
zero
type NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1
pattern NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION :: forall a . Integral a => a
pattern $mNV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bNV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION :: forall a. Integral a => a
NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION = 1
type NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance"
pattern NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mNV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bNV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME = "VK_NV_command_buffer_inheritance"