{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_device_generated_commands ( cmdExecuteGeneratedCommandsEXT
, cmdPreprocessGeneratedCommandsEXT
, getGeneratedCommandsMemoryRequirementsEXT
, createIndirectCommandsLayoutEXT
, withIndirectCommandsLayoutEXT
, destroyIndirectCommandsLayoutEXT
, createIndirectExecutionSetEXT
, withIndirectExecutionSetEXT
, destroyIndirectExecutionSetEXT
, updateIndirectExecutionSetPipelineEXT
, updateIndirectExecutionSetShaderEXT
, pattern PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT
, pattern ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT
, pattern ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT
, PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT(..)
, PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT(..)
, GeneratedCommandsPipelineInfoEXT(..)
, GeneratedCommandsShaderInfoEXT(..)
, GeneratedCommandsMemoryRequirementsInfoEXT(..)
, IndirectExecutionSetPipelineInfoEXT(..)
, IndirectExecutionSetShaderLayoutInfoEXT(..)
, IndirectExecutionSetShaderInfoEXT(..)
, IndirectExecutionSetCreateInfoEXT(..)
, GeneratedCommandsInfoEXT(..)
, WriteIndirectExecutionSetPipelineEXT(..)
, WriteIndirectExecutionSetShaderEXT(..)
, IndirectCommandsLayoutCreateInfoEXT(..)
, IndirectCommandsLayoutTokenEXT(..)
, DrawIndirectCountIndirectCommandEXT(..)
, IndirectCommandsVertexBufferTokenEXT(..)
, BindVertexBufferIndirectCommandEXT(..)
, IndirectCommandsIndexBufferTokenEXT(..)
, BindIndexBufferIndirectCommandEXT(..)
, IndirectCommandsPushConstantTokenEXT(..)
, IndirectCommandsExecutionSetTokenEXT(..)
, IndirectExecutionSetInfoEXT(..)
, IndirectCommandsTokenDataEXT(..)
, IndirectCommandsLayoutUsageFlagsEXT
, IndirectCommandsLayoutUsageFlagBitsEXT( INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT
, INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT
, ..
)
, IndirectExecutionSetInfoTypeEXT( INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT
, INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT
, ..
)
, IndirectCommandsInputModeFlagsEXT
, IndirectCommandsInputModeFlagBitsEXT( INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT
, INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT
, ..
)
, IndirectCommandsTokenTypeEXT( INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT
, ..
)
, EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION
, pattern EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION
, EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
, pattern EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
, IndirectCommandsLayoutEXT(..)
, IndirectExecutionSetEXT(..)
, ShaderEXT(..)
, BufferUsageFlagBits2KHR(..)
, BufferUsageFlags2KHR
, PipelineCreateFlagBits2KHR(..)
, PipelineCreateFlags2KHR
, ShaderCreateFlagBitsEXT(..)
, ShaderCreateFlagsEXT
) where
import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Exception.Base (bracket)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Data.Typeable (eqT)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Marshal.Alloc (callocBytes)
import Foreign.Marshal.Alloc (free)
import GHC.Base (when)
import GHC.IO (throwIO)
import GHC.Ptr (castPtr)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showString)
import GHC.Show (showsPrec)
import Numeric (showHex)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Control.Monad.Trans.Cont (runContT)
import Data.Vector (generateM)
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.String (IsString)
import Data.Type.Equality ((:~:)(Refl))
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 Data.Int (Int32)
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.CStruct.Utils (advancePtrBytes)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.CStruct.Extends (forgetExtensions)
import Vulkan.NamedType ((:::))
import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.FundamentalTypes (Bool32(..))
import Vulkan.CStruct.Extends (Chain)
import Vulkan.Core10.Handles (CommandBuffer)
import Vulkan.Core10.Handles (CommandBuffer(..))
import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
import Vulkan.Core10.Handles (CommandBuffer_T)
import Vulkan.Core10.Handles (DescriptorSetLayout)
import Vulkan.Core10.Handles (Device)
import Vulkan.Core10.Handles (Device(..))
import Vulkan.Core10.Handles (Device(Device))
import Vulkan.Core10.FundamentalTypes (DeviceAddress)
import Vulkan.Dynamic (DeviceCmds(pVkCmdExecuteGeneratedCommandsEXT))
import Vulkan.Dynamic (DeviceCmds(pVkCmdPreprocessGeneratedCommandsEXT))
import Vulkan.Dynamic (DeviceCmds(pVkCreateIndirectCommandsLayoutEXT))
import Vulkan.Dynamic (DeviceCmds(pVkCreateIndirectExecutionSetEXT))
import Vulkan.Dynamic (DeviceCmds(pVkDestroyIndirectCommandsLayoutEXT))
import Vulkan.Dynamic (DeviceCmds(pVkDestroyIndirectExecutionSetEXT))
import Vulkan.Dynamic (DeviceCmds(pVkGetGeneratedCommandsMemoryRequirementsEXT))
import Vulkan.Dynamic (DeviceCmds(pVkUpdateIndirectExecutionSetPipelineEXT))
import Vulkan.Dynamic (DeviceCmds(pVkUpdateIndirectExecutionSetShaderEXT))
import Vulkan.Core10.FundamentalTypes (DeviceSize)
import Vulkan.Core10.Handles (Device_T)
import Vulkan.CStruct.Extends (Extends)
import Vulkan.CStruct.Extends (Extendss)
import Vulkan.CStruct.Extends (Extensible(..))
import Vulkan.Core10.FundamentalTypes (Flags)
import Vulkan.Core10.Enums.IndexType (IndexType)
import Vulkan.Extensions.Handles (IndirectCommandsLayoutEXT)
import Vulkan.Extensions.Handles (IndirectCommandsLayoutEXT(..))
import Vulkan.Extensions.Handles (IndirectExecutionSetEXT)
import Vulkan.Extensions.Handles (IndirectExecutionSetEXT(..))
import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
import Vulkan.CStruct.Extends (PeekChain)
import Vulkan.CStruct.Extends (PeekChain(..))
import Vulkan.Core10.Handles (Pipeline)
import Vulkan.Core10.Handles (PipelineLayout)
import {-# SOURCE #-} Vulkan.Core10.PipelineLayout (PipelineLayoutCreateInfo)
import Vulkan.CStruct.Extends (PokeChain)
import Vulkan.CStruct.Extends (PokeChain(..))
import Vulkan.Core10.PipelineLayout (PushConstantRange)
import Vulkan.Core10.Enums.Result (Result)
import Vulkan.Core10.Enums.Result (Result(..))
import Vulkan.Extensions.Handles (ShaderEXT)
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
import Vulkan.CStruct.Extends (SomeStruct)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Exception (VulkanException(..))
import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_COMMAND_PREPROCESS_READ_BIT_NV))
import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV))
import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
import Vulkan.Extensions.VK_KHR_maintenance5 (BufferUsageFlagBits2KHR(..))
import Vulkan.Extensions.VK_KHR_maintenance5 (BufferUsageFlags2KHR)
import Vulkan.Extensions.Handles (IndirectCommandsLayoutEXT(..))
import Vulkan.Extensions.Handles (IndirectExecutionSetEXT(..))
import Vulkan.Extensions.VK_KHR_maintenance5 (PipelineCreateFlagBits2KHR(..))
import Vulkan.Extensions.VK_KHR_maintenance5 (PipelineCreateFlags2KHR)
import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagBitsEXT(..))
import Vulkan.Extensions.VK_EXT_shader_object (ShaderCreateFlagsEXT)
import Vulkan.Extensions.Handles (ShaderEXT(..))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCmdExecuteGeneratedCommandsEXT
:: FunPtr (Ptr CommandBuffer_T -> Bool32 -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> IO ()
cmdExecuteGeneratedCommandsEXT :: forall a io
. ( Extendss GeneratedCommandsInfoEXT a
, PokeChain a
, MonadIO io )
=>
CommandBuffer
->
("isPreprocessed" ::: Bool)
->
(GeneratedCommandsInfoEXT a)
-> io ()
cmdExecuteGeneratedCommandsEXT :: forall (a :: [*]) (io :: * -> *).
(Extendss GeneratedCommandsInfoEXT a, PokeChain a, MonadIO io) =>
CommandBuffer
-> ("isPreprocessed" ::: Bool)
-> GeneratedCommandsInfoEXT a
-> io ()
cmdExecuteGeneratedCommandsEXT CommandBuffer
commandBuffer
"isPreprocessed" ::: Bool
isPreprocessed
GeneratedCommandsInfoEXT a
generatedCommandsInfo = IO () -> io ()
forall a. IO a -> io a
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 vkCmdExecuteGeneratedCommandsEXTPtr :: FunPtr
(Ptr CommandBuffer_T
-> Bool32 -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> IO ())
vkCmdExecuteGeneratedCommandsEXTPtr = DeviceCmds
-> FunPtr
(Ptr CommandBuffer_T
-> Bool32 -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> IO ())
pVkCmdExecuteGeneratedCommandsEXT (case CommandBuffer
commandBuffer of CommandBuffer{DeviceCmds
deviceCmds :: DeviceCmds
$sel:deviceCmds:CommandBuffer :: CommandBuffer -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
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
$ ("isPreprocessed" ::: Bool) -> IO () -> IO ()
forall (f :: * -> *).
Applicative f =>
("isPreprocessed" ::: Bool) -> f () -> f ()
unless (FunPtr
(Ptr CommandBuffer_T
-> Bool32 -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> IO ())
vkCmdExecuteGeneratedCommandsEXTPtr FunPtr
(Ptr CommandBuffer_T
-> Bool32 -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> IO ())
-> FunPtr
(Ptr CommandBuffer_T
-> Bool32 -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> IO ())
-> "isPreprocessed" ::: Bool
forall a. Eq a => a -> a -> "isPreprocessed" ::: Bool
/= FunPtr
(Ptr CommandBuffer_T
-> Bool32 -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> 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 String
"" String
"The function pointer for vkCmdExecuteGeneratedCommandsEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCmdExecuteGeneratedCommandsEXT' :: Ptr CommandBuffer_T
-> Bool32 -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> IO ()
vkCmdExecuteGeneratedCommandsEXT' = FunPtr
(Ptr CommandBuffer_T
-> Bool32 -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> IO ())
-> Ptr CommandBuffer_T
-> Bool32
-> Ptr (SomeStruct GeneratedCommandsInfoEXT)
-> IO ()
mkVkCmdExecuteGeneratedCommandsEXT FunPtr
(Ptr CommandBuffer_T
-> Bool32 -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> IO ())
vkCmdExecuteGeneratedCommandsEXTPtr
Ptr (GeneratedCommandsInfoEXT a)
pGeneratedCommandsInfo <- ((Ptr (GeneratedCommandsInfoEXT a) -> IO ()) -> IO ())
-> ContT () IO (Ptr (GeneratedCommandsInfoEXT a))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (GeneratedCommandsInfoEXT a) -> IO ()) -> IO ())
-> ContT () IO (Ptr (GeneratedCommandsInfoEXT a)))
-> ((Ptr (GeneratedCommandsInfoEXT a) -> IO ()) -> IO ())
-> ContT () IO (Ptr (GeneratedCommandsInfoEXT a))
forall a b. (a -> b) -> a -> b
$ GeneratedCommandsInfoEXT a
-> (Ptr (GeneratedCommandsInfoEXT a) -> IO ()) -> IO ()
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
GeneratedCommandsInfoEXT a
-> (Ptr (GeneratedCommandsInfoEXT a) -> IO b) -> IO b
withCStruct (GeneratedCommandsInfoEXT a
generatedCommandsInfo)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
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 String
"vkCmdExecuteGeneratedCommandsEXT" (Ptr CommandBuffer_T
-> Bool32 -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> IO ()
vkCmdExecuteGeneratedCommandsEXT'
(CommandBuffer -> Ptr CommandBuffer_T
commandBufferHandle (CommandBuffer
commandBuffer))
(("isPreprocessed" ::: Bool) -> Bool32
boolToBool32 ("isPreprocessed" ::: Bool
isPreprocessed))
(Ptr (GeneratedCommandsInfoEXT a)
-> Ptr (SomeStruct GeneratedCommandsInfoEXT)
forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions Ptr (GeneratedCommandsInfoEXT a)
pGeneratedCommandsInfo))
() -> ContT () IO ()
forall a. a -> ContT () IO a
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" mkVkCmdPreprocessGeneratedCommandsEXT
:: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct GeneratedCommandsInfoEXT) -> Ptr CommandBuffer_T -> IO ()
cmdPreprocessGeneratedCommandsEXT :: forall a io
. ( Extendss GeneratedCommandsInfoEXT a
, PokeChain a
, MonadIO io )
=>
CommandBuffer
->
(GeneratedCommandsInfoEXT a)
->
("stateCommandBuffer" ::: CommandBuffer)
-> io ()
cmdPreprocessGeneratedCommandsEXT :: forall (a :: [*]) (io :: * -> *).
(Extendss GeneratedCommandsInfoEXT a, PokeChain a, MonadIO io) =>
CommandBuffer
-> GeneratedCommandsInfoEXT a -> CommandBuffer -> io ()
cmdPreprocessGeneratedCommandsEXT CommandBuffer
commandBuffer
GeneratedCommandsInfoEXT a
generatedCommandsInfo
CommandBuffer
stateCommandBuffer = IO () -> io ()
forall a. IO a -> io a
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 vkCmdPreprocessGeneratedCommandsEXTPtr :: FunPtr
(Ptr CommandBuffer_T
-> Ptr (SomeStruct GeneratedCommandsInfoEXT)
-> Ptr CommandBuffer_T
-> IO ())
vkCmdPreprocessGeneratedCommandsEXTPtr = DeviceCmds
-> FunPtr
(Ptr CommandBuffer_T
-> Ptr (SomeStruct GeneratedCommandsInfoEXT)
-> Ptr CommandBuffer_T
-> IO ())
pVkCmdPreprocessGeneratedCommandsEXT (case CommandBuffer
commandBuffer of CommandBuffer{DeviceCmds
$sel:deviceCmds:CommandBuffer :: CommandBuffer -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
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
$ ("isPreprocessed" ::: Bool) -> IO () -> IO ()
forall (f :: * -> *).
Applicative f =>
("isPreprocessed" ::: Bool) -> f () -> f ()
unless (FunPtr
(Ptr CommandBuffer_T
-> Ptr (SomeStruct GeneratedCommandsInfoEXT)
-> Ptr CommandBuffer_T
-> IO ())
vkCmdPreprocessGeneratedCommandsEXTPtr FunPtr
(Ptr CommandBuffer_T
-> Ptr (SomeStruct GeneratedCommandsInfoEXT)
-> Ptr CommandBuffer_T
-> IO ())
-> FunPtr
(Ptr CommandBuffer_T
-> Ptr (SomeStruct GeneratedCommandsInfoEXT)
-> Ptr CommandBuffer_T
-> IO ())
-> "isPreprocessed" ::: Bool
forall a. Eq a => a -> a -> "isPreprocessed" ::: Bool
/= FunPtr
(Ptr CommandBuffer_T
-> Ptr (SomeStruct GeneratedCommandsInfoEXT)
-> Ptr CommandBuffer_T
-> 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 String
"" String
"The function pointer for vkCmdPreprocessGeneratedCommandsEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCmdPreprocessGeneratedCommandsEXT' :: Ptr CommandBuffer_T
-> Ptr (SomeStruct GeneratedCommandsInfoEXT)
-> Ptr CommandBuffer_T
-> IO ()
vkCmdPreprocessGeneratedCommandsEXT' = FunPtr
(Ptr CommandBuffer_T
-> Ptr (SomeStruct GeneratedCommandsInfoEXT)
-> Ptr CommandBuffer_T
-> IO ())
-> Ptr CommandBuffer_T
-> Ptr (SomeStruct GeneratedCommandsInfoEXT)
-> Ptr CommandBuffer_T
-> IO ()
mkVkCmdPreprocessGeneratedCommandsEXT FunPtr
(Ptr CommandBuffer_T
-> Ptr (SomeStruct GeneratedCommandsInfoEXT)
-> Ptr CommandBuffer_T
-> IO ())
vkCmdPreprocessGeneratedCommandsEXTPtr
Ptr (GeneratedCommandsInfoEXT a)
pGeneratedCommandsInfo <- ((Ptr (GeneratedCommandsInfoEXT a) -> IO ()) -> IO ())
-> ContT () IO (Ptr (GeneratedCommandsInfoEXT a))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (GeneratedCommandsInfoEXT a) -> IO ()) -> IO ())
-> ContT () IO (Ptr (GeneratedCommandsInfoEXT a)))
-> ((Ptr (GeneratedCommandsInfoEXT a) -> IO ()) -> IO ())
-> ContT () IO (Ptr (GeneratedCommandsInfoEXT a))
forall a b. (a -> b) -> a -> b
$ GeneratedCommandsInfoEXT a
-> (Ptr (GeneratedCommandsInfoEXT a) -> IO ()) -> IO ()
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
GeneratedCommandsInfoEXT a
-> (Ptr (GeneratedCommandsInfoEXT a) -> IO b) -> IO b
withCStruct (GeneratedCommandsInfoEXT a
generatedCommandsInfo)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
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 String
"vkCmdPreprocessGeneratedCommandsEXT" (Ptr CommandBuffer_T
-> Ptr (SomeStruct GeneratedCommandsInfoEXT)
-> Ptr CommandBuffer_T
-> IO ()
vkCmdPreprocessGeneratedCommandsEXT'
(CommandBuffer -> Ptr CommandBuffer_T
commandBufferHandle (CommandBuffer
commandBuffer))
(Ptr (GeneratedCommandsInfoEXT a)
-> Ptr (SomeStruct GeneratedCommandsInfoEXT)
forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions Ptr (GeneratedCommandsInfoEXT a)
pGeneratedCommandsInfo)
(CommandBuffer -> Ptr CommandBuffer_T
commandBufferHandle (CommandBuffer
stateCommandBuffer)))
() -> ContT () IO ()
forall a. a -> ContT () IO a
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" mkVkGetGeneratedCommandsMemoryRequirementsEXT
:: FunPtr (Ptr Device_T -> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT) -> Ptr (SomeStruct MemoryRequirements2) -> IO ()) -> Ptr Device_T -> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT) -> Ptr (SomeStruct MemoryRequirements2) -> IO ()
getGeneratedCommandsMemoryRequirementsEXT :: forall a b io
. ( Extendss GeneratedCommandsMemoryRequirementsInfoEXT a
, PokeChain a
, Extendss MemoryRequirements2 b
, PokeChain b
, PeekChain b
, MonadIO io )
=>
Device
->
(GeneratedCommandsMemoryRequirementsInfoEXT a)
-> io (MemoryRequirements2 b)
getGeneratedCommandsMemoryRequirementsEXT :: forall (a :: [*]) (b :: [*]) (io :: * -> *).
(Extendss GeneratedCommandsMemoryRequirementsInfoEXT a,
PokeChain a, Extendss MemoryRequirements2 b, PokeChain b,
PeekChain b, MonadIO io) =>
Device
-> GeneratedCommandsMemoryRequirementsInfoEXT a
-> io (MemoryRequirements2 b)
getGeneratedCommandsMemoryRequirementsEXT Device
device GeneratedCommandsMemoryRequirementsInfoEXT a
info = IO (MemoryRequirements2 b) -> io (MemoryRequirements2 b)
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (MemoryRequirements2 b) -> io (MemoryRequirements2 b))
-> (ContT (MemoryRequirements2 b) IO (MemoryRequirements2 b)
-> IO (MemoryRequirements2 b))
-> ContT (MemoryRequirements2 b) IO (MemoryRequirements2 b)
-> io (MemoryRequirements2 b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT (MemoryRequirements2 b) IO (MemoryRequirements2 b)
-> IO (MemoryRequirements2 b)
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT (MemoryRequirements2 b) IO (MemoryRequirements2 b)
-> io (MemoryRequirements2 b))
-> ContT (MemoryRequirements2 b) IO (MemoryRequirements2 b)
-> io (MemoryRequirements2 b)
forall a b. (a -> b) -> a -> b
$ do
let vkGetGeneratedCommandsMemoryRequirementsEXTPtr :: FunPtr
(Ptr Device_T
-> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT)
-> Ptr (SomeStruct MemoryRequirements2)
-> IO ())
vkGetGeneratedCommandsMemoryRequirementsEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT)
-> Ptr (SomeStruct MemoryRequirements2)
-> IO ())
pVkGetGeneratedCommandsMemoryRequirementsEXT (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT (MemoryRequirements2 b) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (MemoryRequirements2 b) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (MemoryRequirements2 b) IO ())
-> IO () -> ContT (MemoryRequirements2 b) IO ()
forall a b. (a -> b) -> a -> b
$ ("isPreprocessed" ::: Bool) -> IO () -> IO ()
forall (f :: * -> *).
Applicative f =>
("isPreprocessed" ::: Bool) -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT)
-> Ptr (SomeStruct MemoryRequirements2)
-> IO ())
vkGetGeneratedCommandsMemoryRequirementsEXTPtr FunPtr
(Ptr Device_T
-> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT)
-> Ptr (SomeStruct MemoryRequirements2)
-> IO ())
-> FunPtr
(Ptr Device_T
-> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT)
-> Ptr (SomeStruct MemoryRequirements2)
-> IO ())
-> "isPreprocessed" ::: Bool
forall a. Eq a => a -> a -> "isPreprocessed" ::: Bool
/= FunPtr
(Ptr Device_T
-> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT)
-> Ptr (SomeStruct MemoryRequirements2)
-> 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 String
"" String
"The function pointer for vkGetGeneratedCommandsMemoryRequirementsEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetGeneratedCommandsMemoryRequirementsEXT' :: Ptr Device_T
-> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT)
-> Ptr (SomeStruct MemoryRequirements2)
-> IO ()
vkGetGeneratedCommandsMemoryRequirementsEXT' = FunPtr
(Ptr Device_T
-> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT)
-> Ptr (SomeStruct MemoryRequirements2)
-> IO ())
-> Ptr Device_T
-> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT)
-> Ptr (SomeStruct MemoryRequirements2)
-> IO ()
mkVkGetGeneratedCommandsMemoryRequirementsEXT FunPtr
(Ptr Device_T
-> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT)
-> Ptr (SomeStruct MemoryRequirements2)
-> IO ())
vkGetGeneratedCommandsMemoryRequirementsEXTPtr
Ptr (GeneratedCommandsMemoryRequirementsInfoEXT a)
pInfo <- ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT a)
-> IO (MemoryRequirements2 b))
-> IO (MemoryRequirements2 b))
-> ContT
(MemoryRequirements2 b)
IO
(Ptr (GeneratedCommandsMemoryRequirementsInfoEXT a))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT a)
-> IO (MemoryRequirements2 b))
-> IO (MemoryRequirements2 b))
-> ContT
(MemoryRequirements2 b)
IO
(Ptr (GeneratedCommandsMemoryRequirementsInfoEXT a)))
-> ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT a)
-> IO (MemoryRequirements2 b))
-> IO (MemoryRequirements2 b))
-> ContT
(MemoryRequirements2 b)
IO
(Ptr (GeneratedCommandsMemoryRequirementsInfoEXT a))
forall a b. (a -> b) -> a -> b
$ GeneratedCommandsMemoryRequirementsInfoEXT a
-> (Ptr (GeneratedCommandsMemoryRequirementsInfoEXT a)
-> IO (MemoryRequirements2 b))
-> IO (MemoryRequirements2 b)
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
GeneratedCommandsMemoryRequirementsInfoEXT a
-> (Ptr (GeneratedCommandsMemoryRequirementsInfoEXT a) -> IO b)
-> IO b
withCStruct (GeneratedCommandsMemoryRequirementsInfoEXT a
info)
Ptr (MemoryRequirements2 b)
pPMemoryRequirements <- ((Ptr (MemoryRequirements2 b) -> IO (MemoryRequirements2 b))
-> IO (MemoryRequirements2 b))
-> ContT (MemoryRequirements2 b) IO (Ptr (MemoryRequirements2 b))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @(MemoryRequirements2 _))
IO () -> ContT (MemoryRequirements2 b) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (MemoryRequirements2 b) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (MemoryRequirements2 b) IO ())
-> IO () -> ContT (MemoryRequirements2 b) IO ()
forall a b. (a -> b) -> a -> b
$ String -> IO () -> IO ()
forall a. String -> IO a -> IO a
traceAroundEvent String
"vkGetGeneratedCommandsMemoryRequirementsEXT" (Ptr Device_T
-> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT)
-> Ptr (SomeStruct MemoryRequirements2)
-> IO ()
vkGetGeneratedCommandsMemoryRequirementsEXT'
(Device -> Ptr Device_T
deviceHandle (Device
device))
(Ptr (GeneratedCommandsMemoryRequirementsInfoEXT a)
-> Ptr (SomeStruct GeneratedCommandsMemoryRequirementsInfoEXT)
forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions Ptr (GeneratedCommandsMemoryRequirementsInfoEXT a)
pInfo)
(Ptr (MemoryRequirements2 b) -> Ptr (SomeStruct MemoryRequirements2)
forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions (Ptr (MemoryRequirements2 b)
pPMemoryRequirements)))
MemoryRequirements2 b
pMemoryRequirements <- IO (MemoryRequirements2 b)
-> ContT (MemoryRequirements2 b) IO (MemoryRequirements2 b)
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (MemoryRequirements2 b) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO (MemoryRequirements2 b)
-> ContT (MemoryRequirements2 b) IO (MemoryRequirements2 b))
-> IO (MemoryRequirements2 b)
-> ContT (MemoryRequirements2 b) IO (MemoryRequirements2 b)
forall a b. (a -> b) -> a -> b
$ forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @(MemoryRequirements2 _) Ptr (MemoryRequirements2 b)
pPMemoryRequirements
MemoryRequirements2 b
-> ContT (MemoryRequirements2 b) IO (MemoryRequirements2 b)
forall a. a -> ContT (MemoryRequirements2 b) IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (MemoryRequirements2 b
-> ContT (MemoryRequirements2 b) IO (MemoryRequirements2 b))
-> MemoryRequirements2 b
-> ContT (MemoryRequirements2 b) IO (MemoryRequirements2 b)
forall a b. (a -> b) -> a -> b
$ (MemoryRequirements2 b
pMemoryRequirements)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCreateIndirectCommandsLayoutEXT
:: FunPtr (Ptr Device_T -> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT) -> Ptr AllocationCallbacks -> Ptr IndirectCommandsLayoutEXT -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT) -> Ptr AllocationCallbacks -> Ptr IndirectCommandsLayoutEXT -> IO Result
createIndirectCommandsLayoutEXT :: forall a io
. ( Extendss IndirectCommandsLayoutCreateInfoEXT a
, PokeChain a
, MonadIO io )
=>
Device
->
(IndirectCommandsLayoutCreateInfoEXT a)
->
("allocator" ::: Maybe AllocationCallbacks)
-> io (IndirectCommandsLayoutEXT)
createIndirectCommandsLayoutEXT :: forall (a :: [*]) (io :: * -> *).
(Extendss IndirectCommandsLayoutCreateInfoEXT a, PokeChain a,
MonadIO io) =>
Device
-> IndirectCommandsLayoutCreateInfoEXT a
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io IndirectCommandsLayoutEXT
createIndirectCommandsLayoutEXT Device
device
IndirectCommandsLayoutCreateInfoEXT a
createInfo
"allocator" ::: Maybe AllocationCallbacks
allocator = IO IndirectCommandsLayoutEXT -> io IndirectCommandsLayoutEXT
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO IndirectCommandsLayoutEXT -> io IndirectCommandsLayoutEXT)
-> (ContT IndirectCommandsLayoutEXT IO IndirectCommandsLayoutEXT
-> IO IndirectCommandsLayoutEXT)
-> ContT IndirectCommandsLayoutEXT IO IndirectCommandsLayoutEXT
-> io IndirectCommandsLayoutEXT
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT IndirectCommandsLayoutEXT IO IndirectCommandsLayoutEXT
-> IO IndirectCommandsLayoutEXT
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT IndirectCommandsLayoutEXT IO IndirectCommandsLayoutEXT
-> io IndirectCommandsLayoutEXT)
-> ContT IndirectCommandsLayoutEXT IO IndirectCommandsLayoutEXT
-> io IndirectCommandsLayoutEXT
forall a b. (a -> b) -> a -> b
$ do
let vkCreateIndirectCommandsLayoutEXTPtr :: FunPtr
(Ptr Device_T
-> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr IndirectCommandsLayoutEXT
-> IO Result)
vkCreateIndirectCommandsLayoutEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr IndirectCommandsLayoutEXT
-> IO Result)
pVkCreateIndirectCommandsLayoutEXT (case Device
device of Device{DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT IndirectCommandsLayoutEXT IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT IndirectCommandsLayoutEXT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT IndirectCommandsLayoutEXT IO ())
-> IO () -> ContT IndirectCommandsLayoutEXT IO ()
forall a b. (a -> b) -> a -> b
$ ("isPreprocessed" ::: Bool) -> IO () -> IO ()
forall (f :: * -> *).
Applicative f =>
("isPreprocessed" ::: Bool) -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr IndirectCommandsLayoutEXT
-> IO Result)
vkCreateIndirectCommandsLayoutEXTPtr FunPtr
(Ptr Device_T
-> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr IndirectCommandsLayoutEXT
-> IO Result)
-> FunPtr
(Ptr Device_T
-> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr IndirectCommandsLayoutEXT
-> IO Result)
-> "isPreprocessed" ::: Bool
forall a. Eq a => a -> a -> "isPreprocessed" ::: Bool
/= FunPtr
(Ptr Device_T
-> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr IndirectCommandsLayoutEXT
-> IO Result)
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 String
"" String
"The function pointer for vkCreateIndirectCommandsLayoutEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCreateIndirectCommandsLayoutEXT' :: Ptr Device_T
-> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr IndirectCommandsLayoutEXT
-> IO Result
vkCreateIndirectCommandsLayoutEXT' = FunPtr
(Ptr Device_T
-> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr IndirectCommandsLayoutEXT
-> IO Result)
-> Ptr Device_T
-> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr IndirectCommandsLayoutEXT
-> IO Result
mkVkCreateIndirectCommandsLayoutEXT FunPtr
(Ptr Device_T
-> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr IndirectCommandsLayoutEXT
-> IO Result)
vkCreateIndirectCommandsLayoutEXTPtr
Ptr (IndirectCommandsLayoutCreateInfoEXT a)
pCreateInfo <- ((Ptr (IndirectCommandsLayoutCreateInfoEXT a)
-> IO IndirectCommandsLayoutEXT)
-> IO IndirectCommandsLayoutEXT)
-> ContT
IndirectCommandsLayoutEXT
IO
(Ptr (IndirectCommandsLayoutCreateInfoEXT a))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (IndirectCommandsLayoutCreateInfoEXT a)
-> IO IndirectCommandsLayoutEXT)
-> IO IndirectCommandsLayoutEXT)
-> ContT
IndirectCommandsLayoutEXT
IO
(Ptr (IndirectCommandsLayoutCreateInfoEXT a)))
-> ((Ptr (IndirectCommandsLayoutCreateInfoEXT a)
-> IO IndirectCommandsLayoutEXT)
-> IO IndirectCommandsLayoutEXT)
-> ContT
IndirectCommandsLayoutEXT
IO
(Ptr (IndirectCommandsLayoutCreateInfoEXT a))
forall a b. (a -> b) -> a -> b
$ IndirectCommandsLayoutCreateInfoEXT a
-> (Ptr (IndirectCommandsLayoutCreateInfoEXT a)
-> IO IndirectCommandsLayoutEXT)
-> IO IndirectCommandsLayoutEXT
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
IndirectCommandsLayoutCreateInfoEXT a
-> (Ptr (IndirectCommandsLayoutCreateInfoEXT a) -> IO b) -> IO b
withCStruct (IndirectCommandsLayoutCreateInfoEXT a
createInfo)
Ptr AllocationCallbacks
pAllocator <- case ("allocator" ::: Maybe AllocationCallbacks
allocator) of
"allocator" ::: Maybe AllocationCallbacks
Nothing -> Ptr AllocationCallbacks
-> ContT IndirectCommandsLayoutEXT IO (Ptr AllocationCallbacks)
forall a. a -> ContT IndirectCommandsLayoutEXT IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr AllocationCallbacks
forall a. Ptr a
nullPtr
Just AllocationCallbacks
j -> ((Ptr AllocationCallbacks -> IO IndirectCommandsLayoutEXT)
-> IO IndirectCommandsLayoutEXT)
-> ContT IndirectCommandsLayoutEXT IO (Ptr AllocationCallbacks)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr AllocationCallbacks -> IO IndirectCommandsLayoutEXT)
-> IO IndirectCommandsLayoutEXT)
-> ContT IndirectCommandsLayoutEXT IO (Ptr AllocationCallbacks))
-> ((Ptr AllocationCallbacks -> IO IndirectCommandsLayoutEXT)
-> IO IndirectCommandsLayoutEXT)
-> ContT IndirectCommandsLayoutEXT IO (Ptr AllocationCallbacks)
forall a b. (a -> b) -> a -> b
$ AllocationCallbacks
-> (Ptr AllocationCallbacks -> IO IndirectCommandsLayoutEXT)
-> IO IndirectCommandsLayoutEXT
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
AllocationCallbacks -> (Ptr AllocationCallbacks -> IO b) -> IO b
withCStruct (AllocationCallbacks
j)
Ptr IndirectCommandsLayoutEXT
pPIndirectCommandsLayout <- ((Ptr IndirectCommandsLayoutEXT -> IO IndirectCommandsLayoutEXT)
-> IO IndirectCommandsLayoutEXT)
-> ContT
IndirectCommandsLayoutEXT IO (Ptr IndirectCommandsLayoutEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr IndirectCommandsLayoutEXT -> IO IndirectCommandsLayoutEXT)
-> IO IndirectCommandsLayoutEXT)
-> ContT
IndirectCommandsLayoutEXT IO (Ptr IndirectCommandsLayoutEXT))
-> ((Ptr IndirectCommandsLayoutEXT -> IO IndirectCommandsLayoutEXT)
-> IO IndirectCommandsLayoutEXT)
-> ContT
IndirectCommandsLayoutEXT IO (Ptr IndirectCommandsLayoutEXT)
forall a b. (a -> b) -> a -> b
$ IO (Ptr IndirectCommandsLayoutEXT)
-> (Ptr IndirectCommandsLayoutEXT -> IO ())
-> (Ptr IndirectCommandsLayoutEXT -> IO IndirectCommandsLayoutEXT)
-> IO IndirectCommandsLayoutEXT
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (forall a. Int -> IO (Ptr a)
callocBytes @IndirectCommandsLayoutEXT Int
8) Ptr IndirectCommandsLayoutEXT -> IO ()
forall a. Ptr a -> IO ()
free
Result
r <- IO Result -> ContT IndirectCommandsLayoutEXT IO Result
forall (m :: * -> *) a.
Monad m =>
m a -> ContT IndirectCommandsLayoutEXT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result -> ContT IndirectCommandsLayoutEXT IO Result)
-> IO Result -> ContT IndirectCommandsLayoutEXT IO Result
forall a b. (a -> b) -> a -> b
$ String -> IO Result -> IO Result
forall a. String -> IO a -> IO a
traceAroundEvent String
"vkCreateIndirectCommandsLayoutEXT" (Ptr Device_T
-> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr IndirectCommandsLayoutEXT
-> IO Result
vkCreateIndirectCommandsLayoutEXT'
(Device -> Ptr Device_T
deviceHandle (Device
device))
(Ptr (IndirectCommandsLayoutCreateInfoEXT a)
-> Ptr (SomeStruct IndirectCommandsLayoutCreateInfoEXT)
forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions Ptr (IndirectCommandsLayoutCreateInfoEXT a)
pCreateInfo)
Ptr AllocationCallbacks
pAllocator
(Ptr IndirectCommandsLayoutEXT
pPIndirectCommandsLayout))
IO () -> ContT IndirectCommandsLayoutEXT IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT IndirectCommandsLayoutEXT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT IndirectCommandsLayoutEXT IO ())
-> IO () -> ContT IndirectCommandsLayoutEXT IO ()
forall a b. (a -> b) -> a -> b
$ ("isPreprocessed" ::: Bool) -> IO () -> IO ()
forall (f :: * -> *).
Applicative f =>
("isPreprocessed" ::: Bool) -> f () -> f ()
when (Result
r Result -> Result -> "isPreprocessed" ::: Bool
forall a. Ord a => a -> a -> "isPreprocessed" ::: Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
IndirectCommandsLayoutEXT
pIndirectCommandsLayout <- IO IndirectCommandsLayoutEXT
-> ContT IndirectCommandsLayoutEXT IO IndirectCommandsLayoutEXT
forall (m :: * -> *) a.
Monad m =>
m a -> ContT IndirectCommandsLayoutEXT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO IndirectCommandsLayoutEXT
-> ContT IndirectCommandsLayoutEXT IO IndirectCommandsLayoutEXT)
-> IO IndirectCommandsLayoutEXT
-> ContT IndirectCommandsLayoutEXT IO IndirectCommandsLayoutEXT
forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> IO a
peek @IndirectCommandsLayoutEXT Ptr IndirectCommandsLayoutEXT
pPIndirectCommandsLayout
IndirectCommandsLayoutEXT
-> ContT IndirectCommandsLayoutEXT IO IndirectCommandsLayoutEXT
forall a. a -> ContT IndirectCommandsLayoutEXT IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (IndirectCommandsLayoutEXT
-> ContT IndirectCommandsLayoutEXT IO IndirectCommandsLayoutEXT)
-> IndirectCommandsLayoutEXT
-> ContT IndirectCommandsLayoutEXT IO IndirectCommandsLayoutEXT
forall a b. (a -> b) -> a -> b
$ (IndirectCommandsLayoutEXT
pIndirectCommandsLayout)
withIndirectCommandsLayoutEXT :: forall a io r . (Extendss IndirectCommandsLayoutCreateInfoEXT a, PokeChain a, MonadIO io) => Device -> IndirectCommandsLayoutCreateInfoEXT a -> Maybe AllocationCallbacks -> (io IndirectCommandsLayoutEXT -> (IndirectCommandsLayoutEXT -> io ()) -> r) -> r
withIndirectCommandsLayoutEXT :: forall (a :: [*]) (io :: * -> *) r.
(Extendss IndirectCommandsLayoutCreateInfoEXT a, PokeChain a,
MonadIO io) =>
Device
-> IndirectCommandsLayoutCreateInfoEXT a
-> ("allocator" ::: Maybe AllocationCallbacks)
-> (io IndirectCommandsLayoutEXT
-> (IndirectCommandsLayoutEXT -> io ()) -> r)
-> r
withIndirectCommandsLayoutEXT Device
device IndirectCommandsLayoutCreateInfoEXT a
pCreateInfo "allocator" ::: Maybe AllocationCallbacks
pAllocator io IndirectCommandsLayoutEXT
-> (IndirectCommandsLayoutEXT -> io ()) -> r
b =
io IndirectCommandsLayoutEXT
-> (IndirectCommandsLayoutEXT -> io ()) -> r
b (Device
-> IndirectCommandsLayoutCreateInfoEXT a
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io IndirectCommandsLayoutEXT
forall (a :: [*]) (io :: * -> *).
(Extendss IndirectCommandsLayoutCreateInfoEXT a, PokeChain a,
MonadIO io) =>
Device
-> IndirectCommandsLayoutCreateInfoEXT a
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io IndirectCommandsLayoutEXT
createIndirectCommandsLayoutEXT Device
device IndirectCommandsLayoutCreateInfoEXT a
pCreateInfo "allocator" ::: Maybe AllocationCallbacks
pAllocator)
(\(IndirectCommandsLayoutEXT
o0) -> Device
-> IndirectCommandsLayoutEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
forall (io :: * -> *).
MonadIO io =>
Device
-> IndirectCommandsLayoutEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroyIndirectCommandsLayoutEXT Device
device IndirectCommandsLayoutEXT
o0 "allocator" ::: Maybe AllocationCallbacks
pAllocator)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkDestroyIndirectCommandsLayoutEXT
:: FunPtr (Ptr Device_T -> IndirectCommandsLayoutEXT -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> IndirectCommandsLayoutEXT -> Ptr AllocationCallbacks -> IO ()
destroyIndirectCommandsLayoutEXT :: forall io
. (MonadIO io)
=>
Device
->
IndirectCommandsLayoutEXT
->
("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroyIndirectCommandsLayoutEXT :: forall (io :: * -> *).
MonadIO io =>
Device
-> IndirectCommandsLayoutEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroyIndirectCommandsLayoutEXT Device
device
IndirectCommandsLayoutEXT
indirectCommandsLayout
"allocator" ::: Maybe AllocationCallbacks
allocator = IO () -> io ()
forall a. IO a -> io a
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 vkDestroyIndirectCommandsLayoutEXTPtr :: FunPtr
(Ptr Device_T
-> IndirectCommandsLayoutEXT -> Ptr AllocationCallbacks -> IO ())
vkDestroyIndirectCommandsLayoutEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> IndirectCommandsLayoutEXT -> Ptr AllocationCallbacks -> IO ())
pVkDestroyIndirectCommandsLayoutEXT (case Device
device of Device{DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
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
$ ("isPreprocessed" ::: Bool) -> IO () -> IO ()
forall (f :: * -> *).
Applicative f =>
("isPreprocessed" ::: Bool) -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> IndirectCommandsLayoutEXT -> Ptr AllocationCallbacks -> IO ())
vkDestroyIndirectCommandsLayoutEXTPtr FunPtr
(Ptr Device_T
-> IndirectCommandsLayoutEXT -> Ptr AllocationCallbacks -> IO ())
-> FunPtr
(Ptr Device_T
-> IndirectCommandsLayoutEXT -> Ptr AllocationCallbacks -> IO ())
-> "isPreprocessed" ::: Bool
forall a. Eq a => a -> a -> "isPreprocessed" ::: Bool
/= FunPtr
(Ptr Device_T
-> IndirectCommandsLayoutEXT -> Ptr AllocationCallbacks -> 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 String
"" String
"The function pointer for vkDestroyIndirectCommandsLayoutEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkDestroyIndirectCommandsLayoutEXT' :: Ptr Device_T
-> IndirectCommandsLayoutEXT -> Ptr AllocationCallbacks -> IO ()
vkDestroyIndirectCommandsLayoutEXT' = FunPtr
(Ptr Device_T
-> IndirectCommandsLayoutEXT -> Ptr AllocationCallbacks -> IO ())
-> Ptr Device_T
-> IndirectCommandsLayoutEXT
-> Ptr AllocationCallbacks
-> IO ()
mkVkDestroyIndirectCommandsLayoutEXT FunPtr
(Ptr Device_T
-> IndirectCommandsLayoutEXT -> Ptr AllocationCallbacks -> IO ())
vkDestroyIndirectCommandsLayoutEXTPtr
Ptr AllocationCallbacks
pAllocator <- case ("allocator" ::: Maybe AllocationCallbacks
allocator) of
"allocator" ::: Maybe AllocationCallbacks
Nothing -> Ptr AllocationCallbacks -> ContT () IO (Ptr AllocationCallbacks)
forall a. a -> ContT () IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr AllocationCallbacks
forall a. Ptr a
nullPtr
Just AllocationCallbacks
j -> ((Ptr AllocationCallbacks -> IO ()) -> IO ())
-> ContT () IO (Ptr AllocationCallbacks)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr AllocationCallbacks -> IO ()) -> IO ())
-> ContT () IO (Ptr AllocationCallbacks))
-> ((Ptr AllocationCallbacks -> IO ()) -> IO ())
-> ContT () IO (Ptr AllocationCallbacks)
forall a b. (a -> b) -> a -> b
$ AllocationCallbacks -> (Ptr AllocationCallbacks -> IO ()) -> IO ()
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
AllocationCallbacks -> (Ptr AllocationCallbacks -> IO b) -> IO b
withCStruct (AllocationCallbacks
j)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
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 String
"vkDestroyIndirectCommandsLayoutEXT" (Ptr Device_T
-> IndirectCommandsLayoutEXT -> Ptr AllocationCallbacks -> IO ()
vkDestroyIndirectCommandsLayoutEXT'
(Device -> Ptr Device_T
deviceHandle (Device
device))
(IndirectCommandsLayoutEXT
indirectCommandsLayout)
Ptr AllocationCallbacks
pAllocator)
() -> ContT () IO ()
forall a. a -> ContT () IO a
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" mkVkCreateIndirectExecutionSetEXT
:: FunPtr (Ptr Device_T -> Ptr IndirectExecutionSetCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr IndirectExecutionSetEXT -> IO Result) -> Ptr Device_T -> Ptr IndirectExecutionSetCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr IndirectExecutionSetEXT -> IO Result
createIndirectExecutionSetEXT :: forall io
. (MonadIO io)
=>
Device
->
IndirectExecutionSetCreateInfoEXT
->
("allocator" ::: Maybe AllocationCallbacks)
-> io (IndirectExecutionSetEXT)
createIndirectExecutionSetEXT :: forall (io :: * -> *).
MonadIO io =>
Device
-> IndirectExecutionSetCreateInfoEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io IndirectExecutionSetEXT
createIndirectExecutionSetEXT Device
device
IndirectExecutionSetCreateInfoEXT
createInfo
"allocator" ::: Maybe AllocationCallbacks
allocator = IO IndirectExecutionSetEXT -> io IndirectExecutionSetEXT
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO IndirectExecutionSetEXT -> io IndirectExecutionSetEXT)
-> (ContT IndirectExecutionSetEXT IO IndirectExecutionSetEXT
-> IO IndirectExecutionSetEXT)
-> ContT IndirectExecutionSetEXT IO IndirectExecutionSetEXT
-> io IndirectExecutionSetEXT
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT IndirectExecutionSetEXT IO IndirectExecutionSetEXT
-> IO IndirectExecutionSetEXT
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT IndirectExecutionSetEXT IO IndirectExecutionSetEXT
-> io IndirectExecutionSetEXT)
-> ContT IndirectExecutionSetEXT IO IndirectExecutionSetEXT
-> io IndirectExecutionSetEXT
forall a b. (a -> b) -> a -> b
$ do
let vkCreateIndirectExecutionSetEXTPtr :: FunPtr
(Ptr Device_T
-> Ptr IndirectExecutionSetCreateInfoEXT
-> Ptr AllocationCallbacks
-> Ptr IndirectExecutionSetEXT
-> IO Result)
vkCreateIndirectExecutionSetEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> Ptr IndirectExecutionSetCreateInfoEXT
-> Ptr AllocationCallbacks
-> Ptr IndirectExecutionSetEXT
-> IO Result)
pVkCreateIndirectExecutionSetEXT (case Device
device of Device{DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT IndirectExecutionSetEXT IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT IndirectExecutionSetEXT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT IndirectExecutionSetEXT IO ())
-> IO () -> ContT IndirectExecutionSetEXT IO ()
forall a b. (a -> b) -> a -> b
$ ("isPreprocessed" ::: Bool) -> IO () -> IO ()
forall (f :: * -> *).
Applicative f =>
("isPreprocessed" ::: Bool) -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> Ptr IndirectExecutionSetCreateInfoEXT
-> Ptr AllocationCallbacks
-> Ptr IndirectExecutionSetEXT
-> IO Result)
vkCreateIndirectExecutionSetEXTPtr FunPtr
(Ptr Device_T
-> Ptr IndirectExecutionSetCreateInfoEXT
-> Ptr AllocationCallbacks
-> Ptr IndirectExecutionSetEXT
-> IO Result)
-> FunPtr
(Ptr Device_T
-> Ptr IndirectExecutionSetCreateInfoEXT
-> Ptr AllocationCallbacks
-> Ptr IndirectExecutionSetEXT
-> IO Result)
-> "isPreprocessed" ::: Bool
forall a. Eq a => a -> a -> "isPreprocessed" ::: Bool
/= FunPtr
(Ptr Device_T
-> Ptr IndirectExecutionSetCreateInfoEXT
-> Ptr AllocationCallbacks
-> Ptr IndirectExecutionSetEXT
-> IO Result)
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 String
"" String
"The function pointer for vkCreateIndirectExecutionSetEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCreateIndirectExecutionSetEXT' :: Ptr Device_T
-> Ptr IndirectExecutionSetCreateInfoEXT
-> Ptr AllocationCallbacks
-> Ptr IndirectExecutionSetEXT
-> IO Result
vkCreateIndirectExecutionSetEXT' = FunPtr
(Ptr Device_T
-> Ptr IndirectExecutionSetCreateInfoEXT
-> Ptr AllocationCallbacks
-> Ptr IndirectExecutionSetEXT
-> IO Result)
-> Ptr Device_T
-> Ptr IndirectExecutionSetCreateInfoEXT
-> Ptr AllocationCallbacks
-> Ptr IndirectExecutionSetEXT
-> IO Result
mkVkCreateIndirectExecutionSetEXT FunPtr
(Ptr Device_T
-> Ptr IndirectExecutionSetCreateInfoEXT
-> Ptr AllocationCallbacks
-> Ptr IndirectExecutionSetEXT
-> IO Result)
vkCreateIndirectExecutionSetEXTPtr
Ptr IndirectExecutionSetCreateInfoEXT
pCreateInfo <- ((Ptr IndirectExecutionSetCreateInfoEXT
-> IO IndirectExecutionSetEXT)
-> IO IndirectExecutionSetEXT)
-> ContT
IndirectExecutionSetEXT IO (Ptr IndirectExecutionSetCreateInfoEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr IndirectExecutionSetCreateInfoEXT
-> IO IndirectExecutionSetEXT)
-> IO IndirectExecutionSetEXT)
-> ContT
IndirectExecutionSetEXT IO (Ptr IndirectExecutionSetCreateInfoEXT))
-> ((Ptr IndirectExecutionSetCreateInfoEXT
-> IO IndirectExecutionSetEXT)
-> IO IndirectExecutionSetEXT)
-> ContT
IndirectExecutionSetEXT IO (Ptr IndirectExecutionSetCreateInfoEXT)
forall a b. (a -> b) -> a -> b
$ IndirectExecutionSetCreateInfoEXT
-> (Ptr IndirectExecutionSetCreateInfoEXT
-> IO IndirectExecutionSetEXT)
-> IO IndirectExecutionSetEXT
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
IndirectExecutionSetCreateInfoEXT
-> (Ptr IndirectExecutionSetCreateInfoEXT -> IO b) -> IO b
withCStruct (IndirectExecutionSetCreateInfoEXT
createInfo)
Ptr AllocationCallbacks
pAllocator <- case ("allocator" ::: Maybe AllocationCallbacks
allocator) of
"allocator" ::: Maybe AllocationCallbacks
Nothing -> Ptr AllocationCallbacks
-> ContT IndirectExecutionSetEXT IO (Ptr AllocationCallbacks)
forall a. a -> ContT IndirectExecutionSetEXT IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr AllocationCallbacks
forall a. Ptr a
nullPtr
Just AllocationCallbacks
j -> ((Ptr AllocationCallbacks -> IO IndirectExecutionSetEXT)
-> IO IndirectExecutionSetEXT)
-> ContT IndirectExecutionSetEXT IO (Ptr AllocationCallbacks)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr AllocationCallbacks -> IO IndirectExecutionSetEXT)
-> IO IndirectExecutionSetEXT)
-> ContT IndirectExecutionSetEXT IO (Ptr AllocationCallbacks))
-> ((Ptr AllocationCallbacks -> IO IndirectExecutionSetEXT)
-> IO IndirectExecutionSetEXT)
-> ContT IndirectExecutionSetEXT IO (Ptr AllocationCallbacks)
forall a b. (a -> b) -> a -> b
$ AllocationCallbacks
-> (Ptr AllocationCallbacks -> IO IndirectExecutionSetEXT)
-> IO IndirectExecutionSetEXT
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
AllocationCallbacks -> (Ptr AllocationCallbacks -> IO b) -> IO b
withCStruct (AllocationCallbacks
j)
Ptr IndirectExecutionSetEXT
pPIndirectExecutionSet <- ((Ptr IndirectExecutionSetEXT -> IO IndirectExecutionSetEXT)
-> IO IndirectExecutionSetEXT)
-> ContT IndirectExecutionSetEXT IO (Ptr IndirectExecutionSetEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr IndirectExecutionSetEXT -> IO IndirectExecutionSetEXT)
-> IO IndirectExecutionSetEXT)
-> ContT IndirectExecutionSetEXT IO (Ptr IndirectExecutionSetEXT))
-> ((Ptr IndirectExecutionSetEXT -> IO IndirectExecutionSetEXT)
-> IO IndirectExecutionSetEXT)
-> ContT IndirectExecutionSetEXT IO (Ptr IndirectExecutionSetEXT)
forall a b. (a -> b) -> a -> b
$ IO (Ptr IndirectExecutionSetEXT)
-> (Ptr IndirectExecutionSetEXT -> IO ())
-> (Ptr IndirectExecutionSetEXT -> IO IndirectExecutionSetEXT)
-> IO IndirectExecutionSetEXT
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (forall a. Int -> IO (Ptr a)
callocBytes @IndirectExecutionSetEXT Int
8) Ptr IndirectExecutionSetEXT -> IO ()
forall a. Ptr a -> IO ()
free
Result
r <- IO Result -> ContT IndirectExecutionSetEXT IO Result
forall (m :: * -> *) a.
Monad m =>
m a -> ContT IndirectExecutionSetEXT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result -> ContT IndirectExecutionSetEXT IO Result)
-> IO Result -> ContT IndirectExecutionSetEXT IO Result
forall a b. (a -> b) -> a -> b
$ String -> IO Result -> IO Result
forall a. String -> IO a -> IO a
traceAroundEvent String
"vkCreateIndirectExecutionSetEXT" (Ptr Device_T
-> Ptr IndirectExecutionSetCreateInfoEXT
-> Ptr AllocationCallbacks
-> Ptr IndirectExecutionSetEXT
-> IO Result
vkCreateIndirectExecutionSetEXT'
(Device -> Ptr Device_T
deviceHandle (Device
device))
Ptr IndirectExecutionSetCreateInfoEXT
pCreateInfo
Ptr AllocationCallbacks
pAllocator
(Ptr IndirectExecutionSetEXT
pPIndirectExecutionSet))
IO () -> ContT IndirectExecutionSetEXT IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT IndirectExecutionSetEXT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT IndirectExecutionSetEXT IO ())
-> IO () -> ContT IndirectExecutionSetEXT IO ()
forall a b. (a -> b) -> a -> b
$ ("isPreprocessed" ::: Bool) -> IO () -> IO ()
forall (f :: * -> *).
Applicative f =>
("isPreprocessed" ::: Bool) -> f () -> f ()
when (Result
r Result -> Result -> "isPreprocessed" ::: Bool
forall a. Ord a => a -> a -> "isPreprocessed" ::: Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
IndirectExecutionSetEXT
pIndirectExecutionSet <- IO IndirectExecutionSetEXT
-> ContT IndirectExecutionSetEXT IO IndirectExecutionSetEXT
forall (m :: * -> *) a.
Monad m =>
m a -> ContT IndirectExecutionSetEXT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO IndirectExecutionSetEXT
-> ContT IndirectExecutionSetEXT IO IndirectExecutionSetEXT)
-> IO IndirectExecutionSetEXT
-> ContT IndirectExecutionSetEXT IO IndirectExecutionSetEXT
forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> IO a
peek @IndirectExecutionSetEXT Ptr IndirectExecutionSetEXT
pPIndirectExecutionSet
IndirectExecutionSetEXT
-> ContT IndirectExecutionSetEXT IO IndirectExecutionSetEXT
forall a. a -> ContT IndirectExecutionSetEXT IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (IndirectExecutionSetEXT
-> ContT IndirectExecutionSetEXT IO IndirectExecutionSetEXT)
-> IndirectExecutionSetEXT
-> ContT IndirectExecutionSetEXT IO IndirectExecutionSetEXT
forall a b. (a -> b) -> a -> b
$ (IndirectExecutionSetEXT
pIndirectExecutionSet)
withIndirectExecutionSetEXT :: forall io r . MonadIO io => Device -> IndirectExecutionSetCreateInfoEXT -> Maybe AllocationCallbacks -> (io IndirectExecutionSetEXT -> (IndirectExecutionSetEXT -> io ()) -> r) -> r
withIndirectExecutionSetEXT :: forall (io :: * -> *) r.
MonadIO io =>
Device
-> IndirectExecutionSetCreateInfoEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> (io IndirectExecutionSetEXT
-> (IndirectExecutionSetEXT -> io ()) -> r)
-> r
withIndirectExecutionSetEXT Device
device IndirectExecutionSetCreateInfoEXT
pCreateInfo "allocator" ::: Maybe AllocationCallbacks
pAllocator io IndirectExecutionSetEXT
-> (IndirectExecutionSetEXT -> io ()) -> r
b =
io IndirectExecutionSetEXT
-> (IndirectExecutionSetEXT -> io ()) -> r
b (Device
-> IndirectExecutionSetCreateInfoEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io IndirectExecutionSetEXT
forall (io :: * -> *).
MonadIO io =>
Device
-> IndirectExecutionSetCreateInfoEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io IndirectExecutionSetEXT
createIndirectExecutionSetEXT Device
device IndirectExecutionSetCreateInfoEXT
pCreateInfo "allocator" ::: Maybe AllocationCallbacks
pAllocator)
(\(IndirectExecutionSetEXT
o0) -> Device
-> IndirectExecutionSetEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
forall (io :: * -> *).
MonadIO io =>
Device
-> IndirectExecutionSetEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroyIndirectExecutionSetEXT Device
device IndirectExecutionSetEXT
o0 "allocator" ::: Maybe AllocationCallbacks
pAllocator)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkDestroyIndirectExecutionSetEXT
:: FunPtr (Ptr Device_T -> IndirectExecutionSetEXT -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> IndirectExecutionSetEXT -> Ptr AllocationCallbacks -> IO ()
destroyIndirectExecutionSetEXT :: forall io
. (MonadIO io)
=>
Device
->
IndirectExecutionSetEXT
->
("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroyIndirectExecutionSetEXT :: forall (io :: * -> *).
MonadIO io =>
Device
-> IndirectExecutionSetEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroyIndirectExecutionSetEXT Device
device
IndirectExecutionSetEXT
indirectExecutionSet
"allocator" ::: Maybe AllocationCallbacks
allocator = IO () -> io ()
forall a. IO a -> io a
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 vkDestroyIndirectExecutionSetEXTPtr :: FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT -> Ptr AllocationCallbacks -> IO ())
vkDestroyIndirectExecutionSetEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT -> Ptr AllocationCallbacks -> IO ())
pVkDestroyIndirectExecutionSetEXT (case Device
device of Device{DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
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
$ ("isPreprocessed" ::: Bool) -> IO () -> IO ()
forall (f :: * -> *).
Applicative f =>
("isPreprocessed" ::: Bool) -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT -> Ptr AllocationCallbacks -> IO ())
vkDestroyIndirectExecutionSetEXTPtr FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT -> Ptr AllocationCallbacks -> IO ())
-> FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT -> Ptr AllocationCallbacks -> IO ())
-> "isPreprocessed" ::: Bool
forall a. Eq a => a -> a -> "isPreprocessed" ::: Bool
/= FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT -> Ptr AllocationCallbacks -> 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 String
"" String
"The function pointer for vkDestroyIndirectExecutionSetEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkDestroyIndirectExecutionSetEXT' :: Ptr Device_T
-> IndirectExecutionSetEXT -> Ptr AllocationCallbacks -> IO ()
vkDestroyIndirectExecutionSetEXT' = FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT -> Ptr AllocationCallbacks -> IO ())
-> Ptr Device_T
-> IndirectExecutionSetEXT
-> Ptr AllocationCallbacks
-> IO ()
mkVkDestroyIndirectExecutionSetEXT FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT -> Ptr AllocationCallbacks -> IO ())
vkDestroyIndirectExecutionSetEXTPtr
Ptr AllocationCallbacks
pAllocator <- case ("allocator" ::: Maybe AllocationCallbacks
allocator) of
"allocator" ::: Maybe AllocationCallbacks
Nothing -> Ptr AllocationCallbacks -> ContT () IO (Ptr AllocationCallbacks)
forall a. a -> ContT () IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr AllocationCallbacks
forall a. Ptr a
nullPtr
Just AllocationCallbacks
j -> ((Ptr AllocationCallbacks -> IO ()) -> IO ())
-> ContT () IO (Ptr AllocationCallbacks)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr AllocationCallbacks -> IO ()) -> IO ())
-> ContT () IO (Ptr AllocationCallbacks))
-> ((Ptr AllocationCallbacks -> IO ()) -> IO ())
-> ContT () IO (Ptr AllocationCallbacks)
forall a b. (a -> b) -> a -> b
$ AllocationCallbacks -> (Ptr AllocationCallbacks -> IO ()) -> IO ()
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
AllocationCallbacks -> (Ptr AllocationCallbacks -> IO b) -> IO b
withCStruct (AllocationCallbacks
j)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
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 String
"vkDestroyIndirectExecutionSetEXT" (Ptr Device_T
-> IndirectExecutionSetEXT -> Ptr AllocationCallbacks -> IO ()
vkDestroyIndirectExecutionSetEXT'
(Device -> Ptr Device_T
deviceHandle (Device
device))
(IndirectExecutionSetEXT
indirectExecutionSet)
Ptr AllocationCallbacks
pAllocator)
() -> ContT () IO ()
forall a. a -> ContT () IO a
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" mkVkUpdateIndirectExecutionSetPipelineEXT
:: FunPtr (Ptr Device_T -> IndirectExecutionSetEXT -> Word32 -> Ptr WriteIndirectExecutionSetPipelineEXT -> IO ()) -> Ptr Device_T -> IndirectExecutionSetEXT -> Word32 -> Ptr WriteIndirectExecutionSetPipelineEXT -> IO ()
updateIndirectExecutionSetPipelineEXT :: forall io
. (MonadIO io)
=>
Device
->
IndirectExecutionSetEXT
->
("executionSetWrites" ::: Vector WriteIndirectExecutionSetPipelineEXT)
-> io ()
updateIndirectExecutionSetPipelineEXT :: forall (io :: * -> *).
MonadIO io =>
Device
-> IndirectExecutionSetEXT
-> ("executionSetWrites"
::: Vector WriteIndirectExecutionSetPipelineEXT)
-> io ()
updateIndirectExecutionSetPipelineEXT Device
device
IndirectExecutionSetEXT
indirectExecutionSet
"executionSetWrites"
::: Vector WriteIndirectExecutionSetPipelineEXT
executionSetWrites = IO () -> io ()
forall a. IO a -> io a
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 vkUpdateIndirectExecutionSetPipelineEXTPtr :: FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetPipelineEXT
-> IO ())
vkUpdateIndirectExecutionSetPipelineEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetPipelineEXT
-> IO ())
pVkUpdateIndirectExecutionSetPipelineEXT (case Device
device of Device{DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
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
$ ("isPreprocessed" ::: Bool) -> IO () -> IO ()
forall (f :: * -> *).
Applicative f =>
("isPreprocessed" ::: Bool) -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetPipelineEXT
-> IO ())
vkUpdateIndirectExecutionSetPipelineEXTPtr FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetPipelineEXT
-> IO ())
-> FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetPipelineEXT
-> IO ())
-> "isPreprocessed" ::: Bool
forall a. Eq a => a -> a -> "isPreprocessed" ::: Bool
/= FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetPipelineEXT
-> 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 String
"" String
"The function pointer for vkUpdateIndirectExecutionSetPipelineEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkUpdateIndirectExecutionSetPipelineEXT' :: Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetPipelineEXT
-> IO ()
vkUpdateIndirectExecutionSetPipelineEXT' = FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetPipelineEXT
-> IO ())
-> Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetPipelineEXT
-> IO ()
mkVkUpdateIndirectExecutionSetPipelineEXT FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetPipelineEXT
-> IO ())
vkUpdateIndirectExecutionSetPipelineEXTPtr
Ptr WriteIndirectExecutionSetPipelineEXT
pPExecutionSetWrites <- ((Ptr WriteIndirectExecutionSetPipelineEXT -> IO ()) -> IO ())
-> ContT () IO (Ptr WriteIndirectExecutionSetPipelineEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr WriteIndirectExecutionSetPipelineEXT -> IO ()) -> IO ())
-> ContT () IO (Ptr WriteIndirectExecutionSetPipelineEXT))
-> ((Ptr WriteIndirectExecutionSetPipelineEXT -> IO ()) -> IO ())
-> ContT () IO (Ptr WriteIndirectExecutionSetPipelineEXT)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @WriteIndirectExecutionSetPipelineEXT ((("executionSetWrites"
::: Vector WriteIndirectExecutionSetPipelineEXT)
-> Int
forall a. Vector a -> Int
Data.Vector.length ("executionSetWrites"
::: Vector WriteIndirectExecutionSetPipelineEXT
executionSetWrites)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
32)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
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 -> WriteIndirectExecutionSetPipelineEXT -> IO ())
-> ("executionSetWrites"
::: Vector WriteIndirectExecutionSetPipelineEXT)
-> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i WriteIndirectExecutionSetPipelineEXT
e -> Ptr WriteIndirectExecutionSetPipelineEXT
-> WriteIndirectExecutionSetPipelineEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr WriteIndirectExecutionSetPipelineEXT
pPExecutionSetWrites Ptr WriteIndirectExecutionSetPipelineEXT
-> Int -> Ptr WriteIndirectExecutionSetPipelineEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
32 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr WriteIndirectExecutionSetPipelineEXT) (WriteIndirectExecutionSetPipelineEXT
e)) ("executionSetWrites"
::: Vector WriteIndirectExecutionSetPipelineEXT
executionSetWrites)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
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 String
"vkUpdateIndirectExecutionSetPipelineEXT" (Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetPipelineEXT
-> IO ()
vkUpdateIndirectExecutionSetPipelineEXT'
(Device -> Ptr Device_T
deviceHandle (Device
device))
(IndirectExecutionSetEXT
indirectExecutionSet)
((Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral (("executionSetWrites"
::: Vector WriteIndirectExecutionSetPipelineEXT)
-> Int
forall a. Vector a -> Int
Data.Vector.length (("executionSetWrites"
::: Vector WriteIndirectExecutionSetPipelineEXT)
-> Int)
-> ("executionSetWrites"
::: Vector WriteIndirectExecutionSetPipelineEXT)
-> Int
forall a b. (a -> b) -> a -> b
$ ("executionSetWrites"
::: Vector WriteIndirectExecutionSetPipelineEXT
executionSetWrites)) :: Word32))
(Ptr WriteIndirectExecutionSetPipelineEXT
pPExecutionSetWrites))
() -> ContT () IO ()
forall a. a -> ContT () IO a
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" mkVkUpdateIndirectExecutionSetShaderEXT
:: FunPtr (Ptr Device_T -> IndirectExecutionSetEXT -> Word32 -> Ptr WriteIndirectExecutionSetShaderEXT -> IO ()) -> Ptr Device_T -> IndirectExecutionSetEXT -> Word32 -> Ptr WriteIndirectExecutionSetShaderEXT -> IO ()
updateIndirectExecutionSetShaderEXT :: forall io
. (MonadIO io)
=>
Device
->
IndirectExecutionSetEXT
->
("executionSetWrites" ::: Vector WriteIndirectExecutionSetShaderEXT)
-> io ()
updateIndirectExecutionSetShaderEXT :: forall (io :: * -> *).
MonadIO io =>
Device
-> IndirectExecutionSetEXT
-> ("executionSetWrites"
::: Vector WriteIndirectExecutionSetShaderEXT)
-> io ()
updateIndirectExecutionSetShaderEXT Device
device
IndirectExecutionSetEXT
indirectExecutionSet
"executionSetWrites" ::: Vector WriteIndirectExecutionSetShaderEXT
executionSetWrites = IO () -> io ()
forall a. IO a -> io a
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 vkUpdateIndirectExecutionSetShaderEXTPtr :: FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetShaderEXT
-> IO ())
vkUpdateIndirectExecutionSetShaderEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetShaderEXT
-> IO ())
pVkUpdateIndirectExecutionSetShaderEXT (case Device
device of Device{DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
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
$ ("isPreprocessed" ::: Bool) -> IO () -> IO ()
forall (f :: * -> *).
Applicative f =>
("isPreprocessed" ::: Bool) -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetShaderEXT
-> IO ())
vkUpdateIndirectExecutionSetShaderEXTPtr FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetShaderEXT
-> IO ())
-> FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetShaderEXT
-> IO ())
-> "isPreprocessed" ::: Bool
forall a. Eq a => a -> a -> "isPreprocessed" ::: Bool
/= FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetShaderEXT
-> 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 String
"" String
"The function pointer for vkUpdateIndirectExecutionSetShaderEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkUpdateIndirectExecutionSetShaderEXT' :: Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetShaderEXT
-> IO ()
vkUpdateIndirectExecutionSetShaderEXT' = FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetShaderEXT
-> IO ())
-> Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetShaderEXT
-> IO ()
mkVkUpdateIndirectExecutionSetShaderEXT FunPtr
(Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetShaderEXT
-> IO ())
vkUpdateIndirectExecutionSetShaderEXTPtr
Ptr WriteIndirectExecutionSetShaderEXT
pPExecutionSetWrites <- ((Ptr WriteIndirectExecutionSetShaderEXT -> IO ()) -> IO ())
-> ContT () IO (Ptr WriteIndirectExecutionSetShaderEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr WriteIndirectExecutionSetShaderEXT -> IO ()) -> IO ())
-> ContT () IO (Ptr WriteIndirectExecutionSetShaderEXT))
-> ((Ptr WriteIndirectExecutionSetShaderEXT -> IO ()) -> IO ())
-> ContT () IO (Ptr WriteIndirectExecutionSetShaderEXT)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @WriteIndirectExecutionSetShaderEXT ((("executionSetWrites"
::: Vector WriteIndirectExecutionSetShaderEXT)
-> Int
forall a. Vector a -> Int
Data.Vector.length ("executionSetWrites" ::: Vector WriteIndirectExecutionSetShaderEXT
executionSetWrites)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
32)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
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 -> WriteIndirectExecutionSetShaderEXT -> IO ())
-> ("executionSetWrites"
::: Vector WriteIndirectExecutionSetShaderEXT)
-> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i WriteIndirectExecutionSetShaderEXT
e -> Ptr WriteIndirectExecutionSetShaderEXT
-> WriteIndirectExecutionSetShaderEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr WriteIndirectExecutionSetShaderEXT
pPExecutionSetWrites Ptr WriteIndirectExecutionSetShaderEXT
-> Int -> Ptr WriteIndirectExecutionSetShaderEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
32 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr WriteIndirectExecutionSetShaderEXT) (WriteIndirectExecutionSetShaderEXT
e)) ("executionSetWrites" ::: Vector WriteIndirectExecutionSetShaderEXT
executionSetWrites)
IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
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 String
"vkUpdateIndirectExecutionSetShaderEXT" (Ptr Device_T
-> IndirectExecutionSetEXT
-> Flags
-> Ptr WriteIndirectExecutionSetShaderEXT
-> IO ()
vkUpdateIndirectExecutionSetShaderEXT'
(Device -> Ptr Device_T
deviceHandle (Device
device))
(IndirectExecutionSetEXT
indirectExecutionSet)
((Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral (("executionSetWrites"
::: Vector WriteIndirectExecutionSetShaderEXT)
-> Int
forall a. Vector a -> Int
Data.Vector.length (("executionSetWrites"
::: Vector WriteIndirectExecutionSetShaderEXT)
-> Int)
-> ("executionSetWrites"
::: Vector WriteIndirectExecutionSetShaderEXT)
-> Int
forall a b. (a -> b) -> a -> b
$ ("executionSetWrites" ::: Vector WriteIndirectExecutionSetShaderEXT
executionSetWrites)) :: Word32))
(Ptr WriteIndirectExecutionSetShaderEXT
pPExecutionSetWrites))
() -> ContT () IO ()
forall a. a -> ContT () IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (() -> ContT () IO ()) -> () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ ()
pattern $mPIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bPIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT :: PipelineStageFlagBits
PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV
pattern $mACCESS_COMMAND_PREPROCESS_READ_BIT_EXT :: forall {r}. AccessFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bACCESS_COMMAND_PREPROCESS_READ_BIT_EXT :: AccessFlagBits
ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = ACCESS_COMMAND_PREPROCESS_READ_BIT_NV
pattern $mACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT :: forall {r}. AccessFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT :: AccessFlagBits
ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV
data PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT = PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
{
PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> "isPreprocessed" ::: Bool
deviceGeneratedCommands :: Bool
,
PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> "isPreprocessed" ::: Bool
dynamicGeneratedPipelineLayout :: Bool
}
deriving (Typeable, PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> "isPreprocessed" ::: Bool
(PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> "isPreprocessed" ::: Bool)
-> (PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> "isPreprocessed" ::: Bool)
-> Eq PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
forall a.
(a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool) -> Eq a
$c== :: PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> "isPreprocessed" ::: Bool
== :: PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> "isPreprocessed" ::: Bool
$c/= :: PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> "isPreprocessed" ::: Bool
/= :: PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> "isPreprocessed" ::: Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT)
#endif
deriving instance Show PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
instance ToCStruct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT where
withCStruct :: forall b.
PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> (Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT -> IO b)
-> IO b
withCStruct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
x Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT -> IO b
f = Int
-> (Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT -> IO b)
-> IO b)
-> (Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
p -> Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT -> IO b -> IO b
forall b.
Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
p PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
x (Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT -> IO b
f Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
p PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT{"isPreprocessed" ::: Bool
$sel:deviceGeneratedCommands:PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT :: PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> "isPreprocessed" ::: Bool
$sel:dynamicGeneratedPipelineLayout:PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT :: PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> "isPreprocessed" ::: Bool
deviceGeneratedCommands :: "isPreprocessed" ::: Bool
dynamicGeneratedPipelineLayout :: "isPreprocessed" ::: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (("isPreprocessed" ::: Bool) -> Bool32
boolToBool32 ("isPreprocessed" ::: Bool
deviceGeneratedCommands))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (("isPreprocessed" ::: Bool) -> Bool32
boolToBool32 ("isPreprocessed" ::: Bool
dynamicGeneratedPipelineLayout))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (("isPreprocessed" ::: Bool) -> Bool32
boolToBool32 ("isPreprocessed" ::: Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (("isPreprocessed" ::: Bool) -> Bool32
boolToBool32 ("isPreprocessed" ::: Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT where
peekCStruct :: Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> IO PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
peekCStruct Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
p = do
Bool32
deviceGeneratedCommands <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
Bool32
dynamicGeneratedPipelineLayout <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32))
PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> IO PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> IO PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT)
-> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> IO PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
forall a b. (a -> b) -> a -> b
$ ("isPreprocessed" ::: Bool)
-> ("isPreprocessed" ::: Bool)
-> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
(Bool32 -> "isPreprocessed" ::: Bool
bool32ToBool Bool32
deviceGeneratedCommands)
(Bool32 -> "isPreprocessed" ::: Bool
bool32ToBool Bool32
dynamicGeneratedPipelineLayout)
instance Storable PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT where
sizeOf :: PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT -> Int
sizeOf ~PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
_ = Int
24
alignment :: PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT -> Int
alignment ~PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
_ = Int
8
peek :: Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> IO PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
peek = Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> IO PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT -> IO ()
poke Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
poked = Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> IO ()
-> IO ()
forall b.
Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
-> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
ptr PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT where
zero :: PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
zero = ("isPreprocessed" ::: Bool)
-> ("isPreprocessed" ::: Bool)
-> PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT
"isPreprocessed" ::: Bool
forall a. Zero a => a
zero
"isPreprocessed" ::: Bool
forall a. Zero a => a
zero
data PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT = PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
{
PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> Flags
maxIndirectPipelineCount :: Word32
,
PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> Flags
maxIndirectShaderObjectCount :: Word32
,
PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> Flags
maxIndirectSequenceCount :: Word32
,
PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> Flags
maxIndirectCommandsTokenCount :: Word32
,
PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> Flags
maxIndirectCommandsTokenOffset :: Word32
,
PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> Flags
maxIndirectCommandsIndirectStride :: Word32
,
PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> IndirectCommandsInputModeFlagsEXT
supportedIndirectCommandsInputModes :: IndirectCommandsInputModeFlagsEXT
,
PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> ShaderStageFlags
supportedIndirectCommandsShaderStages :: ShaderStageFlags
,
PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> ShaderStageFlags
supportedIndirectCommandsShaderStagesPipelineBinding :: ShaderStageFlags
,
PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> ShaderStageFlags
supportedIndirectCommandsShaderStagesShaderBinding :: ShaderStageFlags
,
PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> "isPreprocessed" ::: Bool
deviceGeneratedCommandsTransformFeedback :: Bool
,
PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> "isPreprocessed" ::: Bool
deviceGeneratedCommandsMultiDrawIndirectCount :: Bool
}
deriving (Typeable, PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> "isPreprocessed" ::: Bool
(PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> "isPreprocessed" ::: Bool)
-> (PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> "isPreprocessed" ::: Bool)
-> Eq PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
forall a.
(a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool) -> Eq a
$c== :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> "isPreprocessed" ::: Bool
== :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> "isPreprocessed" ::: Bool
$c/= :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> "isPreprocessed" ::: Bool
/= :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> "isPreprocessed" ::: Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT)
#endif
deriving instance Show PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
instance ToCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT where
withCStruct :: forall b.
PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> (Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> IO b)
-> IO b
withCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
x Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> IO b
f = Int
-> (Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
64 ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> IO b)
-> IO b)
-> (Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p -> Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> IO b
-> IO b
forall b.
Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
x (Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> IO b
f Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT{"isPreprocessed" ::: Bool
Flags
ShaderStageFlags
IndirectCommandsInputModeFlagsEXT
$sel:maxIndirectPipelineCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> Flags
$sel:maxIndirectShaderObjectCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> Flags
$sel:maxIndirectSequenceCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> Flags
$sel:maxIndirectCommandsTokenCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> Flags
$sel:maxIndirectCommandsTokenOffset:PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> Flags
$sel:maxIndirectCommandsIndirectStride:PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> Flags
$sel:supportedIndirectCommandsInputModes:PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> IndirectCommandsInputModeFlagsEXT
$sel:supportedIndirectCommandsShaderStages:PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> ShaderStageFlags
$sel:supportedIndirectCommandsShaderStagesPipelineBinding:PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> ShaderStageFlags
$sel:supportedIndirectCommandsShaderStagesShaderBinding:PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> ShaderStageFlags
$sel:deviceGeneratedCommandsTransformFeedback:PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> "isPreprocessed" ::: Bool
$sel:deviceGeneratedCommandsMultiDrawIndirectCount:PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> "isPreprocessed" ::: Bool
maxIndirectPipelineCount :: Flags
maxIndirectShaderObjectCount :: Flags
maxIndirectSequenceCount :: Flags
maxIndirectCommandsTokenCount :: Flags
maxIndirectCommandsTokenOffset :: Flags
maxIndirectCommandsIndirectStride :: Flags
supportedIndirectCommandsInputModes :: IndirectCommandsInputModeFlagsEXT
supportedIndirectCommandsShaderStages :: ShaderStageFlags
supportedIndirectCommandsShaderStagesPipelineBinding :: ShaderStageFlags
supportedIndirectCommandsShaderStagesShaderBinding :: ShaderStageFlags
deviceGeneratedCommandsTransformFeedback :: "isPreprocessed" ::: Bool
deviceGeneratedCommandsMultiDrawIndirectCount :: "isPreprocessed" ::: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Flags
maxIndirectPipelineCount)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) (Flags
maxIndirectShaderObjectCount)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Flags
maxIndirectSequenceCount)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Word32)) (Flags
maxIndirectCommandsTokenCount)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32)) (Flags
maxIndirectCommandsTokenOffset)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Word32)) (Flags
maxIndirectCommandsIndirectStride)
Ptr IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr IndirectCommandsInputModeFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr IndirectCommandsInputModeFlagsEXT)) (IndirectCommandsInputModeFlagsEXT
supportedIndirectCommandsInputModes)
Ptr ShaderStageFlags -> ShaderStageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr ShaderStageFlags)) (ShaderStageFlags
supportedIndirectCommandsShaderStages)
Ptr ShaderStageFlags -> ShaderStageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr ShaderStageFlags)) (ShaderStageFlags
supportedIndirectCommandsShaderStagesPipelineBinding)
Ptr ShaderStageFlags -> ShaderStageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr ShaderStageFlags)) (ShaderStageFlags
supportedIndirectCommandsShaderStagesShaderBinding)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32)) (("isPreprocessed" ::: Bool) -> Bool32
boolToBool32 ("isPreprocessed" ::: Bool
deviceGeneratedCommandsTransformFeedback))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (("isPreprocessed" ::: Bool) -> Bool32
boolToBool32 ("isPreprocessed" ::: Bool
deviceGeneratedCommandsMultiDrawIndirectCount))
IO b
f
cStructSize :: Int
cStructSize = Int
64
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
Ptr IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr IndirectCommandsInputModeFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr IndirectCommandsInputModeFlagsEXT)) (IndirectCommandsInputModeFlagsEXT
forall a. Zero a => a
zero)
Ptr ShaderStageFlags -> ShaderStageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr ShaderStageFlags)) (ShaderStageFlags
forall a. Zero a => a
zero)
Ptr ShaderStageFlags -> ShaderStageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr ShaderStageFlags)) (ShaderStageFlags
forall a. Zero a => a
zero)
Ptr ShaderStageFlags -> ShaderStageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr ShaderStageFlags)) (ShaderStageFlags
forall a. Zero a => a
zero)
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32)) (("isPreprocessed" ::: Bool) -> Bool32
boolToBool32 ("isPreprocessed" ::: Bool
forall a. Zero a => a
zero))
Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32)) (("isPreprocessed" ::: Bool) -> Bool32
boolToBool32 ("isPreprocessed" ::: Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT where
peekCStruct :: Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> IO PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
peekCStruct Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p = do
Flags
maxIndirectPipelineCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
Flags
maxIndirectShaderObjectCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32))
Flags
maxIndirectSequenceCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32))
Flags
maxIndirectCommandsTokenCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Word32))
Flags
maxIndirectCommandsTokenOffset <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32))
Flags
maxIndirectCommandsIndirectStride <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Word32))
IndirectCommandsInputModeFlagsEXT
supportedIndirectCommandsInputModes <- forall a. Storable a => Ptr a -> IO a
peek @IndirectCommandsInputModeFlagsEXT ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr IndirectCommandsInputModeFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr IndirectCommandsInputModeFlagsEXT))
ShaderStageFlags
supportedIndirectCommandsShaderStages <- forall a. Storable a => Ptr a -> IO a
peek @ShaderStageFlags ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr ShaderStageFlags))
ShaderStageFlags
supportedIndirectCommandsShaderStagesPipelineBinding <- forall a. Storable a => Ptr a -> IO a
peek @ShaderStageFlags ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr ShaderStageFlags))
ShaderStageFlags
supportedIndirectCommandsShaderStagesShaderBinding <- forall a. Storable a => Ptr a -> IO a
peek @ShaderStageFlags ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
52 :: Ptr ShaderStageFlags))
Bool32
deviceGeneratedCommandsTransformFeedback <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Bool32))
Bool32
deviceGeneratedCommandsMultiDrawIndirectCount <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
p Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
60 :: Ptr Bool32))
PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> IO PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> IO PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT)
-> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> IO PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
forall a b. (a -> b) -> a -> b
$ Flags
-> Flags
-> Flags
-> Flags
-> Flags
-> Flags
-> IndirectCommandsInputModeFlagsEXT
-> ShaderStageFlags
-> ShaderStageFlags
-> ShaderStageFlags
-> ("isPreprocessed" ::: Bool)
-> ("isPreprocessed" ::: Bool)
-> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
Flags
maxIndirectPipelineCount
Flags
maxIndirectShaderObjectCount
Flags
maxIndirectSequenceCount
Flags
maxIndirectCommandsTokenCount
Flags
maxIndirectCommandsTokenOffset
Flags
maxIndirectCommandsIndirectStride
IndirectCommandsInputModeFlagsEXT
supportedIndirectCommandsInputModes
ShaderStageFlags
supportedIndirectCommandsShaderStages
ShaderStageFlags
supportedIndirectCommandsShaderStagesPipelineBinding
ShaderStageFlags
supportedIndirectCommandsShaderStagesShaderBinding
(Bool32 -> "isPreprocessed" ::: Bool
bool32ToBool Bool32
deviceGeneratedCommandsTransformFeedback)
(Bool32 -> "isPreprocessed" ::: Bool
bool32ToBool Bool32
deviceGeneratedCommandsMultiDrawIndirectCount)
instance Storable PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT where
sizeOf :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> Int
sizeOf ~PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
_ = Int
64
alignment :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> Int
alignment ~PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
_ = Int
8
peek :: Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> IO PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
peek = Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> IO PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT -> IO ()
poke Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
poked = Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> IO ()
-> IO ()
forall b.
Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
ptr PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT where
zero :: PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
zero = Flags
-> Flags
-> Flags
-> Flags
-> Flags
-> Flags
-> IndirectCommandsInputModeFlagsEXT
-> ShaderStageFlags
-> ShaderStageFlags
-> ShaderStageFlags
-> ("isPreprocessed" ::: Bool)
-> ("isPreprocessed" ::: Bool)
-> PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT
Flags
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
IndirectCommandsInputModeFlagsEXT
forall a. Zero a => a
zero
ShaderStageFlags
forall a. Zero a => a
zero
ShaderStageFlags
forall a. Zero a => a
zero
ShaderStageFlags
forall a. Zero a => a
zero
"isPreprocessed" ::: Bool
forall a. Zero a => a
zero
"isPreprocessed" ::: Bool
forall a. Zero a => a
zero
data GeneratedCommandsPipelineInfoEXT = GeneratedCommandsPipelineInfoEXT
{
GeneratedCommandsPipelineInfoEXT -> Pipeline
pipeline :: Pipeline }
deriving (Typeable, GeneratedCommandsPipelineInfoEXT
-> GeneratedCommandsPipelineInfoEXT -> "isPreprocessed" ::: Bool
(GeneratedCommandsPipelineInfoEXT
-> GeneratedCommandsPipelineInfoEXT -> "isPreprocessed" ::: Bool)
-> (GeneratedCommandsPipelineInfoEXT
-> GeneratedCommandsPipelineInfoEXT -> "isPreprocessed" ::: Bool)
-> Eq GeneratedCommandsPipelineInfoEXT
forall a.
(a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool) -> Eq a
$c== :: GeneratedCommandsPipelineInfoEXT
-> GeneratedCommandsPipelineInfoEXT -> "isPreprocessed" ::: Bool
== :: GeneratedCommandsPipelineInfoEXT
-> GeneratedCommandsPipelineInfoEXT -> "isPreprocessed" ::: Bool
$c/= :: GeneratedCommandsPipelineInfoEXT
-> GeneratedCommandsPipelineInfoEXT -> "isPreprocessed" ::: Bool
/= :: GeneratedCommandsPipelineInfoEXT
-> GeneratedCommandsPipelineInfoEXT -> "isPreprocessed" ::: Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (GeneratedCommandsPipelineInfoEXT)
#endif
deriving instance Show GeneratedCommandsPipelineInfoEXT
instance ToCStruct GeneratedCommandsPipelineInfoEXT where
withCStruct :: forall b.
GeneratedCommandsPipelineInfoEXT
-> (Ptr GeneratedCommandsPipelineInfoEXT -> IO b) -> IO b
withCStruct GeneratedCommandsPipelineInfoEXT
x Ptr GeneratedCommandsPipelineInfoEXT -> IO b
f = Int -> (Ptr GeneratedCommandsPipelineInfoEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr GeneratedCommandsPipelineInfoEXT -> IO b) -> IO b)
-> (Ptr GeneratedCommandsPipelineInfoEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr GeneratedCommandsPipelineInfoEXT
p -> Ptr GeneratedCommandsPipelineInfoEXT
-> GeneratedCommandsPipelineInfoEXT -> IO b -> IO b
forall b.
Ptr GeneratedCommandsPipelineInfoEXT
-> GeneratedCommandsPipelineInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr GeneratedCommandsPipelineInfoEXT
p GeneratedCommandsPipelineInfoEXT
x (Ptr GeneratedCommandsPipelineInfoEXT -> IO b
f Ptr GeneratedCommandsPipelineInfoEXT
p)
pokeCStruct :: forall b.
Ptr GeneratedCommandsPipelineInfoEXT
-> GeneratedCommandsPipelineInfoEXT -> IO b -> IO b
pokeCStruct Ptr GeneratedCommandsPipelineInfoEXT
p GeneratedCommandsPipelineInfoEXT{Pipeline
$sel:pipeline:GeneratedCommandsPipelineInfoEXT :: GeneratedCommandsPipelineInfoEXT -> Pipeline
pipeline :: Pipeline
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeneratedCommandsPipelineInfoEXT
p Ptr GeneratedCommandsPipelineInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeneratedCommandsPipelineInfoEXT
p Ptr GeneratedCommandsPipelineInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Pipeline -> Pipeline -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeneratedCommandsPipelineInfoEXT
p Ptr GeneratedCommandsPipelineInfoEXT -> Int -> Ptr Pipeline
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Pipeline)) (Pipeline
pipeline)
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr GeneratedCommandsPipelineInfoEXT -> IO b -> IO b
pokeZeroCStruct Ptr GeneratedCommandsPipelineInfoEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeneratedCommandsPipelineInfoEXT
p Ptr GeneratedCommandsPipelineInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeneratedCommandsPipelineInfoEXT
p Ptr GeneratedCommandsPipelineInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Pipeline -> Pipeline -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeneratedCommandsPipelineInfoEXT
p Ptr GeneratedCommandsPipelineInfoEXT -> Int -> Ptr Pipeline
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Pipeline)) (Pipeline
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct GeneratedCommandsPipelineInfoEXT where
peekCStruct :: Ptr GeneratedCommandsPipelineInfoEXT
-> IO GeneratedCommandsPipelineInfoEXT
peekCStruct Ptr GeneratedCommandsPipelineInfoEXT
p = do
Pipeline
pipeline <- forall a. Storable a => Ptr a -> IO a
peek @Pipeline ((Ptr GeneratedCommandsPipelineInfoEXT
p Ptr GeneratedCommandsPipelineInfoEXT -> Int -> Ptr Pipeline
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Pipeline))
GeneratedCommandsPipelineInfoEXT
-> IO GeneratedCommandsPipelineInfoEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (GeneratedCommandsPipelineInfoEXT
-> IO GeneratedCommandsPipelineInfoEXT)
-> GeneratedCommandsPipelineInfoEXT
-> IO GeneratedCommandsPipelineInfoEXT
forall a b. (a -> b) -> a -> b
$ Pipeline -> GeneratedCommandsPipelineInfoEXT
GeneratedCommandsPipelineInfoEXT
Pipeline
pipeline
instance Storable GeneratedCommandsPipelineInfoEXT where
sizeOf :: GeneratedCommandsPipelineInfoEXT -> Int
sizeOf ~GeneratedCommandsPipelineInfoEXT
_ = Int
24
alignment :: GeneratedCommandsPipelineInfoEXT -> Int
alignment ~GeneratedCommandsPipelineInfoEXT
_ = Int
8
peek :: Ptr GeneratedCommandsPipelineInfoEXT
-> IO GeneratedCommandsPipelineInfoEXT
peek = Ptr GeneratedCommandsPipelineInfoEXT
-> IO GeneratedCommandsPipelineInfoEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr GeneratedCommandsPipelineInfoEXT
-> GeneratedCommandsPipelineInfoEXT -> IO ()
poke Ptr GeneratedCommandsPipelineInfoEXT
ptr GeneratedCommandsPipelineInfoEXT
poked = Ptr GeneratedCommandsPipelineInfoEXT
-> GeneratedCommandsPipelineInfoEXT -> IO () -> IO ()
forall b.
Ptr GeneratedCommandsPipelineInfoEXT
-> GeneratedCommandsPipelineInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr GeneratedCommandsPipelineInfoEXT
ptr GeneratedCommandsPipelineInfoEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero GeneratedCommandsPipelineInfoEXT where
zero :: GeneratedCommandsPipelineInfoEXT
zero = Pipeline -> GeneratedCommandsPipelineInfoEXT
GeneratedCommandsPipelineInfoEXT
Pipeline
forall a. Zero a => a
zero
data GeneratedCommandsShaderInfoEXT = GeneratedCommandsShaderInfoEXT
{
GeneratedCommandsShaderInfoEXT -> Vector ShaderEXT
shaders :: Vector ShaderEXT }
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (GeneratedCommandsShaderInfoEXT)
#endif
deriving instance Show GeneratedCommandsShaderInfoEXT
instance ToCStruct GeneratedCommandsShaderInfoEXT where
withCStruct :: forall b.
GeneratedCommandsShaderInfoEXT
-> (Ptr GeneratedCommandsShaderInfoEXT -> IO b) -> IO b
withCStruct GeneratedCommandsShaderInfoEXT
x Ptr GeneratedCommandsShaderInfoEXT -> IO b
f = Int -> (Ptr GeneratedCommandsShaderInfoEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr GeneratedCommandsShaderInfoEXT -> IO b) -> IO b)
-> (Ptr GeneratedCommandsShaderInfoEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr GeneratedCommandsShaderInfoEXT
p -> Ptr GeneratedCommandsShaderInfoEXT
-> GeneratedCommandsShaderInfoEXT -> IO b -> IO b
forall b.
Ptr GeneratedCommandsShaderInfoEXT
-> GeneratedCommandsShaderInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr GeneratedCommandsShaderInfoEXT
p GeneratedCommandsShaderInfoEXT
x (Ptr GeneratedCommandsShaderInfoEXT -> IO b
f Ptr GeneratedCommandsShaderInfoEXT
p)
pokeCStruct :: forall b.
Ptr GeneratedCommandsShaderInfoEXT
-> GeneratedCommandsShaderInfoEXT -> IO b -> IO b
pokeCStruct Ptr GeneratedCommandsShaderInfoEXT
p GeneratedCommandsShaderInfoEXT{Vector ShaderEXT
$sel:shaders:GeneratedCommandsShaderInfoEXT :: GeneratedCommandsShaderInfoEXT -> Vector ShaderEXT
shaders :: Vector ShaderEXT
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeneratedCommandsShaderInfoEXT
p Ptr GeneratedCommandsShaderInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeneratedCommandsShaderInfoEXT
p Ptr GeneratedCommandsShaderInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeneratedCommandsShaderInfoEXT
p Ptr GeneratedCommandsShaderInfoEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) ((Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Vector ShaderEXT -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector ShaderEXT -> Int) -> Vector ShaderEXT -> Int
forall a b. (a -> b) -> a -> b
$ (Vector ShaderEXT
shaders)) :: Word32))
Ptr ShaderEXT
pPShaders' <- ((Ptr ShaderEXT -> IO b) -> IO b) -> ContT b IO (Ptr ShaderEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr ShaderEXT -> IO b) -> IO b) -> ContT b IO (Ptr ShaderEXT))
-> ((Ptr ShaderEXT -> IO b) -> IO b) -> ContT b IO (Ptr ShaderEXT)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @ShaderEXT ((Vector ShaderEXT -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector ShaderEXT
shaders)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
8)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> ShaderEXT -> IO ()) -> Vector ShaderEXT -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i ShaderEXT
e -> Ptr ShaderEXT -> ShaderEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr ShaderEXT
pPShaders' Ptr ShaderEXT -> Int -> Ptr ShaderEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr ShaderEXT) (ShaderEXT
e)) (Vector ShaderEXT
shaders)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ShaderEXT) -> Ptr ShaderEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeneratedCommandsShaderInfoEXT
p Ptr GeneratedCommandsShaderInfoEXT -> Int -> Ptr (Ptr ShaderEXT)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ShaderEXT))) (Ptr ShaderEXT
pPShaders')
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr GeneratedCommandsShaderInfoEXT -> IO b -> IO b
pokeZeroCStruct Ptr GeneratedCommandsShaderInfoEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeneratedCommandsShaderInfoEXT
p Ptr GeneratedCommandsShaderInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr GeneratedCommandsShaderInfoEXT
p Ptr GeneratedCommandsShaderInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO b
f
instance FromCStruct GeneratedCommandsShaderInfoEXT where
peekCStruct :: Ptr GeneratedCommandsShaderInfoEXT
-> IO GeneratedCommandsShaderInfoEXT
peekCStruct Ptr GeneratedCommandsShaderInfoEXT
p = do
Flags
shaderCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr GeneratedCommandsShaderInfoEXT
p Ptr GeneratedCommandsShaderInfoEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
Ptr ShaderEXT
pShaders <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr ShaderEXT) ((Ptr GeneratedCommandsShaderInfoEXT
p Ptr GeneratedCommandsShaderInfoEXT -> Int -> Ptr (Ptr ShaderEXT)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ShaderEXT)))
Vector ShaderEXT
pShaders' <- Int -> (Int -> IO ShaderEXT) -> IO (Vector ShaderEXT)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (Flags -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Flags
shaderCount) (\Int
i -> forall a. Storable a => Ptr a -> IO a
peek @ShaderEXT ((Ptr ShaderEXT
pShaders Ptr ShaderEXT -> Int -> Ptr ShaderEXT
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr ShaderEXT)))
GeneratedCommandsShaderInfoEXT -> IO GeneratedCommandsShaderInfoEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (GeneratedCommandsShaderInfoEXT
-> IO GeneratedCommandsShaderInfoEXT)
-> GeneratedCommandsShaderInfoEXT
-> IO GeneratedCommandsShaderInfoEXT
forall a b. (a -> b) -> a -> b
$ Vector ShaderEXT -> GeneratedCommandsShaderInfoEXT
GeneratedCommandsShaderInfoEXT
Vector ShaderEXT
pShaders'
instance Zero GeneratedCommandsShaderInfoEXT where
zero :: GeneratedCommandsShaderInfoEXT
zero = Vector ShaderEXT -> GeneratedCommandsShaderInfoEXT
GeneratedCommandsShaderInfoEXT
Vector ShaderEXT
forall a. Monoid a => a
mempty
data GeneratedCommandsMemoryRequirementsInfoEXT (es :: [Type]) = GeneratedCommandsMemoryRequirementsInfoEXT
{
forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es -> Chain es
next :: Chain es
,
forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es
-> IndirectExecutionSetEXT
indirectExecutionSet :: IndirectExecutionSetEXT
,
forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es
-> IndirectCommandsLayoutEXT
indirectCommandsLayout :: IndirectCommandsLayoutEXT
,
forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es -> Flags
maxSequenceCount :: Word32
,
forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es -> Flags
maxDrawCount :: Word32
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (GeneratedCommandsMemoryRequirementsInfoEXT (es :: [Type]))
#endif
deriving instance Show (Chain es) => Show (GeneratedCommandsMemoryRequirementsInfoEXT es)
instance Extensible GeneratedCommandsMemoryRequirementsInfoEXT where
extensibleTypeName :: String
extensibleTypeName = String
"GeneratedCommandsMemoryRequirementsInfoEXT"
setNext :: forall (ds :: [*]) (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT ds
-> Chain es -> GeneratedCommandsMemoryRequirementsInfoEXT es
setNext GeneratedCommandsMemoryRequirementsInfoEXT{Flags
IndirectExecutionSetEXT
IndirectCommandsLayoutEXT
Chain ds
$sel:next:GeneratedCommandsMemoryRequirementsInfoEXT :: forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es -> Chain es
$sel:indirectExecutionSet:GeneratedCommandsMemoryRequirementsInfoEXT :: forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es
-> IndirectExecutionSetEXT
$sel:indirectCommandsLayout:GeneratedCommandsMemoryRequirementsInfoEXT :: forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es
-> IndirectCommandsLayoutEXT
$sel:maxSequenceCount:GeneratedCommandsMemoryRequirementsInfoEXT :: forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es -> Flags
$sel:maxDrawCount:GeneratedCommandsMemoryRequirementsInfoEXT :: forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es -> Flags
next :: Chain ds
indirectExecutionSet :: IndirectExecutionSetEXT
indirectCommandsLayout :: IndirectCommandsLayoutEXT
maxSequenceCount :: Flags
maxDrawCount :: Flags
..} Chain es
next' = GeneratedCommandsMemoryRequirementsInfoEXT{$sel:next:GeneratedCommandsMemoryRequirementsInfoEXT :: Chain es
next = Chain es
next', Flags
IndirectExecutionSetEXT
IndirectCommandsLayoutEXT
$sel:indirectExecutionSet:GeneratedCommandsMemoryRequirementsInfoEXT :: IndirectExecutionSetEXT
$sel:indirectCommandsLayout:GeneratedCommandsMemoryRequirementsInfoEXT :: IndirectCommandsLayoutEXT
$sel:maxSequenceCount:GeneratedCommandsMemoryRequirementsInfoEXT :: Flags
$sel:maxDrawCount:GeneratedCommandsMemoryRequirementsInfoEXT :: Flags
indirectExecutionSet :: IndirectExecutionSetEXT
indirectCommandsLayout :: IndirectCommandsLayoutEXT
maxSequenceCount :: Flags
maxDrawCount :: Flags
..}
getNext :: forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es -> Chain es
getNext GeneratedCommandsMemoryRequirementsInfoEXT{Flags
IndirectExecutionSetEXT
IndirectCommandsLayoutEXT
Chain es
$sel:next:GeneratedCommandsMemoryRequirementsInfoEXT :: forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es -> Chain es
$sel:indirectExecutionSet:GeneratedCommandsMemoryRequirementsInfoEXT :: forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es
-> IndirectExecutionSetEXT
$sel:indirectCommandsLayout:GeneratedCommandsMemoryRequirementsInfoEXT :: forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es
-> IndirectCommandsLayoutEXT
$sel:maxSequenceCount:GeneratedCommandsMemoryRequirementsInfoEXT :: forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es -> Flags
$sel:maxDrawCount:GeneratedCommandsMemoryRequirementsInfoEXT :: forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es -> Flags
next :: Chain es
indirectExecutionSet :: IndirectExecutionSetEXT
indirectCommandsLayout :: IndirectCommandsLayoutEXT
maxSequenceCount :: Flags
maxDrawCount :: Flags
..} = Chain es
next
extends :: forall e b proxy. Typeable e => proxy e -> (Extends GeneratedCommandsMemoryRequirementsInfoEXT e => b) -> Maybe b
extends :: forall e b (proxy :: * -> *).
Typeable e =>
proxy e
-> (Extends GeneratedCommandsMemoryRequirementsInfoEXT e => b)
-> Maybe b
extends proxy e
_ Extends GeneratedCommandsMemoryRequirementsInfoEXT e => b
f
| Just e :~: GeneratedCommandsShaderInfoEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @GeneratedCommandsShaderInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends GeneratedCommandsMemoryRequirementsInfoEXT e => b
f
| Just e :~: GeneratedCommandsPipelineInfoEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @GeneratedCommandsPipelineInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends GeneratedCommandsMemoryRequirementsInfoEXT e => b
f
| "isPreprocessed" ::: Bool
otherwise = Maybe b
forall a. Maybe a
Nothing
instance ( Extendss GeneratedCommandsMemoryRequirementsInfoEXT es
, PokeChain es ) => ToCStruct (GeneratedCommandsMemoryRequirementsInfoEXT es) where
withCStruct :: forall b.
GeneratedCommandsMemoryRequirementsInfoEXT es
-> (Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es) -> IO b)
-> IO b
withCStruct GeneratedCommandsMemoryRequirementsInfoEXT es
x Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es) -> IO b
f = Int
-> (Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es) -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
40 ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es) -> IO b)
-> IO b)
-> (Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es) -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p -> Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> GeneratedCommandsMemoryRequirementsInfoEXT es -> IO b -> IO b
forall b.
Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> GeneratedCommandsMemoryRequirementsInfoEXT es -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p GeneratedCommandsMemoryRequirementsInfoEXT es
x (Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es) -> IO b
f Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p)
pokeCStruct :: forall b.
Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> GeneratedCommandsMemoryRequirementsInfoEXT es -> IO b -> IO b
pokeCStruct Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p GeneratedCommandsMemoryRequirementsInfoEXT{Flags
IndirectExecutionSetEXT
IndirectCommandsLayoutEXT
Chain es
$sel:next:GeneratedCommandsMemoryRequirementsInfoEXT :: forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es -> Chain es
$sel:indirectExecutionSet:GeneratedCommandsMemoryRequirementsInfoEXT :: forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es
-> IndirectExecutionSetEXT
$sel:indirectCommandsLayout:GeneratedCommandsMemoryRequirementsInfoEXT :: forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es
-> IndirectCommandsLayoutEXT
$sel:maxSequenceCount:GeneratedCommandsMemoryRequirementsInfoEXT :: forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es -> Flags
$sel:maxDrawCount:GeneratedCommandsMemoryRequirementsInfoEXT :: forall (es :: [*]).
GeneratedCommandsMemoryRequirementsInfoEXT es -> Flags
next :: Chain es
indirectExecutionSet :: IndirectExecutionSetEXT
indirectCommandsLayout :: IndirectCommandsLayoutEXT
maxSequenceCount :: Flags
maxDrawCount :: Flags
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT)
Ptr ()
pNext'' <- (Ptr (Chain es) -> Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> ContT b IO a -> ContT b IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ Chain es -> (Ptr (Chain es) -> IO b) -> IO b
forall (es :: [*]) a.
PokeChain es =>
Chain es -> (Ptr (Chain es) -> IO a) -> IO a
forall a. Chain es -> (Ptr (Chain es) -> IO a) -> IO a
withChain (Chain es
next)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) Ptr ()
pNext''
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectExecutionSetEXT -> IndirectExecutionSetEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> Int -> Ptr IndirectExecutionSetEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr IndirectExecutionSetEXT)) (IndirectExecutionSetEXT
indirectExecutionSet)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectCommandsLayoutEXT -> IndirectCommandsLayoutEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> Int -> Ptr IndirectCommandsLayoutEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr IndirectCommandsLayoutEXT)) (IndirectCommandsLayoutEXT
indirectCommandsLayout)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32)) (Flags
maxSequenceCount)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Word32)) (Flags
maxDrawCount)
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
cStructSize :: Int
cStructSize = Int
40
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es) -> IO b -> IO b
pokeZeroCStruct Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT)
Ptr ()
pNext' <- (Ptr (Chain es) -> Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> ContT b IO a -> ContT b IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ forall (es :: [*]) a.
PokeChain es =>
(Ptr (Chain es) -> IO a) -> IO a
withZeroChain @es
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) Ptr ()
pNext'
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectCommandsLayoutEXT -> IndirectCommandsLayoutEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> Int -> Ptr IndirectCommandsLayoutEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr IndirectCommandsLayoutEXT)) (IndirectCommandsLayoutEXT
forall a. Zero a => a
zero)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
instance ( Extendss GeneratedCommandsMemoryRequirementsInfoEXT es
, PeekChain es ) => FromCStruct (GeneratedCommandsMemoryRequirementsInfoEXT es) where
peekCStruct :: Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> IO (GeneratedCommandsMemoryRequirementsInfoEXT es)
peekCStruct Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p = do
Ptr ()
pNext <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr ()) ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ())))
Chain es
next <- Ptr (Chain es) -> IO (Chain es)
forall (es :: [*]). PeekChain es => Ptr (Chain es) -> IO (Chain es)
peekChain (Ptr () -> Ptr (Chain es)
forall a b. Ptr a -> Ptr b
castPtr Ptr ()
pNext)
IndirectExecutionSetEXT
indirectExecutionSet <- forall a. Storable a => Ptr a -> IO a
peek @IndirectExecutionSetEXT ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> Int -> Ptr IndirectExecutionSetEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr IndirectExecutionSetEXT))
IndirectCommandsLayoutEXT
indirectCommandsLayout <- forall a. Storable a => Ptr a -> IO a
peek @IndirectCommandsLayoutEXT ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> Int -> Ptr IndirectCommandsLayoutEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr IndirectCommandsLayoutEXT))
Flags
maxSequenceCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32))
Flags
maxDrawCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
p Ptr (GeneratedCommandsMemoryRequirementsInfoEXT es)
-> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Word32))
GeneratedCommandsMemoryRequirementsInfoEXT es
-> IO (GeneratedCommandsMemoryRequirementsInfoEXT es)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (GeneratedCommandsMemoryRequirementsInfoEXT es
-> IO (GeneratedCommandsMemoryRequirementsInfoEXT es))
-> GeneratedCommandsMemoryRequirementsInfoEXT es
-> IO (GeneratedCommandsMemoryRequirementsInfoEXT es)
forall a b. (a -> b) -> a -> b
$ Chain es
-> IndirectExecutionSetEXT
-> IndirectCommandsLayoutEXT
-> Flags
-> Flags
-> GeneratedCommandsMemoryRequirementsInfoEXT es
forall (es :: [*]).
Chain es
-> IndirectExecutionSetEXT
-> IndirectCommandsLayoutEXT
-> Flags
-> Flags
-> GeneratedCommandsMemoryRequirementsInfoEXT es
GeneratedCommandsMemoryRequirementsInfoEXT
Chain es
next
IndirectExecutionSetEXT
indirectExecutionSet
IndirectCommandsLayoutEXT
indirectCommandsLayout
Flags
maxSequenceCount
Flags
maxDrawCount
instance es ~ '[] => Zero (GeneratedCommandsMemoryRequirementsInfoEXT es) where
zero :: GeneratedCommandsMemoryRequirementsInfoEXT es
zero = Chain es
-> IndirectExecutionSetEXT
-> IndirectCommandsLayoutEXT
-> Flags
-> Flags
-> GeneratedCommandsMemoryRequirementsInfoEXT es
forall (es :: [*]).
Chain es
-> IndirectExecutionSetEXT
-> IndirectCommandsLayoutEXT
-> Flags
-> Flags
-> GeneratedCommandsMemoryRequirementsInfoEXT es
GeneratedCommandsMemoryRequirementsInfoEXT
()
IndirectExecutionSetEXT
forall a. Zero a => a
zero
IndirectCommandsLayoutEXT
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
data IndirectExecutionSetPipelineInfoEXT = IndirectExecutionSetPipelineInfoEXT
{
IndirectExecutionSetPipelineInfoEXT -> Pipeline
initialPipeline :: Pipeline
,
IndirectExecutionSetPipelineInfoEXT -> Flags
maxPipelineCount :: Word32
}
deriving (Typeable, IndirectExecutionSetPipelineInfoEXT
-> IndirectExecutionSetPipelineInfoEXT -> "isPreprocessed" ::: Bool
(IndirectExecutionSetPipelineInfoEXT
-> IndirectExecutionSetPipelineInfoEXT
-> "isPreprocessed" ::: Bool)
-> (IndirectExecutionSetPipelineInfoEXT
-> IndirectExecutionSetPipelineInfoEXT
-> "isPreprocessed" ::: Bool)
-> Eq IndirectExecutionSetPipelineInfoEXT
forall a.
(a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool) -> Eq a
$c== :: IndirectExecutionSetPipelineInfoEXT
-> IndirectExecutionSetPipelineInfoEXT -> "isPreprocessed" ::: Bool
== :: IndirectExecutionSetPipelineInfoEXT
-> IndirectExecutionSetPipelineInfoEXT -> "isPreprocessed" ::: Bool
$c/= :: IndirectExecutionSetPipelineInfoEXT
-> IndirectExecutionSetPipelineInfoEXT -> "isPreprocessed" ::: Bool
/= :: IndirectExecutionSetPipelineInfoEXT
-> IndirectExecutionSetPipelineInfoEXT -> "isPreprocessed" ::: Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (IndirectExecutionSetPipelineInfoEXT)
#endif
deriving instance Show IndirectExecutionSetPipelineInfoEXT
instance ToCStruct IndirectExecutionSetPipelineInfoEXT where
withCStruct :: forall b.
IndirectExecutionSetPipelineInfoEXT
-> (Ptr IndirectExecutionSetPipelineInfoEXT -> IO b) -> IO b
withCStruct IndirectExecutionSetPipelineInfoEXT
x Ptr IndirectExecutionSetPipelineInfoEXT -> IO b
f = Int -> (Ptr IndirectExecutionSetPipelineInfoEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr IndirectExecutionSetPipelineInfoEXT -> IO b) -> IO b)
-> (Ptr IndirectExecutionSetPipelineInfoEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr IndirectExecutionSetPipelineInfoEXT
p -> Ptr IndirectExecutionSetPipelineInfoEXT
-> IndirectExecutionSetPipelineInfoEXT -> IO b -> IO b
forall b.
Ptr IndirectExecutionSetPipelineInfoEXT
-> IndirectExecutionSetPipelineInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr IndirectExecutionSetPipelineInfoEXT
p IndirectExecutionSetPipelineInfoEXT
x (Ptr IndirectExecutionSetPipelineInfoEXT -> IO b
f Ptr IndirectExecutionSetPipelineInfoEXT
p)
pokeCStruct :: forall b.
Ptr IndirectExecutionSetPipelineInfoEXT
-> IndirectExecutionSetPipelineInfoEXT -> IO b -> IO b
pokeCStruct Ptr IndirectExecutionSetPipelineInfoEXT
p IndirectExecutionSetPipelineInfoEXT{Flags
Pipeline
$sel:initialPipeline:IndirectExecutionSetPipelineInfoEXT :: IndirectExecutionSetPipelineInfoEXT -> Pipeline
$sel:maxPipelineCount:IndirectExecutionSetPipelineInfoEXT :: IndirectExecutionSetPipelineInfoEXT -> Flags
initialPipeline :: Pipeline
maxPipelineCount :: Flags
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetPipelineInfoEXT
p Ptr IndirectExecutionSetPipelineInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetPipelineInfoEXT
p Ptr IndirectExecutionSetPipelineInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Pipeline -> Pipeline -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetPipelineInfoEXT
p Ptr IndirectExecutionSetPipelineInfoEXT -> Int -> Ptr Pipeline
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Pipeline)) (Pipeline
initialPipeline)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetPipelineInfoEXT
p Ptr IndirectExecutionSetPipelineInfoEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Flags
maxPipelineCount)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr IndirectExecutionSetPipelineInfoEXT -> IO b -> IO b
pokeZeroCStruct Ptr IndirectExecutionSetPipelineInfoEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetPipelineInfoEXT
p Ptr IndirectExecutionSetPipelineInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetPipelineInfoEXT
p Ptr IndirectExecutionSetPipelineInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Pipeline -> Pipeline -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetPipelineInfoEXT
p Ptr IndirectExecutionSetPipelineInfoEXT -> Int -> Ptr Pipeline
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Pipeline)) (Pipeline
forall a. Zero a => a
zero)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetPipelineInfoEXT
p Ptr IndirectExecutionSetPipelineInfoEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct IndirectExecutionSetPipelineInfoEXT where
peekCStruct :: Ptr IndirectExecutionSetPipelineInfoEXT
-> IO IndirectExecutionSetPipelineInfoEXT
peekCStruct Ptr IndirectExecutionSetPipelineInfoEXT
p = do
Pipeline
initialPipeline <- forall a. Storable a => Ptr a -> IO a
peek @Pipeline ((Ptr IndirectExecutionSetPipelineInfoEXT
p Ptr IndirectExecutionSetPipelineInfoEXT -> Int -> Ptr Pipeline
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Pipeline))
Flags
maxPipelineCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr IndirectExecutionSetPipelineInfoEXT
p Ptr IndirectExecutionSetPipelineInfoEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32))
IndirectExecutionSetPipelineInfoEXT
-> IO IndirectExecutionSetPipelineInfoEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (IndirectExecutionSetPipelineInfoEXT
-> IO IndirectExecutionSetPipelineInfoEXT)
-> IndirectExecutionSetPipelineInfoEXT
-> IO IndirectExecutionSetPipelineInfoEXT
forall a b. (a -> b) -> a -> b
$ Pipeline -> Flags -> IndirectExecutionSetPipelineInfoEXT
IndirectExecutionSetPipelineInfoEXT
Pipeline
initialPipeline Flags
maxPipelineCount
instance Storable IndirectExecutionSetPipelineInfoEXT where
sizeOf :: IndirectExecutionSetPipelineInfoEXT -> Int
sizeOf ~IndirectExecutionSetPipelineInfoEXT
_ = Int
32
alignment :: IndirectExecutionSetPipelineInfoEXT -> Int
alignment ~IndirectExecutionSetPipelineInfoEXT
_ = Int
8
peek :: Ptr IndirectExecutionSetPipelineInfoEXT
-> IO IndirectExecutionSetPipelineInfoEXT
peek = Ptr IndirectExecutionSetPipelineInfoEXT
-> IO IndirectExecutionSetPipelineInfoEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr IndirectExecutionSetPipelineInfoEXT
-> IndirectExecutionSetPipelineInfoEXT -> IO ()
poke Ptr IndirectExecutionSetPipelineInfoEXT
ptr IndirectExecutionSetPipelineInfoEXT
poked = Ptr IndirectExecutionSetPipelineInfoEXT
-> IndirectExecutionSetPipelineInfoEXT -> IO () -> IO ()
forall b.
Ptr IndirectExecutionSetPipelineInfoEXT
-> IndirectExecutionSetPipelineInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr IndirectExecutionSetPipelineInfoEXT
ptr IndirectExecutionSetPipelineInfoEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero IndirectExecutionSetPipelineInfoEXT where
zero :: IndirectExecutionSetPipelineInfoEXT
zero = Pipeline -> Flags -> IndirectExecutionSetPipelineInfoEXT
IndirectExecutionSetPipelineInfoEXT
Pipeline
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
data IndirectExecutionSetShaderLayoutInfoEXT = IndirectExecutionSetShaderLayoutInfoEXT
{
IndirectExecutionSetShaderLayoutInfoEXT
-> Vector DescriptorSetLayout
setLayouts :: Vector DescriptorSetLayout }
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (IndirectExecutionSetShaderLayoutInfoEXT)
#endif
deriving instance Show IndirectExecutionSetShaderLayoutInfoEXT
instance ToCStruct IndirectExecutionSetShaderLayoutInfoEXT where
withCStruct :: forall b.
IndirectExecutionSetShaderLayoutInfoEXT
-> (Ptr IndirectExecutionSetShaderLayoutInfoEXT -> IO b) -> IO b
withCStruct IndirectExecutionSetShaderLayoutInfoEXT
x Ptr IndirectExecutionSetShaderLayoutInfoEXT -> IO b
f = Int
-> (Ptr IndirectExecutionSetShaderLayoutInfoEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr IndirectExecutionSetShaderLayoutInfoEXT -> IO b) -> IO b)
-> (Ptr IndirectExecutionSetShaderLayoutInfoEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr IndirectExecutionSetShaderLayoutInfoEXT
p -> Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> IndirectExecutionSetShaderLayoutInfoEXT -> IO b -> IO b
forall b.
Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> IndirectExecutionSetShaderLayoutInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr IndirectExecutionSetShaderLayoutInfoEXT
p IndirectExecutionSetShaderLayoutInfoEXT
x (Ptr IndirectExecutionSetShaderLayoutInfoEXT -> IO b
f Ptr IndirectExecutionSetShaderLayoutInfoEXT
p)
pokeCStruct :: forall b.
Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> IndirectExecutionSetShaderLayoutInfoEXT -> IO b -> IO b
pokeCStruct Ptr IndirectExecutionSetShaderLayoutInfoEXT
p IndirectExecutionSetShaderLayoutInfoEXT{Vector DescriptorSetLayout
$sel:setLayouts:IndirectExecutionSetShaderLayoutInfoEXT :: IndirectExecutionSetShaderLayoutInfoEXT
-> Vector DescriptorSetLayout
setLayouts :: Vector DescriptorSetLayout
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderLayoutInfoEXT
p Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderLayoutInfoEXT
p Ptr IndirectExecutionSetShaderLayoutInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderLayoutInfoEXT
p Ptr IndirectExecutionSetShaderLayoutInfoEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) ((Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Vector DescriptorSetLayout -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector DescriptorSetLayout -> Int)
-> Vector DescriptorSetLayout -> Int
forall a b. (a -> b) -> a -> b
$ (Vector DescriptorSetLayout
setLayouts)) :: Word32))
Ptr DescriptorSetLayout
pPSetLayouts' <- ((Ptr DescriptorSetLayout -> IO b) -> IO b)
-> ContT b IO (Ptr DescriptorSetLayout)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr DescriptorSetLayout -> IO b) -> IO b)
-> ContT b IO (Ptr DescriptorSetLayout))
-> ((Ptr DescriptorSetLayout -> IO b) -> IO b)
-> ContT b IO (Ptr DescriptorSetLayout)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @DescriptorSetLayout ((Vector DescriptorSetLayout -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector DescriptorSetLayout
setLayouts)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
8)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> DescriptorSetLayout -> IO ())
-> Vector DescriptorSetLayout -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i DescriptorSetLayout
e -> Ptr DescriptorSetLayout -> DescriptorSetLayout -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr DescriptorSetLayout
pPSetLayouts' Ptr DescriptorSetLayout -> Int -> Ptr DescriptorSetLayout
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr DescriptorSetLayout) (DescriptorSetLayout
e)) (Vector DescriptorSetLayout
setLayouts)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr DescriptorSetLayout) -> Ptr DescriptorSetLayout -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderLayoutInfoEXT
p Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> Int -> Ptr (Ptr DescriptorSetLayout)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr DescriptorSetLayout))) (Ptr DescriptorSetLayout
pPSetLayouts')
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr IndirectExecutionSetShaderLayoutInfoEXT -> IO b -> IO b
pokeZeroCStruct Ptr IndirectExecutionSetShaderLayoutInfoEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderLayoutInfoEXT
p Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderLayoutInfoEXT
p Ptr IndirectExecutionSetShaderLayoutInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO b
f
instance FromCStruct IndirectExecutionSetShaderLayoutInfoEXT where
peekCStruct :: Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> IO IndirectExecutionSetShaderLayoutInfoEXT
peekCStruct Ptr IndirectExecutionSetShaderLayoutInfoEXT
p = do
Flags
setLayoutCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr IndirectExecutionSetShaderLayoutInfoEXT
p Ptr IndirectExecutionSetShaderLayoutInfoEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
Ptr DescriptorSetLayout
pSetLayouts <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr DescriptorSetLayout) ((Ptr IndirectExecutionSetShaderLayoutInfoEXT
p Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> Int -> Ptr (Ptr DescriptorSetLayout)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr DescriptorSetLayout)))
Vector DescriptorSetLayout
pSetLayouts' <- Int
-> (Int -> IO DescriptorSetLayout)
-> IO (Vector DescriptorSetLayout)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (Flags -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Flags
setLayoutCount) (\Int
i -> forall a. Storable a => Ptr a -> IO a
peek @DescriptorSetLayout ((Ptr DescriptorSetLayout
pSetLayouts Ptr DescriptorSetLayout -> Int -> Ptr DescriptorSetLayout
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr DescriptorSetLayout)))
IndirectExecutionSetShaderLayoutInfoEXT
-> IO IndirectExecutionSetShaderLayoutInfoEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (IndirectExecutionSetShaderLayoutInfoEXT
-> IO IndirectExecutionSetShaderLayoutInfoEXT)
-> IndirectExecutionSetShaderLayoutInfoEXT
-> IO IndirectExecutionSetShaderLayoutInfoEXT
forall a b. (a -> b) -> a -> b
$ Vector DescriptorSetLayout
-> IndirectExecutionSetShaderLayoutInfoEXT
IndirectExecutionSetShaderLayoutInfoEXT
Vector DescriptorSetLayout
pSetLayouts'
instance Zero IndirectExecutionSetShaderLayoutInfoEXT where
zero :: IndirectExecutionSetShaderLayoutInfoEXT
zero = Vector DescriptorSetLayout
-> IndirectExecutionSetShaderLayoutInfoEXT
IndirectExecutionSetShaderLayoutInfoEXT
Vector DescriptorSetLayout
forall a. Monoid a => a
mempty
data IndirectExecutionSetShaderInfoEXT = IndirectExecutionSetShaderInfoEXT
{
IndirectExecutionSetShaderInfoEXT -> Vector ShaderEXT
initialShaders :: Vector ShaderEXT
,
IndirectExecutionSetShaderInfoEXT
-> Vector IndirectExecutionSetShaderLayoutInfoEXT
setLayoutInfos :: Vector IndirectExecutionSetShaderLayoutInfoEXT
,
IndirectExecutionSetShaderInfoEXT -> Flags
maxShaderCount :: Word32
,
IndirectExecutionSetShaderInfoEXT -> Vector PushConstantRange
pushConstantRanges :: Vector PushConstantRange
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (IndirectExecutionSetShaderInfoEXT)
#endif
deriving instance Show IndirectExecutionSetShaderInfoEXT
instance ToCStruct IndirectExecutionSetShaderInfoEXT where
withCStruct :: forall b.
IndirectExecutionSetShaderInfoEXT
-> (Ptr IndirectExecutionSetShaderInfoEXT -> IO b) -> IO b
withCStruct IndirectExecutionSetShaderInfoEXT
x Ptr IndirectExecutionSetShaderInfoEXT -> IO b
f = Int -> (Ptr IndirectExecutionSetShaderInfoEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
56 ((Ptr IndirectExecutionSetShaderInfoEXT -> IO b) -> IO b)
-> (Ptr IndirectExecutionSetShaderInfoEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr IndirectExecutionSetShaderInfoEXT
p -> Ptr IndirectExecutionSetShaderInfoEXT
-> IndirectExecutionSetShaderInfoEXT -> IO b -> IO b
forall b.
Ptr IndirectExecutionSetShaderInfoEXT
-> IndirectExecutionSetShaderInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr IndirectExecutionSetShaderInfoEXT
p IndirectExecutionSetShaderInfoEXT
x (Ptr IndirectExecutionSetShaderInfoEXT -> IO b
f Ptr IndirectExecutionSetShaderInfoEXT
p)
pokeCStruct :: forall b.
Ptr IndirectExecutionSetShaderInfoEXT
-> IndirectExecutionSetShaderInfoEXT -> IO b -> IO b
pokeCStruct Ptr IndirectExecutionSetShaderInfoEXT
p IndirectExecutionSetShaderInfoEXT{Flags
Vector PushConstantRange
Vector ShaderEXT
Vector IndirectExecutionSetShaderLayoutInfoEXT
$sel:initialShaders:IndirectExecutionSetShaderInfoEXT :: IndirectExecutionSetShaderInfoEXT -> Vector ShaderEXT
$sel:setLayoutInfos:IndirectExecutionSetShaderInfoEXT :: IndirectExecutionSetShaderInfoEXT
-> Vector IndirectExecutionSetShaderLayoutInfoEXT
$sel:maxShaderCount:IndirectExecutionSetShaderInfoEXT :: IndirectExecutionSetShaderInfoEXT -> Flags
$sel:pushConstantRanges:IndirectExecutionSetShaderInfoEXT :: IndirectExecutionSetShaderInfoEXT -> Vector PushConstantRange
initialShaders :: Vector ShaderEXT
setLayoutInfos :: Vector IndirectExecutionSetShaderLayoutInfoEXT
maxShaderCount :: Flags
pushConstantRanges :: Vector PushConstantRange
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
let pInitialShadersLength :: Int
pInitialShadersLength = Vector ShaderEXT -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector ShaderEXT -> Int) -> Vector ShaderEXT -> Int
forall a b. (a -> b) -> a -> b
$ (Vector ShaderEXT
initialShaders)
let pSetLayoutInfosLength :: Int
pSetLayoutInfosLength = Vector IndirectExecutionSetShaderLayoutInfoEXT -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector IndirectExecutionSetShaderLayoutInfoEXT -> Int)
-> Vector IndirectExecutionSetShaderLayoutInfoEXT -> Int
forall a b. (a -> b) -> a -> b
$ (Vector IndirectExecutionSetShaderLayoutInfoEXT
setLayoutInfos)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ ("isPreprocessed" ::: Bool) -> IO () -> IO ()
forall (f :: * -> *).
Applicative f =>
("isPreprocessed" ::: Bool) -> f () -> f ()
unless (Int -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pSetLayoutInfosLength Int -> Int -> "isPreprocessed" ::: Bool
forall a. Eq a => a -> a -> "isPreprocessed" ::: Bool
== Int
pInitialShadersLength ("isPreprocessed" ::: Bool)
-> ("isPreprocessed" ::: Bool) -> "isPreprocessed" ::: Bool
|| Int
pSetLayoutInfosLength Int -> Int -> "isPreprocessed" ::: Bool
forall a. Eq a => a -> a -> "isPreprocessed" ::: Bool
== Int
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 String
"" String
"pSetLayoutInfos and pInitialShaders must have the same length" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) ((Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pInitialShadersLength :: Word32))
Ptr ShaderEXT
pPInitialShaders' <- ((Ptr ShaderEXT -> IO b) -> IO b) -> ContT b IO (Ptr ShaderEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr ShaderEXT -> IO b) -> IO b) -> ContT b IO (Ptr ShaderEXT))
-> ((Ptr ShaderEXT -> IO b) -> IO b) -> ContT b IO (Ptr ShaderEXT)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @ShaderEXT ((Vector ShaderEXT -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector ShaderEXT
initialShaders)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
8)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> ShaderEXT -> IO ()) -> Vector ShaderEXT -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i ShaderEXT
e -> Ptr ShaderEXT -> ShaderEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr ShaderEXT
pPInitialShaders' Ptr ShaderEXT -> Int -> Ptr ShaderEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr ShaderEXT) (ShaderEXT
e)) (Vector ShaderEXT
initialShaders)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ShaderEXT) -> Ptr ShaderEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT -> Int -> Ptr (Ptr ShaderEXT)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ShaderEXT))) (Ptr ShaderEXT
pPInitialShaders')
Ptr IndirectExecutionSetShaderLayoutInfoEXT
pSetLayoutInfos'' <- if Vector IndirectExecutionSetShaderLayoutInfoEXT
-> "isPreprocessed" ::: Bool
forall a. Vector a -> "isPreprocessed" ::: Bool
Data.Vector.null (Vector IndirectExecutionSetShaderLayoutInfoEXT
setLayoutInfos)
then Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> ContT b IO (Ptr IndirectExecutionSetShaderLayoutInfoEXT)
forall a. a -> ContT b IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr IndirectExecutionSetShaderLayoutInfoEXT
forall a. Ptr a
nullPtr
else do
Ptr IndirectExecutionSetShaderLayoutInfoEXT
pPSetLayoutInfos <- ((Ptr IndirectExecutionSetShaderLayoutInfoEXT -> IO b) -> IO b)
-> ContT b IO (Ptr IndirectExecutionSetShaderLayoutInfoEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr IndirectExecutionSetShaderLayoutInfoEXT -> IO b) -> IO b)
-> ContT b IO (Ptr IndirectExecutionSetShaderLayoutInfoEXT))
-> ((Ptr IndirectExecutionSetShaderLayoutInfoEXT -> IO b) -> IO b)
-> ContT b IO (Ptr IndirectExecutionSetShaderLayoutInfoEXT)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @IndirectExecutionSetShaderLayoutInfoEXT (((Vector IndirectExecutionSetShaderLayoutInfoEXT -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector IndirectExecutionSetShaderLayoutInfoEXT
setLayoutInfos))) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
32)
(Int -> IndirectExecutionSetShaderLayoutInfoEXT -> ContT b IO ())
-> Vector IndirectExecutionSetShaderLayoutInfoEXT -> ContT b IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i IndirectExecutionSetShaderLayoutInfoEXT
e -> ((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> IndirectExecutionSetShaderLayoutInfoEXT -> IO b -> IO b
forall b.
Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> IndirectExecutionSetShaderLayoutInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (Ptr IndirectExecutionSetShaderLayoutInfoEXT
pPSetLayoutInfos Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> Int -> Ptr IndirectExecutionSetShaderLayoutInfoEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
32 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr IndirectExecutionSetShaderLayoutInfoEXT) (IndirectExecutionSetShaderLayoutInfoEXT
e) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())) ((Vector IndirectExecutionSetShaderLayoutInfoEXT
setLayoutInfos))
Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> ContT b IO (Ptr IndirectExecutionSetShaderLayoutInfoEXT)
forall a. a -> ContT b IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> ContT b IO (Ptr IndirectExecutionSetShaderLayoutInfoEXT))
-> Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> ContT b IO (Ptr IndirectExecutionSetShaderLayoutInfoEXT)
forall a b. (a -> b) -> a -> b
$ Ptr IndirectExecutionSetShaderLayoutInfoEXT
pPSetLayoutInfos
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr IndirectExecutionSetShaderLayoutInfoEXT)
-> Ptr IndirectExecutionSetShaderLayoutInfoEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT
-> Int -> Ptr (Ptr IndirectExecutionSetShaderLayoutInfoEXT)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr (Ptr IndirectExecutionSetShaderLayoutInfoEXT))) Ptr IndirectExecutionSetShaderLayoutInfoEXT
pSetLayoutInfos''
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Word32)) (Flags
maxShaderCount)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Word32)) ((Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Vector PushConstantRange -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector PushConstantRange -> Int)
-> Vector PushConstantRange -> Int
forall a b. (a -> b) -> a -> b
$ (Vector PushConstantRange
pushConstantRanges)) :: Word32))
Ptr PushConstantRange
pPPushConstantRanges' <- ((Ptr PushConstantRange -> IO b) -> IO b)
-> ContT b IO (Ptr PushConstantRange)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr PushConstantRange -> IO b) -> IO b)
-> ContT b IO (Ptr PushConstantRange))
-> ((Ptr PushConstantRange -> IO b) -> IO b)
-> ContT b IO (Ptr PushConstantRange)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @PushConstantRange ((Vector PushConstantRange -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector PushConstantRange
pushConstantRanges)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
12)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ (Int -> PushConstantRange -> IO ())
-> Vector PushConstantRange -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i PushConstantRange
e -> Ptr PushConstantRange -> PushConstantRange -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr PushConstantRange
pPPushConstantRanges' Ptr PushConstantRange -> Int -> Ptr PushConstantRange
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
12 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr PushConstantRange) (PushConstantRange
e)) (Vector PushConstantRange
pushConstantRanges)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr PushConstantRange) -> Ptr PushConstantRange -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT
-> Int -> Ptr (Ptr PushConstantRange)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr (Ptr PushConstantRange))) (Ptr PushConstantRange
pPPushConstantRanges')
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
cStructSize :: Int
cStructSize = Int
56
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr IndirectExecutionSetShaderInfoEXT -> IO b -> IO b
pokeZeroCStruct Ptr IndirectExecutionSetShaderInfoEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct IndirectExecutionSetShaderInfoEXT where
peekCStruct :: Ptr IndirectExecutionSetShaderInfoEXT
-> IO IndirectExecutionSetShaderInfoEXT
peekCStruct Ptr IndirectExecutionSetShaderInfoEXT
p = do
Flags
shaderCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
Ptr ShaderEXT
pInitialShaders <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr ShaderEXT) ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT -> Int -> Ptr (Ptr ShaderEXT)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ShaderEXT)))
Vector ShaderEXT
pInitialShaders' <- Int -> (Int -> IO ShaderEXT) -> IO (Vector ShaderEXT)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (Flags -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Flags
shaderCount) (\Int
i -> forall a. Storable a => Ptr a -> IO a
peek @ShaderEXT ((Ptr ShaderEXT
pInitialShaders Ptr ShaderEXT -> Int -> Ptr ShaderEXT
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr ShaderEXT)))
Ptr IndirectExecutionSetShaderLayoutInfoEXT
pSetLayoutInfos <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr IndirectExecutionSetShaderLayoutInfoEXT) ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT
-> Int -> Ptr (Ptr IndirectExecutionSetShaderLayoutInfoEXT)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr (Ptr IndirectExecutionSetShaderLayoutInfoEXT)))
let pSetLayoutInfosLength :: Int
pSetLayoutInfosLength = if Ptr IndirectExecutionSetShaderLayoutInfoEXT
pSetLayoutInfos Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> "isPreprocessed" ::: Bool
forall a. Eq a => a -> a -> "isPreprocessed" ::: Bool
== Ptr IndirectExecutionSetShaderLayoutInfoEXT
forall a. Ptr a
nullPtr then Int
0 else (Flags -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Flags
shaderCount)
Vector IndirectExecutionSetShaderLayoutInfoEXT
pSetLayoutInfos' <- Int
-> (Int -> IO IndirectExecutionSetShaderLayoutInfoEXT)
-> IO (Vector IndirectExecutionSetShaderLayoutInfoEXT)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM Int
pSetLayoutInfosLength (\Int
i -> forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @IndirectExecutionSetShaderLayoutInfoEXT ((Ptr IndirectExecutionSetShaderLayoutInfoEXT
pSetLayoutInfos Ptr IndirectExecutionSetShaderLayoutInfoEXT
-> Int -> Ptr IndirectExecutionSetShaderLayoutInfoEXT
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
32 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr IndirectExecutionSetShaderLayoutInfoEXT)))
Flags
maxShaderCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Word32))
Flags
pushConstantRangeCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Word32))
Ptr PushConstantRange
pPushConstantRanges <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr PushConstantRange) ((Ptr IndirectExecutionSetShaderInfoEXT
p Ptr IndirectExecutionSetShaderInfoEXT
-> Int -> Ptr (Ptr PushConstantRange)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr (Ptr PushConstantRange)))
Vector PushConstantRange
pPushConstantRanges' <- Int
-> (Int -> IO PushConstantRange) -> IO (Vector PushConstantRange)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (Flags -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Flags
pushConstantRangeCount) (\Int
i -> forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @PushConstantRange ((Ptr PushConstantRange
pPushConstantRanges Ptr PushConstantRange -> Int -> Ptr PushConstantRange
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
12 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr PushConstantRange)))
IndirectExecutionSetShaderInfoEXT
-> IO IndirectExecutionSetShaderInfoEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (IndirectExecutionSetShaderInfoEXT
-> IO IndirectExecutionSetShaderInfoEXT)
-> IndirectExecutionSetShaderInfoEXT
-> IO IndirectExecutionSetShaderInfoEXT
forall a b. (a -> b) -> a -> b
$ Vector ShaderEXT
-> Vector IndirectExecutionSetShaderLayoutInfoEXT
-> Flags
-> Vector PushConstantRange
-> IndirectExecutionSetShaderInfoEXT
IndirectExecutionSetShaderInfoEXT
Vector ShaderEXT
pInitialShaders'
Vector IndirectExecutionSetShaderLayoutInfoEXT
pSetLayoutInfos'
Flags
maxShaderCount
Vector PushConstantRange
pPushConstantRanges'
instance Zero IndirectExecutionSetShaderInfoEXT where
zero :: IndirectExecutionSetShaderInfoEXT
zero = Vector ShaderEXT
-> Vector IndirectExecutionSetShaderLayoutInfoEXT
-> Flags
-> Vector PushConstantRange
-> IndirectExecutionSetShaderInfoEXT
IndirectExecutionSetShaderInfoEXT
Vector ShaderEXT
forall a. Monoid a => a
mempty
Vector IndirectExecutionSetShaderLayoutInfoEXT
forall a. Monoid a => a
mempty
Flags
forall a. Zero a => a
zero
Vector PushConstantRange
forall a. Monoid a => a
mempty
data IndirectExecutionSetCreateInfoEXT = IndirectExecutionSetCreateInfoEXT
{
IndirectExecutionSetCreateInfoEXT
-> IndirectExecutionSetInfoTypeEXT
type' :: IndirectExecutionSetInfoTypeEXT
,
IndirectExecutionSetCreateInfoEXT -> IndirectExecutionSetInfoEXT
info :: IndirectExecutionSetInfoEXT
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (IndirectExecutionSetCreateInfoEXT)
#endif
deriving instance Show IndirectExecutionSetCreateInfoEXT
instance ToCStruct IndirectExecutionSetCreateInfoEXT where
withCStruct :: forall b.
IndirectExecutionSetCreateInfoEXT
-> (Ptr IndirectExecutionSetCreateInfoEXT -> IO b) -> IO b
withCStruct IndirectExecutionSetCreateInfoEXT
x Ptr IndirectExecutionSetCreateInfoEXT -> IO b
f = Int -> (Ptr IndirectExecutionSetCreateInfoEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr IndirectExecutionSetCreateInfoEXT -> IO b) -> IO b)
-> (Ptr IndirectExecutionSetCreateInfoEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr IndirectExecutionSetCreateInfoEXT
p -> Ptr IndirectExecutionSetCreateInfoEXT
-> IndirectExecutionSetCreateInfoEXT -> IO b -> IO b
forall b.
Ptr IndirectExecutionSetCreateInfoEXT
-> IndirectExecutionSetCreateInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr IndirectExecutionSetCreateInfoEXT
p IndirectExecutionSetCreateInfoEXT
x (Ptr IndirectExecutionSetCreateInfoEXT -> IO b
f Ptr IndirectExecutionSetCreateInfoEXT
p)
pokeCStruct :: forall b.
Ptr IndirectExecutionSetCreateInfoEXT
-> IndirectExecutionSetCreateInfoEXT -> IO b -> IO b
pokeCStruct Ptr IndirectExecutionSetCreateInfoEXT
p IndirectExecutionSetCreateInfoEXT{IndirectExecutionSetInfoTypeEXT
IndirectExecutionSetInfoEXT
$sel:type':IndirectExecutionSetCreateInfoEXT :: IndirectExecutionSetCreateInfoEXT
-> IndirectExecutionSetInfoTypeEXT
$sel:info:IndirectExecutionSetCreateInfoEXT :: IndirectExecutionSetCreateInfoEXT -> IndirectExecutionSetInfoEXT
type' :: IndirectExecutionSetInfoTypeEXT
info :: IndirectExecutionSetInfoEXT
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetCreateInfoEXT
p Ptr IndirectExecutionSetCreateInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetCreateInfoEXT
p Ptr IndirectExecutionSetCreateInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetCreateInfoEXT
p Ptr IndirectExecutionSetCreateInfoEXT
-> Int -> Ptr IndirectExecutionSetInfoTypeEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr IndirectExecutionSetInfoTypeEXT)) (IndirectExecutionSetInfoTypeEXT
type')
((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectExecutionSetInfoEXT
-> IndirectExecutionSetInfoEXT -> IO b -> IO b
forall b.
Ptr IndirectExecutionSetInfoEXT
-> IndirectExecutionSetInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr IndirectExecutionSetCreateInfoEXT
p Ptr IndirectExecutionSetCreateInfoEXT
-> Int -> Ptr IndirectExecutionSetInfoEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr IndirectExecutionSetInfoEXT)) (IndirectExecutionSetInfoEXT
info) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr IndirectExecutionSetCreateInfoEXT -> IO b -> IO b
pokeZeroCStruct Ptr IndirectExecutionSetCreateInfoEXT
p IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetCreateInfoEXT
p Ptr IndirectExecutionSetCreateInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetCreateInfoEXT
p Ptr IndirectExecutionSetCreateInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectExecutionSetCreateInfoEXT
p Ptr IndirectExecutionSetCreateInfoEXT
-> Int -> Ptr IndirectExecutionSetInfoTypeEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr IndirectExecutionSetInfoTypeEXT)) (IndirectExecutionSetInfoTypeEXT
forall a. Zero a => a
zero)
((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectExecutionSetInfoEXT
-> IndirectExecutionSetInfoEXT -> IO b -> IO b
forall b.
Ptr IndirectExecutionSetInfoEXT
-> IndirectExecutionSetInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr IndirectExecutionSetCreateInfoEXT
p Ptr IndirectExecutionSetCreateInfoEXT
-> Int -> Ptr IndirectExecutionSetInfoEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr IndirectExecutionSetInfoEXT)) (IndirectExecutionSetInfoEXT
forall a. Zero a => a
zero) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
instance Zero IndirectExecutionSetCreateInfoEXT where
zero :: IndirectExecutionSetCreateInfoEXT
zero = IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoEXT -> IndirectExecutionSetCreateInfoEXT
IndirectExecutionSetCreateInfoEXT
IndirectExecutionSetInfoTypeEXT
forall a. Zero a => a
zero
IndirectExecutionSetInfoEXT
forall a. Zero a => a
zero
data GeneratedCommandsInfoEXT (es :: [Type]) = GeneratedCommandsInfoEXT
{
forall (es :: [*]). GeneratedCommandsInfoEXT es -> Chain es
next :: Chain es
,
forall (es :: [*]). GeneratedCommandsInfoEXT es -> ShaderStageFlags
shaderStages :: ShaderStageFlags
,
forall (es :: [*]).
GeneratedCommandsInfoEXT es -> IndirectExecutionSetEXT
indirectExecutionSet :: IndirectExecutionSetEXT
,
forall (es :: [*]).
GeneratedCommandsInfoEXT es -> IndirectCommandsLayoutEXT
indirectCommandsLayout :: IndirectCommandsLayoutEXT
,
forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
indirectAddress :: DeviceAddress
,
forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
indirectAddressSize :: DeviceSize
,
forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
preprocessAddress :: DeviceAddress
,
forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
preprocessSize :: DeviceSize
,
forall (es :: [*]). GeneratedCommandsInfoEXT es -> Flags
maxSequenceCount :: Word32
,
forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
sequenceCountAddress :: DeviceAddress
,
forall (es :: [*]). GeneratedCommandsInfoEXT es -> Flags
maxDrawCount :: Word32
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (GeneratedCommandsInfoEXT (es :: [Type]))
#endif
deriving instance Show (Chain es) => Show (GeneratedCommandsInfoEXT es)
instance Extensible GeneratedCommandsInfoEXT where
extensibleTypeName :: String
extensibleTypeName = String
"GeneratedCommandsInfoEXT"
setNext :: forall (ds :: [*]) (es :: [*]).
GeneratedCommandsInfoEXT ds
-> Chain es -> GeneratedCommandsInfoEXT es
setNext GeneratedCommandsInfoEXT{Flags
DeviceAddress
ShaderStageFlags
IndirectExecutionSetEXT
IndirectCommandsLayoutEXT
Chain ds
$sel:next:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> Chain es
$sel:shaderStages:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> ShaderStageFlags
$sel:indirectExecutionSet:GeneratedCommandsInfoEXT :: forall (es :: [*]).
GeneratedCommandsInfoEXT es -> IndirectExecutionSetEXT
$sel:indirectCommandsLayout:GeneratedCommandsInfoEXT :: forall (es :: [*]).
GeneratedCommandsInfoEXT es -> IndirectCommandsLayoutEXT
$sel:indirectAddress:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
$sel:indirectAddressSize:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
$sel:preprocessAddress:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
$sel:preprocessSize:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
$sel:maxSequenceCount:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> Flags
$sel:sequenceCountAddress:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
$sel:maxDrawCount:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> Flags
next :: Chain ds
shaderStages :: ShaderStageFlags
indirectExecutionSet :: IndirectExecutionSetEXT
indirectCommandsLayout :: IndirectCommandsLayoutEXT
indirectAddress :: DeviceAddress
indirectAddressSize :: DeviceAddress
preprocessAddress :: DeviceAddress
preprocessSize :: DeviceAddress
maxSequenceCount :: Flags
sequenceCountAddress :: DeviceAddress
maxDrawCount :: Flags
..} Chain es
next' = GeneratedCommandsInfoEXT{$sel:next:GeneratedCommandsInfoEXT :: Chain es
next = Chain es
next', Flags
DeviceAddress
ShaderStageFlags
IndirectExecutionSetEXT
IndirectCommandsLayoutEXT
$sel:shaderStages:GeneratedCommandsInfoEXT :: ShaderStageFlags
$sel:indirectExecutionSet:GeneratedCommandsInfoEXT :: IndirectExecutionSetEXT
$sel:indirectCommandsLayout:GeneratedCommandsInfoEXT :: IndirectCommandsLayoutEXT
$sel:indirectAddress:GeneratedCommandsInfoEXT :: DeviceAddress
$sel:indirectAddressSize:GeneratedCommandsInfoEXT :: DeviceAddress
$sel:preprocessAddress:GeneratedCommandsInfoEXT :: DeviceAddress
$sel:preprocessSize:GeneratedCommandsInfoEXT :: DeviceAddress
$sel:maxSequenceCount:GeneratedCommandsInfoEXT :: Flags
$sel:sequenceCountAddress:GeneratedCommandsInfoEXT :: DeviceAddress
$sel:maxDrawCount:GeneratedCommandsInfoEXT :: Flags
shaderStages :: ShaderStageFlags
indirectExecutionSet :: IndirectExecutionSetEXT
indirectCommandsLayout :: IndirectCommandsLayoutEXT
indirectAddress :: DeviceAddress
indirectAddressSize :: DeviceAddress
preprocessAddress :: DeviceAddress
preprocessSize :: DeviceAddress
maxSequenceCount :: Flags
sequenceCountAddress :: DeviceAddress
maxDrawCount :: Flags
..}
getNext :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> Chain es
getNext GeneratedCommandsInfoEXT{Flags
DeviceAddress
ShaderStageFlags
IndirectExecutionSetEXT
IndirectCommandsLayoutEXT
Chain es
$sel:next:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> Chain es
$sel:shaderStages:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> ShaderStageFlags
$sel:indirectExecutionSet:GeneratedCommandsInfoEXT :: forall (es :: [*]).
GeneratedCommandsInfoEXT es -> IndirectExecutionSetEXT
$sel:indirectCommandsLayout:GeneratedCommandsInfoEXT :: forall (es :: [*]).
GeneratedCommandsInfoEXT es -> IndirectCommandsLayoutEXT
$sel:indirectAddress:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
$sel:indirectAddressSize:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
$sel:preprocessAddress:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
$sel:preprocessSize:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
$sel:maxSequenceCount:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> Flags
$sel:sequenceCountAddress:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
$sel:maxDrawCount:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> Flags
next :: Chain es
shaderStages :: ShaderStageFlags
indirectExecutionSet :: IndirectExecutionSetEXT
indirectCommandsLayout :: IndirectCommandsLayoutEXT
indirectAddress :: DeviceAddress
indirectAddressSize :: DeviceAddress
preprocessAddress :: DeviceAddress
preprocessSize :: DeviceAddress
maxSequenceCount :: Flags
sequenceCountAddress :: DeviceAddress
maxDrawCount :: Flags
..} = Chain es
next
extends :: forall e b proxy. Typeable e => proxy e -> (Extends GeneratedCommandsInfoEXT e => b) -> Maybe b
extends :: forall e b (proxy :: * -> *).
Typeable e =>
proxy e -> (Extends GeneratedCommandsInfoEXT e => b) -> Maybe b
extends proxy e
_ Extends GeneratedCommandsInfoEXT e => b
f
| Just e :~: GeneratedCommandsShaderInfoEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @GeneratedCommandsShaderInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends GeneratedCommandsInfoEXT e => b
f
| Just e :~: GeneratedCommandsPipelineInfoEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @GeneratedCommandsPipelineInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends GeneratedCommandsInfoEXT e => b
f
| "isPreprocessed" ::: Bool
otherwise = Maybe b
forall a. Maybe a
Nothing
instance ( Extendss GeneratedCommandsInfoEXT es
, PokeChain es ) => ToCStruct (GeneratedCommandsInfoEXT es) where
withCStruct :: forall b.
GeneratedCommandsInfoEXT es
-> (Ptr (GeneratedCommandsInfoEXT es) -> IO b) -> IO b
withCStruct GeneratedCommandsInfoEXT es
x Ptr (GeneratedCommandsInfoEXT es) -> IO b
f = Int -> (Ptr (GeneratedCommandsInfoEXT es) -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
96 ((Ptr (GeneratedCommandsInfoEXT es) -> IO b) -> IO b)
-> (Ptr (GeneratedCommandsInfoEXT es) -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr (GeneratedCommandsInfoEXT es)
p -> Ptr (GeneratedCommandsInfoEXT es)
-> GeneratedCommandsInfoEXT es -> IO b -> IO b
forall b.
Ptr (GeneratedCommandsInfoEXT es)
-> GeneratedCommandsInfoEXT es -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr (GeneratedCommandsInfoEXT es)
p GeneratedCommandsInfoEXT es
x (Ptr (GeneratedCommandsInfoEXT es) -> IO b
f Ptr (GeneratedCommandsInfoEXT es)
p)
pokeCStruct :: forall b.
Ptr (GeneratedCommandsInfoEXT es)
-> GeneratedCommandsInfoEXT es -> IO b -> IO b
pokeCStruct Ptr (GeneratedCommandsInfoEXT es)
p GeneratedCommandsInfoEXT{Flags
DeviceAddress
ShaderStageFlags
IndirectExecutionSetEXT
IndirectCommandsLayoutEXT
Chain es
$sel:next:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> Chain es
$sel:shaderStages:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> ShaderStageFlags
$sel:indirectExecutionSet:GeneratedCommandsInfoEXT :: forall (es :: [*]).
GeneratedCommandsInfoEXT es -> IndirectExecutionSetEXT
$sel:indirectCommandsLayout:GeneratedCommandsInfoEXT :: forall (es :: [*]).
GeneratedCommandsInfoEXT es -> IndirectCommandsLayoutEXT
$sel:indirectAddress:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
$sel:indirectAddressSize:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
$sel:preprocessAddress:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
$sel:preprocessSize:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
$sel:maxSequenceCount:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> Flags
$sel:sequenceCountAddress:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> DeviceAddress
$sel:maxDrawCount:GeneratedCommandsInfoEXT :: forall (es :: [*]). GeneratedCommandsInfoEXT es -> Flags
next :: Chain es
shaderStages :: ShaderStageFlags
indirectExecutionSet :: IndirectExecutionSetEXT
indirectCommandsLayout :: IndirectCommandsLayoutEXT
indirectAddress :: DeviceAddress
indirectAddressSize :: DeviceAddress
preprocessAddress :: DeviceAddress
preprocessSize :: DeviceAddress
maxSequenceCount :: Flags
sequenceCountAddress :: DeviceAddress
maxDrawCount :: Flags
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT)
Ptr ()
pNext'' <- (Ptr (Chain es) -> Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> ContT b IO a -> ContT b IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ Chain es -> (Ptr (Chain es) -> IO b) -> IO b
forall (es :: [*]) a.
PokeChain es =>
Chain es -> (Ptr (Chain es) -> IO a) -> IO a
forall a. Chain es -> (Ptr (Chain es) -> IO a) -> IO a
withChain (Chain es
next)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) Ptr ()
pNext''
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr ShaderStageFlags -> ShaderStageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ShaderStageFlags)) (ShaderStageFlags
shaderStages)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectExecutionSetEXT -> IndirectExecutionSetEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es)
-> Int -> Ptr IndirectExecutionSetEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr IndirectExecutionSetEXT)) (IndirectExecutionSetEXT
indirectExecutionSet)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectCommandsLayoutEXT -> IndirectCommandsLayoutEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es)
-> Int -> Ptr IndirectCommandsLayoutEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr IndirectCommandsLayoutEXT)) (IndirectCommandsLayoutEXT
indirectCommandsLayout)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceAddress -> DeviceAddress -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr DeviceAddress)) (DeviceAddress
indirectAddress)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceAddress -> DeviceAddress -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr DeviceSize)) (DeviceAddress
indirectAddressSize)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceAddress -> DeviceAddress -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr DeviceAddress)) (DeviceAddress
preprocessAddress)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceAddress -> DeviceAddress -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr DeviceSize)) (DeviceAddress
preprocessSize)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Word32)) (Flags
maxSequenceCount)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceAddress -> DeviceAddress -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr DeviceAddress)) (DeviceAddress
sequenceCountAddress)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Word32)) (Flags
maxDrawCount)
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
cStructSize :: Int
cStructSize = Int
96
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr (GeneratedCommandsInfoEXT es) -> IO b -> IO b
pokeZeroCStruct Ptr (GeneratedCommandsInfoEXT es)
p IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT)
Ptr ()
pNext' <- (Ptr (Chain es) -> Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> ContT b IO a -> ContT b IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ forall (es :: [*]) a.
PokeChain es =>
(Ptr (Chain es) -> IO a) -> IO a
withZeroChain @es
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) Ptr ()
pNext'
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr ShaderStageFlags -> ShaderStageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ShaderStageFlags)) (ShaderStageFlags
forall a. Zero a => a
zero)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectCommandsLayoutEXT -> IndirectCommandsLayoutEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es)
-> Int -> Ptr IndirectCommandsLayoutEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr IndirectCommandsLayoutEXT)) (IndirectCommandsLayoutEXT
forall a. Zero a => a
zero)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceAddress -> DeviceAddress -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr DeviceAddress)) (DeviceAddress
forall a. Zero a => a
zero)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceAddress -> DeviceAddress -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr DeviceSize)) (DeviceAddress
forall a. Zero a => a
zero)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr DeviceAddress -> DeviceAddress -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr DeviceSize)) (DeviceAddress
forall a. Zero a => a
zero)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
instance ( Extendss GeneratedCommandsInfoEXT es
, PeekChain es ) => FromCStruct (GeneratedCommandsInfoEXT es) where
peekCStruct :: Ptr (GeneratedCommandsInfoEXT es)
-> IO (GeneratedCommandsInfoEXT es)
peekCStruct Ptr (GeneratedCommandsInfoEXT es)
p = do
Ptr ()
pNext <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr ()) ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ())))
Chain es
next <- Ptr (Chain es) -> IO (Chain es)
forall (es :: [*]). PeekChain es => Ptr (Chain es) -> IO (Chain es)
peekChain (Ptr () -> Ptr (Chain es)
forall a b. Ptr a -> Ptr b
castPtr Ptr ()
pNext)
ShaderStageFlags
shaderStages <- forall a. Storable a => Ptr a -> IO a
peek @ShaderStageFlags ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ShaderStageFlags))
IndirectExecutionSetEXT
indirectExecutionSet <- forall a. Storable a => Ptr a -> IO a
peek @IndirectExecutionSetEXT ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es)
-> Int -> Ptr IndirectExecutionSetEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr IndirectExecutionSetEXT))
IndirectCommandsLayoutEXT
indirectCommandsLayout <- forall a. Storable a => Ptr a -> IO a
peek @IndirectCommandsLayoutEXT ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es)
-> Int -> Ptr IndirectCommandsLayoutEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr IndirectCommandsLayoutEXT))
DeviceAddress
indirectAddress <- forall a. Storable a => Ptr a -> IO a
peek @DeviceAddress ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr DeviceAddress))
DeviceAddress
indirectAddressSize <- forall a. Storable a => Ptr a -> IO a
peek @DeviceSize ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr DeviceSize))
DeviceAddress
preprocessAddress <- forall a. Storable a => Ptr a -> IO a
peek @DeviceAddress ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr DeviceAddress))
DeviceAddress
preprocessSize <- forall a. Storable a => Ptr a -> IO a
peek @DeviceSize ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr DeviceSize))
Flags
maxSequenceCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Word32))
DeviceAddress
sequenceCountAddress <- forall a. Storable a => Ptr a -> IO a
peek @DeviceAddress ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr DeviceAddress))
Flags
maxDrawCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr (GeneratedCommandsInfoEXT es)
p Ptr (GeneratedCommandsInfoEXT es) -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr Word32))
GeneratedCommandsInfoEXT es -> IO (GeneratedCommandsInfoEXT es)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (GeneratedCommandsInfoEXT es -> IO (GeneratedCommandsInfoEXT es))
-> GeneratedCommandsInfoEXT es -> IO (GeneratedCommandsInfoEXT es)
forall a b. (a -> b) -> a -> b
$ Chain es
-> ShaderStageFlags
-> IndirectExecutionSetEXT
-> IndirectCommandsLayoutEXT
-> DeviceAddress
-> DeviceAddress
-> DeviceAddress
-> DeviceAddress
-> Flags
-> DeviceAddress
-> Flags
-> GeneratedCommandsInfoEXT es
forall (es :: [*]).
Chain es
-> ShaderStageFlags
-> IndirectExecutionSetEXT
-> IndirectCommandsLayoutEXT
-> DeviceAddress
-> DeviceAddress
-> DeviceAddress
-> DeviceAddress
-> Flags
-> DeviceAddress
-> Flags
-> GeneratedCommandsInfoEXT es
GeneratedCommandsInfoEXT
Chain es
next
ShaderStageFlags
shaderStages
IndirectExecutionSetEXT
indirectExecutionSet
IndirectCommandsLayoutEXT
indirectCommandsLayout
DeviceAddress
indirectAddress
DeviceAddress
indirectAddressSize
DeviceAddress
preprocessAddress
DeviceAddress
preprocessSize
Flags
maxSequenceCount
DeviceAddress
sequenceCountAddress
Flags
maxDrawCount
instance es ~ '[] => Zero (GeneratedCommandsInfoEXT es) where
zero :: GeneratedCommandsInfoEXT es
zero = Chain es
-> ShaderStageFlags
-> IndirectExecutionSetEXT
-> IndirectCommandsLayoutEXT
-> DeviceAddress
-> DeviceAddress
-> DeviceAddress
-> DeviceAddress
-> Flags
-> DeviceAddress
-> Flags
-> GeneratedCommandsInfoEXT es
forall (es :: [*]).
Chain es
-> ShaderStageFlags
-> IndirectExecutionSetEXT
-> IndirectCommandsLayoutEXT
-> DeviceAddress
-> DeviceAddress
-> DeviceAddress
-> DeviceAddress
-> Flags
-> DeviceAddress
-> Flags
-> GeneratedCommandsInfoEXT es
GeneratedCommandsInfoEXT
()
ShaderStageFlags
forall a. Zero a => a
zero
IndirectExecutionSetEXT
forall a. Zero a => a
zero
IndirectCommandsLayoutEXT
forall a. Zero a => a
zero
DeviceAddress
forall a. Zero a => a
zero
DeviceAddress
forall a. Zero a => a
zero
DeviceAddress
forall a. Zero a => a
zero
DeviceAddress
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
DeviceAddress
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
data WriteIndirectExecutionSetPipelineEXT = WriteIndirectExecutionSetPipelineEXT
{
WriteIndirectExecutionSetPipelineEXT -> Flags
index :: Word32
,
WriteIndirectExecutionSetPipelineEXT -> Pipeline
pipeline :: Pipeline
}
deriving (Typeable, WriteIndirectExecutionSetPipelineEXT
-> WriteIndirectExecutionSetPipelineEXT
-> "isPreprocessed" ::: Bool
(WriteIndirectExecutionSetPipelineEXT
-> WriteIndirectExecutionSetPipelineEXT
-> "isPreprocessed" ::: Bool)
-> (WriteIndirectExecutionSetPipelineEXT
-> WriteIndirectExecutionSetPipelineEXT
-> "isPreprocessed" ::: Bool)
-> Eq WriteIndirectExecutionSetPipelineEXT
forall a.
(a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool) -> Eq a
$c== :: WriteIndirectExecutionSetPipelineEXT
-> WriteIndirectExecutionSetPipelineEXT
-> "isPreprocessed" ::: Bool
== :: WriteIndirectExecutionSetPipelineEXT
-> WriteIndirectExecutionSetPipelineEXT
-> "isPreprocessed" ::: Bool
$c/= :: WriteIndirectExecutionSetPipelineEXT
-> WriteIndirectExecutionSetPipelineEXT
-> "isPreprocessed" ::: Bool
/= :: WriteIndirectExecutionSetPipelineEXT
-> WriteIndirectExecutionSetPipelineEXT
-> "isPreprocessed" ::: Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (WriteIndirectExecutionSetPipelineEXT)
#endif
deriving instance Show WriteIndirectExecutionSetPipelineEXT
instance ToCStruct WriteIndirectExecutionSetPipelineEXT where
withCStruct :: forall b.
WriteIndirectExecutionSetPipelineEXT
-> (Ptr WriteIndirectExecutionSetPipelineEXT -> IO b) -> IO b
withCStruct WriteIndirectExecutionSetPipelineEXT
x Ptr WriteIndirectExecutionSetPipelineEXT -> IO b
f = Int -> (Ptr WriteIndirectExecutionSetPipelineEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr WriteIndirectExecutionSetPipelineEXT -> IO b) -> IO b)
-> (Ptr WriteIndirectExecutionSetPipelineEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr WriteIndirectExecutionSetPipelineEXT
p -> Ptr WriteIndirectExecutionSetPipelineEXT
-> WriteIndirectExecutionSetPipelineEXT -> IO b -> IO b
forall b.
Ptr WriteIndirectExecutionSetPipelineEXT
-> WriteIndirectExecutionSetPipelineEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr WriteIndirectExecutionSetPipelineEXT
p WriteIndirectExecutionSetPipelineEXT
x (Ptr WriteIndirectExecutionSetPipelineEXT -> IO b
f Ptr WriteIndirectExecutionSetPipelineEXT
p)
pokeCStruct :: forall b.
Ptr WriteIndirectExecutionSetPipelineEXT
-> WriteIndirectExecutionSetPipelineEXT -> IO b -> IO b
pokeCStruct Ptr WriteIndirectExecutionSetPipelineEXT
p WriteIndirectExecutionSetPipelineEXT{Flags
Pipeline
$sel:index:WriteIndirectExecutionSetPipelineEXT :: WriteIndirectExecutionSetPipelineEXT -> Flags
$sel:pipeline:WriteIndirectExecutionSetPipelineEXT :: WriteIndirectExecutionSetPipelineEXT -> Pipeline
index :: Flags
pipeline :: Pipeline
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr WriteIndirectExecutionSetPipelineEXT
p Ptr WriteIndirectExecutionSetPipelineEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr WriteIndirectExecutionSetPipelineEXT
p Ptr WriteIndirectExecutionSetPipelineEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr WriteIndirectExecutionSetPipelineEXT
p Ptr WriteIndirectExecutionSetPipelineEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Flags
index)
Ptr Pipeline -> Pipeline -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr WriteIndirectExecutionSetPipelineEXT
p Ptr WriteIndirectExecutionSetPipelineEXT -> Int -> Ptr Pipeline
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Pipeline)) (Pipeline
pipeline)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr WriteIndirectExecutionSetPipelineEXT -> IO b -> IO b
pokeZeroCStruct Ptr WriteIndirectExecutionSetPipelineEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr WriteIndirectExecutionSetPipelineEXT
p Ptr WriteIndirectExecutionSetPipelineEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr WriteIndirectExecutionSetPipelineEXT
p Ptr WriteIndirectExecutionSetPipelineEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr WriteIndirectExecutionSetPipelineEXT
p Ptr WriteIndirectExecutionSetPipelineEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
Ptr Pipeline -> Pipeline -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr WriteIndirectExecutionSetPipelineEXT
p Ptr WriteIndirectExecutionSetPipelineEXT -> Int -> Ptr Pipeline
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Pipeline)) (Pipeline
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct WriteIndirectExecutionSetPipelineEXT where
peekCStruct :: Ptr WriteIndirectExecutionSetPipelineEXT
-> IO WriteIndirectExecutionSetPipelineEXT
peekCStruct Ptr WriteIndirectExecutionSetPipelineEXT
p = do
Flags
index <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr WriteIndirectExecutionSetPipelineEXT
p Ptr WriteIndirectExecutionSetPipelineEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
Pipeline
pipeline <- forall a. Storable a => Ptr a -> IO a
peek @Pipeline ((Ptr WriteIndirectExecutionSetPipelineEXT
p Ptr WriteIndirectExecutionSetPipelineEXT -> Int -> Ptr Pipeline
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Pipeline))
WriteIndirectExecutionSetPipelineEXT
-> IO WriteIndirectExecutionSetPipelineEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (WriteIndirectExecutionSetPipelineEXT
-> IO WriteIndirectExecutionSetPipelineEXT)
-> WriteIndirectExecutionSetPipelineEXT
-> IO WriteIndirectExecutionSetPipelineEXT
forall a b. (a -> b) -> a -> b
$ Flags -> Pipeline -> WriteIndirectExecutionSetPipelineEXT
WriteIndirectExecutionSetPipelineEXT
Flags
index Pipeline
pipeline
instance Storable WriteIndirectExecutionSetPipelineEXT where
sizeOf :: WriteIndirectExecutionSetPipelineEXT -> Int
sizeOf ~WriteIndirectExecutionSetPipelineEXT
_ = Int
32
alignment :: WriteIndirectExecutionSetPipelineEXT -> Int
alignment ~WriteIndirectExecutionSetPipelineEXT
_ = Int
8
peek :: Ptr WriteIndirectExecutionSetPipelineEXT
-> IO WriteIndirectExecutionSetPipelineEXT
peek = Ptr WriteIndirectExecutionSetPipelineEXT
-> IO WriteIndirectExecutionSetPipelineEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr WriteIndirectExecutionSetPipelineEXT
-> WriteIndirectExecutionSetPipelineEXT -> IO ()
poke Ptr WriteIndirectExecutionSetPipelineEXT
ptr WriteIndirectExecutionSetPipelineEXT
poked = Ptr WriteIndirectExecutionSetPipelineEXT
-> WriteIndirectExecutionSetPipelineEXT -> IO () -> IO ()
forall b.
Ptr WriteIndirectExecutionSetPipelineEXT
-> WriteIndirectExecutionSetPipelineEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr WriteIndirectExecutionSetPipelineEXT
ptr WriteIndirectExecutionSetPipelineEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero WriteIndirectExecutionSetPipelineEXT where
zero :: WriteIndirectExecutionSetPipelineEXT
zero = Flags -> Pipeline -> WriteIndirectExecutionSetPipelineEXT
WriteIndirectExecutionSetPipelineEXT
Flags
forall a. Zero a => a
zero
Pipeline
forall a. Zero a => a
zero
data WriteIndirectExecutionSetShaderEXT = WriteIndirectExecutionSetShaderEXT
{
WriteIndirectExecutionSetShaderEXT -> Flags
index :: Word32
,
WriteIndirectExecutionSetShaderEXT -> ShaderEXT
shader :: ShaderEXT
}
deriving (Typeable, WriteIndirectExecutionSetShaderEXT
-> WriteIndirectExecutionSetShaderEXT -> "isPreprocessed" ::: Bool
(WriteIndirectExecutionSetShaderEXT
-> WriteIndirectExecutionSetShaderEXT -> "isPreprocessed" ::: Bool)
-> (WriteIndirectExecutionSetShaderEXT
-> WriteIndirectExecutionSetShaderEXT -> "isPreprocessed" ::: Bool)
-> Eq WriteIndirectExecutionSetShaderEXT
forall a.
(a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool) -> Eq a
$c== :: WriteIndirectExecutionSetShaderEXT
-> WriteIndirectExecutionSetShaderEXT -> "isPreprocessed" ::: Bool
== :: WriteIndirectExecutionSetShaderEXT
-> WriteIndirectExecutionSetShaderEXT -> "isPreprocessed" ::: Bool
$c/= :: WriteIndirectExecutionSetShaderEXT
-> WriteIndirectExecutionSetShaderEXT -> "isPreprocessed" ::: Bool
/= :: WriteIndirectExecutionSetShaderEXT
-> WriteIndirectExecutionSetShaderEXT -> "isPreprocessed" ::: Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (WriteIndirectExecutionSetShaderEXT)
#endif
deriving instance Show WriteIndirectExecutionSetShaderEXT
instance ToCStruct WriteIndirectExecutionSetShaderEXT where
withCStruct :: forall b.
WriteIndirectExecutionSetShaderEXT
-> (Ptr WriteIndirectExecutionSetShaderEXT -> IO b) -> IO b
withCStruct WriteIndirectExecutionSetShaderEXT
x Ptr WriteIndirectExecutionSetShaderEXT -> IO b
f = Int -> (Ptr WriteIndirectExecutionSetShaderEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr WriteIndirectExecutionSetShaderEXT -> IO b) -> IO b)
-> (Ptr WriteIndirectExecutionSetShaderEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr WriteIndirectExecutionSetShaderEXT
p -> Ptr WriteIndirectExecutionSetShaderEXT
-> WriteIndirectExecutionSetShaderEXT -> IO b -> IO b
forall b.
Ptr WriteIndirectExecutionSetShaderEXT
-> WriteIndirectExecutionSetShaderEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr WriteIndirectExecutionSetShaderEXT
p WriteIndirectExecutionSetShaderEXT
x (Ptr WriteIndirectExecutionSetShaderEXT -> IO b
f Ptr WriteIndirectExecutionSetShaderEXT
p)
pokeCStruct :: forall b.
Ptr WriteIndirectExecutionSetShaderEXT
-> WriteIndirectExecutionSetShaderEXT -> IO b -> IO b
pokeCStruct Ptr WriteIndirectExecutionSetShaderEXT
p WriteIndirectExecutionSetShaderEXT{Flags
ShaderEXT
$sel:index:WriteIndirectExecutionSetShaderEXT :: WriteIndirectExecutionSetShaderEXT -> Flags
$sel:shader:WriteIndirectExecutionSetShaderEXT :: WriteIndirectExecutionSetShaderEXT -> ShaderEXT
index :: Flags
shader :: ShaderEXT
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr WriteIndirectExecutionSetShaderEXT
p Ptr WriteIndirectExecutionSetShaderEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr WriteIndirectExecutionSetShaderEXT
p Ptr WriteIndirectExecutionSetShaderEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr WriteIndirectExecutionSetShaderEXT
p Ptr WriteIndirectExecutionSetShaderEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Flags
index)
Ptr ShaderEXT -> ShaderEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr WriteIndirectExecutionSetShaderEXT
p Ptr WriteIndirectExecutionSetShaderEXT -> Int -> Ptr ShaderEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ShaderEXT)) (ShaderEXT
shader)
IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr WriteIndirectExecutionSetShaderEXT -> IO b -> IO b
pokeZeroCStruct Ptr WriteIndirectExecutionSetShaderEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr WriteIndirectExecutionSetShaderEXT
p Ptr WriteIndirectExecutionSetShaderEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr WriteIndirectExecutionSetShaderEXT
p Ptr WriteIndirectExecutionSetShaderEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr WriteIndirectExecutionSetShaderEXT
p Ptr WriteIndirectExecutionSetShaderEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
Ptr ShaderEXT -> ShaderEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr WriteIndirectExecutionSetShaderEXT
p Ptr WriteIndirectExecutionSetShaderEXT -> Int -> Ptr ShaderEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ShaderEXT)) (ShaderEXT
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct WriteIndirectExecutionSetShaderEXT where
peekCStruct :: Ptr WriteIndirectExecutionSetShaderEXT
-> IO WriteIndirectExecutionSetShaderEXT
peekCStruct Ptr WriteIndirectExecutionSetShaderEXT
p = do
Flags
index <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr WriteIndirectExecutionSetShaderEXT
p Ptr WriteIndirectExecutionSetShaderEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
ShaderEXT
shader <- forall a. Storable a => Ptr a -> IO a
peek @ShaderEXT ((Ptr WriteIndirectExecutionSetShaderEXT
p Ptr WriteIndirectExecutionSetShaderEXT -> Int -> Ptr ShaderEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ShaderEXT))
WriteIndirectExecutionSetShaderEXT
-> IO WriteIndirectExecutionSetShaderEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (WriteIndirectExecutionSetShaderEXT
-> IO WriteIndirectExecutionSetShaderEXT)
-> WriteIndirectExecutionSetShaderEXT
-> IO WriteIndirectExecutionSetShaderEXT
forall a b. (a -> b) -> a -> b
$ Flags -> ShaderEXT -> WriteIndirectExecutionSetShaderEXT
WriteIndirectExecutionSetShaderEXT
Flags
index ShaderEXT
shader
instance Storable WriteIndirectExecutionSetShaderEXT where
sizeOf :: WriteIndirectExecutionSetShaderEXT -> Int
sizeOf ~WriteIndirectExecutionSetShaderEXT
_ = Int
32
alignment :: WriteIndirectExecutionSetShaderEXT -> Int
alignment ~WriteIndirectExecutionSetShaderEXT
_ = Int
8
peek :: Ptr WriteIndirectExecutionSetShaderEXT
-> IO WriteIndirectExecutionSetShaderEXT
peek = Ptr WriteIndirectExecutionSetShaderEXT
-> IO WriteIndirectExecutionSetShaderEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr WriteIndirectExecutionSetShaderEXT
-> WriteIndirectExecutionSetShaderEXT -> IO ()
poke Ptr WriteIndirectExecutionSetShaderEXT
ptr WriteIndirectExecutionSetShaderEXT
poked = Ptr WriteIndirectExecutionSetShaderEXT
-> WriteIndirectExecutionSetShaderEXT -> IO () -> IO ()
forall b.
Ptr WriteIndirectExecutionSetShaderEXT
-> WriteIndirectExecutionSetShaderEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr WriteIndirectExecutionSetShaderEXT
ptr WriteIndirectExecutionSetShaderEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero WriteIndirectExecutionSetShaderEXT where
zero :: WriteIndirectExecutionSetShaderEXT
zero = Flags -> ShaderEXT -> WriteIndirectExecutionSetShaderEXT
WriteIndirectExecutionSetShaderEXT
Flags
forall a. Zero a => a
zero
ShaderEXT
forall a. Zero a => a
zero
data IndirectCommandsLayoutCreateInfoEXT (es :: [Type]) = IndirectCommandsLayoutCreateInfoEXT
{
forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es -> Chain es
next :: Chain es
,
forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es
-> IndirectCommandsLayoutUsageFlagsEXT
flags :: IndirectCommandsLayoutUsageFlagsEXT
,
forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es -> ShaderStageFlags
shaderStages :: ShaderStageFlags
,
forall (es :: [*]). IndirectCommandsLayoutCreateInfoEXT es -> Flags
indirectStride :: Word32
,
forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es -> PipelineLayout
pipelineLayout :: PipelineLayout
,
forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es
-> Vector IndirectCommandsLayoutTokenEXT
tokens :: Vector IndirectCommandsLayoutTokenEXT
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (IndirectCommandsLayoutCreateInfoEXT (es :: [Type]))
#endif
deriving instance Show (Chain es) => Show (IndirectCommandsLayoutCreateInfoEXT es)
instance Extensible IndirectCommandsLayoutCreateInfoEXT where
extensibleTypeName :: String
extensibleTypeName = String
"IndirectCommandsLayoutCreateInfoEXT"
setNext :: forall (ds :: [*]) (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT ds
-> Chain es -> IndirectCommandsLayoutCreateInfoEXT es
setNext IndirectCommandsLayoutCreateInfoEXT{Flags
Vector IndirectCommandsLayoutTokenEXT
ShaderStageFlags
PipelineLayout
Chain ds
IndirectCommandsLayoutUsageFlagsEXT
$sel:next:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es -> Chain es
$sel:flags:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es
-> IndirectCommandsLayoutUsageFlagsEXT
$sel:shaderStages:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es -> ShaderStageFlags
$sel:indirectStride:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]). IndirectCommandsLayoutCreateInfoEXT es -> Flags
$sel:pipelineLayout:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es -> PipelineLayout
$sel:tokens:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es
-> Vector IndirectCommandsLayoutTokenEXT
next :: Chain ds
flags :: IndirectCommandsLayoutUsageFlagsEXT
shaderStages :: ShaderStageFlags
indirectStride :: Flags
pipelineLayout :: PipelineLayout
tokens :: Vector IndirectCommandsLayoutTokenEXT
..} Chain es
next' = IndirectCommandsLayoutCreateInfoEXT{$sel:next:IndirectCommandsLayoutCreateInfoEXT :: Chain es
next = Chain es
next', Flags
Vector IndirectCommandsLayoutTokenEXT
ShaderStageFlags
PipelineLayout
IndirectCommandsLayoutUsageFlagsEXT
$sel:flags:IndirectCommandsLayoutCreateInfoEXT :: IndirectCommandsLayoutUsageFlagsEXT
$sel:shaderStages:IndirectCommandsLayoutCreateInfoEXT :: ShaderStageFlags
$sel:indirectStride:IndirectCommandsLayoutCreateInfoEXT :: Flags
$sel:pipelineLayout:IndirectCommandsLayoutCreateInfoEXT :: PipelineLayout
$sel:tokens:IndirectCommandsLayoutCreateInfoEXT :: Vector IndirectCommandsLayoutTokenEXT
flags :: IndirectCommandsLayoutUsageFlagsEXT
shaderStages :: ShaderStageFlags
indirectStride :: Flags
pipelineLayout :: PipelineLayout
tokens :: Vector IndirectCommandsLayoutTokenEXT
..}
getNext :: forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es -> Chain es
getNext IndirectCommandsLayoutCreateInfoEXT{Flags
Vector IndirectCommandsLayoutTokenEXT
ShaderStageFlags
PipelineLayout
Chain es
IndirectCommandsLayoutUsageFlagsEXT
$sel:next:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es -> Chain es
$sel:flags:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es
-> IndirectCommandsLayoutUsageFlagsEXT
$sel:shaderStages:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es -> ShaderStageFlags
$sel:indirectStride:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]). IndirectCommandsLayoutCreateInfoEXT es -> Flags
$sel:pipelineLayout:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es -> PipelineLayout
$sel:tokens:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es
-> Vector IndirectCommandsLayoutTokenEXT
next :: Chain es
flags :: IndirectCommandsLayoutUsageFlagsEXT
shaderStages :: ShaderStageFlags
indirectStride :: Flags
pipelineLayout :: PipelineLayout
tokens :: Vector IndirectCommandsLayoutTokenEXT
..} = Chain es
next
extends :: forall e b proxy. Typeable e => proxy e -> (Extends IndirectCommandsLayoutCreateInfoEXT e => b) -> Maybe b
extends :: forall e b (proxy :: * -> *).
Typeable e =>
proxy e
-> (Extends IndirectCommandsLayoutCreateInfoEXT e => b) -> Maybe b
extends proxy e
_ Extends IndirectCommandsLayoutCreateInfoEXT e => b
f
| Just e :~: PipelineLayoutCreateInfo
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @PipelineLayoutCreateInfo = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends IndirectCommandsLayoutCreateInfoEXT e => b
f
| "isPreprocessed" ::: Bool
otherwise = Maybe b
forall a. Maybe a
Nothing
instance ( Extendss IndirectCommandsLayoutCreateInfoEXT es
, PokeChain es ) => ToCStruct (IndirectCommandsLayoutCreateInfoEXT es) where
withCStruct :: forall b.
IndirectCommandsLayoutCreateInfoEXT es
-> (Ptr (IndirectCommandsLayoutCreateInfoEXT es) -> IO b) -> IO b
withCStruct IndirectCommandsLayoutCreateInfoEXT es
x Ptr (IndirectCommandsLayoutCreateInfoEXT es) -> IO b
f = Int
-> (Ptr (IndirectCommandsLayoutCreateInfoEXT es) -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
56 ((Ptr (IndirectCommandsLayoutCreateInfoEXT es) -> IO b) -> IO b)
-> (Ptr (IndirectCommandsLayoutCreateInfoEXT es) -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p -> Ptr (IndirectCommandsLayoutCreateInfoEXT es)
-> IndirectCommandsLayoutCreateInfoEXT es -> IO b -> IO b
forall b.
Ptr (IndirectCommandsLayoutCreateInfoEXT es)
-> IndirectCommandsLayoutCreateInfoEXT es -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p IndirectCommandsLayoutCreateInfoEXT es
x (Ptr (IndirectCommandsLayoutCreateInfoEXT es) -> IO b
f Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p)
pokeCStruct :: forall b.
Ptr (IndirectCommandsLayoutCreateInfoEXT es)
-> IndirectCommandsLayoutCreateInfoEXT es -> IO b -> IO b
pokeCStruct Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p IndirectCommandsLayoutCreateInfoEXT{Flags
Vector IndirectCommandsLayoutTokenEXT
ShaderStageFlags
PipelineLayout
Chain es
IndirectCommandsLayoutUsageFlagsEXT
$sel:next:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es -> Chain es
$sel:flags:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es
-> IndirectCommandsLayoutUsageFlagsEXT
$sel:shaderStages:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es -> ShaderStageFlags
$sel:indirectStride:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]). IndirectCommandsLayoutCreateInfoEXT es -> Flags
$sel:pipelineLayout:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es -> PipelineLayout
$sel:tokens:IndirectCommandsLayoutCreateInfoEXT :: forall (es :: [*]).
IndirectCommandsLayoutCreateInfoEXT es
-> Vector IndirectCommandsLayoutTokenEXT
next :: Chain es
flags :: IndirectCommandsLayoutUsageFlagsEXT
shaderStages :: ShaderStageFlags
indirectStride :: Flags
pipelineLayout :: PipelineLayout
tokens :: Vector IndirectCommandsLayoutTokenEXT
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p Ptr (IndirectCommandsLayoutCreateInfoEXT es)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT)
Ptr ()
pNext'' <- (Ptr (Chain es) -> Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> ContT b IO a -> ContT b IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ Chain es -> (Ptr (Chain es) -> IO b) -> IO b
forall (es :: [*]) a.
PokeChain es =>
Chain es -> (Ptr (Chain es) -> IO a) -> IO a
forall a. Chain es -> (Ptr (Chain es) -> IO a) -> IO a
withChain (Chain es
next)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p Ptr (IndirectCommandsLayoutCreateInfoEXT es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) Ptr ()
pNext''
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p Ptr (IndirectCommandsLayoutCreateInfoEXT es)
-> Int -> Ptr IndirectCommandsLayoutUsageFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr IndirectCommandsLayoutUsageFlagsEXT)) (IndirectCommandsLayoutUsageFlagsEXT
flags)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr ShaderStageFlags -> ShaderStageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p Ptr (IndirectCommandsLayoutCreateInfoEXT es)
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr ShaderStageFlags)) (ShaderStageFlags
shaderStages)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p Ptr (IndirectCommandsLayoutCreateInfoEXT es) -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Flags
indirectStride)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr PipelineLayout -> PipelineLayout -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p Ptr (IndirectCommandsLayoutCreateInfoEXT es)
-> Int -> Ptr PipelineLayout
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr PipelineLayout)) (PipelineLayout
pipelineLayout)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p Ptr (IndirectCommandsLayoutCreateInfoEXT es) -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Word32)) ((Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Vector IndirectCommandsLayoutTokenEXT -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector IndirectCommandsLayoutTokenEXT -> Int)
-> Vector IndirectCommandsLayoutTokenEXT -> Int
forall a b. (a -> b) -> a -> b
$ (Vector IndirectCommandsLayoutTokenEXT
tokens)) :: Word32))
Ptr IndirectCommandsLayoutTokenEXT
pPTokens' <- ((Ptr IndirectCommandsLayoutTokenEXT -> IO b) -> IO b)
-> ContT b IO (Ptr IndirectCommandsLayoutTokenEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr IndirectCommandsLayoutTokenEXT -> IO b) -> IO b)
-> ContT b IO (Ptr IndirectCommandsLayoutTokenEXT))
-> ((Ptr IndirectCommandsLayoutTokenEXT -> IO b) -> IO b)
-> ContT b IO (Ptr IndirectCommandsLayoutTokenEXT)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @IndirectCommandsLayoutTokenEXT ((Vector IndirectCommandsLayoutTokenEXT -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector IndirectCommandsLayoutTokenEXT
tokens)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
40)
(Int -> IndirectCommandsLayoutTokenEXT -> ContT b IO ())
-> Vector IndirectCommandsLayoutTokenEXT -> ContT b IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i IndirectCommandsLayoutTokenEXT
e -> ((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectCommandsLayoutTokenEXT
-> IndirectCommandsLayoutTokenEXT -> IO b -> IO b
forall b.
Ptr IndirectCommandsLayoutTokenEXT
-> IndirectCommandsLayoutTokenEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (Ptr IndirectCommandsLayoutTokenEXT
pPTokens' Ptr IndirectCommandsLayoutTokenEXT
-> Int -> Ptr IndirectCommandsLayoutTokenEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
40 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr IndirectCommandsLayoutTokenEXT) (IndirectCommandsLayoutTokenEXT
e) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())) (Vector IndirectCommandsLayoutTokenEXT
tokens)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr IndirectCommandsLayoutTokenEXT)
-> Ptr IndirectCommandsLayoutTokenEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p Ptr (IndirectCommandsLayoutCreateInfoEXT es)
-> Int -> Ptr (Ptr IndirectCommandsLayoutTokenEXT)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr (Ptr IndirectCommandsLayoutTokenEXT))) (Ptr IndirectCommandsLayoutTokenEXT
pPTokens')
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
cStructSize :: Int
cStructSize = Int
56
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr (IndirectCommandsLayoutCreateInfoEXT es) -> IO b -> IO b
pokeZeroCStruct Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p Ptr (IndirectCommandsLayoutCreateInfoEXT es)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT)
Ptr ()
pNext' <- (Ptr (Chain es) -> Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> ContT b IO a -> ContT b IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ forall (es :: [*]) a.
PokeChain es =>
(Ptr (Chain es) -> IO a) -> IO a
withZeroChain @es
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p Ptr (IndirectCommandsLayoutCreateInfoEXT es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) Ptr ()
pNext'
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr ShaderStageFlags -> ShaderStageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p Ptr (IndirectCommandsLayoutCreateInfoEXT es)
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr ShaderStageFlags)) (ShaderStageFlags
forall a. Zero a => a
zero)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (IndirectCommandsLayoutCreateInfoEXT es)
p Ptr (IndirectCommandsLayoutCreateInfoEXT es) -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
instance es ~ '[] => Zero (IndirectCommandsLayoutCreateInfoEXT es) where
zero :: IndirectCommandsLayoutCreateInfoEXT es
zero = Chain es
-> IndirectCommandsLayoutUsageFlagsEXT
-> ShaderStageFlags
-> Flags
-> PipelineLayout
-> Vector IndirectCommandsLayoutTokenEXT
-> IndirectCommandsLayoutCreateInfoEXT es
forall (es :: [*]).
Chain es
-> IndirectCommandsLayoutUsageFlagsEXT
-> ShaderStageFlags
-> Flags
-> PipelineLayout
-> Vector IndirectCommandsLayoutTokenEXT
-> IndirectCommandsLayoutCreateInfoEXT es
IndirectCommandsLayoutCreateInfoEXT
()
IndirectCommandsLayoutUsageFlagsEXT
forall a. Zero a => a
zero
ShaderStageFlags
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
PipelineLayout
forall a. Zero a => a
zero
Vector IndirectCommandsLayoutTokenEXT
forall a. Monoid a => a
mempty
data IndirectCommandsLayoutTokenEXT = IndirectCommandsLayoutTokenEXT
{
IndirectCommandsLayoutTokenEXT -> IndirectCommandsTokenTypeEXT
type' :: IndirectCommandsTokenTypeEXT
,
IndirectCommandsLayoutTokenEXT -> IndirectCommandsTokenDataEXT
data' :: IndirectCommandsTokenDataEXT
,
IndirectCommandsLayoutTokenEXT -> Flags
offset :: Word32
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (IndirectCommandsLayoutTokenEXT)
#endif
deriving instance Show IndirectCommandsLayoutTokenEXT
instance ToCStruct IndirectCommandsLayoutTokenEXT where
withCStruct :: forall b.
IndirectCommandsLayoutTokenEXT
-> (Ptr IndirectCommandsLayoutTokenEXT -> IO b) -> IO b
withCStruct IndirectCommandsLayoutTokenEXT
x Ptr IndirectCommandsLayoutTokenEXT -> IO b
f = Int -> (Ptr IndirectCommandsLayoutTokenEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
40 ((Ptr IndirectCommandsLayoutTokenEXT -> IO b) -> IO b)
-> (Ptr IndirectCommandsLayoutTokenEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr IndirectCommandsLayoutTokenEXT
p -> Ptr IndirectCommandsLayoutTokenEXT
-> IndirectCommandsLayoutTokenEXT -> IO b -> IO b
forall b.
Ptr IndirectCommandsLayoutTokenEXT
-> IndirectCommandsLayoutTokenEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr IndirectCommandsLayoutTokenEXT
p IndirectCommandsLayoutTokenEXT
x (Ptr IndirectCommandsLayoutTokenEXT -> IO b
f Ptr IndirectCommandsLayoutTokenEXT
p)
pokeCStruct :: forall b.
Ptr IndirectCommandsLayoutTokenEXT
-> IndirectCommandsLayoutTokenEXT -> IO b -> IO b
pokeCStruct Ptr IndirectCommandsLayoutTokenEXT
p IndirectCommandsLayoutTokenEXT{Flags
IndirectCommandsTokenTypeEXT
IndirectCommandsTokenDataEXT
$sel:type':IndirectCommandsLayoutTokenEXT :: IndirectCommandsLayoutTokenEXT -> IndirectCommandsTokenTypeEXT
$sel:data':IndirectCommandsLayoutTokenEXT :: IndirectCommandsLayoutTokenEXT -> IndirectCommandsTokenDataEXT
$sel:offset:IndirectCommandsLayoutTokenEXT :: IndirectCommandsLayoutTokenEXT -> Flags
type' :: IndirectCommandsTokenTypeEXT
data' :: IndirectCommandsTokenDataEXT
offset :: Flags
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsLayoutTokenEXT
p Ptr IndirectCommandsLayoutTokenEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsLayoutTokenEXT
p Ptr IndirectCommandsLayoutTokenEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsLayoutTokenEXT
p Ptr IndirectCommandsLayoutTokenEXT
-> Int -> Ptr IndirectCommandsTokenTypeEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr IndirectCommandsTokenTypeEXT)) (IndirectCommandsTokenTypeEXT
type')
((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectCommandsTokenDataEXT
-> IndirectCommandsTokenDataEXT -> IO b -> IO b
forall b.
Ptr IndirectCommandsTokenDataEXT
-> IndirectCommandsTokenDataEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr IndirectCommandsLayoutTokenEXT
p Ptr IndirectCommandsLayoutTokenEXT
-> Int -> Ptr IndirectCommandsTokenDataEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr IndirectCommandsTokenDataEXT)) (IndirectCommandsTokenDataEXT
data') (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsLayoutTokenEXT
p Ptr IndirectCommandsLayoutTokenEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32)) (Flags
offset)
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
cStructSize :: Int
cStructSize = Int
40
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr IndirectCommandsLayoutTokenEXT -> IO b -> IO b
pokeZeroCStruct Ptr IndirectCommandsLayoutTokenEXT
p IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsLayoutTokenEXT
p Ptr IndirectCommandsLayoutTokenEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsLayoutTokenEXT
p Ptr IndirectCommandsLayoutTokenEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsLayoutTokenEXT
p Ptr IndirectCommandsLayoutTokenEXT
-> Int -> Ptr IndirectCommandsTokenTypeEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr IndirectCommandsTokenTypeEXT)) (IndirectCommandsTokenTypeEXT
forall a. Zero a => a
zero)
((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr IndirectCommandsTokenDataEXT
-> IndirectCommandsTokenDataEXT -> IO b -> IO b
forall b.
Ptr IndirectCommandsTokenDataEXT
-> IndirectCommandsTokenDataEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct ((Ptr IndirectCommandsLayoutTokenEXT
p Ptr IndirectCommandsLayoutTokenEXT
-> Int -> Ptr IndirectCommandsTokenDataEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr IndirectCommandsTokenDataEXT)) (IndirectCommandsTokenDataEXT
forall a. Zero a => a
zero) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsLayoutTokenEXT
p Ptr IndirectCommandsLayoutTokenEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
instance Zero IndirectCommandsLayoutTokenEXT where
zero :: IndirectCommandsLayoutTokenEXT
zero = IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenDataEXT
-> Flags
-> IndirectCommandsLayoutTokenEXT
IndirectCommandsLayoutTokenEXT
IndirectCommandsTokenTypeEXT
forall a. Zero a => a
zero
IndirectCommandsTokenDataEXT
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
data DrawIndirectCountIndirectCommandEXT = DrawIndirectCountIndirectCommandEXT
{
DrawIndirectCountIndirectCommandEXT -> DeviceAddress
bufferAddress :: DeviceAddress
,
DrawIndirectCountIndirectCommandEXT -> Flags
stride :: Word32
,
DrawIndirectCountIndirectCommandEXT -> Flags
commandCount :: Word32
}
deriving (Typeable, DrawIndirectCountIndirectCommandEXT
-> DrawIndirectCountIndirectCommandEXT -> "isPreprocessed" ::: Bool
(DrawIndirectCountIndirectCommandEXT
-> DrawIndirectCountIndirectCommandEXT
-> "isPreprocessed" ::: Bool)
-> (DrawIndirectCountIndirectCommandEXT
-> DrawIndirectCountIndirectCommandEXT
-> "isPreprocessed" ::: Bool)
-> Eq DrawIndirectCountIndirectCommandEXT
forall a.
(a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool) -> Eq a
$c== :: DrawIndirectCountIndirectCommandEXT
-> DrawIndirectCountIndirectCommandEXT -> "isPreprocessed" ::: Bool
== :: DrawIndirectCountIndirectCommandEXT
-> DrawIndirectCountIndirectCommandEXT -> "isPreprocessed" ::: Bool
$c/= :: DrawIndirectCountIndirectCommandEXT
-> DrawIndirectCountIndirectCommandEXT -> "isPreprocessed" ::: Bool
/= :: DrawIndirectCountIndirectCommandEXT
-> DrawIndirectCountIndirectCommandEXT -> "isPreprocessed" ::: Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (DrawIndirectCountIndirectCommandEXT)
#endif
deriving instance Show DrawIndirectCountIndirectCommandEXT
instance ToCStruct DrawIndirectCountIndirectCommandEXT where
withCStruct :: forall b.
DrawIndirectCountIndirectCommandEXT
-> (Ptr DrawIndirectCountIndirectCommandEXT -> IO b) -> IO b
withCStruct DrawIndirectCountIndirectCommandEXT
x Ptr DrawIndirectCountIndirectCommandEXT -> IO b
f = Int -> (Ptr DrawIndirectCountIndirectCommandEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
16 ((Ptr DrawIndirectCountIndirectCommandEXT -> IO b) -> IO b)
-> (Ptr DrawIndirectCountIndirectCommandEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr DrawIndirectCountIndirectCommandEXT
p -> Ptr DrawIndirectCountIndirectCommandEXT
-> DrawIndirectCountIndirectCommandEXT -> IO b -> IO b
forall b.
Ptr DrawIndirectCountIndirectCommandEXT
-> DrawIndirectCountIndirectCommandEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr DrawIndirectCountIndirectCommandEXT
p DrawIndirectCountIndirectCommandEXT
x (Ptr DrawIndirectCountIndirectCommandEXT -> IO b
f Ptr DrawIndirectCountIndirectCommandEXT
p)
pokeCStruct :: forall b.
Ptr DrawIndirectCountIndirectCommandEXT
-> DrawIndirectCountIndirectCommandEXT -> IO b -> IO b
pokeCStruct Ptr DrawIndirectCountIndirectCommandEXT
p DrawIndirectCountIndirectCommandEXT{Flags
DeviceAddress
$sel:bufferAddress:DrawIndirectCountIndirectCommandEXT :: DrawIndirectCountIndirectCommandEXT -> DeviceAddress
$sel:stride:DrawIndirectCountIndirectCommandEXT :: DrawIndirectCountIndirectCommandEXT -> Flags
$sel:commandCount:DrawIndirectCountIndirectCommandEXT :: DrawIndirectCountIndirectCommandEXT -> Flags
bufferAddress :: DeviceAddress
stride :: Flags
commandCount :: Flags
..} IO b
f = do
Ptr DeviceAddress -> DeviceAddress -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DrawIndirectCountIndirectCommandEXT
p Ptr DrawIndirectCountIndirectCommandEXT -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr DeviceAddress)) (DeviceAddress
bufferAddress)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DrawIndirectCountIndirectCommandEXT
p Ptr DrawIndirectCountIndirectCommandEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32)) (Flags
stride)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DrawIndirectCountIndirectCommandEXT
p Ptr DrawIndirectCountIndirectCommandEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Word32)) (Flags
commandCount)
IO b
f
cStructSize :: Int
cStructSize = Int
16
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr DrawIndirectCountIndirectCommandEXT -> IO b -> IO b
pokeZeroCStruct Ptr DrawIndirectCountIndirectCommandEXT
p IO b
f = do
Ptr DeviceAddress -> DeviceAddress -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DrawIndirectCountIndirectCommandEXT
p Ptr DrawIndirectCountIndirectCommandEXT -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr DeviceAddress)) (DeviceAddress
forall a. Zero a => a
zero)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DrawIndirectCountIndirectCommandEXT
p Ptr DrawIndirectCountIndirectCommandEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr DrawIndirectCountIndirectCommandEXT
p Ptr DrawIndirectCountIndirectCommandEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct DrawIndirectCountIndirectCommandEXT where
peekCStruct :: Ptr DrawIndirectCountIndirectCommandEXT
-> IO DrawIndirectCountIndirectCommandEXT
peekCStruct Ptr DrawIndirectCountIndirectCommandEXT
p = do
DeviceAddress
bufferAddress <- forall a. Storable a => Ptr a -> IO a
peek @DeviceAddress ((Ptr DrawIndirectCountIndirectCommandEXT
p Ptr DrawIndirectCountIndirectCommandEXT -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr DeviceAddress))
Flags
stride <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr DrawIndirectCountIndirectCommandEXT
p Ptr DrawIndirectCountIndirectCommandEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32))
Flags
commandCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr DrawIndirectCountIndirectCommandEXT
p Ptr DrawIndirectCountIndirectCommandEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Word32))
DrawIndirectCountIndirectCommandEXT
-> IO DrawIndirectCountIndirectCommandEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DrawIndirectCountIndirectCommandEXT
-> IO DrawIndirectCountIndirectCommandEXT)
-> DrawIndirectCountIndirectCommandEXT
-> IO DrawIndirectCountIndirectCommandEXT
forall a b. (a -> b) -> a -> b
$ DeviceAddress
-> Flags -> Flags -> DrawIndirectCountIndirectCommandEXT
DrawIndirectCountIndirectCommandEXT
DeviceAddress
bufferAddress Flags
stride Flags
commandCount
instance Storable DrawIndirectCountIndirectCommandEXT where
sizeOf :: DrawIndirectCountIndirectCommandEXT -> Int
sizeOf ~DrawIndirectCountIndirectCommandEXT
_ = Int
16
alignment :: DrawIndirectCountIndirectCommandEXT -> Int
alignment ~DrawIndirectCountIndirectCommandEXT
_ = Int
8
peek :: Ptr DrawIndirectCountIndirectCommandEXT
-> IO DrawIndirectCountIndirectCommandEXT
peek = Ptr DrawIndirectCountIndirectCommandEXT
-> IO DrawIndirectCountIndirectCommandEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr DrawIndirectCountIndirectCommandEXT
-> DrawIndirectCountIndirectCommandEXT -> IO ()
poke Ptr DrawIndirectCountIndirectCommandEXT
ptr DrawIndirectCountIndirectCommandEXT
poked = Ptr DrawIndirectCountIndirectCommandEXT
-> DrawIndirectCountIndirectCommandEXT -> IO () -> IO ()
forall b.
Ptr DrawIndirectCountIndirectCommandEXT
-> DrawIndirectCountIndirectCommandEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr DrawIndirectCountIndirectCommandEXT
ptr DrawIndirectCountIndirectCommandEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero DrawIndirectCountIndirectCommandEXT where
zero :: DrawIndirectCountIndirectCommandEXT
zero = DeviceAddress
-> Flags -> Flags -> DrawIndirectCountIndirectCommandEXT
DrawIndirectCountIndirectCommandEXT
DeviceAddress
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
data IndirectCommandsVertexBufferTokenEXT = IndirectCommandsVertexBufferTokenEXT
{
IndirectCommandsVertexBufferTokenEXT -> Flags
vertexBindingUnit :: Word32 }
deriving (Typeable, IndirectCommandsVertexBufferTokenEXT
-> IndirectCommandsVertexBufferTokenEXT
-> "isPreprocessed" ::: Bool
(IndirectCommandsVertexBufferTokenEXT
-> IndirectCommandsVertexBufferTokenEXT
-> "isPreprocessed" ::: Bool)
-> (IndirectCommandsVertexBufferTokenEXT
-> IndirectCommandsVertexBufferTokenEXT
-> "isPreprocessed" ::: Bool)
-> Eq IndirectCommandsVertexBufferTokenEXT
forall a.
(a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool) -> Eq a
$c== :: IndirectCommandsVertexBufferTokenEXT
-> IndirectCommandsVertexBufferTokenEXT
-> "isPreprocessed" ::: Bool
== :: IndirectCommandsVertexBufferTokenEXT
-> IndirectCommandsVertexBufferTokenEXT
-> "isPreprocessed" ::: Bool
$c/= :: IndirectCommandsVertexBufferTokenEXT
-> IndirectCommandsVertexBufferTokenEXT
-> "isPreprocessed" ::: Bool
/= :: IndirectCommandsVertexBufferTokenEXT
-> IndirectCommandsVertexBufferTokenEXT
-> "isPreprocessed" ::: Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (IndirectCommandsVertexBufferTokenEXT)
#endif
deriving instance Show IndirectCommandsVertexBufferTokenEXT
instance ToCStruct IndirectCommandsVertexBufferTokenEXT where
withCStruct :: forall b.
IndirectCommandsVertexBufferTokenEXT
-> (Ptr IndirectCommandsVertexBufferTokenEXT -> IO b) -> IO b
withCStruct IndirectCommandsVertexBufferTokenEXT
x Ptr IndirectCommandsVertexBufferTokenEXT -> IO b
f = Int -> (Ptr IndirectCommandsVertexBufferTokenEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
4 ((Ptr IndirectCommandsVertexBufferTokenEXT -> IO b) -> IO b)
-> (Ptr IndirectCommandsVertexBufferTokenEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr IndirectCommandsVertexBufferTokenEXT
p -> Ptr IndirectCommandsVertexBufferTokenEXT
-> IndirectCommandsVertexBufferTokenEXT -> IO b -> IO b
forall b.
Ptr IndirectCommandsVertexBufferTokenEXT
-> IndirectCommandsVertexBufferTokenEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr IndirectCommandsVertexBufferTokenEXT
p IndirectCommandsVertexBufferTokenEXT
x (Ptr IndirectCommandsVertexBufferTokenEXT -> IO b
f Ptr IndirectCommandsVertexBufferTokenEXT
p)
pokeCStruct :: forall b.
Ptr IndirectCommandsVertexBufferTokenEXT
-> IndirectCommandsVertexBufferTokenEXT -> IO b -> IO b
pokeCStruct Ptr IndirectCommandsVertexBufferTokenEXT
p IndirectCommandsVertexBufferTokenEXT{Flags
$sel:vertexBindingUnit:IndirectCommandsVertexBufferTokenEXT :: IndirectCommandsVertexBufferTokenEXT -> Flags
vertexBindingUnit :: Flags
..} IO b
f = do
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsVertexBufferTokenEXT
p Ptr IndirectCommandsVertexBufferTokenEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Word32)) (Flags
vertexBindingUnit)
IO b
f
cStructSize :: Int
cStructSize = Int
4
cStructAlignment :: Int
cStructAlignment = Int
4
pokeZeroCStruct :: forall b. Ptr IndirectCommandsVertexBufferTokenEXT -> IO b -> IO b
pokeZeroCStruct Ptr IndirectCommandsVertexBufferTokenEXT
p IO b
f = do
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsVertexBufferTokenEXT
p Ptr IndirectCommandsVertexBufferTokenEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct IndirectCommandsVertexBufferTokenEXT where
peekCStruct :: Ptr IndirectCommandsVertexBufferTokenEXT
-> IO IndirectCommandsVertexBufferTokenEXT
peekCStruct Ptr IndirectCommandsVertexBufferTokenEXT
p = do
Flags
vertexBindingUnit <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr IndirectCommandsVertexBufferTokenEXT
p Ptr IndirectCommandsVertexBufferTokenEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr Word32))
IndirectCommandsVertexBufferTokenEXT
-> IO IndirectCommandsVertexBufferTokenEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (IndirectCommandsVertexBufferTokenEXT
-> IO IndirectCommandsVertexBufferTokenEXT)
-> IndirectCommandsVertexBufferTokenEXT
-> IO IndirectCommandsVertexBufferTokenEXT
forall a b. (a -> b) -> a -> b
$ Flags -> IndirectCommandsVertexBufferTokenEXT
IndirectCommandsVertexBufferTokenEXT
Flags
vertexBindingUnit
instance Storable IndirectCommandsVertexBufferTokenEXT where
sizeOf :: IndirectCommandsVertexBufferTokenEXT -> Int
sizeOf ~IndirectCommandsVertexBufferTokenEXT
_ = Int
4
alignment :: IndirectCommandsVertexBufferTokenEXT -> Int
alignment ~IndirectCommandsVertexBufferTokenEXT
_ = Int
4
peek :: Ptr IndirectCommandsVertexBufferTokenEXT
-> IO IndirectCommandsVertexBufferTokenEXT
peek = Ptr IndirectCommandsVertexBufferTokenEXT
-> IO IndirectCommandsVertexBufferTokenEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr IndirectCommandsVertexBufferTokenEXT
-> IndirectCommandsVertexBufferTokenEXT -> IO ()
poke Ptr IndirectCommandsVertexBufferTokenEXT
ptr IndirectCommandsVertexBufferTokenEXT
poked = Ptr IndirectCommandsVertexBufferTokenEXT
-> IndirectCommandsVertexBufferTokenEXT -> IO () -> IO ()
forall b.
Ptr IndirectCommandsVertexBufferTokenEXT
-> IndirectCommandsVertexBufferTokenEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr IndirectCommandsVertexBufferTokenEXT
ptr IndirectCommandsVertexBufferTokenEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero IndirectCommandsVertexBufferTokenEXT where
zero :: IndirectCommandsVertexBufferTokenEXT
zero = Flags -> IndirectCommandsVertexBufferTokenEXT
IndirectCommandsVertexBufferTokenEXT
Flags
forall a. Zero a => a
zero
data BindVertexBufferIndirectCommandEXT = BindVertexBufferIndirectCommandEXT
{
BindVertexBufferIndirectCommandEXT -> DeviceAddress
bufferAddress :: DeviceAddress
,
BindVertexBufferIndirectCommandEXT -> Flags
size :: Word32
,
BindVertexBufferIndirectCommandEXT -> Flags
stride :: Word32
}
deriving (Typeable, BindVertexBufferIndirectCommandEXT
-> BindVertexBufferIndirectCommandEXT -> "isPreprocessed" ::: Bool
(BindVertexBufferIndirectCommandEXT
-> BindVertexBufferIndirectCommandEXT -> "isPreprocessed" ::: Bool)
-> (BindVertexBufferIndirectCommandEXT
-> BindVertexBufferIndirectCommandEXT -> "isPreprocessed" ::: Bool)
-> Eq BindVertexBufferIndirectCommandEXT
forall a.
(a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool) -> Eq a
$c== :: BindVertexBufferIndirectCommandEXT
-> BindVertexBufferIndirectCommandEXT -> "isPreprocessed" ::: Bool
== :: BindVertexBufferIndirectCommandEXT
-> BindVertexBufferIndirectCommandEXT -> "isPreprocessed" ::: Bool
$c/= :: BindVertexBufferIndirectCommandEXT
-> BindVertexBufferIndirectCommandEXT -> "isPreprocessed" ::: Bool
/= :: BindVertexBufferIndirectCommandEXT
-> BindVertexBufferIndirectCommandEXT -> "isPreprocessed" ::: Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (BindVertexBufferIndirectCommandEXT)
#endif
deriving instance Show BindVertexBufferIndirectCommandEXT
instance ToCStruct BindVertexBufferIndirectCommandEXT where
withCStruct :: forall b.
BindVertexBufferIndirectCommandEXT
-> (Ptr BindVertexBufferIndirectCommandEXT -> IO b) -> IO b
withCStruct BindVertexBufferIndirectCommandEXT
x Ptr BindVertexBufferIndirectCommandEXT -> IO b
f = Int -> (Ptr BindVertexBufferIndirectCommandEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
16 ((Ptr BindVertexBufferIndirectCommandEXT -> IO b) -> IO b)
-> (Ptr BindVertexBufferIndirectCommandEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr BindVertexBufferIndirectCommandEXT
p -> Ptr BindVertexBufferIndirectCommandEXT
-> BindVertexBufferIndirectCommandEXT -> IO b -> IO b
forall b.
Ptr BindVertexBufferIndirectCommandEXT
-> BindVertexBufferIndirectCommandEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr BindVertexBufferIndirectCommandEXT
p BindVertexBufferIndirectCommandEXT
x (Ptr BindVertexBufferIndirectCommandEXT -> IO b
f Ptr BindVertexBufferIndirectCommandEXT
p)
pokeCStruct :: forall b.
Ptr BindVertexBufferIndirectCommandEXT
-> BindVertexBufferIndirectCommandEXT -> IO b -> IO b
pokeCStruct Ptr BindVertexBufferIndirectCommandEXT
p BindVertexBufferIndirectCommandEXT{Flags
DeviceAddress
$sel:bufferAddress:BindVertexBufferIndirectCommandEXT :: BindVertexBufferIndirectCommandEXT -> DeviceAddress
$sel:size:BindVertexBufferIndirectCommandEXT :: BindVertexBufferIndirectCommandEXT -> Flags
$sel:stride:BindVertexBufferIndirectCommandEXT :: BindVertexBufferIndirectCommandEXT -> Flags
bufferAddress :: DeviceAddress
size :: Flags
stride :: Flags
..} IO b
f = do
Ptr DeviceAddress -> DeviceAddress -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BindVertexBufferIndirectCommandEXT
p Ptr BindVertexBufferIndirectCommandEXT -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr DeviceAddress)) (DeviceAddress
bufferAddress)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BindVertexBufferIndirectCommandEXT
p Ptr BindVertexBufferIndirectCommandEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32)) (Flags
size)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BindVertexBufferIndirectCommandEXT
p Ptr BindVertexBufferIndirectCommandEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Word32)) (Flags
stride)
IO b
f
cStructSize :: Int
cStructSize = Int
16
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr BindVertexBufferIndirectCommandEXT -> IO b -> IO b
pokeZeroCStruct Ptr BindVertexBufferIndirectCommandEXT
p IO b
f = do
Ptr DeviceAddress -> DeviceAddress -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BindVertexBufferIndirectCommandEXT
p Ptr BindVertexBufferIndirectCommandEXT -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr DeviceAddress)) (DeviceAddress
forall a. Zero a => a
zero)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BindVertexBufferIndirectCommandEXT
p Ptr BindVertexBufferIndirectCommandEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BindVertexBufferIndirectCommandEXT
p Ptr BindVertexBufferIndirectCommandEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct BindVertexBufferIndirectCommandEXT where
peekCStruct :: Ptr BindVertexBufferIndirectCommandEXT
-> IO BindVertexBufferIndirectCommandEXT
peekCStruct Ptr BindVertexBufferIndirectCommandEXT
p = do
DeviceAddress
bufferAddress <- forall a. Storable a => Ptr a -> IO a
peek @DeviceAddress ((Ptr BindVertexBufferIndirectCommandEXT
p Ptr BindVertexBufferIndirectCommandEXT -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr DeviceAddress))
Flags
size <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr BindVertexBufferIndirectCommandEXT
p Ptr BindVertexBufferIndirectCommandEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32))
Flags
stride <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr BindVertexBufferIndirectCommandEXT
p Ptr BindVertexBufferIndirectCommandEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr Word32))
BindVertexBufferIndirectCommandEXT
-> IO BindVertexBufferIndirectCommandEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (BindVertexBufferIndirectCommandEXT
-> IO BindVertexBufferIndirectCommandEXT)
-> BindVertexBufferIndirectCommandEXT
-> IO BindVertexBufferIndirectCommandEXT
forall a b. (a -> b) -> a -> b
$ DeviceAddress
-> Flags -> Flags -> BindVertexBufferIndirectCommandEXT
BindVertexBufferIndirectCommandEXT
DeviceAddress
bufferAddress Flags
size Flags
stride
instance Storable BindVertexBufferIndirectCommandEXT where
sizeOf :: BindVertexBufferIndirectCommandEXT -> Int
sizeOf ~BindVertexBufferIndirectCommandEXT
_ = Int
16
alignment :: BindVertexBufferIndirectCommandEXT -> Int
alignment ~BindVertexBufferIndirectCommandEXT
_ = Int
8
peek :: Ptr BindVertexBufferIndirectCommandEXT
-> IO BindVertexBufferIndirectCommandEXT
peek = Ptr BindVertexBufferIndirectCommandEXT
-> IO BindVertexBufferIndirectCommandEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr BindVertexBufferIndirectCommandEXT
-> BindVertexBufferIndirectCommandEXT -> IO ()
poke Ptr BindVertexBufferIndirectCommandEXT
ptr BindVertexBufferIndirectCommandEXT
poked = Ptr BindVertexBufferIndirectCommandEXT
-> BindVertexBufferIndirectCommandEXT -> IO () -> IO ()
forall b.
Ptr BindVertexBufferIndirectCommandEXT
-> BindVertexBufferIndirectCommandEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr BindVertexBufferIndirectCommandEXT
ptr BindVertexBufferIndirectCommandEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero BindVertexBufferIndirectCommandEXT where
zero :: BindVertexBufferIndirectCommandEXT
zero = DeviceAddress
-> Flags -> Flags -> BindVertexBufferIndirectCommandEXT
BindVertexBufferIndirectCommandEXT
DeviceAddress
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
data IndirectCommandsIndexBufferTokenEXT = IndirectCommandsIndexBufferTokenEXT
{
IndirectCommandsIndexBufferTokenEXT
-> IndirectCommandsInputModeFlagsEXT
mode :: IndirectCommandsInputModeFlagBitsEXT }
deriving (Typeable, IndirectCommandsIndexBufferTokenEXT
-> IndirectCommandsIndexBufferTokenEXT -> "isPreprocessed" ::: Bool
(IndirectCommandsIndexBufferTokenEXT
-> IndirectCommandsIndexBufferTokenEXT
-> "isPreprocessed" ::: Bool)
-> (IndirectCommandsIndexBufferTokenEXT
-> IndirectCommandsIndexBufferTokenEXT
-> "isPreprocessed" ::: Bool)
-> Eq IndirectCommandsIndexBufferTokenEXT
forall a.
(a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool) -> Eq a
$c== :: IndirectCommandsIndexBufferTokenEXT
-> IndirectCommandsIndexBufferTokenEXT -> "isPreprocessed" ::: Bool
== :: IndirectCommandsIndexBufferTokenEXT
-> IndirectCommandsIndexBufferTokenEXT -> "isPreprocessed" ::: Bool
$c/= :: IndirectCommandsIndexBufferTokenEXT
-> IndirectCommandsIndexBufferTokenEXT -> "isPreprocessed" ::: Bool
/= :: IndirectCommandsIndexBufferTokenEXT
-> IndirectCommandsIndexBufferTokenEXT -> "isPreprocessed" ::: Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (IndirectCommandsIndexBufferTokenEXT)
#endif
deriving instance Show IndirectCommandsIndexBufferTokenEXT
instance ToCStruct IndirectCommandsIndexBufferTokenEXT where
withCStruct :: forall b.
IndirectCommandsIndexBufferTokenEXT
-> (Ptr IndirectCommandsIndexBufferTokenEXT -> IO b) -> IO b
withCStruct IndirectCommandsIndexBufferTokenEXT
x Ptr IndirectCommandsIndexBufferTokenEXT -> IO b
f = Int -> (Ptr IndirectCommandsIndexBufferTokenEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
4 ((Ptr IndirectCommandsIndexBufferTokenEXT -> IO b) -> IO b)
-> (Ptr IndirectCommandsIndexBufferTokenEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr IndirectCommandsIndexBufferTokenEXT
p -> Ptr IndirectCommandsIndexBufferTokenEXT
-> IndirectCommandsIndexBufferTokenEXT -> IO b -> IO b
forall b.
Ptr IndirectCommandsIndexBufferTokenEXT
-> IndirectCommandsIndexBufferTokenEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr IndirectCommandsIndexBufferTokenEXT
p IndirectCommandsIndexBufferTokenEXT
x (Ptr IndirectCommandsIndexBufferTokenEXT -> IO b
f Ptr IndirectCommandsIndexBufferTokenEXT
p)
pokeCStruct :: forall b.
Ptr IndirectCommandsIndexBufferTokenEXT
-> IndirectCommandsIndexBufferTokenEXT -> IO b -> IO b
pokeCStruct Ptr IndirectCommandsIndexBufferTokenEXT
p IndirectCommandsIndexBufferTokenEXT{IndirectCommandsInputModeFlagsEXT
$sel:mode:IndirectCommandsIndexBufferTokenEXT :: IndirectCommandsIndexBufferTokenEXT
-> IndirectCommandsInputModeFlagsEXT
mode :: IndirectCommandsInputModeFlagsEXT
..} IO b
f = do
Ptr IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsIndexBufferTokenEXT
p Ptr IndirectCommandsIndexBufferTokenEXT
-> Int -> Ptr IndirectCommandsInputModeFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr IndirectCommandsInputModeFlagBitsEXT)) (IndirectCommandsInputModeFlagsEXT
mode)
IO b
f
cStructSize :: Int
cStructSize = Int
4
cStructAlignment :: Int
cStructAlignment = Int
4
pokeZeroCStruct :: forall b. Ptr IndirectCommandsIndexBufferTokenEXT -> IO b -> IO b
pokeZeroCStruct Ptr IndirectCommandsIndexBufferTokenEXT
p IO b
f = do
Ptr IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsIndexBufferTokenEXT
p Ptr IndirectCommandsIndexBufferTokenEXT
-> Int -> Ptr IndirectCommandsInputModeFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr IndirectCommandsInputModeFlagBitsEXT)) (IndirectCommandsInputModeFlagsEXT
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct IndirectCommandsIndexBufferTokenEXT where
peekCStruct :: Ptr IndirectCommandsIndexBufferTokenEXT
-> IO IndirectCommandsIndexBufferTokenEXT
peekCStruct Ptr IndirectCommandsIndexBufferTokenEXT
p = do
IndirectCommandsInputModeFlagsEXT
mode <- forall a. Storable a => Ptr a -> IO a
peek @IndirectCommandsInputModeFlagBitsEXT ((Ptr IndirectCommandsIndexBufferTokenEXT
p Ptr IndirectCommandsIndexBufferTokenEXT
-> Int -> Ptr IndirectCommandsInputModeFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr IndirectCommandsInputModeFlagBitsEXT))
IndirectCommandsIndexBufferTokenEXT
-> IO IndirectCommandsIndexBufferTokenEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (IndirectCommandsIndexBufferTokenEXT
-> IO IndirectCommandsIndexBufferTokenEXT)
-> IndirectCommandsIndexBufferTokenEXT
-> IO IndirectCommandsIndexBufferTokenEXT
forall a b. (a -> b) -> a -> b
$ IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsIndexBufferTokenEXT
IndirectCommandsIndexBufferTokenEXT
IndirectCommandsInputModeFlagsEXT
mode
instance Storable IndirectCommandsIndexBufferTokenEXT where
sizeOf :: IndirectCommandsIndexBufferTokenEXT -> Int
sizeOf ~IndirectCommandsIndexBufferTokenEXT
_ = Int
4
alignment :: IndirectCommandsIndexBufferTokenEXT -> Int
alignment ~IndirectCommandsIndexBufferTokenEXT
_ = Int
4
peek :: Ptr IndirectCommandsIndexBufferTokenEXT
-> IO IndirectCommandsIndexBufferTokenEXT
peek = Ptr IndirectCommandsIndexBufferTokenEXT
-> IO IndirectCommandsIndexBufferTokenEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr IndirectCommandsIndexBufferTokenEXT
-> IndirectCommandsIndexBufferTokenEXT -> IO ()
poke Ptr IndirectCommandsIndexBufferTokenEXT
ptr IndirectCommandsIndexBufferTokenEXT
poked = Ptr IndirectCommandsIndexBufferTokenEXT
-> IndirectCommandsIndexBufferTokenEXT -> IO () -> IO ()
forall b.
Ptr IndirectCommandsIndexBufferTokenEXT
-> IndirectCommandsIndexBufferTokenEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr IndirectCommandsIndexBufferTokenEXT
ptr IndirectCommandsIndexBufferTokenEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero IndirectCommandsIndexBufferTokenEXT where
zero :: IndirectCommandsIndexBufferTokenEXT
zero = IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsIndexBufferTokenEXT
IndirectCommandsIndexBufferTokenEXT
IndirectCommandsInputModeFlagsEXT
forall a. Zero a => a
zero
data BindIndexBufferIndirectCommandEXT = BindIndexBufferIndirectCommandEXT
{
BindIndexBufferIndirectCommandEXT -> DeviceAddress
bufferAddress :: DeviceAddress
,
BindIndexBufferIndirectCommandEXT -> Flags
size :: Word32
,
BindIndexBufferIndirectCommandEXT -> IndexType
indexType :: IndexType
}
deriving (Typeable, BindIndexBufferIndirectCommandEXT
-> BindIndexBufferIndirectCommandEXT -> "isPreprocessed" ::: Bool
(BindIndexBufferIndirectCommandEXT
-> BindIndexBufferIndirectCommandEXT -> "isPreprocessed" ::: Bool)
-> (BindIndexBufferIndirectCommandEXT
-> BindIndexBufferIndirectCommandEXT -> "isPreprocessed" ::: Bool)
-> Eq BindIndexBufferIndirectCommandEXT
forall a.
(a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool) -> Eq a
$c== :: BindIndexBufferIndirectCommandEXT
-> BindIndexBufferIndirectCommandEXT -> "isPreprocessed" ::: Bool
== :: BindIndexBufferIndirectCommandEXT
-> BindIndexBufferIndirectCommandEXT -> "isPreprocessed" ::: Bool
$c/= :: BindIndexBufferIndirectCommandEXT
-> BindIndexBufferIndirectCommandEXT -> "isPreprocessed" ::: Bool
/= :: BindIndexBufferIndirectCommandEXT
-> BindIndexBufferIndirectCommandEXT -> "isPreprocessed" ::: Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (BindIndexBufferIndirectCommandEXT)
#endif
deriving instance Show BindIndexBufferIndirectCommandEXT
instance ToCStruct BindIndexBufferIndirectCommandEXT where
withCStruct :: forall b.
BindIndexBufferIndirectCommandEXT
-> (Ptr BindIndexBufferIndirectCommandEXT -> IO b) -> IO b
withCStruct BindIndexBufferIndirectCommandEXT
x Ptr BindIndexBufferIndirectCommandEXT -> IO b
f = Int -> (Ptr BindIndexBufferIndirectCommandEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
16 ((Ptr BindIndexBufferIndirectCommandEXT -> IO b) -> IO b)
-> (Ptr BindIndexBufferIndirectCommandEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr BindIndexBufferIndirectCommandEXT
p -> Ptr BindIndexBufferIndirectCommandEXT
-> BindIndexBufferIndirectCommandEXT -> IO b -> IO b
forall b.
Ptr BindIndexBufferIndirectCommandEXT
-> BindIndexBufferIndirectCommandEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr BindIndexBufferIndirectCommandEXT
p BindIndexBufferIndirectCommandEXT
x (Ptr BindIndexBufferIndirectCommandEXT -> IO b
f Ptr BindIndexBufferIndirectCommandEXT
p)
pokeCStruct :: forall b.
Ptr BindIndexBufferIndirectCommandEXT
-> BindIndexBufferIndirectCommandEXT -> IO b -> IO b
pokeCStruct Ptr BindIndexBufferIndirectCommandEXT
p BindIndexBufferIndirectCommandEXT{Flags
DeviceAddress
IndexType
$sel:bufferAddress:BindIndexBufferIndirectCommandEXT :: BindIndexBufferIndirectCommandEXT -> DeviceAddress
$sel:size:BindIndexBufferIndirectCommandEXT :: BindIndexBufferIndirectCommandEXT -> Flags
$sel:indexType:BindIndexBufferIndirectCommandEXT :: BindIndexBufferIndirectCommandEXT -> IndexType
bufferAddress :: DeviceAddress
size :: Flags
indexType :: IndexType
..} IO b
f = do
Ptr DeviceAddress -> DeviceAddress -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BindIndexBufferIndirectCommandEXT
p Ptr BindIndexBufferIndirectCommandEXT -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr DeviceAddress)) (DeviceAddress
bufferAddress)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BindIndexBufferIndirectCommandEXT
p Ptr BindIndexBufferIndirectCommandEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32)) (Flags
size)
Ptr IndexType -> IndexType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BindIndexBufferIndirectCommandEXT
p Ptr BindIndexBufferIndirectCommandEXT -> Int -> Ptr IndexType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr IndexType)) (IndexType
indexType)
IO b
f
cStructSize :: Int
cStructSize = Int
16
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr BindIndexBufferIndirectCommandEXT -> IO b -> IO b
pokeZeroCStruct Ptr BindIndexBufferIndirectCommandEXT
p IO b
f = do
Ptr DeviceAddress -> DeviceAddress -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BindIndexBufferIndirectCommandEXT
p Ptr BindIndexBufferIndirectCommandEXT -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr DeviceAddress)) (DeviceAddress
forall a. Zero a => a
zero)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BindIndexBufferIndirectCommandEXT
p Ptr BindIndexBufferIndirectCommandEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32)) (Flags
forall a. Zero a => a
zero)
Ptr IndexType -> IndexType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr BindIndexBufferIndirectCommandEXT
p Ptr BindIndexBufferIndirectCommandEXT -> Int -> Ptr IndexType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr IndexType)) (IndexType
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct BindIndexBufferIndirectCommandEXT where
peekCStruct :: Ptr BindIndexBufferIndirectCommandEXT
-> IO BindIndexBufferIndirectCommandEXT
peekCStruct Ptr BindIndexBufferIndirectCommandEXT
p = do
DeviceAddress
bufferAddress <- forall a. Storable a => Ptr a -> IO a
peek @DeviceAddress ((Ptr BindIndexBufferIndirectCommandEXT
p Ptr BindIndexBufferIndirectCommandEXT -> Int -> Ptr DeviceAddress
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr DeviceAddress))
Flags
size <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr BindIndexBufferIndirectCommandEXT
p Ptr BindIndexBufferIndirectCommandEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr Word32))
IndexType
indexType <- forall a. Storable a => Ptr a -> IO a
peek @IndexType ((Ptr BindIndexBufferIndirectCommandEXT
p Ptr BindIndexBufferIndirectCommandEXT -> Int -> Ptr IndexType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
12 :: Ptr IndexType))
BindIndexBufferIndirectCommandEXT
-> IO BindIndexBufferIndirectCommandEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (BindIndexBufferIndirectCommandEXT
-> IO BindIndexBufferIndirectCommandEXT)
-> BindIndexBufferIndirectCommandEXT
-> IO BindIndexBufferIndirectCommandEXT
forall a b. (a -> b) -> a -> b
$ DeviceAddress
-> Flags -> IndexType -> BindIndexBufferIndirectCommandEXT
BindIndexBufferIndirectCommandEXT
DeviceAddress
bufferAddress Flags
size IndexType
indexType
instance Storable BindIndexBufferIndirectCommandEXT where
sizeOf :: BindIndexBufferIndirectCommandEXT -> Int
sizeOf ~BindIndexBufferIndirectCommandEXT
_ = Int
16
alignment :: BindIndexBufferIndirectCommandEXT -> Int
alignment ~BindIndexBufferIndirectCommandEXT
_ = Int
8
peek :: Ptr BindIndexBufferIndirectCommandEXT
-> IO BindIndexBufferIndirectCommandEXT
peek = Ptr BindIndexBufferIndirectCommandEXT
-> IO BindIndexBufferIndirectCommandEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr BindIndexBufferIndirectCommandEXT
-> BindIndexBufferIndirectCommandEXT -> IO ()
poke Ptr BindIndexBufferIndirectCommandEXT
ptr BindIndexBufferIndirectCommandEXT
poked = Ptr BindIndexBufferIndirectCommandEXT
-> BindIndexBufferIndirectCommandEXT -> IO () -> IO ()
forall b.
Ptr BindIndexBufferIndirectCommandEXT
-> BindIndexBufferIndirectCommandEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr BindIndexBufferIndirectCommandEXT
ptr BindIndexBufferIndirectCommandEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero BindIndexBufferIndirectCommandEXT where
zero :: BindIndexBufferIndirectCommandEXT
zero = DeviceAddress
-> Flags -> IndexType -> BindIndexBufferIndirectCommandEXT
BindIndexBufferIndirectCommandEXT
DeviceAddress
forall a. Zero a => a
zero
Flags
forall a. Zero a => a
zero
IndexType
forall a. Zero a => a
zero
data IndirectCommandsPushConstantTokenEXT = IndirectCommandsPushConstantTokenEXT
{
IndirectCommandsPushConstantTokenEXT -> PushConstantRange
updateRange :: PushConstantRange }
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (IndirectCommandsPushConstantTokenEXT)
#endif
deriving instance Show IndirectCommandsPushConstantTokenEXT
instance ToCStruct IndirectCommandsPushConstantTokenEXT where
withCStruct :: forall b.
IndirectCommandsPushConstantTokenEXT
-> (Ptr IndirectCommandsPushConstantTokenEXT -> IO b) -> IO b
withCStruct IndirectCommandsPushConstantTokenEXT
x Ptr IndirectCommandsPushConstantTokenEXT -> IO b
f = Int -> (Ptr IndirectCommandsPushConstantTokenEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
12 ((Ptr IndirectCommandsPushConstantTokenEXT -> IO b) -> IO b)
-> (Ptr IndirectCommandsPushConstantTokenEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr IndirectCommandsPushConstantTokenEXT
p -> Ptr IndirectCommandsPushConstantTokenEXT
-> IndirectCommandsPushConstantTokenEXT -> IO b -> IO b
forall b.
Ptr IndirectCommandsPushConstantTokenEXT
-> IndirectCommandsPushConstantTokenEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr IndirectCommandsPushConstantTokenEXT
p IndirectCommandsPushConstantTokenEXT
x (Ptr IndirectCommandsPushConstantTokenEXT -> IO b
f Ptr IndirectCommandsPushConstantTokenEXT
p)
pokeCStruct :: forall b.
Ptr IndirectCommandsPushConstantTokenEXT
-> IndirectCommandsPushConstantTokenEXT -> IO b -> IO b
pokeCStruct Ptr IndirectCommandsPushConstantTokenEXT
p IndirectCommandsPushConstantTokenEXT{PushConstantRange
$sel:updateRange:IndirectCommandsPushConstantTokenEXT :: IndirectCommandsPushConstantTokenEXT -> PushConstantRange
updateRange :: PushConstantRange
..} IO b
f = do
Ptr PushConstantRange -> PushConstantRange -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsPushConstantTokenEXT
p Ptr IndirectCommandsPushConstantTokenEXT
-> Int -> Ptr PushConstantRange
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr PushConstantRange)) (PushConstantRange
updateRange)
IO b
f
cStructSize :: Int
cStructSize = Int
12
cStructAlignment :: Int
cStructAlignment = Int
4
pokeZeroCStruct :: forall b. Ptr IndirectCommandsPushConstantTokenEXT -> IO b -> IO b
pokeZeroCStruct Ptr IndirectCommandsPushConstantTokenEXT
p IO b
f = do
Ptr PushConstantRange -> PushConstantRange -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsPushConstantTokenEXT
p Ptr IndirectCommandsPushConstantTokenEXT
-> Int -> Ptr PushConstantRange
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr PushConstantRange)) (PushConstantRange
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct IndirectCommandsPushConstantTokenEXT where
peekCStruct :: Ptr IndirectCommandsPushConstantTokenEXT
-> IO IndirectCommandsPushConstantTokenEXT
peekCStruct Ptr IndirectCommandsPushConstantTokenEXT
p = do
PushConstantRange
updateRange <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @PushConstantRange ((Ptr IndirectCommandsPushConstantTokenEXT
p Ptr IndirectCommandsPushConstantTokenEXT
-> Int -> Ptr PushConstantRange
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr PushConstantRange))
IndirectCommandsPushConstantTokenEXT
-> IO IndirectCommandsPushConstantTokenEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (IndirectCommandsPushConstantTokenEXT
-> IO IndirectCommandsPushConstantTokenEXT)
-> IndirectCommandsPushConstantTokenEXT
-> IO IndirectCommandsPushConstantTokenEXT
forall a b. (a -> b) -> a -> b
$ PushConstantRange -> IndirectCommandsPushConstantTokenEXT
IndirectCommandsPushConstantTokenEXT
PushConstantRange
updateRange
instance Storable IndirectCommandsPushConstantTokenEXT where
sizeOf :: IndirectCommandsPushConstantTokenEXT -> Int
sizeOf ~IndirectCommandsPushConstantTokenEXT
_ = Int
12
alignment :: IndirectCommandsPushConstantTokenEXT -> Int
alignment ~IndirectCommandsPushConstantTokenEXT
_ = Int
4
peek :: Ptr IndirectCommandsPushConstantTokenEXT
-> IO IndirectCommandsPushConstantTokenEXT
peek = Ptr IndirectCommandsPushConstantTokenEXT
-> IO IndirectCommandsPushConstantTokenEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr IndirectCommandsPushConstantTokenEXT
-> IndirectCommandsPushConstantTokenEXT -> IO ()
poke Ptr IndirectCommandsPushConstantTokenEXT
ptr IndirectCommandsPushConstantTokenEXT
poked = Ptr IndirectCommandsPushConstantTokenEXT
-> IndirectCommandsPushConstantTokenEXT -> IO () -> IO ()
forall b.
Ptr IndirectCommandsPushConstantTokenEXT
-> IndirectCommandsPushConstantTokenEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr IndirectCommandsPushConstantTokenEXT
ptr IndirectCommandsPushConstantTokenEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero IndirectCommandsPushConstantTokenEXT where
zero :: IndirectCommandsPushConstantTokenEXT
zero = PushConstantRange -> IndirectCommandsPushConstantTokenEXT
IndirectCommandsPushConstantTokenEXT
PushConstantRange
forall a. Zero a => a
zero
data IndirectCommandsExecutionSetTokenEXT = IndirectCommandsExecutionSetTokenEXT
{
IndirectCommandsExecutionSetTokenEXT
-> IndirectExecutionSetInfoTypeEXT
type' :: IndirectExecutionSetInfoTypeEXT
,
IndirectCommandsExecutionSetTokenEXT -> ShaderStageFlags
shaderStages :: ShaderStageFlags
}
deriving (Typeable, IndirectCommandsExecutionSetTokenEXT
-> IndirectCommandsExecutionSetTokenEXT
-> "isPreprocessed" ::: Bool
(IndirectCommandsExecutionSetTokenEXT
-> IndirectCommandsExecutionSetTokenEXT
-> "isPreprocessed" ::: Bool)
-> (IndirectCommandsExecutionSetTokenEXT
-> IndirectCommandsExecutionSetTokenEXT
-> "isPreprocessed" ::: Bool)
-> Eq IndirectCommandsExecutionSetTokenEXT
forall a.
(a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool) -> Eq a
$c== :: IndirectCommandsExecutionSetTokenEXT
-> IndirectCommandsExecutionSetTokenEXT
-> "isPreprocessed" ::: Bool
== :: IndirectCommandsExecutionSetTokenEXT
-> IndirectCommandsExecutionSetTokenEXT
-> "isPreprocessed" ::: Bool
$c/= :: IndirectCommandsExecutionSetTokenEXT
-> IndirectCommandsExecutionSetTokenEXT
-> "isPreprocessed" ::: Bool
/= :: IndirectCommandsExecutionSetTokenEXT
-> IndirectCommandsExecutionSetTokenEXT
-> "isPreprocessed" ::: Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (IndirectCommandsExecutionSetTokenEXT)
#endif
deriving instance Show IndirectCommandsExecutionSetTokenEXT
instance ToCStruct IndirectCommandsExecutionSetTokenEXT where
withCStruct :: forall b.
IndirectCommandsExecutionSetTokenEXT
-> (Ptr IndirectCommandsExecutionSetTokenEXT -> IO b) -> IO b
withCStruct IndirectCommandsExecutionSetTokenEXT
x Ptr IndirectCommandsExecutionSetTokenEXT -> IO b
f = Int -> (Ptr IndirectCommandsExecutionSetTokenEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
8 ((Ptr IndirectCommandsExecutionSetTokenEXT -> IO b) -> IO b)
-> (Ptr IndirectCommandsExecutionSetTokenEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr IndirectCommandsExecutionSetTokenEXT
p -> Ptr IndirectCommandsExecutionSetTokenEXT
-> IndirectCommandsExecutionSetTokenEXT -> IO b -> IO b
forall b.
Ptr IndirectCommandsExecutionSetTokenEXT
-> IndirectCommandsExecutionSetTokenEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr IndirectCommandsExecutionSetTokenEXT
p IndirectCommandsExecutionSetTokenEXT
x (Ptr IndirectCommandsExecutionSetTokenEXT -> IO b
f Ptr IndirectCommandsExecutionSetTokenEXT
p)
pokeCStruct :: forall b.
Ptr IndirectCommandsExecutionSetTokenEXT
-> IndirectCommandsExecutionSetTokenEXT -> IO b -> IO b
pokeCStruct Ptr IndirectCommandsExecutionSetTokenEXT
p IndirectCommandsExecutionSetTokenEXT{ShaderStageFlags
IndirectExecutionSetInfoTypeEXT
$sel:type':IndirectCommandsExecutionSetTokenEXT :: IndirectCommandsExecutionSetTokenEXT
-> IndirectExecutionSetInfoTypeEXT
$sel:shaderStages:IndirectCommandsExecutionSetTokenEXT :: IndirectCommandsExecutionSetTokenEXT -> ShaderStageFlags
type' :: IndirectExecutionSetInfoTypeEXT
shaderStages :: ShaderStageFlags
..} IO b
f = do
Ptr IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsExecutionSetTokenEXT
p Ptr IndirectCommandsExecutionSetTokenEXT
-> Int -> Ptr IndirectExecutionSetInfoTypeEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr IndirectExecutionSetInfoTypeEXT)) (IndirectExecutionSetInfoTypeEXT
type')
Ptr ShaderStageFlags -> ShaderStageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsExecutionSetTokenEXT
p Ptr IndirectCommandsExecutionSetTokenEXT
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr ShaderStageFlags)) (ShaderStageFlags
shaderStages)
IO b
f
cStructSize :: Int
cStructSize = Int
8
cStructAlignment :: Int
cStructAlignment = Int
4
pokeZeroCStruct :: forall b. Ptr IndirectCommandsExecutionSetTokenEXT -> IO b -> IO b
pokeZeroCStruct Ptr IndirectCommandsExecutionSetTokenEXT
p IO b
f = do
Ptr IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsExecutionSetTokenEXT
p Ptr IndirectCommandsExecutionSetTokenEXT
-> Int -> Ptr IndirectExecutionSetInfoTypeEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr IndirectExecutionSetInfoTypeEXT)) (IndirectExecutionSetInfoTypeEXT
forall a. Zero a => a
zero)
Ptr ShaderStageFlags -> ShaderStageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr IndirectCommandsExecutionSetTokenEXT
p Ptr IndirectCommandsExecutionSetTokenEXT
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr ShaderStageFlags)) (ShaderStageFlags
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct IndirectCommandsExecutionSetTokenEXT where
peekCStruct :: Ptr IndirectCommandsExecutionSetTokenEXT
-> IO IndirectCommandsExecutionSetTokenEXT
peekCStruct Ptr IndirectCommandsExecutionSetTokenEXT
p = do
IndirectExecutionSetInfoTypeEXT
type' <- forall a. Storable a => Ptr a -> IO a
peek @IndirectExecutionSetInfoTypeEXT ((Ptr IndirectCommandsExecutionSetTokenEXT
p Ptr IndirectCommandsExecutionSetTokenEXT
-> Int -> Ptr IndirectExecutionSetInfoTypeEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr IndirectExecutionSetInfoTypeEXT))
ShaderStageFlags
shaderStages <- forall a. Storable a => Ptr a -> IO a
peek @ShaderStageFlags ((Ptr IndirectCommandsExecutionSetTokenEXT
p Ptr IndirectCommandsExecutionSetTokenEXT
-> Int -> Ptr ShaderStageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
4 :: Ptr ShaderStageFlags))
IndirectCommandsExecutionSetTokenEXT
-> IO IndirectCommandsExecutionSetTokenEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (IndirectCommandsExecutionSetTokenEXT
-> IO IndirectCommandsExecutionSetTokenEXT)
-> IndirectCommandsExecutionSetTokenEXT
-> IO IndirectCommandsExecutionSetTokenEXT
forall a b. (a -> b) -> a -> b
$ IndirectExecutionSetInfoTypeEXT
-> ShaderStageFlags -> IndirectCommandsExecutionSetTokenEXT
IndirectCommandsExecutionSetTokenEXT
IndirectExecutionSetInfoTypeEXT
type' ShaderStageFlags
shaderStages
instance Storable IndirectCommandsExecutionSetTokenEXT where
sizeOf :: IndirectCommandsExecutionSetTokenEXT -> Int
sizeOf ~IndirectCommandsExecutionSetTokenEXT
_ = Int
8
alignment :: IndirectCommandsExecutionSetTokenEXT -> Int
alignment ~IndirectCommandsExecutionSetTokenEXT
_ = Int
4
peek :: Ptr IndirectCommandsExecutionSetTokenEXT
-> IO IndirectCommandsExecutionSetTokenEXT
peek = Ptr IndirectCommandsExecutionSetTokenEXT
-> IO IndirectCommandsExecutionSetTokenEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr IndirectCommandsExecutionSetTokenEXT
-> IndirectCommandsExecutionSetTokenEXT -> IO ()
poke Ptr IndirectCommandsExecutionSetTokenEXT
ptr IndirectCommandsExecutionSetTokenEXT
poked = Ptr IndirectCommandsExecutionSetTokenEXT
-> IndirectCommandsExecutionSetTokenEXT -> IO () -> IO ()
forall b.
Ptr IndirectCommandsExecutionSetTokenEXT
-> IndirectCommandsExecutionSetTokenEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr IndirectCommandsExecutionSetTokenEXT
ptr IndirectCommandsExecutionSetTokenEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero IndirectCommandsExecutionSetTokenEXT where
zero :: IndirectCommandsExecutionSetTokenEXT
zero = IndirectExecutionSetInfoTypeEXT
-> ShaderStageFlags -> IndirectCommandsExecutionSetTokenEXT
IndirectCommandsExecutionSetTokenEXT
IndirectExecutionSetInfoTypeEXT
forall a. Zero a => a
zero
ShaderStageFlags
forall a. Zero a => a
zero
data IndirectExecutionSetInfoEXT
= PipelineInfo IndirectExecutionSetPipelineInfoEXT
| ShaderInfo IndirectExecutionSetShaderInfoEXT
deriving (Int -> IndirectExecutionSetInfoEXT -> ShowS
[IndirectExecutionSetInfoEXT] -> ShowS
IndirectExecutionSetInfoEXT -> String
(Int -> IndirectExecutionSetInfoEXT -> ShowS)
-> (IndirectExecutionSetInfoEXT -> String)
-> ([IndirectExecutionSetInfoEXT] -> ShowS)
-> Show IndirectExecutionSetInfoEXT
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> IndirectExecutionSetInfoEXT -> ShowS
showsPrec :: Int -> IndirectExecutionSetInfoEXT -> ShowS
$cshow :: IndirectExecutionSetInfoEXT -> String
show :: IndirectExecutionSetInfoEXT -> String
$cshowList :: [IndirectExecutionSetInfoEXT] -> ShowS
showList :: [IndirectExecutionSetInfoEXT] -> ShowS
Show)
instance ToCStruct IndirectExecutionSetInfoEXT where
withCStruct :: forall b.
IndirectExecutionSetInfoEXT
-> (Ptr IndirectExecutionSetInfoEXT -> IO b) -> IO b
withCStruct IndirectExecutionSetInfoEXT
x Ptr IndirectExecutionSetInfoEXT -> IO b
f = Int -> (Ptr IndirectExecutionSetInfoEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
8 ((Ptr IndirectExecutionSetInfoEXT -> IO b) -> IO b)
-> (Ptr IndirectExecutionSetInfoEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr IndirectExecutionSetInfoEXT
p -> Ptr IndirectExecutionSetInfoEXT
-> IndirectExecutionSetInfoEXT -> IO b -> IO b
forall b.
Ptr IndirectExecutionSetInfoEXT
-> IndirectExecutionSetInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr IndirectExecutionSetInfoEXT
p IndirectExecutionSetInfoEXT
x (Ptr IndirectExecutionSetInfoEXT -> IO b
f Ptr IndirectExecutionSetInfoEXT
p)
pokeCStruct :: Ptr IndirectExecutionSetInfoEXT -> IndirectExecutionSetInfoEXT -> IO a -> IO a
pokeCStruct :: forall b.
Ptr IndirectExecutionSetInfoEXT
-> IndirectExecutionSetInfoEXT -> IO b -> IO b
pokeCStruct Ptr IndirectExecutionSetInfoEXT
p = (((() -> IO a) -> IO a) -> (IO a -> () -> IO a) -> IO a -> IO a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. IO a -> () -> IO a
forall a b. a -> b -> a
const) (((() -> IO a) -> IO a) -> IO a -> IO a)
-> (IndirectExecutionSetInfoEXT -> (() -> IO a) -> IO a)
-> IndirectExecutionSetInfoEXT
-> IO a
-> IO a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT a IO () -> (() -> IO a) -> IO a
forall {k} (r :: k) (m :: k -> *) a.
ContT r m a -> (a -> m r) -> m r
runContT (ContT a IO () -> (() -> IO a) -> IO a)
-> (IndirectExecutionSetInfoEXT -> ContT a IO ())
-> IndirectExecutionSetInfoEXT
-> (() -> IO a)
-> IO a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
PipelineInfo IndirectExecutionSetPipelineInfoEXT
v -> do
Ptr IndirectExecutionSetPipelineInfoEXT
pPipelineInfo <- ((Ptr IndirectExecutionSetPipelineInfoEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectExecutionSetPipelineInfoEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr IndirectExecutionSetPipelineInfoEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectExecutionSetPipelineInfoEXT))
-> ((Ptr IndirectExecutionSetPipelineInfoEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectExecutionSetPipelineInfoEXT)
forall a b. (a -> b) -> a -> b
$ IndirectExecutionSetPipelineInfoEXT
-> (Ptr IndirectExecutionSetPipelineInfoEXT -> IO a) -> IO a
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
IndirectExecutionSetPipelineInfoEXT
-> (Ptr IndirectExecutionSetPipelineInfoEXT -> IO b) -> IO b
withCStruct (IndirectExecutionSetPipelineInfoEXT
v)
IO () -> ContT a IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT a m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT a IO ()) -> IO () -> ContT a IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr IndirectExecutionSetPipelineInfoEXT)
-> Ptr IndirectExecutionSetPipelineInfoEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (forall a b. Ptr a -> Ptr b
castPtr @_ @(Ptr IndirectExecutionSetPipelineInfoEXT) Ptr IndirectExecutionSetInfoEXT
p) Ptr IndirectExecutionSetPipelineInfoEXT
pPipelineInfo
ShaderInfo IndirectExecutionSetShaderInfoEXT
v -> do
Ptr IndirectExecutionSetShaderInfoEXT
pShaderInfo <- ((Ptr IndirectExecutionSetShaderInfoEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectExecutionSetShaderInfoEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr IndirectExecutionSetShaderInfoEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectExecutionSetShaderInfoEXT))
-> ((Ptr IndirectExecutionSetShaderInfoEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectExecutionSetShaderInfoEXT)
forall a b. (a -> b) -> a -> b
$ IndirectExecutionSetShaderInfoEXT
-> (Ptr IndirectExecutionSetShaderInfoEXT -> IO a) -> IO a
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
IndirectExecutionSetShaderInfoEXT
-> (Ptr IndirectExecutionSetShaderInfoEXT -> IO b) -> IO b
withCStruct (IndirectExecutionSetShaderInfoEXT
v)
IO () -> ContT a IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT a m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT a IO ()) -> IO () -> ContT a IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr IndirectExecutionSetShaderInfoEXT)
-> Ptr IndirectExecutionSetShaderInfoEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (forall a b. Ptr a -> Ptr b
castPtr @_ @(Ptr IndirectExecutionSetShaderInfoEXT) Ptr IndirectExecutionSetInfoEXT
p) Ptr IndirectExecutionSetShaderInfoEXT
pShaderInfo
pokeZeroCStruct :: Ptr IndirectExecutionSetInfoEXT -> IO b -> IO b
pokeZeroCStruct :: forall b. Ptr IndirectExecutionSetInfoEXT -> IO b -> IO b
pokeZeroCStruct Ptr IndirectExecutionSetInfoEXT
_ IO b
f = IO b
f
cStructSize :: Int
cStructSize = Int
8
cStructAlignment :: Int
cStructAlignment = Int
8
instance Zero IndirectExecutionSetInfoEXT where
zero :: IndirectExecutionSetInfoEXT
zero = IndirectExecutionSetPipelineInfoEXT -> IndirectExecutionSetInfoEXT
PipelineInfo IndirectExecutionSetPipelineInfoEXT
forall a. Zero a => a
zero
data IndirectCommandsTokenDataEXT
= PushConstant IndirectCommandsPushConstantTokenEXT
| VertexBuffer IndirectCommandsVertexBufferTokenEXT
| IndexBuffer IndirectCommandsIndexBufferTokenEXT
| ExecutionSet IndirectCommandsExecutionSetTokenEXT
deriving (Int -> IndirectCommandsTokenDataEXT -> ShowS
[IndirectCommandsTokenDataEXT] -> ShowS
IndirectCommandsTokenDataEXT -> String
(Int -> IndirectCommandsTokenDataEXT -> ShowS)
-> (IndirectCommandsTokenDataEXT -> String)
-> ([IndirectCommandsTokenDataEXT] -> ShowS)
-> Show IndirectCommandsTokenDataEXT
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> IndirectCommandsTokenDataEXT -> ShowS
showsPrec :: Int -> IndirectCommandsTokenDataEXT -> ShowS
$cshow :: IndirectCommandsTokenDataEXT -> String
show :: IndirectCommandsTokenDataEXT -> String
$cshowList :: [IndirectCommandsTokenDataEXT] -> ShowS
showList :: [IndirectCommandsTokenDataEXT] -> ShowS
Show)
instance ToCStruct IndirectCommandsTokenDataEXT where
withCStruct :: forall b.
IndirectCommandsTokenDataEXT
-> (Ptr IndirectCommandsTokenDataEXT -> IO b) -> IO b
withCStruct IndirectCommandsTokenDataEXT
x Ptr IndirectCommandsTokenDataEXT -> IO b
f = Int -> (Ptr IndirectCommandsTokenDataEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
8 ((Ptr IndirectCommandsTokenDataEXT -> IO b) -> IO b)
-> (Ptr IndirectCommandsTokenDataEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr IndirectCommandsTokenDataEXT
p -> Ptr IndirectCommandsTokenDataEXT
-> IndirectCommandsTokenDataEXT -> IO b -> IO b
forall b.
Ptr IndirectCommandsTokenDataEXT
-> IndirectCommandsTokenDataEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr IndirectCommandsTokenDataEXT
p IndirectCommandsTokenDataEXT
x (Ptr IndirectCommandsTokenDataEXT -> IO b
f Ptr IndirectCommandsTokenDataEXT
p)
pokeCStruct :: Ptr IndirectCommandsTokenDataEXT -> IndirectCommandsTokenDataEXT -> IO a -> IO a
pokeCStruct :: forall b.
Ptr IndirectCommandsTokenDataEXT
-> IndirectCommandsTokenDataEXT -> IO b -> IO b
pokeCStruct Ptr IndirectCommandsTokenDataEXT
p = (((() -> IO a) -> IO a) -> (IO a -> () -> IO a) -> IO a -> IO a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. IO a -> () -> IO a
forall a b. a -> b -> a
const) (((() -> IO a) -> IO a) -> IO a -> IO a)
-> (IndirectCommandsTokenDataEXT -> (() -> IO a) -> IO a)
-> IndirectCommandsTokenDataEXT
-> IO a
-> IO a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT a IO () -> (() -> IO a) -> IO a
forall {k} (r :: k) (m :: k -> *) a.
ContT r m a -> (a -> m r) -> m r
runContT (ContT a IO () -> (() -> IO a) -> IO a)
-> (IndirectCommandsTokenDataEXT -> ContT a IO ())
-> IndirectCommandsTokenDataEXT
-> (() -> IO a)
-> IO a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
PushConstant IndirectCommandsPushConstantTokenEXT
v -> do
Ptr IndirectCommandsPushConstantTokenEXT
pPushConstant <- ((Ptr IndirectCommandsPushConstantTokenEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectCommandsPushConstantTokenEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr IndirectCommandsPushConstantTokenEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectCommandsPushConstantTokenEXT))
-> ((Ptr IndirectCommandsPushConstantTokenEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectCommandsPushConstantTokenEXT)
forall a b. (a -> b) -> a -> b
$ IndirectCommandsPushConstantTokenEXT
-> (Ptr IndirectCommandsPushConstantTokenEXT -> IO a) -> IO a
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
IndirectCommandsPushConstantTokenEXT
-> (Ptr IndirectCommandsPushConstantTokenEXT -> IO b) -> IO b
withCStruct (IndirectCommandsPushConstantTokenEXT
v)
IO () -> ContT a IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT a m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT a IO ()) -> IO () -> ContT a IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr IndirectCommandsPushConstantTokenEXT)
-> Ptr IndirectCommandsPushConstantTokenEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (forall a b. Ptr a -> Ptr b
castPtr @_ @(Ptr IndirectCommandsPushConstantTokenEXT) Ptr IndirectCommandsTokenDataEXT
p) Ptr IndirectCommandsPushConstantTokenEXT
pPushConstant
VertexBuffer IndirectCommandsVertexBufferTokenEXT
v -> do
Ptr IndirectCommandsVertexBufferTokenEXT
pVertexBuffer <- ((Ptr IndirectCommandsVertexBufferTokenEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectCommandsVertexBufferTokenEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr IndirectCommandsVertexBufferTokenEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectCommandsVertexBufferTokenEXT))
-> ((Ptr IndirectCommandsVertexBufferTokenEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectCommandsVertexBufferTokenEXT)
forall a b. (a -> b) -> a -> b
$ IndirectCommandsVertexBufferTokenEXT
-> (Ptr IndirectCommandsVertexBufferTokenEXT -> IO a) -> IO a
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
IndirectCommandsVertexBufferTokenEXT
-> (Ptr IndirectCommandsVertexBufferTokenEXT -> IO b) -> IO b
withCStruct (IndirectCommandsVertexBufferTokenEXT
v)
IO () -> ContT a IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT a m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT a IO ()) -> IO () -> ContT a IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr IndirectCommandsVertexBufferTokenEXT)
-> Ptr IndirectCommandsVertexBufferTokenEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (forall a b. Ptr a -> Ptr b
castPtr @_ @(Ptr IndirectCommandsVertexBufferTokenEXT) Ptr IndirectCommandsTokenDataEXT
p) Ptr IndirectCommandsVertexBufferTokenEXT
pVertexBuffer
IndexBuffer IndirectCommandsIndexBufferTokenEXT
v -> do
Ptr IndirectCommandsIndexBufferTokenEXT
pIndexBuffer <- ((Ptr IndirectCommandsIndexBufferTokenEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectCommandsIndexBufferTokenEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr IndirectCommandsIndexBufferTokenEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectCommandsIndexBufferTokenEXT))
-> ((Ptr IndirectCommandsIndexBufferTokenEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectCommandsIndexBufferTokenEXT)
forall a b. (a -> b) -> a -> b
$ IndirectCommandsIndexBufferTokenEXT
-> (Ptr IndirectCommandsIndexBufferTokenEXT -> IO a) -> IO a
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
IndirectCommandsIndexBufferTokenEXT
-> (Ptr IndirectCommandsIndexBufferTokenEXT -> IO b) -> IO b
withCStruct (IndirectCommandsIndexBufferTokenEXT
v)
IO () -> ContT a IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT a m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT a IO ()) -> IO () -> ContT a IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr IndirectCommandsIndexBufferTokenEXT)
-> Ptr IndirectCommandsIndexBufferTokenEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (forall a b. Ptr a -> Ptr b
castPtr @_ @(Ptr IndirectCommandsIndexBufferTokenEXT) Ptr IndirectCommandsTokenDataEXT
p) Ptr IndirectCommandsIndexBufferTokenEXT
pIndexBuffer
ExecutionSet IndirectCommandsExecutionSetTokenEXT
v -> do
Ptr IndirectCommandsExecutionSetTokenEXT
pExecutionSet <- ((Ptr IndirectCommandsExecutionSetTokenEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectCommandsExecutionSetTokenEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr IndirectCommandsExecutionSetTokenEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectCommandsExecutionSetTokenEXT))
-> ((Ptr IndirectCommandsExecutionSetTokenEXT -> IO a) -> IO a)
-> ContT a IO (Ptr IndirectCommandsExecutionSetTokenEXT)
forall a b. (a -> b) -> a -> b
$ IndirectCommandsExecutionSetTokenEXT
-> (Ptr IndirectCommandsExecutionSetTokenEXT -> IO a) -> IO a
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
IndirectCommandsExecutionSetTokenEXT
-> (Ptr IndirectCommandsExecutionSetTokenEXT -> IO b) -> IO b
withCStruct (IndirectCommandsExecutionSetTokenEXT
v)
IO () -> ContT a IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT a m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT a IO ()) -> IO () -> ContT a IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr IndirectCommandsExecutionSetTokenEXT)
-> Ptr IndirectCommandsExecutionSetTokenEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (forall a b. Ptr a -> Ptr b
castPtr @_ @(Ptr IndirectCommandsExecutionSetTokenEXT) Ptr IndirectCommandsTokenDataEXT
p) Ptr IndirectCommandsExecutionSetTokenEXT
pExecutionSet
pokeZeroCStruct :: Ptr IndirectCommandsTokenDataEXT -> IO b -> IO b
pokeZeroCStruct :: forall b. Ptr IndirectCommandsTokenDataEXT -> IO b -> IO b
pokeZeroCStruct Ptr IndirectCommandsTokenDataEXT
_ IO b
f = IO b
f
cStructSize :: Int
cStructSize = Int
8
cStructAlignment :: Int
cStructAlignment = Int
8
instance Zero IndirectCommandsTokenDataEXT where
zero :: IndirectCommandsTokenDataEXT
zero = IndirectCommandsPushConstantTokenEXT
-> IndirectCommandsTokenDataEXT
PushConstant IndirectCommandsPushConstantTokenEXT
forall a. Zero a => a
zero
type IndirectCommandsLayoutUsageFlagsEXT = IndirectCommandsLayoutUsageFlagBitsEXT
newtype IndirectCommandsLayoutUsageFlagBitsEXT = IndirectCommandsLayoutUsageFlagBitsEXT Flags
deriving newtype (IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
(IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> "isPreprocessed" ::: Bool)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> "isPreprocessed" ::: Bool)
-> Eq IndirectCommandsLayoutUsageFlagsEXT
forall a.
(a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool) -> Eq a
$c== :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
== :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
$c/= :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
/= :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
Eq, Eq IndirectCommandsLayoutUsageFlagsEXT
Eq IndirectCommandsLayoutUsageFlagsEXT =>
(IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> Ordering)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> "isPreprocessed" ::: Bool)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> "isPreprocessed" ::: Bool)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> "isPreprocessed" ::: Bool)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> "isPreprocessed" ::: Bool)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT)
-> Ord IndirectCommandsLayoutUsageFlagsEXT
IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> Ordering
IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> Ordering
compare :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> Ordering
$c< :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
< :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
$c<= :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
<= :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
$c> :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
> :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
$c>= :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
>= :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
$cmax :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
max :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
$cmin :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
min :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
Ord, Ptr IndirectCommandsLayoutUsageFlagsEXT
-> IO IndirectCommandsLayoutUsageFlagsEXT
Ptr IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IO IndirectCommandsLayoutUsageFlagsEXT
Ptr IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT -> IO ()
Ptr IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> IO ()
IndirectCommandsLayoutUsageFlagsEXT -> Int
(IndirectCommandsLayoutUsageFlagsEXT -> Int)
-> (IndirectCommandsLayoutUsageFlagsEXT -> Int)
-> (Ptr IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IO IndirectCommandsLayoutUsageFlagsEXT)
-> (Ptr IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT -> IO ())
-> (forall b.
Ptr b -> Int -> IO IndirectCommandsLayoutUsageFlagsEXT)
-> (forall b.
Ptr b -> Int -> IndirectCommandsLayoutUsageFlagsEXT -> IO ())
-> (Ptr IndirectCommandsLayoutUsageFlagsEXT
-> IO IndirectCommandsLayoutUsageFlagsEXT)
-> (Ptr IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> IO ())
-> Storable IndirectCommandsLayoutUsageFlagsEXT
forall b. Ptr b -> Int -> IO IndirectCommandsLayoutUsageFlagsEXT
forall b.
Ptr b -> Int -> IndirectCommandsLayoutUsageFlagsEXT -> 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
$csizeOf :: IndirectCommandsLayoutUsageFlagsEXT -> Int
sizeOf :: IndirectCommandsLayoutUsageFlagsEXT -> Int
$calignment :: IndirectCommandsLayoutUsageFlagsEXT -> Int
alignment :: IndirectCommandsLayoutUsageFlagsEXT -> Int
$cpeekElemOff :: Ptr IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IO IndirectCommandsLayoutUsageFlagsEXT
peekElemOff :: Ptr IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IO IndirectCommandsLayoutUsageFlagsEXT
$cpokeElemOff :: Ptr IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT -> IO ()
pokeElemOff :: Ptr IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO IndirectCommandsLayoutUsageFlagsEXT
peekByteOff :: forall b. Ptr b -> Int -> IO IndirectCommandsLayoutUsageFlagsEXT
$cpokeByteOff :: forall b.
Ptr b -> Int -> IndirectCommandsLayoutUsageFlagsEXT -> IO ()
pokeByteOff :: forall b.
Ptr b -> Int -> IndirectCommandsLayoutUsageFlagsEXT -> IO ()
$cpeek :: Ptr IndirectCommandsLayoutUsageFlagsEXT
-> IO IndirectCommandsLayoutUsageFlagsEXT
peek :: Ptr IndirectCommandsLayoutUsageFlagsEXT
-> IO IndirectCommandsLayoutUsageFlagsEXT
$cpoke :: Ptr IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> IO ()
poke :: Ptr IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT -> IO ()
Storable, IndirectCommandsLayoutUsageFlagsEXT
IndirectCommandsLayoutUsageFlagsEXT
-> Zero IndirectCommandsLayoutUsageFlagsEXT
forall a. a -> Zero a
$czero :: IndirectCommandsLayoutUsageFlagsEXT
zero :: IndirectCommandsLayoutUsageFlagsEXT
Zero, Eq IndirectCommandsLayoutUsageFlagsEXT
IndirectCommandsLayoutUsageFlagsEXT
Eq IndirectCommandsLayoutUsageFlagsEXT =>
(IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT)
-> IndirectCommandsLayoutUsageFlagsEXT
-> (Int -> IndirectCommandsLayoutUsageFlagsEXT)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> Int -> "isPreprocessed" ::: Bool)
-> (IndirectCommandsLayoutUsageFlagsEXT -> Maybe Int)
-> (IndirectCommandsLayoutUsageFlagsEXT -> Int)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> "isPreprocessed" ::: Bool)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT)
-> (IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT)
-> (IndirectCommandsLayoutUsageFlagsEXT -> Int)
-> Bits IndirectCommandsLayoutUsageFlagsEXT
Int -> IndirectCommandsLayoutUsageFlagsEXT
IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
IndirectCommandsLayoutUsageFlagsEXT -> Int
IndirectCommandsLayoutUsageFlagsEXT -> Maybe Int
IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
IndirectCommandsLayoutUsageFlagsEXT
-> Int -> "isPreprocessed" ::: Bool
IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
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 -> "isPreprocessed" ::: Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> "isPreprocessed" ::: Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
.&. :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
$c.|. :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
.|. :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
$cxor :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
xor :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
$ccomplement :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
complement :: IndirectCommandsLayoutUsageFlagsEXT
-> IndirectCommandsLayoutUsageFlagsEXT
$cshift :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
shift :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
$crotate :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
rotate :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
$czeroBits :: IndirectCommandsLayoutUsageFlagsEXT
zeroBits :: IndirectCommandsLayoutUsageFlagsEXT
$cbit :: Int -> IndirectCommandsLayoutUsageFlagsEXT
bit :: Int -> IndirectCommandsLayoutUsageFlagsEXT
$csetBit :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
setBit :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
$cclearBit :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
clearBit :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
$ccomplementBit :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
complementBit :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
$ctestBit :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> "isPreprocessed" ::: Bool
testBit :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> "isPreprocessed" ::: Bool
$cbitSizeMaybe :: IndirectCommandsLayoutUsageFlagsEXT -> Maybe Int
bitSizeMaybe :: IndirectCommandsLayoutUsageFlagsEXT -> Maybe Int
$cbitSize :: IndirectCommandsLayoutUsageFlagsEXT -> Int
bitSize :: IndirectCommandsLayoutUsageFlagsEXT -> Int
$cisSigned :: IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
isSigned :: IndirectCommandsLayoutUsageFlagsEXT -> "isPreprocessed" ::: Bool
$cshiftL :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
shiftL :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
$cunsafeShiftL :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
unsafeShiftL :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
$cshiftR :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
shiftR :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
$cunsafeShiftR :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
unsafeShiftR :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
$crotateL :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
rotateL :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
$crotateR :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
rotateR :: IndirectCommandsLayoutUsageFlagsEXT
-> Int -> IndirectCommandsLayoutUsageFlagsEXT
$cpopCount :: IndirectCommandsLayoutUsageFlagsEXT -> Int
popCount :: IndirectCommandsLayoutUsageFlagsEXT -> Int
Bits, Bits IndirectCommandsLayoutUsageFlagsEXT
Bits IndirectCommandsLayoutUsageFlagsEXT =>
(IndirectCommandsLayoutUsageFlagsEXT -> Int)
-> (IndirectCommandsLayoutUsageFlagsEXT -> Int)
-> (IndirectCommandsLayoutUsageFlagsEXT -> Int)
-> FiniteBits IndirectCommandsLayoutUsageFlagsEXT
IndirectCommandsLayoutUsageFlagsEXT -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: IndirectCommandsLayoutUsageFlagsEXT -> Int
finiteBitSize :: IndirectCommandsLayoutUsageFlagsEXT -> Int
$ccountLeadingZeros :: IndirectCommandsLayoutUsageFlagsEXT -> Int
countLeadingZeros :: IndirectCommandsLayoutUsageFlagsEXT -> Int
$ccountTrailingZeros :: IndirectCommandsLayoutUsageFlagsEXT -> Int
countTrailingZeros :: IndirectCommandsLayoutUsageFlagsEXT -> Int
FiniteBits)
pattern $mINDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT :: forall {r}.
IndirectCommandsLayoutUsageFlagsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT :: IndirectCommandsLayoutUsageFlagsEXT
INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = IndirectCommandsLayoutUsageFlagBitsEXT 0x00000001
pattern $mINDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT :: forall {r}.
IndirectCommandsLayoutUsageFlagsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT :: IndirectCommandsLayoutUsageFlagsEXT
INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = IndirectCommandsLayoutUsageFlagBitsEXT 0x00000002
conNameIndirectCommandsLayoutUsageFlagBitsEXT :: String
conNameIndirectCommandsLayoutUsageFlagBitsEXT :: String
conNameIndirectCommandsLayoutUsageFlagBitsEXT = String
"IndirectCommandsLayoutUsageFlagBitsEXT"
enumPrefixIndirectCommandsLayoutUsageFlagBitsEXT :: String
enumPrefixIndirectCommandsLayoutUsageFlagBitsEXT :: String
enumPrefixIndirectCommandsLayoutUsageFlagBitsEXT = String
"INDIRECT_COMMANDS_LAYOUT_USAGE_"
showTableIndirectCommandsLayoutUsageFlagBitsEXT :: [(IndirectCommandsLayoutUsageFlagBitsEXT, String)]
showTableIndirectCommandsLayoutUsageFlagBitsEXT :: [(IndirectCommandsLayoutUsageFlagsEXT, String)]
showTableIndirectCommandsLayoutUsageFlagBitsEXT =
[
( IndirectCommandsLayoutUsageFlagsEXT
INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT
, String
"EXPLICIT_PREPROCESS_BIT_EXT"
)
,
( IndirectCommandsLayoutUsageFlagsEXT
INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT
, String
"UNORDERED_SEQUENCES_BIT_EXT"
)
]
instance Show IndirectCommandsLayoutUsageFlagBitsEXT where
showsPrec :: Int -> IndirectCommandsLayoutUsageFlagsEXT -> ShowS
showsPrec =
String
-> [(IndirectCommandsLayoutUsageFlagsEXT, String)]
-> String
-> (IndirectCommandsLayoutUsageFlagsEXT -> Flags)
-> (Flags -> ShowS)
-> Int
-> IndirectCommandsLayoutUsageFlagsEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
String
enumPrefixIndirectCommandsLayoutUsageFlagBitsEXT
[(IndirectCommandsLayoutUsageFlagsEXT, String)]
showTableIndirectCommandsLayoutUsageFlagBitsEXT
String
conNameIndirectCommandsLayoutUsageFlagBitsEXT
(\(IndirectCommandsLayoutUsageFlagBitsEXT Flags
x) -> Flags
x)
(\Flags
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Flags -> ShowS
forall a. Integral a => a -> ShowS
showHex Flags
x)
instance Read IndirectCommandsLayoutUsageFlagBitsEXT where
readPrec :: ReadPrec IndirectCommandsLayoutUsageFlagsEXT
readPrec =
String
-> [(IndirectCommandsLayoutUsageFlagsEXT, String)]
-> String
-> (Flags -> IndirectCommandsLayoutUsageFlagsEXT)
-> ReadPrec IndirectCommandsLayoutUsageFlagsEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
String
enumPrefixIndirectCommandsLayoutUsageFlagBitsEXT
[(IndirectCommandsLayoutUsageFlagsEXT, String)]
showTableIndirectCommandsLayoutUsageFlagBitsEXT
String
conNameIndirectCommandsLayoutUsageFlagBitsEXT
Flags -> IndirectCommandsLayoutUsageFlagsEXT
IndirectCommandsLayoutUsageFlagBitsEXT
newtype IndirectExecutionSetInfoTypeEXT = IndirectExecutionSetInfoTypeEXT Int32
deriving newtype (IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool
(IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool)
-> (IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool)
-> Eq IndirectExecutionSetInfoTypeEXT
forall a.
(a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool) -> Eq a
$c== :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool
== :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool
$c/= :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool
/= :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool
Eq, Eq IndirectExecutionSetInfoTypeEXT
Eq IndirectExecutionSetInfoTypeEXT =>
(IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> Ordering)
-> (IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool)
-> (IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool)
-> (IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool)
-> (IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool)
-> (IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT)
-> (IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT)
-> Ord IndirectExecutionSetInfoTypeEXT
IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool
IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> Ordering
IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> Ordering
compare :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> Ordering
$c< :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool
< :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool
$c<= :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool
<= :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool
$c> :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool
> :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool
$c>= :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool
>= :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> "isPreprocessed" ::: Bool
$cmax :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT
max :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT
$cmin :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT
min :: IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT
Ord, Ptr IndirectExecutionSetInfoTypeEXT
-> IO IndirectExecutionSetInfoTypeEXT
Ptr IndirectExecutionSetInfoTypeEXT
-> Int -> IO IndirectExecutionSetInfoTypeEXT
Ptr IndirectExecutionSetInfoTypeEXT
-> Int -> IndirectExecutionSetInfoTypeEXT -> IO ()
Ptr IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> IO ()
IndirectExecutionSetInfoTypeEXT -> Int
(IndirectExecutionSetInfoTypeEXT -> Int)
-> (IndirectExecutionSetInfoTypeEXT -> Int)
-> (Ptr IndirectExecutionSetInfoTypeEXT
-> Int -> IO IndirectExecutionSetInfoTypeEXT)
-> (Ptr IndirectExecutionSetInfoTypeEXT
-> Int -> IndirectExecutionSetInfoTypeEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO IndirectExecutionSetInfoTypeEXT)
-> (forall b.
Ptr b -> Int -> IndirectExecutionSetInfoTypeEXT -> IO ())
-> (Ptr IndirectExecutionSetInfoTypeEXT
-> IO IndirectExecutionSetInfoTypeEXT)
-> (Ptr IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> IO ())
-> Storable IndirectExecutionSetInfoTypeEXT
forall b. Ptr b -> Int -> IO IndirectExecutionSetInfoTypeEXT
forall b. Ptr b -> Int -> IndirectExecutionSetInfoTypeEXT -> 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
$csizeOf :: IndirectExecutionSetInfoTypeEXT -> Int
sizeOf :: IndirectExecutionSetInfoTypeEXT -> Int
$calignment :: IndirectExecutionSetInfoTypeEXT -> Int
alignment :: IndirectExecutionSetInfoTypeEXT -> Int
$cpeekElemOff :: Ptr IndirectExecutionSetInfoTypeEXT
-> Int -> IO IndirectExecutionSetInfoTypeEXT
peekElemOff :: Ptr IndirectExecutionSetInfoTypeEXT
-> Int -> IO IndirectExecutionSetInfoTypeEXT
$cpokeElemOff :: Ptr IndirectExecutionSetInfoTypeEXT
-> Int -> IndirectExecutionSetInfoTypeEXT -> IO ()
pokeElemOff :: Ptr IndirectExecutionSetInfoTypeEXT
-> Int -> IndirectExecutionSetInfoTypeEXT -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO IndirectExecutionSetInfoTypeEXT
peekByteOff :: forall b. Ptr b -> Int -> IO IndirectExecutionSetInfoTypeEXT
$cpokeByteOff :: forall b. Ptr b -> Int -> IndirectExecutionSetInfoTypeEXT -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> IndirectExecutionSetInfoTypeEXT -> IO ()
$cpeek :: Ptr IndirectExecutionSetInfoTypeEXT
-> IO IndirectExecutionSetInfoTypeEXT
peek :: Ptr IndirectExecutionSetInfoTypeEXT
-> IO IndirectExecutionSetInfoTypeEXT
$cpoke :: Ptr IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> IO ()
poke :: Ptr IndirectExecutionSetInfoTypeEXT
-> IndirectExecutionSetInfoTypeEXT -> IO ()
Storable, IndirectExecutionSetInfoTypeEXT
IndirectExecutionSetInfoTypeEXT
-> Zero IndirectExecutionSetInfoTypeEXT
forall a. a -> Zero a
$czero :: IndirectExecutionSetInfoTypeEXT
zero :: IndirectExecutionSetInfoTypeEXT
Zero)
pattern $mINDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT :: forall {r}.
IndirectExecutionSetInfoTypeEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT :: IndirectExecutionSetInfoTypeEXT
INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = IndirectExecutionSetInfoTypeEXT 0
pattern $mINDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT :: forall {r}.
IndirectExecutionSetInfoTypeEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT :: IndirectExecutionSetInfoTypeEXT
INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = IndirectExecutionSetInfoTypeEXT 1
{-# COMPLETE
INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT
, INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT ::
IndirectExecutionSetInfoTypeEXT
#-}
conNameIndirectExecutionSetInfoTypeEXT :: String
conNameIndirectExecutionSetInfoTypeEXT :: String
conNameIndirectExecutionSetInfoTypeEXT = String
"IndirectExecutionSetInfoTypeEXT"
enumPrefixIndirectExecutionSetInfoTypeEXT :: String
enumPrefixIndirectExecutionSetInfoTypeEXT :: String
enumPrefixIndirectExecutionSetInfoTypeEXT = String
"INDIRECT_EXECUTION_SET_INFO_TYPE_"
showTableIndirectExecutionSetInfoTypeEXT :: [(IndirectExecutionSetInfoTypeEXT, String)]
showTableIndirectExecutionSetInfoTypeEXT :: [(IndirectExecutionSetInfoTypeEXT, String)]
showTableIndirectExecutionSetInfoTypeEXT =
[
( IndirectExecutionSetInfoTypeEXT
INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT
, String
"PIPELINES_EXT"
)
,
( IndirectExecutionSetInfoTypeEXT
INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT
, String
"SHADER_OBJECTS_EXT"
)
]
instance Show IndirectExecutionSetInfoTypeEXT where
showsPrec :: Int -> IndirectExecutionSetInfoTypeEXT -> ShowS
showsPrec =
String
-> [(IndirectExecutionSetInfoTypeEXT, String)]
-> String
-> (IndirectExecutionSetInfoTypeEXT -> Int32)
-> (Int32 -> ShowS)
-> Int
-> IndirectExecutionSetInfoTypeEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
String
enumPrefixIndirectExecutionSetInfoTypeEXT
[(IndirectExecutionSetInfoTypeEXT, String)]
showTableIndirectExecutionSetInfoTypeEXT
String
conNameIndirectExecutionSetInfoTypeEXT
(\(IndirectExecutionSetInfoTypeEXT Int32
x) -> Int32
x)
(Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
11)
instance Read IndirectExecutionSetInfoTypeEXT where
readPrec :: ReadPrec IndirectExecutionSetInfoTypeEXT
readPrec =
String
-> [(IndirectExecutionSetInfoTypeEXT, String)]
-> String
-> (Int32 -> IndirectExecutionSetInfoTypeEXT)
-> ReadPrec IndirectExecutionSetInfoTypeEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
String
enumPrefixIndirectExecutionSetInfoTypeEXT
[(IndirectExecutionSetInfoTypeEXT, String)]
showTableIndirectExecutionSetInfoTypeEXT
String
conNameIndirectExecutionSetInfoTypeEXT
Int32 -> IndirectExecutionSetInfoTypeEXT
IndirectExecutionSetInfoTypeEXT
type IndirectCommandsInputModeFlagsEXT = IndirectCommandsInputModeFlagBitsEXT
newtype IndirectCommandsInputModeFlagBitsEXT = IndirectCommandsInputModeFlagBitsEXT Flags
deriving newtype (IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
(IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool)
-> (IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool)
-> Eq IndirectCommandsInputModeFlagsEXT
forall a.
(a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool) -> Eq a
$c== :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
== :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
$c/= :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
/= :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
Eq, Eq IndirectCommandsInputModeFlagsEXT
Eq IndirectCommandsInputModeFlagsEXT =>
(IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> Ordering)
-> (IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool)
-> (IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool)
-> (IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool)
-> (IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool)
-> (IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT)
-> (IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT)
-> Ord IndirectCommandsInputModeFlagsEXT
IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> Ordering
IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> Ordering
compare :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> Ordering
$c< :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
< :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
$c<= :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
<= :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
$c> :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
> :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
$c>= :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
>= :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
$cmax :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
max :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
$cmin :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
min :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
Ord, Ptr IndirectCommandsInputModeFlagsEXT
-> IO IndirectCommandsInputModeFlagsEXT
Ptr IndirectCommandsInputModeFlagsEXT
-> Int -> IO IndirectCommandsInputModeFlagsEXT
Ptr IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT -> IO ()
Ptr IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> IO ()
IndirectCommandsInputModeFlagsEXT -> Int
(IndirectCommandsInputModeFlagsEXT -> Int)
-> (IndirectCommandsInputModeFlagsEXT -> Int)
-> (Ptr IndirectCommandsInputModeFlagsEXT
-> Int -> IO IndirectCommandsInputModeFlagsEXT)
-> (Ptr IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO IndirectCommandsInputModeFlagsEXT)
-> (forall b.
Ptr b -> Int -> IndirectCommandsInputModeFlagsEXT -> IO ())
-> (Ptr IndirectCommandsInputModeFlagsEXT
-> IO IndirectCommandsInputModeFlagsEXT)
-> (Ptr IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> IO ())
-> Storable IndirectCommandsInputModeFlagsEXT
forall b. Ptr b -> Int -> IO IndirectCommandsInputModeFlagsEXT
forall b.
Ptr b -> Int -> IndirectCommandsInputModeFlagsEXT -> 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
$csizeOf :: IndirectCommandsInputModeFlagsEXT -> Int
sizeOf :: IndirectCommandsInputModeFlagsEXT -> Int
$calignment :: IndirectCommandsInputModeFlagsEXT -> Int
alignment :: IndirectCommandsInputModeFlagsEXT -> Int
$cpeekElemOff :: Ptr IndirectCommandsInputModeFlagsEXT
-> Int -> IO IndirectCommandsInputModeFlagsEXT
peekElemOff :: Ptr IndirectCommandsInputModeFlagsEXT
-> Int -> IO IndirectCommandsInputModeFlagsEXT
$cpokeElemOff :: Ptr IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT -> IO ()
pokeElemOff :: Ptr IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO IndirectCommandsInputModeFlagsEXT
peekByteOff :: forall b. Ptr b -> Int -> IO IndirectCommandsInputModeFlagsEXT
$cpokeByteOff :: forall b.
Ptr b -> Int -> IndirectCommandsInputModeFlagsEXT -> IO ()
pokeByteOff :: forall b.
Ptr b -> Int -> IndirectCommandsInputModeFlagsEXT -> IO ()
$cpeek :: Ptr IndirectCommandsInputModeFlagsEXT
-> IO IndirectCommandsInputModeFlagsEXT
peek :: Ptr IndirectCommandsInputModeFlagsEXT
-> IO IndirectCommandsInputModeFlagsEXT
$cpoke :: Ptr IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> IO ()
poke :: Ptr IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT -> IO ()
Storable, IndirectCommandsInputModeFlagsEXT
IndirectCommandsInputModeFlagsEXT
-> Zero IndirectCommandsInputModeFlagsEXT
forall a. a -> Zero a
$czero :: IndirectCommandsInputModeFlagsEXT
zero :: IndirectCommandsInputModeFlagsEXT
Zero, Eq IndirectCommandsInputModeFlagsEXT
IndirectCommandsInputModeFlagsEXT
Eq IndirectCommandsInputModeFlagsEXT =>
(IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT)
-> (IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT)
-> (IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT)
-> (IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT)
-> (IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT)
-> (IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT)
-> IndirectCommandsInputModeFlagsEXT
-> (Int -> IndirectCommandsInputModeFlagsEXT)
-> (IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT)
-> (IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT)
-> (IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT)
-> (IndirectCommandsInputModeFlagsEXT
-> Int -> "isPreprocessed" ::: Bool)
-> (IndirectCommandsInputModeFlagsEXT -> Maybe Int)
-> (IndirectCommandsInputModeFlagsEXT -> Int)
-> (IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool)
-> (IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT)
-> (IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT)
-> (IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT)
-> (IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT)
-> (IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT)
-> (IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT)
-> (IndirectCommandsInputModeFlagsEXT -> Int)
-> Bits IndirectCommandsInputModeFlagsEXT
Int -> IndirectCommandsInputModeFlagsEXT
IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
IndirectCommandsInputModeFlagsEXT -> Int
IndirectCommandsInputModeFlagsEXT -> Maybe Int
IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
IndirectCommandsInputModeFlagsEXT
-> Int -> "isPreprocessed" ::: Bool
IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
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 -> "isPreprocessed" ::: Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> "isPreprocessed" ::: Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
.&. :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
$c.|. :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
.|. :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
$cxor :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
xor :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
$ccomplement :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
complement :: IndirectCommandsInputModeFlagsEXT
-> IndirectCommandsInputModeFlagsEXT
$cshift :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
shift :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
$crotate :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
rotate :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
$czeroBits :: IndirectCommandsInputModeFlagsEXT
zeroBits :: IndirectCommandsInputModeFlagsEXT
$cbit :: Int -> IndirectCommandsInputModeFlagsEXT
bit :: Int -> IndirectCommandsInputModeFlagsEXT
$csetBit :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
setBit :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
$cclearBit :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
clearBit :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
$ccomplementBit :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
complementBit :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
$ctestBit :: IndirectCommandsInputModeFlagsEXT
-> Int -> "isPreprocessed" ::: Bool
testBit :: IndirectCommandsInputModeFlagsEXT
-> Int -> "isPreprocessed" ::: Bool
$cbitSizeMaybe :: IndirectCommandsInputModeFlagsEXT -> Maybe Int
bitSizeMaybe :: IndirectCommandsInputModeFlagsEXT -> Maybe Int
$cbitSize :: IndirectCommandsInputModeFlagsEXT -> Int
bitSize :: IndirectCommandsInputModeFlagsEXT -> Int
$cisSigned :: IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
isSigned :: IndirectCommandsInputModeFlagsEXT -> "isPreprocessed" ::: Bool
$cshiftL :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
shiftL :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
$cunsafeShiftL :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
unsafeShiftL :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
$cshiftR :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
shiftR :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
$cunsafeShiftR :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
unsafeShiftR :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
$crotateL :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
rotateL :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
$crotateR :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
rotateR :: IndirectCommandsInputModeFlagsEXT
-> Int -> IndirectCommandsInputModeFlagsEXT
$cpopCount :: IndirectCommandsInputModeFlagsEXT -> Int
popCount :: IndirectCommandsInputModeFlagsEXT -> Int
Bits, Bits IndirectCommandsInputModeFlagsEXT
Bits IndirectCommandsInputModeFlagsEXT =>
(IndirectCommandsInputModeFlagsEXT -> Int)
-> (IndirectCommandsInputModeFlagsEXT -> Int)
-> (IndirectCommandsInputModeFlagsEXT -> Int)
-> FiniteBits IndirectCommandsInputModeFlagsEXT
IndirectCommandsInputModeFlagsEXT -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: IndirectCommandsInputModeFlagsEXT -> Int
finiteBitSize :: IndirectCommandsInputModeFlagsEXT -> Int
$ccountLeadingZeros :: IndirectCommandsInputModeFlagsEXT -> Int
countLeadingZeros :: IndirectCommandsInputModeFlagsEXT -> Int
$ccountTrailingZeros :: IndirectCommandsInputModeFlagsEXT -> Int
countTrailingZeros :: IndirectCommandsInputModeFlagsEXT -> Int
FiniteBits)
pattern $mINDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT :: forall {r}.
IndirectCommandsInputModeFlagsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT :: IndirectCommandsInputModeFlagsEXT
INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = IndirectCommandsInputModeFlagBitsEXT 0x00000001
pattern $mINDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT :: forall {r}.
IndirectCommandsInputModeFlagsEXT
-> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT :: IndirectCommandsInputModeFlagsEXT
INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = IndirectCommandsInputModeFlagBitsEXT 0x00000002
conNameIndirectCommandsInputModeFlagBitsEXT :: String
conNameIndirectCommandsInputModeFlagBitsEXT :: String
conNameIndirectCommandsInputModeFlagBitsEXT = String
"IndirectCommandsInputModeFlagBitsEXT"
enumPrefixIndirectCommandsInputModeFlagBitsEXT :: String
enumPrefixIndirectCommandsInputModeFlagBitsEXT :: String
enumPrefixIndirectCommandsInputModeFlagBitsEXT = String
"INDIRECT_COMMANDS_INPUT_MODE_"
showTableIndirectCommandsInputModeFlagBitsEXT :: [(IndirectCommandsInputModeFlagBitsEXT, String)]
showTableIndirectCommandsInputModeFlagBitsEXT :: [(IndirectCommandsInputModeFlagsEXT, String)]
showTableIndirectCommandsInputModeFlagBitsEXT =
[
( IndirectCommandsInputModeFlagsEXT
INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT
, String
"VULKAN_INDEX_BUFFER_EXT"
)
,
( IndirectCommandsInputModeFlagsEXT
INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT
, String
"DXGI_INDEX_BUFFER_EXT"
)
]
instance Show IndirectCommandsInputModeFlagBitsEXT where
showsPrec :: Int -> IndirectCommandsInputModeFlagsEXT -> ShowS
showsPrec =
String
-> [(IndirectCommandsInputModeFlagsEXT, String)]
-> String
-> (IndirectCommandsInputModeFlagsEXT -> Flags)
-> (Flags -> ShowS)
-> Int
-> IndirectCommandsInputModeFlagsEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
String
enumPrefixIndirectCommandsInputModeFlagBitsEXT
[(IndirectCommandsInputModeFlagsEXT, String)]
showTableIndirectCommandsInputModeFlagBitsEXT
String
conNameIndirectCommandsInputModeFlagBitsEXT
(\(IndirectCommandsInputModeFlagBitsEXT Flags
x) -> Flags
x)
(\Flags
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Flags -> ShowS
forall a. Integral a => a -> ShowS
showHex Flags
x)
instance Read IndirectCommandsInputModeFlagBitsEXT where
readPrec :: ReadPrec IndirectCommandsInputModeFlagsEXT
readPrec =
String
-> [(IndirectCommandsInputModeFlagsEXT, String)]
-> String
-> (Flags -> IndirectCommandsInputModeFlagsEXT)
-> ReadPrec IndirectCommandsInputModeFlagsEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
String
enumPrefixIndirectCommandsInputModeFlagBitsEXT
[(IndirectCommandsInputModeFlagsEXT, String)]
showTableIndirectCommandsInputModeFlagBitsEXT
String
conNameIndirectCommandsInputModeFlagBitsEXT
Flags -> IndirectCommandsInputModeFlagsEXT
IndirectCommandsInputModeFlagBitsEXT
newtype IndirectCommandsTokenTypeEXT = IndirectCommandsTokenTypeEXT Int32
deriving newtype (IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool
(IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool)
-> (IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool)
-> Eq IndirectCommandsTokenTypeEXT
forall a.
(a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool) -> Eq a
$c== :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool
== :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool
$c/= :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool
/= :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool
Eq, Eq IndirectCommandsTokenTypeEXT
Eq IndirectCommandsTokenTypeEXT =>
(IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> Ordering)
-> (IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool)
-> (IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool)
-> (IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool)
-> (IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool)
-> (IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> IndirectCommandsTokenTypeEXT)
-> (IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> IndirectCommandsTokenTypeEXT)
-> Ord IndirectCommandsTokenTypeEXT
IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool
IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> Ordering
IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> IndirectCommandsTokenTypeEXT
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> "isPreprocessed" ::: Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> Ordering
compare :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> Ordering
$c< :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool
< :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool
$c<= :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool
<= :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool
$c> :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool
> :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool
$c>= :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool
>= :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> "isPreprocessed" ::: Bool
$cmax :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> IndirectCommandsTokenTypeEXT
max :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> IndirectCommandsTokenTypeEXT
$cmin :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> IndirectCommandsTokenTypeEXT
min :: IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> IndirectCommandsTokenTypeEXT
Ord, Ptr IndirectCommandsTokenTypeEXT -> IO IndirectCommandsTokenTypeEXT
Ptr IndirectCommandsTokenTypeEXT
-> Int -> IO IndirectCommandsTokenTypeEXT
Ptr IndirectCommandsTokenTypeEXT
-> Int -> IndirectCommandsTokenTypeEXT -> IO ()
Ptr IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> IO ()
IndirectCommandsTokenTypeEXT -> Int
(IndirectCommandsTokenTypeEXT -> Int)
-> (IndirectCommandsTokenTypeEXT -> Int)
-> (Ptr IndirectCommandsTokenTypeEXT
-> Int -> IO IndirectCommandsTokenTypeEXT)
-> (Ptr IndirectCommandsTokenTypeEXT
-> Int -> IndirectCommandsTokenTypeEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO IndirectCommandsTokenTypeEXT)
-> (forall b.
Ptr b -> Int -> IndirectCommandsTokenTypeEXT -> IO ())
-> (Ptr IndirectCommandsTokenTypeEXT
-> IO IndirectCommandsTokenTypeEXT)
-> (Ptr IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> IO ())
-> Storable IndirectCommandsTokenTypeEXT
forall b. Ptr b -> Int -> IO IndirectCommandsTokenTypeEXT
forall b. Ptr b -> Int -> IndirectCommandsTokenTypeEXT -> 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
$csizeOf :: IndirectCommandsTokenTypeEXT -> Int
sizeOf :: IndirectCommandsTokenTypeEXT -> Int
$calignment :: IndirectCommandsTokenTypeEXT -> Int
alignment :: IndirectCommandsTokenTypeEXT -> Int
$cpeekElemOff :: Ptr IndirectCommandsTokenTypeEXT
-> Int -> IO IndirectCommandsTokenTypeEXT
peekElemOff :: Ptr IndirectCommandsTokenTypeEXT
-> Int -> IO IndirectCommandsTokenTypeEXT
$cpokeElemOff :: Ptr IndirectCommandsTokenTypeEXT
-> Int -> IndirectCommandsTokenTypeEXT -> IO ()
pokeElemOff :: Ptr IndirectCommandsTokenTypeEXT
-> Int -> IndirectCommandsTokenTypeEXT -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO IndirectCommandsTokenTypeEXT
peekByteOff :: forall b. Ptr b -> Int -> IO IndirectCommandsTokenTypeEXT
$cpokeByteOff :: forall b. Ptr b -> Int -> IndirectCommandsTokenTypeEXT -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> IndirectCommandsTokenTypeEXT -> IO ()
$cpeek :: Ptr IndirectCommandsTokenTypeEXT -> IO IndirectCommandsTokenTypeEXT
peek :: Ptr IndirectCommandsTokenTypeEXT -> IO IndirectCommandsTokenTypeEXT
$cpoke :: Ptr IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> IO ()
poke :: Ptr IndirectCommandsTokenTypeEXT
-> IndirectCommandsTokenTypeEXT -> IO ()
Storable, IndirectCommandsTokenTypeEXT
IndirectCommandsTokenTypeEXT -> Zero IndirectCommandsTokenTypeEXT
forall a. a -> Zero a
$czero :: IndirectCommandsTokenTypeEXT
zero :: IndirectCommandsTokenTypeEXT
Zero)
pattern $mINDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT :: forall {r}.
IndirectCommandsTokenTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT :: IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = IndirectCommandsTokenTypeEXT 0
pattern $mINDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT :: forall {r}.
IndirectCommandsTokenTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT :: IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = IndirectCommandsTokenTypeEXT 1
pattern $mINDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT :: forall {r}.
IndirectCommandsTokenTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT :: IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = IndirectCommandsTokenTypeEXT 2
pattern $mINDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT :: forall {r}.
IndirectCommandsTokenTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT :: IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = IndirectCommandsTokenTypeEXT 3
pattern $mINDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT :: forall {r}.
IndirectCommandsTokenTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT :: IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = IndirectCommandsTokenTypeEXT 4
pattern $mINDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT :: forall {r}.
IndirectCommandsTokenTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT :: IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = IndirectCommandsTokenTypeEXT 5
pattern $mINDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT :: forall {r}.
IndirectCommandsTokenTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT :: IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = IndirectCommandsTokenTypeEXT 6
pattern $mINDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT :: forall {r}.
IndirectCommandsTokenTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT :: IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = IndirectCommandsTokenTypeEXT 7
pattern $mINDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT :: forall {r}.
IndirectCommandsTokenTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT :: IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = IndirectCommandsTokenTypeEXT 8
pattern $mINDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT :: forall {r}.
IndirectCommandsTokenTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT :: IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = IndirectCommandsTokenTypeEXT 9
pattern $mINDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT :: forall {r}.
IndirectCommandsTokenTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT :: IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = IndirectCommandsTokenTypeEXT 1000386004
pattern $mINDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT :: forall {r}.
IndirectCommandsTokenTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT :: IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = IndirectCommandsTokenTypeEXT 1000328001
pattern $mINDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT :: forall {r}.
IndirectCommandsTokenTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT :: IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = IndirectCommandsTokenTypeEXT 1000328000
pattern $mINDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT :: forall {r}.
IndirectCommandsTokenTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT :: IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = IndirectCommandsTokenTypeEXT 1000202003
pattern $mINDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT :: forall {r}.
IndirectCommandsTokenTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bINDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT :: IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = IndirectCommandsTokenTypeEXT 1000202002
{-# COMPLETE
INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT
, INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT ::
IndirectCommandsTokenTypeEXT
#-}
conNameIndirectCommandsTokenTypeEXT :: String
conNameIndirectCommandsTokenTypeEXT :: String
conNameIndirectCommandsTokenTypeEXT = String
"IndirectCommandsTokenTypeEXT"
enumPrefixIndirectCommandsTokenTypeEXT :: String
enumPrefixIndirectCommandsTokenTypeEXT :: String
enumPrefixIndirectCommandsTokenTypeEXT = String
"INDIRECT_COMMANDS_TOKEN_TYPE_"
showTableIndirectCommandsTokenTypeEXT :: [(IndirectCommandsTokenTypeEXT, String)]
showTableIndirectCommandsTokenTypeEXT :: [(IndirectCommandsTokenTypeEXT, String)]
showTableIndirectCommandsTokenTypeEXT =
[
( IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT
, String
"EXECUTION_SET_EXT"
)
,
( IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT
, String
"PUSH_CONSTANT_EXT"
)
,
( IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT
, String
"SEQUENCE_INDEX_EXT"
)
,
( IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT
, String
"INDEX_BUFFER_EXT"
)
,
( IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT
, String
"VERTEX_BUFFER_EXT"
)
,
( IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT
, String
"DRAW_INDEXED_EXT"
)
,
( IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT
, String
"DRAW_EXT"
)
,
( IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT
, String
"DRAW_INDEXED_COUNT_EXT"
)
,
( IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT
, String
"DRAW_COUNT_EXT"
)
,
( IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT
, String
"DISPATCH_EXT"
)
,
( IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT
, String
"TRACE_RAYS2_EXT"
)
,
( IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT
, String
"DRAW_MESH_TASKS_COUNT_EXT"
)
,
( IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT
, String
"DRAW_MESH_TASKS_EXT"
)
,
( IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT
, String
"DRAW_MESH_TASKS_COUNT_NV_EXT"
)
,
( IndirectCommandsTokenTypeEXT
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT
, String
"DRAW_MESH_TASKS_NV_EXT"
)
]
instance Show IndirectCommandsTokenTypeEXT where
showsPrec :: Int -> IndirectCommandsTokenTypeEXT -> ShowS
showsPrec =
String
-> [(IndirectCommandsTokenTypeEXT, String)]
-> String
-> (IndirectCommandsTokenTypeEXT -> Int32)
-> (Int32 -> ShowS)
-> Int
-> IndirectCommandsTokenTypeEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
String
enumPrefixIndirectCommandsTokenTypeEXT
[(IndirectCommandsTokenTypeEXT, String)]
showTableIndirectCommandsTokenTypeEXT
String
conNameIndirectCommandsTokenTypeEXT
(\(IndirectCommandsTokenTypeEXT Int32
x) -> Int32
x)
(Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
11)
instance Read IndirectCommandsTokenTypeEXT where
readPrec :: ReadPrec IndirectCommandsTokenTypeEXT
readPrec =
String
-> [(IndirectCommandsTokenTypeEXT, String)]
-> String
-> (Int32 -> IndirectCommandsTokenTypeEXT)
-> ReadPrec IndirectCommandsTokenTypeEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
String
enumPrefixIndirectCommandsTokenTypeEXT
[(IndirectCommandsTokenTypeEXT, String)]
showTableIndirectCommandsTokenTypeEXT
String
conNameIndirectCommandsTokenTypeEXT
Int32 -> IndirectCommandsTokenTypeEXT
IndirectCommandsTokenTypeEXT
type EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1
pattern EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION :: forall a . Integral a => a
pattern $mEXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION :: forall a. Integral a => a
EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 1
type EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands"
pattern EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mEXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_EXT_device_generated_commands"