{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_transform_feedback ( cmdBindTransformFeedbackBuffersEXT
, cmdBeginTransformFeedbackEXT
, cmdUseTransformFeedbackEXT
, cmdEndTransformFeedbackEXT
, cmdBeginQueryIndexedEXT
, cmdUseQueryIndexedEXT
, cmdEndQueryIndexedEXT
, cmdDrawIndirectByteCountEXT
, PhysicalDeviceTransformFeedbackFeaturesEXT(..)
, PhysicalDeviceTransformFeedbackPropertiesEXT(..)
, PipelineRasterizationStateStreamCreateInfoEXT(..)
, PipelineRasterizationStateStreamCreateFlagsEXT(..)
, EXT_TRANSFORM_FEEDBACK_SPEC_VERSION
, pattern EXT_TRANSFORM_FEEDBACK_SPEC_VERSION
, EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME
, pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME
) where
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Foreign.Marshal.Alloc (allocaBytesAligned)
import GHC.IO (throwIO)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showString)
import Numeric (showHex)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import qualified Data.Vector (imapM_)
import qualified Data.Vector (length)
import qualified Data.Vector (null)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
import Control.Monad.IO.Class (MonadIO)
import Data.Bits (Bits)
import Data.Bits (FiniteBits)
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 GHC.IO.Exception (IOErrorType(..))
import GHC.IO.Exception (IOException(..))
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Data.Word (Word32)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Data.Vector (Vector)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.NamedType ((:::))
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.Handles (Buffer)
import Vulkan.Core10.Handles (Buffer(..))
import Vulkan.Core10.Handles (CommandBuffer)
import Vulkan.Core10.Handles (CommandBuffer(..))
import Vulkan.Core10.Handles (CommandBuffer_T)
import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginQueryIndexedEXT))
import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginTransformFeedbackEXT))
import Vulkan.Dynamic (DeviceCmds(pVkCmdBindTransformFeedbackBuffersEXT))
import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawIndirectByteCountEXT))
import Vulkan.Dynamic (DeviceCmds(pVkCmdEndQueryIndexedEXT))
import Vulkan.Dynamic (DeviceCmds(pVkCmdEndTransformFeedbackEXT))
import Vulkan.Core10.FundamentalTypes (DeviceSize)
import Vulkan.Core10.FundamentalTypes (Flags)
import Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlagBits(..))
import Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlags)
import Vulkan.Core10.Handles (QueryPool)
import Vulkan.Core10.Handles (QueryPool(..))
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCmdBindTransformFeedbackBuffersEXT
:: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()
cmdBindTransformFeedbackBuffersEXT :: forall io
. (MonadIO io)
=>
CommandBuffer
->
("firstBinding" ::: Word32)
->
("buffers" ::: Vector Buffer)
->
("offsets" ::: Vector DeviceSize)
->
("sizes" ::: Vector DeviceSize)
-> io ()
cmdBindTransformFeedbackBuffersEXT :: CommandBuffer
-> ("firstBinding" ::: Word32)
-> ("buffers" ::: Vector Buffer)
-> ("offsets" ::: Vector DeviceSize)
-> ("offsets" ::: Vector DeviceSize)
-> io ()
cmdBindTransformFeedbackBuffersEXT commandBuffer :: CommandBuffer
commandBuffer firstBinding :: "firstBinding" ::: Word32
firstBinding buffers :: "buffers" ::: Vector Buffer
buffers offsets :: "offsets" ::: Vector DeviceSize
offsets sizes :: "offsets" ::: Vector DeviceSize
sizes = IO () -> io ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ())
-> (ContT () IO () -> IO ()) -> ContT () IO () -> io ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT () IO () -> IO ()
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkCmdBindTransformFeedbackBuffersEXTPtr :: FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
vkCmdBindTransformFeedbackBuffersEXTPtr = DeviceCmds
-> FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
pVkCmdBindTransformFeedbackBuffersEXT (CommandBuffer -> DeviceCmds
deviceCmds (CommandBuffer
commandBuffer :: CommandBuffer))
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
vkCmdBindTransformFeedbackBuffersEXTPtr FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
-> FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkCmdBindTransformFeedbackBuffersEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCmdBindTransformFeedbackBuffersEXT' :: Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ()
vkCmdBindTransformFeedbackBuffersEXT' = FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
-> Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ()
mkVkCmdBindTransformFeedbackBuffersEXT FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
vkCmdBindTransformFeedbackBuffersEXTPtr
let pBuffersLength :: Int
pBuffersLength = ("buffers" ::: Vector Buffer) -> Int
forall a. Vector a -> Int
Data.Vector.length (("buffers" ::: Vector Buffer) -> Int)
-> ("buffers" ::: Vector Buffer) -> Int
forall a b. (a -> b) -> a -> b
$ ("buffers" ::: Vector Buffer
buffers)
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless ((("offsets" ::: Vector DeviceSize) -> Int
forall a. Vector a -> Int
Data.Vector.length (("offsets" ::: Vector DeviceSize) -> Int)
-> ("offsets" ::: Vector DeviceSize) -> Int
forall a b. (a -> b) -> a -> b
$ ("offsets" ::: Vector DeviceSize
offsets)) Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
pBuffersLength) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "pOffsets and pBuffers must have the same length" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let pSizesLength :: Int
pSizesLength = ("offsets" ::: Vector DeviceSize) -> Int
forall a. Vector a -> Int
Data.Vector.length (("offsets" ::: Vector DeviceSize) -> Int)
-> ("offsets" ::: Vector DeviceSize) -> Int
forall a b. (a -> b) -> a -> b
$ ("offsets" ::: Vector DeviceSize
sizes)
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (Int -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pSizesLength Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
pBuffersLength Bool -> Bool -> Bool
|| Int
pSizesLength Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== 0) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "pSizes and pBuffers must have the same length" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
"pBuffers" ::: Ptr Buffer
pPBuffers <- ((("pBuffers" ::: Ptr Buffer) -> IO ()) -> IO ())
-> ContT () IO ("pBuffers" ::: Ptr Buffer)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pBuffers" ::: Ptr Buffer) -> IO ()) -> IO ())
-> ContT () IO ("pBuffers" ::: Ptr Buffer))
-> ((("pBuffers" ::: Ptr Buffer) -> IO ()) -> IO ())
-> ContT () IO ("pBuffers" ::: Ptr Buffer)
forall a b. (a -> b) -> a -> b
$ Int -> Int -> (("pBuffers" ::: Ptr Buffer) -> IO ()) -> IO ()
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @Buffer ((("buffers" ::: Vector Buffer) -> Int
forall a. Vector a -> Int
Data.Vector.length ("buffers" ::: Vector Buffer
buffers)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 8) 8
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> Buffer -> IO ()) -> ("buffers" ::: Vector Buffer) -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: Buffer
e -> ("pBuffers" ::: Ptr Buffer) -> Buffer -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ("pBuffers" ::: Ptr Buffer
pPBuffers ("pBuffers" ::: Ptr Buffer) -> Int -> "pBuffers" ::: Ptr Buffer
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Buffer) (Buffer
e)) ("buffers" ::: Vector Buffer
buffers)
"pOffsets" ::: Ptr DeviceSize
pPOffsets <- ((("pOffsets" ::: Ptr DeviceSize) -> IO ()) -> IO ())
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pOffsets" ::: Ptr DeviceSize) -> IO ()) -> IO ())
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize))
-> ((("pOffsets" ::: Ptr DeviceSize) -> IO ()) -> IO ())
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall a b. (a -> b) -> a -> b
$ Int -> Int -> (("pOffsets" ::: Ptr DeviceSize) -> IO ()) -> IO ()
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @DeviceSize ((("offsets" ::: Vector DeviceSize) -> Int
forall a. Vector a -> Int
Data.Vector.length ("offsets" ::: Vector DeviceSize
offsets)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 8) 8
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> DeviceSize -> IO ())
-> ("offsets" ::: Vector DeviceSize) -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: DeviceSize
e -> ("pOffsets" ::: Ptr DeviceSize) -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ("pOffsets" ::: Ptr DeviceSize
pPOffsets ("pOffsets" ::: Ptr DeviceSize)
-> Int -> "pOffsets" ::: Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr DeviceSize) (DeviceSize
e)) ("offsets" ::: Vector DeviceSize
offsets)
"pOffsets" ::: Ptr DeviceSize
pSizes <- if ("offsets" ::: Vector DeviceSize) -> Bool
forall a. Vector a -> Bool
Data.Vector.null ("offsets" ::: Vector DeviceSize
sizes)
then ("pOffsets" ::: Ptr DeviceSize)
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall (f :: * -> *) a. Applicative f => a -> f a
pure "pOffsets" ::: Ptr DeviceSize
forall a. Ptr a
nullPtr
else do
"pOffsets" ::: Ptr DeviceSize
pPSizes <- ((("pOffsets" ::: Ptr DeviceSize) -> IO ()) -> IO ())
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pOffsets" ::: Ptr DeviceSize) -> IO ()) -> IO ())
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize))
-> ((("pOffsets" ::: Ptr DeviceSize) -> IO ()) -> IO ())
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall a b. (a -> b) -> a -> b
$ Int -> Int -> (("pOffsets" ::: Ptr DeviceSize) -> IO ()) -> IO ()
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @DeviceSize (((("offsets" ::: Vector DeviceSize) -> Int
forall a. Vector a -> Int
Data.Vector.length ("offsets" ::: Vector DeviceSize
sizes))) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 8) 8
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> DeviceSize -> IO ())
-> ("offsets" ::: Vector DeviceSize) -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: DeviceSize
e -> ("pOffsets" ::: Ptr DeviceSize) -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ("pOffsets" ::: Ptr DeviceSize
pPSizes ("pOffsets" ::: Ptr DeviceSize)
-> Int -> "pOffsets" ::: Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr DeviceSize) (DeviceSize
e)) (("offsets" ::: Vector DeviceSize
sizes))
("pOffsets" ::: Ptr DeviceSize)
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (("pOffsets" ::: Ptr DeviceSize)
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize))
-> ("pOffsets" ::: Ptr DeviceSize)
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall a b. (a -> b) -> a -> b
$ "pOffsets" ::: Ptr DeviceSize
pPSizes
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ String -> IO () -> IO ()
forall a. String -> IO a -> IO a
traceAroundEvent "vkCmdBindTransformFeedbackBuffersEXT" (Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ()
vkCmdBindTransformFeedbackBuffersEXT' (CommandBuffer -> Ptr CommandBuffer_T
commandBufferHandle (CommandBuffer
commandBuffer)) ("firstBinding" ::: Word32
firstBinding) ((Int -> "firstBinding" ::: Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pBuffersLength :: Word32)) ("pBuffers" ::: Ptr Buffer
pPBuffers) ("pOffsets" ::: Ptr DeviceSize
pPOffsets) "pOffsets" ::: Ptr DeviceSize
pSizes)
() -> ContT () IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure (() -> ContT () IO ()) -> () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ ()
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCmdBeginTransformFeedbackEXT
:: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()
cmdBeginTransformFeedbackEXT :: forall io
. (MonadIO io)
=>
CommandBuffer
->
("firstCounterBuffer" ::: Word32)
->
("counterBuffers" ::: Vector Buffer)
->
("counterBufferOffsets" ::: Vector DeviceSize)
-> io ()
cmdBeginTransformFeedbackEXT :: CommandBuffer
-> ("firstBinding" ::: Word32)
-> ("buffers" ::: Vector Buffer)
-> ("offsets" ::: Vector DeviceSize)
-> io ()
cmdBeginTransformFeedbackEXT commandBuffer :: CommandBuffer
commandBuffer firstCounterBuffer :: "firstBinding" ::: Word32
firstCounterBuffer counterBuffers :: "buffers" ::: Vector Buffer
counterBuffers counterBufferOffsets :: "offsets" ::: Vector DeviceSize
counterBufferOffsets = IO () -> io ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ())
-> (ContT () IO () -> IO ()) -> ContT () IO () -> io ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT () IO () -> IO ()
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkCmdBeginTransformFeedbackEXTPtr :: FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
vkCmdBeginTransformFeedbackEXTPtr = DeviceCmds
-> FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
pVkCmdBeginTransformFeedbackEXT (CommandBuffer -> DeviceCmds
deviceCmds (CommandBuffer
commandBuffer :: CommandBuffer))
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
vkCmdBeginTransformFeedbackEXTPtr FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
-> FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkCmdBeginTransformFeedbackEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCmdBeginTransformFeedbackEXT' :: Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ()
vkCmdBeginTransformFeedbackEXT' = FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
-> Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ()
mkVkCmdBeginTransformFeedbackEXT FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
vkCmdBeginTransformFeedbackEXTPtr
let pCounterBuffersLength :: Int
pCounterBuffersLength = ("buffers" ::: Vector Buffer) -> Int
forall a. Vector a -> Int
Data.Vector.length (("buffers" ::: Vector Buffer) -> Int)
-> ("buffers" ::: Vector Buffer) -> Int
forall a b. (a -> b) -> a -> b
$ ("buffers" ::: Vector Buffer
counterBuffers)
let pCounterBufferOffsetsLength :: Int
pCounterBufferOffsetsLength = ("offsets" ::: Vector DeviceSize) -> Int
forall a. Vector a -> Int
Data.Vector.length (("offsets" ::: Vector DeviceSize) -> Int)
-> ("offsets" ::: Vector DeviceSize) -> Int
forall a b. (a -> b) -> a -> b
$ ("offsets" ::: Vector DeviceSize
counterBufferOffsets)
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (Int -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pCounterBufferOffsetsLength Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
pCounterBuffersLength Bool -> Bool -> Bool
|| Int
pCounterBufferOffsetsLength Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== 0) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "pCounterBufferOffsets and pCounterBuffers must have the same length" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
"pBuffers" ::: Ptr Buffer
pPCounterBuffers <- ((("pBuffers" ::: Ptr Buffer) -> IO ()) -> IO ())
-> ContT () IO ("pBuffers" ::: Ptr Buffer)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pBuffers" ::: Ptr Buffer) -> IO ()) -> IO ())
-> ContT () IO ("pBuffers" ::: Ptr Buffer))
-> ((("pBuffers" ::: Ptr Buffer) -> IO ()) -> IO ())
-> ContT () IO ("pBuffers" ::: Ptr Buffer)
forall a b. (a -> b) -> a -> b
$ Int -> Int -> (("pBuffers" ::: Ptr Buffer) -> IO ()) -> IO ()
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @Buffer ((("buffers" ::: Vector Buffer) -> Int
forall a. Vector a -> Int
Data.Vector.length ("buffers" ::: Vector Buffer
counterBuffers)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 8) 8
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> Buffer -> IO ()) -> ("buffers" ::: Vector Buffer) -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: Buffer
e -> ("pBuffers" ::: Ptr Buffer) -> Buffer -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ("pBuffers" ::: Ptr Buffer
pPCounterBuffers ("pBuffers" ::: Ptr Buffer) -> Int -> "pBuffers" ::: Ptr Buffer
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Buffer) (Buffer
e)) ("buffers" ::: Vector Buffer
counterBuffers)
"pOffsets" ::: Ptr DeviceSize
pCounterBufferOffsets <- if ("offsets" ::: Vector DeviceSize) -> Bool
forall a. Vector a -> Bool
Data.Vector.null ("offsets" ::: Vector DeviceSize
counterBufferOffsets)
then ("pOffsets" ::: Ptr DeviceSize)
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall (f :: * -> *) a. Applicative f => a -> f a
pure "pOffsets" ::: Ptr DeviceSize
forall a. Ptr a
nullPtr
else do
"pOffsets" ::: Ptr DeviceSize
pPCounterBufferOffsets <- ((("pOffsets" ::: Ptr DeviceSize) -> IO ()) -> IO ())
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pOffsets" ::: Ptr DeviceSize) -> IO ()) -> IO ())
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize))
-> ((("pOffsets" ::: Ptr DeviceSize) -> IO ()) -> IO ())
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall a b. (a -> b) -> a -> b
$ Int -> Int -> (("pOffsets" ::: Ptr DeviceSize) -> IO ()) -> IO ()
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @DeviceSize (((("offsets" ::: Vector DeviceSize) -> Int
forall a. Vector a -> Int
Data.Vector.length ("offsets" ::: Vector DeviceSize
counterBufferOffsets))) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 8) 8
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> DeviceSize -> IO ())
-> ("offsets" ::: Vector DeviceSize) -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: DeviceSize
e -> ("pOffsets" ::: Ptr DeviceSize) -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ("pOffsets" ::: Ptr DeviceSize
pPCounterBufferOffsets ("pOffsets" ::: Ptr DeviceSize)
-> Int -> "pOffsets" ::: Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr DeviceSize) (DeviceSize
e)) (("offsets" ::: Vector DeviceSize
counterBufferOffsets))
("pOffsets" ::: Ptr DeviceSize)
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (("pOffsets" ::: Ptr DeviceSize)
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize))
-> ("pOffsets" ::: Ptr DeviceSize)
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall a b. (a -> b) -> a -> b
$ "pOffsets" ::: Ptr DeviceSize
pPCounterBufferOffsets
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ String -> IO () -> IO ()
forall a. String -> IO a -> IO a
traceAroundEvent "vkCmdBeginTransformFeedbackEXT" (Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ()
vkCmdBeginTransformFeedbackEXT' (CommandBuffer -> Ptr CommandBuffer_T
commandBufferHandle (CommandBuffer
commandBuffer)) ("firstBinding" ::: Word32
firstCounterBuffer) ((Int -> "firstBinding" ::: Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pCounterBuffersLength :: Word32)) ("pBuffers" ::: Ptr Buffer
pPCounterBuffers) "pOffsets" ::: Ptr DeviceSize
pCounterBufferOffsets)
() -> ContT () IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure (() -> ContT () IO ()) -> () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ ()
cmdUseTransformFeedbackEXT :: forall io r . MonadIO io => CommandBuffer -> Word32 -> Vector Buffer -> Vector DeviceSize -> io r -> io r
cmdUseTransformFeedbackEXT :: CommandBuffer
-> ("firstBinding" ::: Word32)
-> ("buffers" ::: Vector Buffer)
-> ("offsets" ::: Vector DeviceSize)
-> io r
-> io r
cmdUseTransformFeedbackEXT commandBuffer :: CommandBuffer
commandBuffer firstCounterBuffer :: "firstBinding" ::: Word32
firstCounterBuffer pCounterBuffers :: "buffers" ::: Vector Buffer
pCounterBuffers pCounterBufferOffsets :: "offsets" ::: Vector DeviceSize
pCounterBufferOffsets a :: io r
a =
(CommandBuffer
-> ("firstBinding" ::: Word32)
-> ("buffers" ::: Vector Buffer)
-> ("offsets" ::: Vector DeviceSize)
-> io ()
forall (io :: * -> *).
MonadIO io =>
CommandBuffer
-> ("firstBinding" ::: Word32)
-> ("buffers" ::: Vector Buffer)
-> ("offsets" ::: Vector DeviceSize)
-> io ()
cmdBeginTransformFeedbackEXT CommandBuffer
commandBuffer "firstBinding" ::: Word32
firstCounterBuffer "buffers" ::: Vector Buffer
pCounterBuffers "offsets" ::: Vector DeviceSize
pCounterBufferOffsets) io () -> io r -> io r
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> io r
a io r -> io () -> io r
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a
<* (CommandBuffer
-> ("firstBinding" ::: Word32)
-> ("buffers" ::: Vector Buffer)
-> ("offsets" ::: Vector DeviceSize)
-> io ()
forall (io :: * -> *).
MonadIO io =>
CommandBuffer
-> ("firstBinding" ::: Word32)
-> ("buffers" ::: Vector Buffer)
-> ("offsets" ::: Vector DeviceSize)
-> io ()
cmdEndTransformFeedbackEXT CommandBuffer
commandBuffer "firstBinding" ::: Word32
firstCounterBuffer "buffers" ::: Vector Buffer
pCounterBuffers "offsets" ::: Vector DeviceSize
pCounterBufferOffsets)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCmdEndTransformFeedbackEXT
:: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()
cmdEndTransformFeedbackEXT :: forall io
. (MonadIO io)
=>
CommandBuffer
->
("firstCounterBuffer" ::: Word32)
->
("counterBuffers" ::: Vector Buffer)
->
("counterBufferOffsets" ::: Vector DeviceSize)
-> io ()
cmdEndTransformFeedbackEXT :: CommandBuffer
-> ("firstBinding" ::: Word32)
-> ("buffers" ::: Vector Buffer)
-> ("offsets" ::: Vector DeviceSize)
-> io ()
cmdEndTransformFeedbackEXT commandBuffer :: CommandBuffer
commandBuffer firstCounterBuffer :: "firstBinding" ::: Word32
firstCounterBuffer counterBuffers :: "buffers" ::: Vector Buffer
counterBuffers counterBufferOffsets :: "offsets" ::: Vector DeviceSize
counterBufferOffsets = IO () -> io ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ())
-> (ContT () IO () -> IO ()) -> ContT () IO () -> io ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT () IO () -> IO ()
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkCmdEndTransformFeedbackEXTPtr :: FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
vkCmdEndTransformFeedbackEXTPtr = DeviceCmds
-> FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
pVkCmdEndTransformFeedbackEXT (CommandBuffer -> DeviceCmds
deviceCmds (CommandBuffer
commandBuffer :: CommandBuffer))
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
vkCmdEndTransformFeedbackEXTPtr FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
-> FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkCmdEndTransformFeedbackEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCmdEndTransformFeedbackEXT' :: Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ()
vkCmdEndTransformFeedbackEXT' = FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
-> Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ()
mkVkCmdEndTransformFeedbackEXT FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ())
vkCmdEndTransformFeedbackEXTPtr
let pCounterBuffersLength :: Int
pCounterBuffersLength = ("buffers" ::: Vector Buffer) -> Int
forall a. Vector a -> Int
Data.Vector.length (("buffers" ::: Vector Buffer) -> Int)
-> ("buffers" ::: Vector Buffer) -> Int
forall a b. (a -> b) -> a -> b
$ ("buffers" ::: Vector Buffer
counterBuffers)
let pCounterBufferOffsetsLength :: Int
pCounterBufferOffsetsLength = ("offsets" ::: Vector DeviceSize) -> Int
forall a. Vector a -> Int
Data.Vector.length (("offsets" ::: Vector DeviceSize) -> Int)
-> ("offsets" ::: Vector DeviceSize) -> Int
forall a b. (a -> b) -> a -> b
$ ("offsets" ::: Vector DeviceSize
counterBufferOffsets)
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (Int -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pCounterBufferOffsetsLength Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
pCounterBuffersLength Bool -> Bool -> Bool
|| Int
pCounterBufferOffsetsLength Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== 0) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "pCounterBufferOffsets and pCounterBuffers must have the same length" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
"pBuffers" ::: Ptr Buffer
pPCounterBuffers <- ((("pBuffers" ::: Ptr Buffer) -> IO ()) -> IO ())
-> ContT () IO ("pBuffers" ::: Ptr Buffer)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pBuffers" ::: Ptr Buffer) -> IO ()) -> IO ())
-> ContT () IO ("pBuffers" ::: Ptr Buffer))
-> ((("pBuffers" ::: Ptr Buffer) -> IO ()) -> IO ())
-> ContT () IO ("pBuffers" ::: Ptr Buffer)
forall a b. (a -> b) -> a -> b
$ Int -> Int -> (("pBuffers" ::: Ptr Buffer) -> IO ()) -> IO ()
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @Buffer ((("buffers" ::: Vector Buffer) -> Int
forall a. Vector a -> Int
Data.Vector.length ("buffers" ::: Vector Buffer
counterBuffers)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 8) 8
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> Buffer -> IO ()) -> ("buffers" ::: Vector Buffer) -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: Buffer
e -> ("pBuffers" ::: Ptr Buffer) -> Buffer -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ("pBuffers" ::: Ptr Buffer
pPCounterBuffers ("pBuffers" ::: Ptr Buffer) -> Int -> "pBuffers" ::: Ptr Buffer
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr Buffer) (Buffer
e)) ("buffers" ::: Vector Buffer
counterBuffers)
"pOffsets" ::: Ptr DeviceSize
pCounterBufferOffsets <- if ("offsets" ::: Vector DeviceSize) -> Bool
forall a. Vector a -> Bool
Data.Vector.null ("offsets" ::: Vector DeviceSize
counterBufferOffsets)
then ("pOffsets" ::: Ptr DeviceSize)
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall (f :: * -> *) a. Applicative f => a -> f a
pure "pOffsets" ::: Ptr DeviceSize
forall a. Ptr a
nullPtr
else do
"pOffsets" ::: Ptr DeviceSize
pPCounterBufferOffsets <- ((("pOffsets" ::: Ptr DeviceSize) -> IO ()) -> IO ())
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((("pOffsets" ::: Ptr DeviceSize) -> IO ()) -> IO ())
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize))
-> ((("pOffsets" ::: Ptr DeviceSize) -> IO ()) -> IO ())
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall a b. (a -> b) -> a -> b
$ Int -> Int -> (("pOffsets" ::: Ptr DeviceSize) -> IO ()) -> IO ()
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned @DeviceSize (((("offsets" ::: Vector DeviceSize) -> Int
forall a. Vector a -> Int
Data.Vector.length ("offsets" ::: Vector DeviceSize
counterBufferOffsets))) Int -> Int -> Int
forall a. Num a => a -> a -> a
* 8) 8
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> DeviceSize -> IO ())
-> ("offsets" ::: Vector DeviceSize) -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\i :: Int
i e :: DeviceSize
e -> ("pOffsets" ::: Ptr DeviceSize) -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ("pOffsets" ::: Ptr DeviceSize
pPCounterBufferOffsets ("pOffsets" ::: Ptr DeviceSize)
-> Int -> "pOffsets" ::: Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr DeviceSize) (DeviceSize
e)) (("offsets" ::: Vector DeviceSize
counterBufferOffsets))
("pOffsets" ::: Ptr DeviceSize)
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (("pOffsets" ::: Ptr DeviceSize)
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize))
-> ("pOffsets" ::: Ptr DeviceSize)
-> ContT () IO ("pOffsets" ::: Ptr DeviceSize)
forall a b. (a -> b) -> a -> b
$ "pOffsets" ::: Ptr DeviceSize
pPCounterBufferOffsets
IO () -> ContT () IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ String -> IO () -> IO ()
forall a. String -> IO a -> IO a
traceAroundEvent "vkCmdEndTransformFeedbackEXT" (Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("pBuffers" ::: Ptr Buffer)
-> ("pOffsets" ::: Ptr DeviceSize)
-> IO ()
vkCmdEndTransformFeedbackEXT' (CommandBuffer -> Ptr CommandBuffer_T
commandBufferHandle (CommandBuffer
commandBuffer)) ("firstBinding" ::: Word32
firstCounterBuffer) ((Int -> "firstBinding" ::: Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pCounterBuffersLength :: Word32)) ("pBuffers" ::: Ptr Buffer
pPCounterBuffers) "pOffsets" ::: Ptr DeviceSize
pCounterBufferOffsets)
() -> ContT () IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure (() -> ContT () IO ()) -> () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ ()
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCmdBeginQueryIndexedEXT
:: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> IO ()
cmdBeginQueryIndexedEXT :: forall io
. (MonadIO io)
=>
CommandBuffer
->
QueryPool
->
("query" ::: Word32)
->
QueryControlFlags
->
("index" ::: Word32)
-> io ()
cmdBeginQueryIndexedEXT :: CommandBuffer
-> QueryPool
-> ("firstBinding" ::: Word32)
-> QueryControlFlags
-> ("firstBinding" ::: Word32)
-> io ()
cmdBeginQueryIndexedEXT commandBuffer :: CommandBuffer
commandBuffer queryPool :: QueryPool
queryPool query :: "firstBinding" ::: Word32
query flags :: QueryControlFlags
flags index :: "firstBinding" ::: Word32
index = IO () -> io ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ()) -> IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkCmdBeginQueryIndexedEXTPtr :: FunPtr
(Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> QueryControlFlags
-> ("firstBinding" ::: Word32)
-> IO ())
vkCmdBeginQueryIndexedEXTPtr = DeviceCmds
-> FunPtr
(Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> QueryControlFlags
-> ("firstBinding" ::: Word32)
-> IO ())
pVkCmdBeginQueryIndexedEXT (CommandBuffer -> DeviceCmds
deviceCmds (CommandBuffer
commandBuffer :: CommandBuffer))
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> QueryControlFlags
-> ("firstBinding" ::: Word32)
-> IO ())
vkCmdBeginQueryIndexedEXTPtr FunPtr
(Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> QueryControlFlags
-> ("firstBinding" ::: Word32)
-> IO ())
-> FunPtr
(Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> QueryControlFlags
-> ("firstBinding" ::: Word32)
-> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> QueryControlFlags
-> ("firstBinding" ::: Word32)
-> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkCmdBeginQueryIndexedEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCmdBeginQueryIndexedEXT' :: Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> QueryControlFlags
-> ("firstBinding" ::: Word32)
-> IO ()
vkCmdBeginQueryIndexedEXT' = FunPtr
(Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> QueryControlFlags
-> ("firstBinding" ::: Word32)
-> IO ())
-> Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> QueryControlFlags
-> ("firstBinding" ::: Word32)
-> IO ()
mkVkCmdBeginQueryIndexedEXT FunPtr
(Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> QueryControlFlags
-> ("firstBinding" ::: Word32)
-> IO ())
vkCmdBeginQueryIndexedEXTPtr
String -> IO () -> IO ()
forall a. String -> IO a -> IO a
traceAroundEvent "vkCmdBeginQueryIndexedEXT" (Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> QueryControlFlags
-> ("firstBinding" ::: Word32)
-> IO ()
vkCmdBeginQueryIndexedEXT' (CommandBuffer -> Ptr CommandBuffer_T
commandBufferHandle (CommandBuffer
commandBuffer)) (QueryPool
queryPool) ("firstBinding" ::: Word32
query) (QueryControlFlags
flags) ("firstBinding" ::: Word32
index))
() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure (() -> IO ()) -> () -> IO ()
forall a b. (a -> b) -> a -> b
$ ()
cmdUseQueryIndexedEXT :: forall io r . MonadIO io => CommandBuffer -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> io r -> io r
cmdUseQueryIndexedEXT :: CommandBuffer
-> QueryPool
-> ("firstBinding" ::: Word32)
-> QueryControlFlags
-> ("firstBinding" ::: Word32)
-> io r
-> io r
cmdUseQueryIndexedEXT commandBuffer :: CommandBuffer
commandBuffer queryPool :: QueryPool
queryPool query :: "firstBinding" ::: Word32
query flags :: QueryControlFlags
flags index :: "firstBinding" ::: Word32
index a :: io r
a =
(CommandBuffer
-> QueryPool
-> ("firstBinding" ::: Word32)
-> QueryControlFlags
-> ("firstBinding" ::: Word32)
-> io ()
forall (io :: * -> *).
MonadIO io =>
CommandBuffer
-> QueryPool
-> ("firstBinding" ::: Word32)
-> QueryControlFlags
-> ("firstBinding" ::: Word32)
-> io ()
cmdBeginQueryIndexedEXT CommandBuffer
commandBuffer QueryPool
queryPool "firstBinding" ::: Word32
query QueryControlFlags
flags "firstBinding" ::: Word32
index) io () -> io r -> io r
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> io r
a io r -> io () -> io r
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a
<* (CommandBuffer
-> QueryPool
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> io ()
forall (io :: * -> *).
MonadIO io =>
CommandBuffer
-> QueryPool
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> io ()
cmdEndQueryIndexedEXT CommandBuffer
commandBuffer QueryPool
queryPool "firstBinding" ::: Word32
query "firstBinding" ::: Word32
index)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCmdEndQueryIndexedEXT
:: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()
cmdEndQueryIndexedEXT :: forall io
. (MonadIO io)
=>
CommandBuffer
->
QueryPool
->
("query" ::: Word32)
->
("index" ::: Word32)
-> io ()
cmdEndQueryIndexedEXT :: CommandBuffer
-> QueryPool
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> io ()
cmdEndQueryIndexedEXT commandBuffer :: CommandBuffer
commandBuffer queryPool :: QueryPool
queryPool query :: "firstBinding" ::: Word32
query index :: "firstBinding" ::: Word32
index = IO () -> io ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ()) -> IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkCmdEndQueryIndexedEXTPtr :: FunPtr
(Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ())
vkCmdEndQueryIndexedEXTPtr = DeviceCmds
-> FunPtr
(Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ())
pVkCmdEndQueryIndexedEXT (CommandBuffer -> DeviceCmds
deviceCmds (CommandBuffer
commandBuffer :: CommandBuffer))
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ())
vkCmdEndQueryIndexedEXTPtr FunPtr
(Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ())
-> FunPtr
(Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkCmdEndQueryIndexedEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCmdEndQueryIndexedEXT' :: Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ()
vkCmdEndQueryIndexedEXT' = FunPtr
(Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ())
-> Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ()
mkVkCmdEndQueryIndexedEXT FunPtr
(Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ())
vkCmdEndQueryIndexedEXTPtr
String -> IO () -> IO ()
forall a. String -> IO a -> IO a
traceAroundEvent "vkCmdEndQueryIndexedEXT" (Ptr CommandBuffer_T
-> QueryPool
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ()
vkCmdEndQueryIndexedEXT' (CommandBuffer -> Ptr CommandBuffer_T
commandBufferHandle (CommandBuffer
commandBuffer)) (QueryPool
queryPool) ("firstBinding" ::: Word32
query) ("firstBinding" ::: Word32
index))
() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure (() -> IO ()) -> () -> IO ()
forall a b. (a -> b) -> a -> b
$ ()
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCmdDrawIndirectByteCountEXT
:: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
cmdDrawIndirectByteCountEXT :: forall io
. (MonadIO io)
=>
CommandBuffer
->
("instanceCount" ::: Word32)
->
("firstInstance" ::: Word32)
->
("counterBuffer" ::: Buffer)
->
("counterBufferOffset" ::: DeviceSize)
->
("counterOffset" ::: Word32)
->
("vertexStride" ::: Word32)
-> io ()
cmdDrawIndirectByteCountEXT :: CommandBuffer
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> Buffer
-> DeviceSize
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> io ()
cmdDrawIndirectByteCountEXT commandBuffer :: CommandBuffer
commandBuffer instanceCount :: "firstBinding" ::: Word32
instanceCount firstInstance :: "firstBinding" ::: Word32
firstInstance counterBuffer :: Buffer
counterBuffer counterBufferOffset :: DeviceSize
counterBufferOffset counterOffset :: "firstBinding" ::: Word32
counterOffset vertexStride :: "firstBinding" ::: Word32
vertexStride = IO () -> io ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ()) -> IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
let vkCmdDrawIndirectByteCountEXTPtr :: FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> Buffer
-> DeviceSize
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ())
vkCmdDrawIndirectByteCountEXTPtr = DeviceCmds
-> FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> Buffer
-> DeviceSize
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ())
pVkCmdDrawIndirectByteCountEXT (CommandBuffer -> DeviceCmds
deviceCmds (CommandBuffer
commandBuffer :: CommandBuffer))
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> Buffer
-> DeviceSize
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ())
vkCmdDrawIndirectByteCountEXTPtr FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> Buffer
-> DeviceSize
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ())
-> FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> Buffer
-> DeviceSize
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> Buffer
-> DeviceSize
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkCmdDrawIndirectByteCountEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCmdDrawIndirectByteCountEXT' :: Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> Buffer
-> DeviceSize
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ()
vkCmdDrawIndirectByteCountEXT' = FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> Buffer
-> DeviceSize
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ())
-> Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> Buffer
-> DeviceSize
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ()
mkVkCmdDrawIndirectByteCountEXT FunPtr
(Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> Buffer
-> DeviceSize
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ())
vkCmdDrawIndirectByteCountEXTPtr
String -> IO () -> IO ()
forall a. String -> IO a -> IO a
traceAroundEvent "vkCmdDrawIndirectByteCountEXT" (Ptr CommandBuffer_T
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> Buffer
-> DeviceSize
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> IO ()
vkCmdDrawIndirectByteCountEXT' (CommandBuffer -> Ptr CommandBuffer_T
commandBufferHandle (CommandBuffer
commandBuffer)) ("firstBinding" ::: Word32
instanceCount) ("firstBinding" ::: Word32
firstInstance) (Buffer
counterBuffer) (DeviceSize
counterBufferOffset) ("firstBinding" ::: Word32
counterOffset) ("firstBinding" ::: Word32
vertexStride))
() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure (() -> IO ()) -> () -> IO ()
forall a b. (a -> b) -> a -> b
$ ()
data PhysicalDeviceTransformFeedbackFeaturesEXT = PhysicalDeviceTransformFeedbackFeaturesEXT
{
PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool
transformFeedback :: Bool
,
PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool
geometryStreams :: Bool
}
deriving (Typeable, PhysicalDeviceTransformFeedbackFeaturesEXT
-> PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool
(PhysicalDeviceTransformFeedbackFeaturesEXT
-> PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool)
-> (PhysicalDeviceTransformFeedbackFeaturesEXT
-> PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool)
-> Eq PhysicalDeviceTransformFeedbackFeaturesEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceTransformFeedbackFeaturesEXT
-> PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool
$c/= :: PhysicalDeviceTransformFeedbackFeaturesEXT
-> PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool
== :: PhysicalDeviceTransformFeedbackFeaturesEXT
-> PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool
$c== :: PhysicalDeviceTransformFeedbackFeaturesEXT
-> PhysicalDeviceTransformFeedbackFeaturesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceTransformFeedbackFeaturesEXT)
#endif
deriving instance Show PhysicalDeviceTransformFeedbackFeaturesEXT
instance ToCStruct PhysicalDeviceTransformFeedbackFeaturesEXT where
withCStruct :: PhysicalDeviceTransformFeedbackFeaturesEXT
-> (Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b) -> IO b
withCStruct x :: PhysicalDeviceTransformFeedbackFeaturesEXT
x f :: Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b
f = Int
-> Int
-> (Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 24 8 ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b) -> IO b)
-> (Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
p -> Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
-> PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
p PhysicalDeviceTransformFeedbackFeaturesEXT
x (Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b
f Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
p)
pokeCStruct :: Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
-> PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b -> IO b
pokeCStruct p :: Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
p PhysicalDeviceTransformFeedbackFeaturesEXT{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
transformFeedback))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
geometryStreams))
IO b
f
cStructSize :: Int
cStructSize = 24
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> IO b -> IO b
pokeZeroCStruct p :: Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 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 PhysicalDeviceTransformFeedbackFeaturesEXT
p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceTransformFeedbackFeaturesEXT where
peekCStruct :: Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
-> IO PhysicalDeviceTransformFeedbackFeaturesEXT
peekCStruct p :: Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
p = do
Bool32
transformFeedback <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Bool32))
Bool32
geometryStreams <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
p Ptr PhysicalDeviceTransformFeedbackFeaturesEXT -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Bool32))
PhysicalDeviceTransformFeedbackFeaturesEXT
-> IO PhysicalDeviceTransformFeedbackFeaturesEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceTransformFeedbackFeaturesEXT
-> IO PhysicalDeviceTransformFeedbackFeaturesEXT)
-> PhysicalDeviceTransformFeedbackFeaturesEXT
-> IO PhysicalDeviceTransformFeedbackFeaturesEXT
forall a b. (a -> b) -> a -> b
$ Bool -> Bool -> PhysicalDeviceTransformFeedbackFeaturesEXT
PhysicalDeviceTransformFeedbackFeaturesEXT
(Bool32 -> Bool
bool32ToBool Bool32
transformFeedback) (Bool32 -> Bool
bool32ToBool Bool32
geometryStreams)
instance Storable PhysicalDeviceTransformFeedbackFeaturesEXT where
sizeOf :: PhysicalDeviceTransformFeedbackFeaturesEXT -> Int
sizeOf ~PhysicalDeviceTransformFeedbackFeaturesEXT
_ = 24
alignment :: PhysicalDeviceTransformFeedbackFeaturesEXT -> Int
alignment ~PhysicalDeviceTransformFeedbackFeaturesEXT
_ = 8
peek :: Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
-> IO PhysicalDeviceTransformFeedbackFeaturesEXT
peek = Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
-> IO PhysicalDeviceTransformFeedbackFeaturesEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
-> PhysicalDeviceTransformFeedbackFeaturesEXT -> IO ()
poke ptr :: Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
ptr poked :: PhysicalDeviceTransformFeedbackFeaturesEXT
poked = Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
-> PhysicalDeviceTransformFeedbackFeaturesEXT -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceTransformFeedbackFeaturesEXT
ptr PhysicalDeviceTransformFeedbackFeaturesEXT
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceTransformFeedbackFeaturesEXT where
zero :: PhysicalDeviceTransformFeedbackFeaturesEXT
zero = Bool -> Bool -> PhysicalDeviceTransformFeedbackFeaturesEXT
PhysicalDeviceTransformFeedbackFeaturesEXT
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
data PhysicalDeviceTransformFeedbackPropertiesEXT = PhysicalDeviceTransformFeedbackPropertiesEXT
{
PhysicalDeviceTransformFeedbackPropertiesEXT
-> "firstBinding" ::: Word32
maxTransformFeedbackStreams :: Word32
,
PhysicalDeviceTransformFeedbackPropertiesEXT
-> "firstBinding" ::: Word32
maxTransformFeedbackBuffers :: Word32
,
PhysicalDeviceTransformFeedbackPropertiesEXT -> DeviceSize
maxTransformFeedbackBufferSize :: DeviceSize
,
PhysicalDeviceTransformFeedbackPropertiesEXT
-> "firstBinding" ::: Word32
maxTransformFeedbackStreamDataSize :: Word32
,
PhysicalDeviceTransformFeedbackPropertiesEXT
-> "firstBinding" ::: Word32
maxTransformFeedbackBufferDataSize :: Word32
,
PhysicalDeviceTransformFeedbackPropertiesEXT
-> "firstBinding" ::: Word32
maxTransformFeedbackBufferDataStride :: Word32
,
PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool
transformFeedbackQueries :: Bool
,
PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool
transformFeedbackStreamsLinesTriangles :: Bool
,
PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool
transformFeedbackRasterizationStreamSelect :: Bool
,
PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool
transformFeedbackDraw :: Bool
}
deriving (Typeable, PhysicalDeviceTransformFeedbackPropertiesEXT
-> PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool
(PhysicalDeviceTransformFeedbackPropertiesEXT
-> PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool)
-> (PhysicalDeviceTransformFeedbackPropertiesEXT
-> PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool)
-> Eq PhysicalDeviceTransformFeedbackPropertiesEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceTransformFeedbackPropertiesEXT
-> PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool
$c/= :: PhysicalDeviceTransformFeedbackPropertiesEXT
-> PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool
== :: PhysicalDeviceTransformFeedbackPropertiesEXT
-> PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool
$c== :: PhysicalDeviceTransformFeedbackPropertiesEXT
-> PhysicalDeviceTransformFeedbackPropertiesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceTransformFeedbackPropertiesEXT)
#endif
deriving instance Show PhysicalDeviceTransformFeedbackPropertiesEXT
instance ToCStruct PhysicalDeviceTransformFeedbackPropertiesEXT where
withCStruct :: PhysicalDeviceTransformFeedbackPropertiesEXT
-> (Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b)
-> IO b
withCStruct x :: PhysicalDeviceTransformFeedbackPropertiesEXT
x f :: Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b
f = Int
-> Int
-> (Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 64 8 ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b)
-> IO b)
-> (Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p -> Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p PhysicalDeviceTransformFeedbackPropertiesEXT
x (Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b
f Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p)
pokeCStruct :: Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b -> IO b
pokeCStruct p :: Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p PhysicalDeviceTransformFeedbackPropertiesEXT{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32)) ("firstBinding" ::: Word32
maxTransformFeedbackStreams)
Ptr ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32)) ("firstBinding" ::: Word32
maxTransformFeedbackBuffers)
("pOffsets" ::: Ptr DeviceSize) -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> "pOffsets" ::: Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr DeviceSize)) (DeviceSize
maxTransformFeedbackBufferSize)
Ptr ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Word32)) ("firstBinding" ::: Word32
maxTransformFeedbackStreamDataSize)
Ptr ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 36 :: Ptr Word32)) ("firstBinding" ::: Word32
maxTransformFeedbackBufferDataSize)
Ptr ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr Word32)) ("firstBinding" ::: Word32
maxTransformFeedbackBufferDataStride)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
transformFeedbackQueries))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
transformFeedbackStreamsLinesTriangles))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 52 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
transformFeedbackRasterizationStreamSelect))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
transformFeedbackDraw))
IO b
f
cStructSize :: Int
cStructSize = 64
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr PhysicalDeviceTransformFeedbackPropertiesEXT -> IO b -> IO b
pokeZeroCStruct p :: Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32)) ("firstBinding" ::: Word32
forall a. Zero a => a
zero)
Ptr ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32)) ("firstBinding" ::: Word32
forall a. Zero a => a
zero)
("pOffsets" ::: Ptr DeviceSize) -> DeviceSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> "pOffsets" ::: Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr DeviceSize)) (DeviceSize
forall a. Zero a => a
zero)
Ptr ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Word32)) ("firstBinding" ::: Word32
forall a. Zero a => a
zero)
Ptr ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 36 :: Ptr Word32)) ("firstBinding" ::: Word32
forall a. Zero a => a
zero)
Ptr ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr Word32)) ("firstBinding" ::: Word32
forall a. Zero a => a
zero)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 44 :: 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 PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: 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 PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 52 :: 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 PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceTransformFeedbackPropertiesEXT where
peekCStruct :: Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> IO PhysicalDeviceTransformFeedbackPropertiesEXT
peekCStruct p :: Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p = do
"firstBinding" ::: Word32
maxTransformFeedbackStreams <- Ptr ("firstBinding" ::: Word32) -> IO ("firstBinding" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32))
"firstBinding" ::: Word32
maxTransformFeedbackBuffers <- Ptr ("firstBinding" ::: Word32) -> IO ("firstBinding" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32))
DeviceSize
maxTransformFeedbackBufferSize <- ("pOffsets" ::: Ptr DeviceSize) -> IO DeviceSize
forall a. Storable a => Ptr a -> IO a
peek @DeviceSize ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> "pOffsets" ::: Ptr DeviceSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr DeviceSize))
"firstBinding" ::: Word32
maxTransformFeedbackStreamDataSize <- Ptr ("firstBinding" ::: Word32) -> IO ("firstBinding" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Word32))
"firstBinding" ::: Word32
maxTransformFeedbackBufferDataSize <- Ptr ("firstBinding" ::: Word32) -> IO ("firstBinding" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 36 :: Ptr Word32))
"firstBinding" ::: Word32
maxTransformFeedbackBufferDataStride <- Ptr ("firstBinding" ::: Word32) -> IO ("firstBinding" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr Word32))
Bool32
transformFeedbackQueries <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 44 :: Ptr Bool32))
Bool32
transformFeedbackStreamsLinesTriangles <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Bool32))
Bool32
transformFeedbackRasterizationStreamSelect <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 52 :: Ptr Bool32))
Bool32
transformFeedbackDraw <- Ptr Bool32 -> IO Bool32
forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
p Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr Bool32))
PhysicalDeviceTransformFeedbackPropertiesEXT
-> IO PhysicalDeviceTransformFeedbackPropertiesEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceTransformFeedbackPropertiesEXT
-> IO PhysicalDeviceTransformFeedbackPropertiesEXT)
-> PhysicalDeviceTransformFeedbackPropertiesEXT
-> IO PhysicalDeviceTransformFeedbackPropertiesEXT
forall a b. (a -> b) -> a -> b
$ ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> DeviceSize
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> Bool
-> Bool
-> Bool
-> Bool
-> PhysicalDeviceTransformFeedbackPropertiesEXT
PhysicalDeviceTransformFeedbackPropertiesEXT
"firstBinding" ::: Word32
maxTransformFeedbackStreams "firstBinding" ::: Word32
maxTransformFeedbackBuffers DeviceSize
maxTransformFeedbackBufferSize "firstBinding" ::: Word32
maxTransformFeedbackStreamDataSize "firstBinding" ::: Word32
maxTransformFeedbackBufferDataSize "firstBinding" ::: Word32
maxTransformFeedbackBufferDataStride (Bool32 -> Bool
bool32ToBool Bool32
transformFeedbackQueries) (Bool32 -> Bool
bool32ToBool Bool32
transformFeedbackStreamsLinesTriangles) (Bool32 -> Bool
bool32ToBool Bool32
transformFeedbackRasterizationStreamSelect) (Bool32 -> Bool
bool32ToBool Bool32
transformFeedbackDraw)
instance Storable PhysicalDeviceTransformFeedbackPropertiesEXT where
sizeOf :: PhysicalDeviceTransformFeedbackPropertiesEXT -> Int
sizeOf ~PhysicalDeviceTransformFeedbackPropertiesEXT
_ = 64
alignment :: PhysicalDeviceTransformFeedbackPropertiesEXT -> Int
alignment ~PhysicalDeviceTransformFeedbackPropertiesEXT
_ = 8
peek :: Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> IO PhysicalDeviceTransformFeedbackPropertiesEXT
peek = Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> IO PhysicalDeviceTransformFeedbackPropertiesEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> PhysicalDeviceTransformFeedbackPropertiesEXT -> IO ()
poke ptr :: Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
ptr poked :: PhysicalDeviceTransformFeedbackPropertiesEXT
poked = Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
-> PhysicalDeviceTransformFeedbackPropertiesEXT -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceTransformFeedbackPropertiesEXT
ptr PhysicalDeviceTransformFeedbackPropertiesEXT
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceTransformFeedbackPropertiesEXT where
zero :: PhysicalDeviceTransformFeedbackPropertiesEXT
zero = ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> DeviceSize
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32)
-> Bool
-> Bool
-> Bool
-> Bool
-> PhysicalDeviceTransformFeedbackPropertiesEXT
PhysicalDeviceTransformFeedbackPropertiesEXT
"firstBinding" ::: Word32
forall a. Zero a => a
zero
"firstBinding" ::: Word32
forall a. Zero a => a
zero
DeviceSize
forall a. Zero a => a
zero
"firstBinding" ::: Word32
forall a. Zero a => a
zero
"firstBinding" ::: Word32
forall a. Zero a => a
zero
"firstBinding" ::: Word32
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
Bool
forall a. Zero a => a
zero
data PipelineRasterizationStateStreamCreateInfoEXT = PipelineRasterizationStateStreamCreateInfoEXT
{
PipelineRasterizationStateStreamCreateInfoEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
flags :: PipelineRasterizationStateStreamCreateFlagsEXT
,
PipelineRasterizationStateStreamCreateInfoEXT
-> "firstBinding" ::: Word32
rasterizationStream :: Word32
}
deriving (Typeable, PipelineRasterizationStateStreamCreateInfoEXT
-> PipelineRasterizationStateStreamCreateInfoEXT -> Bool
(PipelineRasterizationStateStreamCreateInfoEXT
-> PipelineRasterizationStateStreamCreateInfoEXT -> Bool)
-> (PipelineRasterizationStateStreamCreateInfoEXT
-> PipelineRasterizationStateStreamCreateInfoEXT -> Bool)
-> Eq PipelineRasterizationStateStreamCreateInfoEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PipelineRasterizationStateStreamCreateInfoEXT
-> PipelineRasterizationStateStreamCreateInfoEXT -> Bool
$c/= :: PipelineRasterizationStateStreamCreateInfoEXT
-> PipelineRasterizationStateStreamCreateInfoEXT -> Bool
== :: PipelineRasterizationStateStreamCreateInfoEXT
-> PipelineRasterizationStateStreamCreateInfoEXT -> Bool
$c== :: PipelineRasterizationStateStreamCreateInfoEXT
-> PipelineRasterizationStateStreamCreateInfoEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PipelineRasterizationStateStreamCreateInfoEXT)
#endif
deriving instance Show PipelineRasterizationStateStreamCreateInfoEXT
instance ToCStruct PipelineRasterizationStateStreamCreateInfoEXT where
withCStruct :: PipelineRasterizationStateStreamCreateInfoEXT
-> (Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO b)
-> IO b
withCStruct x :: PipelineRasterizationStateStreamCreateInfoEXT
x f :: Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO b
f = Int
-> Int
-> (Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 24 8 ((Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO b)
-> IO b)
-> (Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \p :: Ptr PipelineRasterizationStateStreamCreateInfoEXT
p -> Ptr PipelineRasterizationStateStreamCreateInfoEXT
-> PipelineRasterizationStateStreamCreateInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelineRasterizationStateStreamCreateInfoEXT
p PipelineRasterizationStateStreamCreateInfoEXT
x (Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO b
f Ptr PipelineRasterizationStateStreamCreateInfoEXT
p)
pokeCStruct :: Ptr PipelineRasterizationStateStreamCreateInfoEXT
-> PipelineRasterizationStateStreamCreateInfoEXT -> IO b -> IO b
pokeCStruct p :: Ptr PipelineRasterizationStateStreamCreateInfoEXT
p PipelineRasterizationStateStreamCreateInfoEXT{..} f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationStateStreamCreateInfoEXT
p Ptr PipelineRasterizationStateStreamCreateInfoEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationStateStreamCreateInfoEXT
p Ptr PipelineRasterizationStateStreamCreateInfoEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationStateStreamCreateInfoEXT
p Ptr PipelineRasterizationStateStreamCreateInfoEXT
-> Int -> Ptr PipelineRasterizationStateStreamCreateFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT)) (PipelineRasterizationStateStreamCreateFlagsEXT
flags)
Ptr ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationStateStreamCreateInfoEXT
p Ptr PipelineRasterizationStateStreamCreateInfoEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32)) ("firstBinding" ::: Word32
rasterizationStream)
IO b
f
cStructSize :: Int
cStructSize = 24
cStructAlignment :: Int
cStructAlignment = 8
pokeZeroCStruct :: Ptr PipelineRasterizationStateStreamCreateInfoEXT -> IO b -> IO b
pokeZeroCStruct p :: Ptr PipelineRasterizationStateStreamCreateInfoEXT
p f :: IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationStateStreamCreateInfoEXT
p Ptr PipelineRasterizationStateStreamCreateInfoEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationStateStreamCreateInfoEXT
p Ptr PipelineRasterizationStateStreamCreateInfoEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr ("firstBinding" ::: Word32)
-> ("firstBinding" ::: Word32) -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationStateStreamCreateInfoEXT
p Ptr PipelineRasterizationStateStreamCreateInfoEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32)) ("firstBinding" ::: Word32
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PipelineRasterizationStateStreamCreateInfoEXT where
peekCStruct :: Ptr PipelineRasterizationStateStreamCreateInfoEXT
-> IO PipelineRasterizationStateStreamCreateInfoEXT
peekCStruct p :: Ptr PipelineRasterizationStateStreamCreateInfoEXT
p = do
PipelineRasterizationStateStreamCreateFlagsEXT
flags <- Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> IO PipelineRasterizationStateStreamCreateFlagsEXT
forall a. Storable a => Ptr a -> IO a
peek @PipelineRasterizationStateStreamCreateFlagsEXT ((Ptr PipelineRasterizationStateStreamCreateInfoEXT
p Ptr PipelineRasterizationStateStreamCreateInfoEXT
-> Int -> Ptr PipelineRasterizationStateStreamCreateFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT))
"firstBinding" ::: Word32
rasterizationStream <- Ptr ("firstBinding" ::: Word32) -> IO ("firstBinding" ::: Word32)
forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PipelineRasterizationStateStreamCreateInfoEXT
p Ptr PipelineRasterizationStateStreamCreateInfoEXT
-> Int -> Ptr ("firstBinding" ::: Word32)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32))
PipelineRasterizationStateStreamCreateInfoEXT
-> IO PipelineRasterizationStateStreamCreateInfoEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PipelineRasterizationStateStreamCreateInfoEXT
-> IO PipelineRasterizationStateStreamCreateInfoEXT)
-> PipelineRasterizationStateStreamCreateInfoEXT
-> IO PipelineRasterizationStateStreamCreateInfoEXT
forall a b. (a -> b) -> a -> b
$ PipelineRasterizationStateStreamCreateFlagsEXT
-> ("firstBinding" ::: Word32)
-> PipelineRasterizationStateStreamCreateInfoEXT
PipelineRasterizationStateStreamCreateInfoEXT
PipelineRasterizationStateStreamCreateFlagsEXT
flags "firstBinding" ::: Word32
rasterizationStream
instance Storable PipelineRasterizationStateStreamCreateInfoEXT where
sizeOf :: PipelineRasterizationStateStreamCreateInfoEXT -> Int
sizeOf ~PipelineRasterizationStateStreamCreateInfoEXT
_ = 24
alignment :: PipelineRasterizationStateStreamCreateInfoEXT -> Int
alignment ~PipelineRasterizationStateStreamCreateInfoEXT
_ = 8
peek :: Ptr PipelineRasterizationStateStreamCreateInfoEXT
-> IO PipelineRasterizationStateStreamCreateInfoEXT
peek = Ptr PipelineRasterizationStateStreamCreateInfoEXT
-> IO PipelineRasterizationStateStreamCreateInfoEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PipelineRasterizationStateStreamCreateInfoEXT
-> PipelineRasterizationStateStreamCreateInfoEXT -> IO ()
poke ptr :: Ptr PipelineRasterizationStateStreamCreateInfoEXT
ptr poked :: PipelineRasterizationStateStreamCreateInfoEXT
poked = Ptr PipelineRasterizationStateStreamCreateInfoEXT
-> PipelineRasterizationStateStreamCreateInfoEXT -> IO () -> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelineRasterizationStateStreamCreateInfoEXT
ptr PipelineRasterizationStateStreamCreateInfoEXT
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PipelineRasterizationStateStreamCreateInfoEXT where
zero :: PipelineRasterizationStateStreamCreateInfoEXT
zero = PipelineRasterizationStateStreamCreateFlagsEXT
-> ("firstBinding" ::: Word32)
-> PipelineRasterizationStateStreamCreateInfoEXT
PipelineRasterizationStateStreamCreateInfoEXT
PipelineRasterizationStateStreamCreateFlagsEXT
forall a. Zero a => a
zero
"firstBinding" ::: Word32
forall a. Zero a => a
zero
newtype PipelineRasterizationStateStreamCreateFlagsEXT = PipelineRasterizationStateStreamCreateFlagsEXT Flags
deriving newtype (PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
(PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool)
-> Eq PipelineRasterizationStateStreamCreateFlagsEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
$c/= :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
== :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
$c== :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
Eq, Eq PipelineRasterizationStateStreamCreateFlagsEXT
Eq PipelineRasterizationStateStreamCreateFlagsEXT =>
(PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Ordering)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT)
-> Ord PipelineRasterizationStateStreamCreateFlagsEXT
PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Ordering
PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
$cmin :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
max :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
$cmax :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
>= :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
$c>= :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
> :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
$c> :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
<= :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
$c<= :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
< :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
$c< :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
compare :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Ordering
$ccompare :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> Ordering
$cp1Ord :: Eq PipelineRasterizationStateStreamCreateFlagsEXT
Ord, Ptr b -> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT
Ptr b
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ()
Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> IO PipelineRasterizationStateStreamCreateFlagsEXT
Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT
Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ()
Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ()
PipelineRasterizationStateStreamCreateFlagsEXT -> Int
(PipelineRasterizationStateStreamCreateFlagsEXT -> Int)
-> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int)
-> (Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT)
-> (Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ())
-> (forall b.
Ptr b -> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT)
-> (forall b.
Ptr b
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ())
-> (Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> IO PipelineRasterizationStateStreamCreateFlagsEXT)
-> (Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ())
-> Storable PipelineRasterizationStateStreamCreateFlagsEXT
forall b.
Ptr b -> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT
forall b.
Ptr b
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
poke :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ()
$cpoke :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ()
peek :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> IO PipelineRasterizationStateStreamCreateFlagsEXT
$cpeek :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> IO PipelineRasterizationStateStreamCreateFlagsEXT
pokeByteOff :: Ptr b
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ()
$cpokeByteOff :: forall b.
Ptr b
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ()
peekByteOff :: Ptr b -> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT
$cpeekByteOff :: forall b.
Ptr b -> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT
pokeElemOff :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ()
$cpokeElemOff :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> IO ()
peekElemOff :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT
$cpeekElemOff :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> IO PipelineRasterizationStateStreamCreateFlagsEXT
alignment :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int
$calignment :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int
sizeOf :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int
$csizeOf :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int
Storable, PipelineRasterizationStateStreamCreateFlagsEXT
PipelineRasterizationStateStreamCreateFlagsEXT
-> Zero PipelineRasterizationStateStreamCreateFlagsEXT
forall a. a -> Zero a
zero :: PipelineRasterizationStateStreamCreateFlagsEXT
$czero :: PipelineRasterizationStateStreamCreateFlagsEXT
Zero, Eq PipelineRasterizationStateStreamCreateFlagsEXT
PipelineRasterizationStateStreamCreateFlagsEXT
Eq PipelineRasterizationStateStreamCreateFlagsEXT =>
(PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT)
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> (Int -> PipelineRasterizationStateStreamCreateFlagsEXT)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT)
-> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> Bool)
-> (PipelineRasterizationStateStreamCreateFlagsEXT -> Maybe Int)
-> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int)
-> (PipelineRasterizationStateStreamCreateFlagsEXT -> Bool)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT)
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT)
-> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int)
-> Bits PipelineRasterizationStateStreamCreateFlagsEXT
Int -> PipelineRasterizationStateStreamCreateFlagsEXT
PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
PipelineRasterizationStateStreamCreateFlagsEXT -> Int
PipelineRasterizationStateStreamCreateFlagsEXT -> Maybe Int
PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> Bool
PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
popCount :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int
$cpopCount :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int
rotateR :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
$crotateR :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
rotateL :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
$crotateL :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
unsafeShiftR :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
$cunsafeShiftR :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
shiftR :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
$cshiftR :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
unsafeShiftL :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
$cunsafeShiftL :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
shiftL :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
$cshiftL :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
isSigned :: PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
$cisSigned :: PipelineRasterizationStateStreamCreateFlagsEXT -> Bool
bitSize :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int
$cbitSize :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int
bitSizeMaybe :: PipelineRasterizationStateStreamCreateFlagsEXT -> Maybe Int
$cbitSizeMaybe :: PipelineRasterizationStateStreamCreateFlagsEXT -> Maybe Int
testBit :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> Bool
$ctestBit :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int -> Bool
complementBit :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
$ccomplementBit :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
clearBit :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
$cclearBit :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
setBit :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
$csetBit :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
bit :: Int -> PipelineRasterizationStateStreamCreateFlagsEXT
$cbit :: Int -> PipelineRasterizationStateStreamCreateFlagsEXT
zeroBits :: PipelineRasterizationStateStreamCreateFlagsEXT
$czeroBits :: PipelineRasterizationStateStreamCreateFlagsEXT
rotate :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
$crotate :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
shift :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
$cshift :: PipelineRasterizationStateStreamCreateFlagsEXT
-> Int -> PipelineRasterizationStateStreamCreateFlagsEXT
complement :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
$ccomplement :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
xor :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
$cxor :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
.|. :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
$c.|. :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
.&. :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
$c.&. :: PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> PipelineRasterizationStateStreamCreateFlagsEXT
$cp1Bits :: Eq PipelineRasterizationStateStreamCreateFlagsEXT
Bits, Bits PipelineRasterizationStateStreamCreateFlagsEXT
Bits PipelineRasterizationStateStreamCreateFlagsEXT =>
(PipelineRasterizationStateStreamCreateFlagsEXT -> Int)
-> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int)
-> (PipelineRasterizationStateStreamCreateFlagsEXT -> Int)
-> FiniteBits PipelineRasterizationStateStreamCreateFlagsEXT
PipelineRasterizationStateStreamCreateFlagsEXT -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
countTrailingZeros :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int
$ccountTrailingZeros :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int
countLeadingZeros :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int
$ccountLeadingZeros :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int
finiteBitSize :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int
$cfiniteBitSize :: PipelineRasterizationStateStreamCreateFlagsEXT -> Int
$cp1FiniteBits :: Bits PipelineRasterizationStateStreamCreateFlagsEXT
FiniteBits)
conNamePipelineRasterizationStateStreamCreateFlagsEXT :: String
conNamePipelineRasterizationStateStreamCreateFlagsEXT :: String
conNamePipelineRasterizationStateStreamCreateFlagsEXT = "PipelineRasterizationStateStreamCreateFlagsEXT"
enumPrefixPipelineRasterizationStateStreamCreateFlagsEXT :: String
enumPrefixPipelineRasterizationStateStreamCreateFlagsEXT :: String
enumPrefixPipelineRasterizationStateStreamCreateFlagsEXT = ""
showTablePipelineRasterizationStateStreamCreateFlagsEXT :: [(PipelineRasterizationStateStreamCreateFlagsEXT, String)]
showTablePipelineRasterizationStateStreamCreateFlagsEXT :: [(PipelineRasterizationStateStreamCreateFlagsEXT, String)]
showTablePipelineRasterizationStateStreamCreateFlagsEXT = []
instance Show PipelineRasterizationStateStreamCreateFlagsEXT where
showsPrec :: Int -> PipelineRasterizationStateStreamCreateFlagsEXT -> ShowS
showsPrec = String
-> [(PipelineRasterizationStateStreamCreateFlagsEXT, String)]
-> String
-> (PipelineRasterizationStateStreamCreateFlagsEXT
-> "firstBinding" ::: Word32)
-> (("firstBinding" ::: Word32) -> ShowS)
-> Int
-> PipelineRasterizationStateStreamCreateFlagsEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec String
enumPrefixPipelineRasterizationStateStreamCreateFlagsEXT
[(PipelineRasterizationStateStreamCreateFlagsEXT, String)]
showTablePipelineRasterizationStateStreamCreateFlagsEXT
String
conNamePipelineRasterizationStateStreamCreateFlagsEXT
(\(PipelineRasterizationStateStreamCreateFlagsEXT x :: "firstBinding" ::: Word32
x) -> "firstBinding" ::: Word32
x)
(\x :: "firstBinding" ::: Word32
x -> String -> ShowS
showString "0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ("firstBinding" ::: Word32) -> ShowS
forall a. (Integral a, Show a) => a -> ShowS
showHex "firstBinding" ::: Word32
x)
instance Read PipelineRasterizationStateStreamCreateFlagsEXT where
readPrec :: ReadPrec PipelineRasterizationStateStreamCreateFlagsEXT
readPrec = String
-> [(PipelineRasterizationStateStreamCreateFlagsEXT, String)]
-> String
-> (("firstBinding" ::: Word32)
-> PipelineRasterizationStateStreamCreateFlagsEXT)
-> ReadPrec PipelineRasterizationStateStreamCreateFlagsEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec String
enumPrefixPipelineRasterizationStateStreamCreateFlagsEXT
[(PipelineRasterizationStateStreamCreateFlagsEXT, String)]
showTablePipelineRasterizationStateStreamCreateFlagsEXT
String
conNamePipelineRasterizationStateStreamCreateFlagsEXT
("firstBinding" ::: Word32)
-> PipelineRasterizationStateStreamCreateFlagsEXT
PipelineRasterizationStateStreamCreateFlagsEXT
type EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1
pattern EXT_TRANSFORM_FEEDBACK_SPEC_VERSION :: forall a . Integral a => a
pattern $bEXT_TRANSFORM_FEEDBACK_SPEC_VERSION :: a
$mEXT_TRANSFORM_FEEDBACK_SPEC_VERSION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1
type EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback"
pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bEXT_TRANSFORM_FEEDBACK_EXTENSION_NAME :: a
$mEXT_TRANSFORM_FEEDBACK_EXTENSION_NAME :: forall r a.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback"