{-# language CPP #-}
module Vulkan.Extensions.VK_KHR_vertex_attribute_divisor ( VertexInputBindingDivisorDescriptionKHR(..)
, PipelineVertexInputDivisorStateCreateInfoKHR(..)
, PhysicalDeviceVertexAttributeDivisorPropertiesKHR(..)
, PhysicalDeviceVertexAttributeDivisorFeaturesKHR(..)
, KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION
, pattern KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION
, KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME
, pattern KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME
) where
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Data.Vector (generateM)
import qualified Data.Vector (imapM_)
import qualified Data.Vector (length)
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.Word (Word32)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Data.Vector (Vector)
import Vulkan.CStruct.Utils (advancePtrBytes)
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_DIVISOR_FEATURES_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR))
data VertexInputBindingDivisorDescriptionKHR = VertexInputBindingDivisorDescriptionKHR
{
VertexInputBindingDivisorDescriptionKHR -> Word32
binding :: Word32
,
VertexInputBindingDivisorDescriptionKHR -> Word32
divisor :: Word32
}
deriving (Typeable, VertexInputBindingDivisorDescriptionKHR
-> VertexInputBindingDivisorDescriptionKHR -> Bool
(VertexInputBindingDivisorDescriptionKHR
-> VertexInputBindingDivisorDescriptionKHR -> Bool)
-> (VertexInputBindingDivisorDescriptionKHR
-> VertexInputBindingDivisorDescriptionKHR -> Bool)
-> Eq VertexInputBindingDivisorDescriptionKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: VertexInputBindingDivisorDescriptionKHR
-> VertexInputBindingDivisorDescriptionKHR -> Bool
== :: VertexInputBindingDivisorDescriptionKHR
-> VertexInputBindingDivisorDescriptionKHR -> Bool
$c/= :: VertexInputBindingDivisorDescriptionKHR
-> VertexInputBindingDivisorDescriptionKHR -> Bool
/= :: VertexInputBindingDivisorDescriptionKHR
-> VertexInputBindingDivisorDescriptionKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (VertexInputBindingDivisorDescriptionKHR)
#endif
deriving instance Show VertexInputBindingDivisorDescriptionKHR
instance ToCStruct VertexInputBindingDivisorDescriptionKHR where
withCStruct :: forall b.
VertexInputBindingDivisorDescriptionKHR
-> (Ptr VertexInputBindingDivisorDescriptionKHR -> IO b) -> IO b
withCStruct VertexInputBindingDivisorDescriptionKHR
x Ptr VertexInputBindingDivisorDescriptionKHR -> IO b
f = Int
-> (Ptr VertexInputBindingDivisorDescriptionKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
8 ((Ptr VertexInputBindingDivisorDescriptionKHR -> IO b) -> IO b)
-> (Ptr VertexInputBindingDivisorDescriptionKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr VertexInputBindingDivisorDescriptionKHR
p -> Ptr VertexInputBindingDivisorDescriptionKHR
-> VertexInputBindingDivisorDescriptionKHR -> IO b -> IO b
forall b.
Ptr VertexInputBindingDivisorDescriptionKHR
-> VertexInputBindingDivisorDescriptionKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr VertexInputBindingDivisorDescriptionKHR
p VertexInputBindingDivisorDescriptionKHR
x (Ptr VertexInputBindingDivisorDescriptionKHR -> IO b
f Ptr VertexInputBindingDivisorDescriptionKHR
p)
pokeCStruct :: forall b.
Ptr VertexInputBindingDivisorDescriptionKHR
-> VertexInputBindingDivisorDescriptionKHR -> IO b -> IO b
pokeCStruct Ptr VertexInputBindingDivisorDescriptionKHR
p VertexInputBindingDivisorDescriptionKHR{Word32
$sel:binding:VertexInputBindingDivisorDescriptionKHR :: VertexInputBindingDivisorDescriptionKHR -> Word32
$sel:divisor:VertexInputBindingDivisorDescriptionKHR :: VertexInputBindingDivisorDescriptionKHR -> Word32
binding :: Word32
divisor :: Word32
..} IO b
f = do
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr VertexInputBindingDivisorDescriptionKHR
p Ptr VertexInputBindingDivisorDescriptionKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Word32)) (Word32
binding)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr VertexInputBindingDivisorDescriptionKHR
p Ptr VertexInputBindingDivisorDescriptionKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32)) (Word32
divisor)
IO b
f
cStructSize :: Int
cStructSize = Int
8
cStructAlignment :: Int
cStructAlignment = Int
4
pokeZeroCStruct :: forall b.
Ptr VertexInputBindingDivisorDescriptionKHR -> IO b -> IO b
pokeZeroCStruct Ptr VertexInputBindingDivisorDescriptionKHR
p IO b
f = do
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr VertexInputBindingDivisorDescriptionKHR
p Ptr VertexInputBindingDivisorDescriptionKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr VertexInputBindingDivisorDescriptionKHR
p Ptr VertexInputBindingDivisorDescriptionKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct VertexInputBindingDivisorDescriptionKHR where
peekCStruct :: Ptr VertexInputBindingDivisorDescriptionKHR
-> IO VertexInputBindingDivisorDescriptionKHR
peekCStruct Ptr VertexInputBindingDivisorDescriptionKHR
p = do
Word32
binding <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr VertexInputBindingDivisorDescriptionKHR
p Ptr VertexInputBindingDivisorDescriptionKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Word32))
Word32
divisor <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr VertexInputBindingDivisorDescriptionKHR
p Ptr VertexInputBindingDivisorDescriptionKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr Word32))
VertexInputBindingDivisorDescriptionKHR
-> IO VertexInputBindingDivisorDescriptionKHR
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (VertexInputBindingDivisorDescriptionKHR
-> IO VertexInputBindingDivisorDescriptionKHR)
-> VertexInputBindingDivisorDescriptionKHR
-> IO VertexInputBindingDivisorDescriptionKHR
forall a b. (a -> b) -> a -> b
$ Word32 -> Word32 -> VertexInputBindingDivisorDescriptionKHR
VertexInputBindingDivisorDescriptionKHR
Word32
binding Word32
divisor
instance Storable VertexInputBindingDivisorDescriptionKHR where
sizeOf :: VertexInputBindingDivisorDescriptionKHR -> Int
sizeOf ~VertexInputBindingDivisorDescriptionKHR
_ = Int
8
alignment :: VertexInputBindingDivisorDescriptionKHR -> Int
alignment ~VertexInputBindingDivisorDescriptionKHR
_ = Int
4
peek :: Ptr VertexInputBindingDivisorDescriptionKHR
-> IO VertexInputBindingDivisorDescriptionKHR
peek = Ptr VertexInputBindingDivisorDescriptionKHR
-> IO VertexInputBindingDivisorDescriptionKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr VertexInputBindingDivisorDescriptionKHR
-> VertexInputBindingDivisorDescriptionKHR -> IO ()
poke Ptr VertexInputBindingDivisorDescriptionKHR
ptr VertexInputBindingDivisorDescriptionKHR
poked = Ptr VertexInputBindingDivisorDescriptionKHR
-> VertexInputBindingDivisorDescriptionKHR -> IO () -> IO ()
forall b.
Ptr VertexInputBindingDivisorDescriptionKHR
-> VertexInputBindingDivisorDescriptionKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr VertexInputBindingDivisorDescriptionKHR
ptr VertexInputBindingDivisorDescriptionKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero VertexInputBindingDivisorDescriptionKHR where
zero :: VertexInputBindingDivisorDescriptionKHR
zero = Word32 -> Word32 -> VertexInputBindingDivisorDescriptionKHR
VertexInputBindingDivisorDescriptionKHR
Word32
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
data PipelineVertexInputDivisorStateCreateInfoKHR = PipelineVertexInputDivisorStateCreateInfoKHR
{
PipelineVertexInputDivisorStateCreateInfoKHR
-> Vector VertexInputBindingDivisorDescriptionKHR
vertexBindingDivisors :: Vector VertexInputBindingDivisorDescriptionKHR }
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PipelineVertexInputDivisorStateCreateInfoKHR)
#endif
deriving instance Show PipelineVertexInputDivisorStateCreateInfoKHR
instance ToCStruct PipelineVertexInputDivisorStateCreateInfoKHR where
withCStruct :: forall b.
PipelineVertexInputDivisorStateCreateInfoKHR
-> (Ptr PipelineVertexInputDivisorStateCreateInfoKHR -> IO b)
-> IO b
withCStruct PipelineVertexInputDivisorStateCreateInfoKHR
x Ptr PipelineVertexInputDivisorStateCreateInfoKHR -> IO b
f = Int
-> (Ptr PipelineVertexInputDivisorStateCreateInfoKHR -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr PipelineVertexInputDivisorStateCreateInfoKHR -> IO b)
-> IO b)
-> (Ptr PipelineVertexInputDivisorStateCreateInfoKHR -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PipelineVertexInputDivisorStateCreateInfoKHR
p -> Ptr PipelineVertexInputDivisorStateCreateInfoKHR
-> PipelineVertexInputDivisorStateCreateInfoKHR -> IO b -> IO b
forall b.
Ptr PipelineVertexInputDivisorStateCreateInfoKHR
-> PipelineVertexInputDivisorStateCreateInfoKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelineVertexInputDivisorStateCreateInfoKHR
p PipelineVertexInputDivisorStateCreateInfoKHR
x (Ptr PipelineVertexInputDivisorStateCreateInfoKHR -> IO b
f Ptr PipelineVertexInputDivisorStateCreateInfoKHR
p)
pokeCStruct :: forall b.
Ptr PipelineVertexInputDivisorStateCreateInfoKHR
-> PipelineVertexInputDivisorStateCreateInfoKHR -> IO b -> IO b
pokeCStruct Ptr PipelineVertexInputDivisorStateCreateInfoKHR
p PipelineVertexInputDivisorStateCreateInfoKHR{Vector VertexInputBindingDivisorDescriptionKHR
$sel:vertexBindingDivisors:PipelineVertexInputDivisorStateCreateInfoKHR :: PipelineVertexInputDivisorStateCreateInfoKHR
-> Vector VertexInputBindingDivisorDescriptionKHR
vertexBindingDivisors :: Vector VertexInputBindingDivisorDescriptionKHR
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineVertexInputDivisorStateCreateInfoKHR
p Ptr PipelineVertexInputDivisorStateCreateInfoKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineVertexInputDivisorStateCreateInfoKHR
p Ptr PipelineVertexInputDivisorStateCreateInfoKHR
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineVertexInputDivisorStateCreateInfoKHR
p Ptr PipelineVertexInputDivisorStateCreateInfoKHR
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) ((Int -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Vector VertexInputBindingDivisorDescriptionKHR -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector VertexInputBindingDivisorDescriptionKHR -> Int)
-> Vector VertexInputBindingDivisorDescriptionKHR -> Int
forall a b. (a -> b) -> a -> b
$ (Vector VertexInputBindingDivisorDescriptionKHR
vertexBindingDivisors)) :: Word32))
Ptr VertexInputBindingDivisorDescriptionKHR
pPVertexBindingDivisors' <- ((Ptr VertexInputBindingDivisorDescriptionKHR -> IO b) -> IO b)
-> ContT b IO (Ptr VertexInputBindingDivisorDescriptionKHR)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr VertexInputBindingDivisorDescriptionKHR -> IO b) -> IO b)
-> ContT b IO (Ptr VertexInputBindingDivisorDescriptionKHR))
-> ((Ptr VertexInputBindingDivisorDescriptionKHR -> IO b) -> IO b)
-> ContT b IO (Ptr VertexInputBindingDivisorDescriptionKHR)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @VertexInputBindingDivisorDescriptionKHR ((Vector VertexInputBindingDivisorDescriptionKHR -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector VertexInputBindingDivisorDescriptionKHR
vertexBindingDivisors)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
8)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> VertexInputBindingDivisorDescriptionKHR -> IO ())
-> Vector VertexInputBindingDivisorDescriptionKHR -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i VertexInputBindingDivisorDescriptionKHR
e -> Ptr VertexInputBindingDivisorDescriptionKHR
-> VertexInputBindingDivisorDescriptionKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr VertexInputBindingDivisorDescriptionKHR
pPVertexBindingDivisors' Ptr VertexInputBindingDivisorDescriptionKHR
-> Int -> Ptr VertexInputBindingDivisorDescriptionKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr VertexInputBindingDivisorDescriptionKHR) (VertexInputBindingDivisorDescriptionKHR
e)) (Vector VertexInputBindingDivisorDescriptionKHR
vertexBindingDivisors)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr VertexInputBindingDivisorDescriptionKHR)
-> Ptr VertexInputBindingDivisorDescriptionKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineVertexInputDivisorStateCreateInfoKHR
p Ptr PipelineVertexInputDivisorStateCreateInfoKHR
-> Int -> Ptr (Ptr VertexInputBindingDivisorDescriptionKHR)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr VertexInputBindingDivisorDescriptionKHR))) (Ptr VertexInputBindingDivisorDescriptionKHR
pPVertexBindingDivisors')
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PipelineVertexInputDivisorStateCreateInfoKHR -> IO b -> IO b
pokeZeroCStruct Ptr PipelineVertexInputDivisorStateCreateInfoKHR
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineVertexInputDivisorStateCreateInfoKHR
p Ptr PipelineVertexInputDivisorStateCreateInfoKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineVertexInputDivisorStateCreateInfoKHR
p Ptr PipelineVertexInputDivisorStateCreateInfoKHR
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO b
f
instance FromCStruct PipelineVertexInputDivisorStateCreateInfoKHR where
peekCStruct :: Ptr PipelineVertexInputDivisorStateCreateInfoKHR
-> IO PipelineVertexInputDivisorStateCreateInfoKHR
peekCStruct Ptr PipelineVertexInputDivisorStateCreateInfoKHR
p = do
Word32
vertexBindingDivisorCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PipelineVertexInputDivisorStateCreateInfoKHR
p Ptr PipelineVertexInputDivisorStateCreateInfoKHR
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
Ptr VertexInputBindingDivisorDescriptionKHR
pVertexBindingDivisors <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr VertexInputBindingDivisorDescriptionKHR) ((Ptr PipelineVertexInputDivisorStateCreateInfoKHR
p Ptr PipelineVertexInputDivisorStateCreateInfoKHR
-> Int -> Ptr (Ptr VertexInputBindingDivisorDescriptionKHR)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr VertexInputBindingDivisorDescriptionKHR)))
Vector VertexInputBindingDivisorDescriptionKHR
pVertexBindingDivisors' <- Int
-> (Int -> IO VertexInputBindingDivisorDescriptionKHR)
-> IO (Vector VertexInputBindingDivisorDescriptionKHR)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Word32
vertexBindingDivisorCount) (\Int
i -> forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @VertexInputBindingDivisorDescriptionKHR ((Ptr VertexInputBindingDivisorDescriptionKHR
pVertexBindingDivisors Ptr VertexInputBindingDivisorDescriptionKHR
-> Int -> Ptr VertexInputBindingDivisorDescriptionKHR
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr VertexInputBindingDivisorDescriptionKHR)))
PipelineVertexInputDivisorStateCreateInfoKHR
-> IO PipelineVertexInputDivisorStateCreateInfoKHR
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PipelineVertexInputDivisorStateCreateInfoKHR
-> IO PipelineVertexInputDivisorStateCreateInfoKHR)
-> PipelineVertexInputDivisorStateCreateInfoKHR
-> IO PipelineVertexInputDivisorStateCreateInfoKHR
forall a b. (a -> b) -> a -> b
$ Vector VertexInputBindingDivisorDescriptionKHR
-> PipelineVertexInputDivisorStateCreateInfoKHR
PipelineVertexInputDivisorStateCreateInfoKHR
Vector VertexInputBindingDivisorDescriptionKHR
pVertexBindingDivisors'
instance Zero PipelineVertexInputDivisorStateCreateInfoKHR where
zero :: PipelineVertexInputDivisorStateCreateInfoKHR
zero = Vector VertexInputBindingDivisorDescriptionKHR
-> PipelineVertexInputDivisorStateCreateInfoKHR
PipelineVertexInputDivisorStateCreateInfoKHR
Vector VertexInputBindingDivisorDescriptionKHR
forall a. Monoid a => a
mempty
data PhysicalDeviceVertexAttributeDivisorPropertiesKHR = PhysicalDeviceVertexAttributeDivisorPropertiesKHR
{
PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> Word32
maxVertexAttribDivisor :: Word32
,
PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> Bool
supportsNonZeroFirstInstance :: Bool
}
deriving (Typeable, PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> Bool
(PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> Bool)
-> (PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> Bool)
-> Eq PhysicalDeviceVertexAttributeDivisorPropertiesKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> Bool
== :: PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> Bool
$c/= :: PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> Bool
/= :: PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceVertexAttributeDivisorPropertiesKHR)
#endif
deriving instance Show PhysicalDeviceVertexAttributeDivisorPropertiesKHR
instance ToCStruct PhysicalDeviceVertexAttributeDivisorPropertiesKHR where
withCStruct :: forall b.
PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> (Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> IO b)
-> IO b
withCStruct PhysicalDeviceVertexAttributeDivisorPropertiesKHR
x Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> IO b
f = Int
-> (Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> IO b)
-> IO b)
-> (Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
p -> Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> IO b
-> IO b
forall b.
Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
p PhysicalDeviceVertexAttributeDivisorPropertiesKHR
x (Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> IO b
f Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
p PhysicalDeviceVertexAttributeDivisorPropertiesKHR{Bool
Word32
$sel:maxVertexAttribDivisor:PhysicalDeviceVertexAttributeDivisorPropertiesKHR :: PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> Word32
$sel:supportsNonZeroFirstInstance:PhysicalDeviceVertexAttributeDivisorPropertiesKHR :: PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> Bool
maxVertexAttribDivisor :: Word32
supportsNonZeroFirstInstance :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
maxVertexAttribDivisor)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
supportsNonZeroFirstInstance))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceVertexAttributeDivisorPropertiesKHR where
peekCStruct :: Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> IO PhysicalDeviceVertexAttributeDivisorPropertiesKHR
peekCStruct Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
p = do
Word32
maxVertexAttribDivisor <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
Bool32
supportsNonZeroFirstInstance <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32))
PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> IO PhysicalDeviceVertexAttributeDivisorPropertiesKHR
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> IO PhysicalDeviceVertexAttributeDivisorPropertiesKHR)
-> PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> IO PhysicalDeviceVertexAttributeDivisorPropertiesKHR
forall a b. (a -> b) -> a -> b
$ Word32 -> Bool -> PhysicalDeviceVertexAttributeDivisorPropertiesKHR
PhysicalDeviceVertexAttributeDivisorPropertiesKHR
Word32
maxVertexAttribDivisor (Bool32 -> Bool
bool32ToBool Bool32
supportsNonZeroFirstInstance)
instance Storable PhysicalDeviceVertexAttributeDivisorPropertiesKHR where
sizeOf :: PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> Int
sizeOf ~PhysicalDeviceVertexAttributeDivisorPropertiesKHR
_ = Int
24
alignment :: PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> Int
alignment ~PhysicalDeviceVertexAttributeDivisorPropertiesKHR
_ = Int
8
peek :: Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> IO PhysicalDeviceVertexAttributeDivisorPropertiesKHR
peek = Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> IO PhysicalDeviceVertexAttributeDivisorPropertiesKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> PhysicalDeviceVertexAttributeDivisorPropertiesKHR -> IO ()
poke Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
poked = Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> IO ()
-> IO ()
forall b.
Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> PhysicalDeviceVertexAttributeDivisorPropertiesKHR
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
ptr PhysicalDeviceVertexAttributeDivisorPropertiesKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceVertexAttributeDivisorPropertiesKHR where
zero :: PhysicalDeviceVertexAttributeDivisorPropertiesKHR
zero = Word32 -> Bool -> PhysicalDeviceVertexAttributeDivisorPropertiesKHR
PhysicalDeviceVertexAttributeDivisorPropertiesKHR
Word32
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
data PhysicalDeviceVertexAttributeDivisorFeaturesKHR = PhysicalDeviceVertexAttributeDivisorFeaturesKHR
{
PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> Bool
vertexAttributeInstanceRateDivisor :: Bool
,
PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> Bool
vertexAttributeInstanceRateZeroDivisor :: Bool
}
deriving (Typeable, PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> Bool
(PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> Bool)
-> (PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> Bool)
-> Eq PhysicalDeviceVertexAttributeDivisorFeaturesKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> Bool
== :: PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> Bool
$c/= :: PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> Bool
/= :: PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceVertexAttributeDivisorFeaturesKHR)
#endif
deriving instance Show PhysicalDeviceVertexAttributeDivisorFeaturesKHR
instance ToCStruct PhysicalDeviceVertexAttributeDivisorFeaturesKHR where
withCStruct :: forall b.
PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> (Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> IO b)
-> IO b
withCStruct PhysicalDeviceVertexAttributeDivisorFeaturesKHR
x Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> IO b
f = Int
-> (Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> IO b)
-> IO b)
-> (Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
p -> Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> IO b -> IO b
forall b.
Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
p PhysicalDeviceVertexAttributeDivisorFeaturesKHR
x (Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> IO b
f Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
p PhysicalDeviceVertexAttributeDivisorFeaturesKHR{Bool
$sel:vertexAttributeInstanceRateDivisor:PhysicalDeviceVertexAttributeDivisorFeaturesKHR :: PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> Bool
$sel:vertexAttributeInstanceRateZeroDivisor:PhysicalDeviceVertexAttributeDivisorFeaturesKHR :: PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> Bool
vertexAttributeInstanceRateDivisor :: Bool
vertexAttributeInstanceRateZeroDivisor :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> 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 PhysicalDeviceVertexAttributeDivisorFeaturesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
vertexAttributeInstanceRateDivisor))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
vertexAttributeInstanceRateZeroDivisor))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> 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 PhysicalDeviceVertexAttributeDivisorFeaturesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> 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))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceVertexAttributeDivisorFeaturesKHR where
peekCStruct :: Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> IO PhysicalDeviceVertexAttributeDivisorFeaturesKHR
peekCStruct Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
p = do
Bool32
vertexAttributeInstanceRateDivisor <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
Bool32
vertexAttributeInstanceRateZeroDivisor <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
p Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32))
PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> IO PhysicalDeviceVertexAttributeDivisorFeaturesKHR
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> IO PhysicalDeviceVertexAttributeDivisorFeaturesKHR)
-> PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> IO PhysicalDeviceVertexAttributeDivisorFeaturesKHR
forall a b. (a -> b) -> a -> b
$ Bool -> Bool -> PhysicalDeviceVertexAttributeDivisorFeaturesKHR
PhysicalDeviceVertexAttributeDivisorFeaturesKHR
(Bool32 -> Bool
bool32ToBool Bool32
vertexAttributeInstanceRateDivisor)
(Bool32 -> Bool
bool32ToBool Bool32
vertexAttributeInstanceRateZeroDivisor)
instance Storable PhysicalDeviceVertexAttributeDivisorFeaturesKHR where
sizeOf :: PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> Int
sizeOf ~PhysicalDeviceVertexAttributeDivisorFeaturesKHR
_ = Int
24
alignment :: PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> Int
alignment ~PhysicalDeviceVertexAttributeDivisorFeaturesKHR
_ = Int
8
peek :: Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> IO PhysicalDeviceVertexAttributeDivisorFeaturesKHR
peek = Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> IO PhysicalDeviceVertexAttributeDivisorFeaturesKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> IO ()
poke Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
poked = Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> IO ()
-> IO ()
forall b.
Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
-> PhysicalDeviceVertexAttributeDivisorFeaturesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
ptr PhysicalDeviceVertexAttributeDivisorFeaturesKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceVertexAttributeDivisorFeaturesKHR where
zero :: PhysicalDeviceVertexAttributeDivisorFeaturesKHR
zero = Bool -> Bool -> PhysicalDeviceVertexAttributeDivisorFeaturesKHR
PhysicalDeviceVertexAttributeDivisorFeaturesKHR
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
type KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1
pattern KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION :: forall a . Integral a => a
pattern $bKHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION :: forall a. Integral a => a
$mKHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1
type KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_KHR_vertex_attribute_divisor"
pattern KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bKHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mKHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_KHR_vertex_attribute_divisor"