{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_vertex_attribute_robustness ( PhysicalDeviceVertexAttributeRobustnessFeaturesEXT(..)
, EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION
, pattern EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION
, EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME
, pattern EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_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_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT))
data PhysicalDeviceVertexAttributeRobustnessFeaturesEXT = PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
{
PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> Bool
vertexAttributeRobustness :: Bool }
deriving (Typeable, PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> Bool
(PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> Bool)
-> (PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> Bool)
-> Eq PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> Bool
== :: PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> Bool
$c/= :: PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> Bool
/= :: PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceVertexAttributeRobustnessFeaturesEXT)
#endif
deriving instance Show PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
instance ToCStruct PhysicalDeviceVertexAttributeRobustnessFeaturesEXT where
withCStruct :: forall b.
PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> (Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> IO b)
-> IO b
withCStruct PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
x Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> IO b
f = Int
-> (Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> IO b)
-> IO b)
-> (Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
p -> Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> IO b
-> IO b
forall b.
Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
p PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
x (Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> IO b
f Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
p PhysicalDeviceVertexAttributeRobustnessFeaturesEXT{Bool
vertexAttributeRobustness :: PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> Bool
vertexAttributeRobustness :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
p Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
p Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> 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 PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
p Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
vertexAttributeRobustness))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
p Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
p Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> 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 PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
p Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> 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 PhysicalDeviceVertexAttributeRobustnessFeaturesEXT where
peekCStruct :: Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> IO PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
peekCStruct Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
p = do
vertexAttributeRobustness <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
p Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
pure $ PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
(bool32ToBool vertexAttributeRobustness)
instance Storable PhysicalDeviceVertexAttributeRobustnessFeaturesEXT where
sizeOf :: PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> Int
sizeOf ~PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
_ = Int
24
alignment :: PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> Int
alignment ~PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
_ = Int
8
peek :: Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> IO PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
peek = Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> IO PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> PhysicalDeviceVertexAttributeRobustnessFeaturesEXT -> IO ()
poke Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
poked = Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> IO ()
-> IO ()
forall b.
Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
ptr PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceVertexAttributeRobustnessFeaturesEXT where
zero :: PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
zero = Bool -> PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
PhysicalDeviceVertexAttributeRobustnessFeaturesEXT
Bool
forall a. Zero a => a
zero
type EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION = 1
pattern EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION :: forall a . Integral a => a
pattern $mEXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION :: forall a. Integral a => a
EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION = 1
type EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_vertex_attribute_robustness"
pattern EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mEXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_vertex_attribute_robustness"