{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_shader_object ( createShadersEXT
, withShadersEXT
, destroyShaderEXT
, getShaderBinaryDataEXT
, cmdBindShadersEXT
, pattern STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT
, PhysicalDeviceShaderObjectFeaturesEXT(..)
, PhysicalDeviceShaderObjectPropertiesEXT(..)
, ShaderCreateInfoEXT(..)
, ShaderCreateFlagsEXT
, ShaderCreateFlagBitsEXT( SHADER_CREATE_LINK_STAGE_BIT_EXT
, SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
, SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT
, SHADER_CREATE_DISPATCH_BASE_BIT_EXT
, SHADER_CREATE_NO_TASK_SHADER_BIT_EXT
, SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
, SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
, ..
)
, ShaderCodeTypeEXT( SHADER_CODE_TYPE_BINARY_EXT
, SHADER_CODE_TYPE_SPIRV_EXT
, ..
)
, ShaderRequiredSubgroupSizeCreateInfoEXT
, EXT_SHADER_OBJECT_SPEC_VERSION
, pattern EXT_SHADER_OBJECT_SPEC_VERSION
, EXT_SHADER_OBJECT_EXTENSION_NAME
, pattern EXT_SHADER_OBJECT_EXTENSION_NAME
, ShaderEXT(..)
, ViewportSwizzleNV(..)
, ColorBlendEquationEXT(..)
, ColorBlendAdvancedEXT(..)
, VertexInputBindingDescription2EXT(..)
, VertexInputAttributeDescription2EXT(..)
, cmdSetPatchControlPointsEXT
, cmdSetLogicOpEXT
, cmdSetTessellationDomainOriginEXT
, cmdSetDepthClampEnableEXT
, cmdSetPolygonModeEXT
, cmdSetRasterizationSamplesEXT
, cmdSetSampleMaskEXT
, cmdSetAlphaToCoverageEnableEXT
, cmdSetAlphaToOneEnableEXT
, cmdSetLogicOpEnableEXT
, cmdSetColorBlendEnableEXT
, cmdSetColorBlendEquationEXT
, cmdSetColorWriteMaskEXT
, cmdSetRasterizationStreamEXT
, cmdSetConservativeRasterizationModeEXT
, cmdSetExtraPrimitiveOverestimationSizeEXT
, cmdSetDepthClipEnableEXT
, cmdSetSampleLocationsEnableEXT
, cmdSetColorBlendAdvancedEXT
, cmdSetProvokingVertexModeEXT
, cmdSetLineRasterizationModeEXT
, cmdSetLineStippleEnableEXT
, cmdSetDepthClipNegativeOneToOneEXT
, cmdSetViewportWScalingEnableNV
, cmdSetViewportSwizzleNV
, cmdSetCoverageToColorEnableNV
, cmdSetCoverageToColorLocationNV
, cmdSetCoverageModulationModeNV
, cmdSetCoverageModulationTableEnableNV
, cmdSetCoverageModulationTableNV
, cmdSetShadingRateImageEnableNV
, cmdSetCoverageReductionModeNV
, cmdSetRepresentativeFragmentTestEnableNV
, cmdSetVertexInputEXT
, ViewportCoordinateSwizzleNV(..)
, BlendOverlapEXT(..)
, CoverageModulationModeNV(..)
, CoverageReductionModeNV(..)
, ConservativeRasterizationModeEXT(..)
, LineRasterizationModeEXT(..)
, ProvokingVertexModeEXT(..)
, cmdSetCullModeEXT
, cmdSetFrontFaceEXT
, cmdSetPrimitiveTopologyEXT
, cmdSetViewportWithCountEXT
, cmdSetScissorWithCountEXT
, cmdBindVertexBuffers2EXT
, cmdSetDepthTestEnableEXT
, cmdSetDepthWriteEnableEXT
, cmdSetDepthCompareOpEXT
, cmdSetDepthBoundsTestEnableEXT
, cmdSetStencilTestEnableEXT
, cmdSetStencilOpEXT
, cmdSetRasterizerDiscardEnableEXT
, cmdSetDepthBiasEnableEXT
, cmdSetPrimitiveRestartEnableEXT
) where
import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.CStruct.Utils (FixedArray)
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.Foldable (traverse_)
import Data.Typeable (eqT)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Marshal.Alloc (callocBytes)
import Foreign.Marshal.Alloc (free)
import Foreign.Marshal.Utils (maybePeek)
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 Data.ByteString (packCString)
import Data.ByteString (packCStringLen)
import Data.ByteString (useAsCString)
import Data.Coerce (coerce)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Data.Vector (generateM)
import qualified Data.Vector (imapM_)
import qualified Data.Vector (length)
import qualified Data.Vector (null)
import Foreign.C.Types (CSize(..))
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.C.Types (CChar)
import Foreign.C.Types (CSize)
import Foreign.C.Types (CSize(..))
import Foreign.C.Types (CSize(CSize))
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.Word (Word64)
import Data.Word (Word8)
import Data.ByteString (ByteString)
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.CStruct.Utils (peekByteStringFromSizedVectorPtr)
import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
import Vulkan.CStruct.Extends (pokeSomeCStruct)
import Vulkan.NamedType ((:::))
import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
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.Dynamic (DeviceCmds(pVkCmdBindShadersEXT))
import Vulkan.Dynamic (DeviceCmds(pVkCreateShadersEXT))
import Vulkan.Dynamic (DeviceCmds(pVkDestroyShaderEXT))
import Vulkan.Dynamic (DeviceCmds(pVkGetShaderBinaryDataEXT))
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.CStruct.Extends (PeekChain)
import Vulkan.CStruct.Extends (PeekChain(..))
import Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control (PipelineShaderStageRequiredSubgroupSizeCreateInfo)
import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control (PipelineShaderStageRequiredSubgroupSizeCreateInfo)
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.Extensions.Handles (ShaderEXT(..))
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits)
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(..))
import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
import Vulkan.CStruct.Extends (SomeStruct)
import Vulkan.Core10.Pipeline (SpecializationInfo)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.APIConstants (UUID_SIZE)
import Vulkan.Exception (VulkanException(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
import Vulkan.Extensions.VK_EXT_extended_dynamic_state (cmdBindVertexBuffers2EXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetAlphaToCoverageEnableEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetAlphaToOneEnableEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetColorBlendAdvancedEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetColorBlendEnableEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetColorBlendEquationEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetColorWriteMaskEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetConservativeRasterizationModeEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetCoverageModulationModeNV)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetCoverageModulationTableEnableNV)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetCoverageModulationTableNV)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetCoverageReductionModeNV)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetCoverageToColorEnableNV)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetCoverageToColorLocationNV)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state (cmdSetCullModeEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (cmdSetDepthBiasEnableEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state (cmdSetDepthBoundsTestEnableEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetDepthClampEnableEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetDepthClipEnableEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetDepthClipNegativeOneToOneEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state (cmdSetDepthCompareOpEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state (cmdSetDepthTestEnableEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state (cmdSetDepthWriteEnableEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetExtraPrimitiveOverestimationSizeEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state (cmdSetFrontFaceEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetLineRasterizationModeEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetLineStippleEnableEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (cmdSetLogicOpEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetLogicOpEnableEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (cmdSetPatchControlPointsEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetPolygonModeEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (cmdSetPrimitiveRestartEnableEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state (cmdSetPrimitiveTopologyEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetProvokingVertexModeEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetRasterizationSamplesEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetRasterizationStreamEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (cmdSetRasterizerDiscardEnableEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetRepresentativeFragmentTestEnableNV)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetSampleLocationsEnableEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetSampleMaskEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state (cmdSetScissorWithCountEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetShadingRateImageEnableNV)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state (cmdSetStencilOpEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state (cmdSetStencilTestEnableEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetTessellationDomainOriginEXT)
import Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (cmdSetVertexInputEXT)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetViewportSwizzleNV)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (cmdSetViewportWScalingEnableNV)
import Vulkan.Extensions.VK_EXT_extended_dynamic_state (cmdSetViewportWithCountEXT)
import Vulkan.Extensions.VK_EXT_blend_operation_advanced (BlendOverlapEXT(..))
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (ColorBlendAdvancedEXT(..))
import Vulkan.Extensions.VK_EXT_extended_dynamic_state3 (ColorBlendEquationEXT(..))
import Vulkan.Extensions.VK_EXT_conservative_rasterization (ConservativeRasterizationModeEXT(..))
import Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (CoverageModulationModeNV(..))
import Vulkan.Extensions.VK_NV_coverage_reduction_mode (CoverageReductionModeNV(..))
import Vulkan.Extensions.VK_EXT_line_rasterization (LineRasterizationModeEXT(..))
import Vulkan.Extensions.VK_EXT_provoking_vertex (ProvokingVertexModeEXT(..))
import Vulkan.Extensions.Handles (ShaderEXT(..))
import Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (VertexInputAttributeDescription2EXT(..))
import Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (VertexInputBindingDescription2EXT(..))
import Vulkan.Extensions.VK_NV_viewport_swizzle (ViewportCoordinateSwizzleNV(..))
import Vulkan.Extensions.VK_NV_viewport_swizzle (ViewportSwizzleNV(..))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCreateShadersEXT
:: FunPtr (Ptr Device_T -> Word32 -> Ptr (SomeStruct ShaderCreateInfoEXT) -> Ptr AllocationCallbacks -> Ptr ShaderEXT -> IO Result) -> Ptr Device_T -> Word32 -> Ptr (SomeStruct ShaderCreateInfoEXT) -> Ptr AllocationCallbacks -> Ptr ShaderEXT -> IO Result
createShadersEXT :: forall io
. (MonadIO io)
=>
Device
->
("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
->
("allocator" ::: Maybe AllocationCallbacks)
-> io (("shaders" ::: Vector ShaderEXT))
createShadersEXT :: forall (io :: * -> *).
MonadIO io =>
Device
-> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ("shaders" ::: Vector ShaderEXT)
createShadersEXT Device
device "createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)
createInfos "allocator" ::: Maybe AllocationCallbacks
allocator = IO ("shaders" ::: Vector ShaderEXT)
-> io ("shaders" ::: Vector ShaderEXT)
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO ("shaders" ::: Vector ShaderEXT)
-> io ("shaders" ::: Vector ShaderEXT))
-> (ContT
("shaders" ::: Vector ShaderEXT)
IO
("shaders" ::: Vector ShaderEXT)
-> IO ("shaders" ::: Vector ShaderEXT))
-> ContT
("shaders" ::: Vector ShaderEXT)
IO
("shaders" ::: Vector ShaderEXT)
-> io ("shaders" ::: Vector ShaderEXT)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT
("shaders" ::: Vector ShaderEXT)
IO
("shaders" ::: Vector ShaderEXT)
-> IO ("shaders" ::: Vector ShaderEXT)
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT
("shaders" ::: Vector ShaderEXT)
IO
("shaders" ::: Vector ShaderEXT)
-> io ("shaders" ::: Vector ShaderEXT))
-> ContT
("shaders" ::: Vector ShaderEXT)
IO
("shaders" ::: Vector ShaderEXT)
-> io ("shaders" ::: Vector ShaderEXT)
forall a b. (a -> b) -> a -> b
$ do
let vkCreateShadersEXTPtr :: FunPtr
(Ptr Device_T
-> Flags
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result)
vkCreateShadersEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> Flags
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result)
pVkCreateShadersEXT (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT ("shaders" ::: Vector ShaderEXT) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT ("shaders" ::: Vector ShaderEXT) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT ("shaders" ::: Vector ShaderEXT) IO ())
-> IO () -> ContT ("shaders" ::: Vector ShaderEXT) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T
-> Flags
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result)
vkCreateShadersEXTPtr FunPtr
(Ptr Device_T
-> Flags
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result)
-> FunPtr
(Ptr Device_T
-> Flags
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> Flags
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> 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 vkCreateShadersEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCreateShadersEXT' :: Ptr Device_T
-> Flags
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result
vkCreateShadersEXT' = FunPtr
(Ptr Device_T
-> Flags
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result)
-> Ptr Device_T
-> Flags
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result
mkVkCreateShadersEXT FunPtr
(Ptr Device_T
-> Flags
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result)
vkCreateShadersEXTPtr
Ptr (ShaderCreateInfoEXT Any)
pPCreateInfos <- ((Ptr (ShaderCreateInfoEXT Any)
-> IO ("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT))
-> ContT
("shaders" ::: Vector ShaderEXT) IO (Ptr (ShaderCreateInfoEXT Any))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (ShaderCreateInfoEXT Any)
-> IO ("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT))
-> ContT
("shaders" ::: Vector ShaderEXT)
IO
(Ptr (ShaderCreateInfoEXT Any)))
-> ((Ptr (ShaderCreateInfoEXT Any)
-> IO ("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT))
-> ContT
("shaders" ::: Vector ShaderEXT) IO (Ptr (ShaderCreateInfoEXT Any))
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @(ShaderCreateInfoEXT _) ((("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)) -> Int
forall a. Vector a -> Int
Data.Vector.length ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)
createInfos)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
96)
(Int
-> SomeStruct ShaderCreateInfoEXT
-> ContT ("shaders" ::: Vector ShaderEXT) IO ())
-> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
-> ContT ("shaders" ::: Vector ShaderEXT) IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i SomeStruct ShaderCreateInfoEXT
e -> ((() -> IO ("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT))
-> ContT ("shaders" ::: Vector ShaderEXT) IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO ("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT))
-> ContT ("shaders" ::: Vector ShaderEXT) IO ())
-> ((() -> IO ("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT))
-> ContT ("shaders" ::: Vector ShaderEXT) IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (SomeStruct ShaderCreateInfoEXT)
-> SomeStruct ShaderCreateInfoEXT
-> IO ("shaders" ::: Vector ShaderEXT)
-> IO ("shaders" ::: Vector ShaderEXT)
forall (a :: [*] -> *) b.
(forall (es :: [*]).
(Extendss a es, PokeChain es) =>
ToCStruct (a es)) =>
Ptr (SomeStruct a) -> SomeStruct a -> IO b -> IO b
pokeSomeCStruct (Ptr (ShaderCreateInfoEXT Any)
-> Ptr (SomeStruct ShaderCreateInfoEXT)
forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions (Ptr (ShaderCreateInfoEXT Any)
pPCreateInfos Ptr (ShaderCreateInfoEXT Any) -> Int -> Ptr (ShaderCreateInfoEXT w)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
96 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr (ShaderCreateInfoEXT _))) (SomeStruct ShaderCreateInfoEXT
e) (IO ("shaders" ::: Vector ShaderEXT)
-> IO ("shaders" ::: Vector ShaderEXT))
-> ((() -> IO ("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT))
-> (() -> IO ("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO ("shaders" ::: Vector ShaderEXT))
-> () -> IO ("shaders" ::: Vector ShaderEXT)
forall a b. (a -> b) -> a -> b
$ ())) ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)
createInfos)
Ptr AllocationCallbacks
pAllocator <- case ("allocator" ::: Maybe AllocationCallbacks
allocator) of
"allocator" ::: Maybe AllocationCallbacks
Nothing -> Ptr AllocationCallbacks
-> ContT
("shaders" ::: Vector ShaderEXT) IO (Ptr AllocationCallbacks)
forall a. a -> ContT ("shaders" ::: Vector ShaderEXT) IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr AllocationCallbacks
forall a. Ptr a
nullPtr
Just AllocationCallbacks
j -> ((Ptr AllocationCallbacks -> IO ("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT))
-> ContT
("shaders" ::: Vector ShaderEXT) IO (Ptr AllocationCallbacks)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr AllocationCallbacks -> IO ("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT))
-> ContT
("shaders" ::: Vector ShaderEXT) IO (Ptr AllocationCallbacks))
-> ((Ptr AllocationCallbacks
-> IO ("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT))
-> ContT
("shaders" ::: Vector ShaderEXT) IO (Ptr AllocationCallbacks)
forall a b. (a -> b) -> a -> b
$ AllocationCallbacks
-> (Ptr AllocationCallbacks -> IO ("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT)
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 ShaderEXT
pPShaders <- ((Ptr ShaderEXT -> IO ("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT))
-> ContT ("shaders" ::: Vector ShaderEXT) IO (Ptr ShaderEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr ShaderEXT -> IO ("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT))
-> ContT ("shaders" ::: Vector ShaderEXT) IO (Ptr ShaderEXT))
-> ((Ptr ShaderEXT -> IO ("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT))
-> ContT ("shaders" ::: Vector ShaderEXT) IO (Ptr ShaderEXT)
forall a b. (a -> b) -> a -> b
$ IO (Ptr ShaderEXT)
-> (Ptr ShaderEXT -> IO ())
-> (Ptr ShaderEXT -> IO ("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT)
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (forall a. Int -> IO (Ptr a)
callocBytes @ShaderEXT ((Flags -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral ((Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral (("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)) -> Int
forall a. Vector a -> Int
Data.Vector.length (("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
-> Int)
-> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
-> Int
forall a b. (a -> b) -> a -> b
$ ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)
createInfos)) :: Word32))) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
8)) Ptr ShaderEXT -> IO ()
forall a. Ptr a -> IO ()
free
Result
r <- IO Result -> ContT ("shaders" ::: Vector ShaderEXT) IO Result
forall (m :: * -> *) a.
Monad m =>
m a -> ContT ("shaders" ::: Vector ShaderEXT) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result -> ContT ("shaders" ::: Vector ShaderEXT) IO Result)
-> IO Result -> ContT ("shaders" ::: Vector ShaderEXT) IO Result
forall a b. (a -> b) -> a -> b
$ String -> IO Result -> IO Result
forall a. String -> IO a -> IO a
traceAroundEvent String
"vkCreateShadersEXT" (Ptr Device_T
-> Flags
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result
vkCreateShadersEXT'
(Device -> Ptr Device_T
deviceHandle (Device
device))
((Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral (("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)) -> Int
forall a. Vector a -> Int
Data.Vector.length (("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
-> Int)
-> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
-> Int
forall a b. (a -> b) -> a -> b
$ ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)
createInfos)) :: Word32))
(Ptr (ShaderCreateInfoEXT Any)
-> Ptr (SomeStruct ShaderCreateInfoEXT)
forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions (Ptr (ShaderCreateInfoEXT Any)
pPCreateInfos))
Ptr AllocationCallbacks
pAllocator
(Ptr ShaderEXT
pPShaders))
IO () -> ContT ("shaders" ::: Vector ShaderEXT) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT ("shaders" ::: Vector ShaderEXT) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT ("shaders" ::: Vector ShaderEXT) IO ())
-> IO () -> ContT ("shaders" ::: Vector ShaderEXT) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
"shaders" ::: Vector ShaderEXT
pShaders <- IO ("shaders" ::: Vector ShaderEXT)
-> ContT
("shaders" ::: Vector ShaderEXT)
IO
("shaders" ::: Vector ShaderEXT)
forall (m :: * -> *) a.
Monad m =>
m a -> ContT ("shaders" ::: Vector ShaderEXT) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO ("shaders" ::: Vector ShaderEXT)
-> ContT
("shaders" ::: Vector ShaderEXT)
IO
("shaders" ::: Vector ShaderEXT))
-> IO ("shaders" ::: Vector ShaderEXT)
-> ContT
("shaders" ::: Vector ShaderEXT)
IO
("shaders" ::: Vector ShaderEXT)
forall a b. (a -> b) -> a -> b
$ Int -> (Int -> IO ShaderEXT) -> IO ("shaders" ::: 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 ((Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral (("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)) -> Int
forall a. Vector a -> Int
Data.Vector.length (("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
-> Int)
-> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
-> Int
forall a b. (a -> b) -> a -> b
$ ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)
createInfos)) :: Word32))) (\Int
i -> forall a. Storable a => Ptr a -> IO a
peek @ShaderEXT ((Ptr ShaderEXT
pPShaders 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)))
("shaders" ::: Vector ShaderEXT)
-> ContT
("shaders" ::: Vector ShaderEXT)
IO
("shaders" ::: Vector ShaderEXT)
forall a. a -> ContT ("shaders" ::: Vector ShaderEXT) IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (("shaders" ::: Vector ShaderEXT)
-> ContT
("shaders" ::: Vector ShaderEXT)
IO
("shaders" ::: Vector ShaderEXT))
-> ("shaders" ::: Vector ShaderEXT)
-> ContT
("shaders" ::: Vector ShaderEXT)
IO
("shaders" ::: Vector ShaderEXT)
forall a b. (a -> b) -> a -> b
$ ("shaders" ::: Vector ShaderEXT
pShaders)
withShadersEXT :: forall io r . MonadIO io => Device -> Vector (SomeStruct ShaderCreateInfoEXT) -> Maybe AllocationCallbacks -> (io (Vector ShaderEXT) -> (Vector ShaderEXT -> io ()) -> r) -> r
withShadersEXT :: forall (io :: * -> *) r.
MonadIO io =>
Device
-> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
-> ("allocator" ::: Maybe AllocationCallbacks)
-> (io ("shaders" ::: Vector ShaderEXT)
-> (("shaders" ::: Vector ShaderEXT) -> io ()) -> r)
-> r
withShadersEXT Device
device "createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)
pCreateInfos "allocator" ::: Maybe AllocationCallbacks
pAllocator io ("shaders" ::: Vector ShaderEXT)
-> (("shaders" ::: Vector ShaderEXT) -> io ()) -> r
b =
io ("shaders" ::: Vector ShaderEXT)
-> (("shaders" ::: Vector ShaderEXT) -> io ()) -> r
b (Device
-> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ("shaders" ::: Vector ShaderEXT)
forall (io :: * -> *).
MonadIO io =>
Device
-> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ("shaders" ::: Vector ShaderEXT)
createShadersEXT Device
device "createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)
pCreateInfos "allocator" ::: Maybe AllocationCallbacks
pAllocator)
(\("shaders" ::: Vector ShaderEXT
o0) -> (ShaderEXT -> io ()) -> ("shaders" ::: Vector ShaderEXT) -> io ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
(a -> f b) -> t a -> f ()
traverse_ (\ShaderEXT
o0Elem -> Device
-> ShaderEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
forall (io :: * -> *).
MonadIO io =>
Device
-> ShaderEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroyShaderEXT Device
device
ShaderEXT
o0Elem
"allocator" ::: Maybe AllocationCallbacks
pAllocator) "shaders" ::: Vector ShaderEXT
o0)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkDestroyShaderEXT
:: FunPtr (Ptr Device_T -> ShaderEXT -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> ShaderEXT -> Ptr AllocationCallbacks -> IO ()
destroyShaderEXT :: forall io
. (MonadIO io)
=>
Device
->
ShaderEXT
->
("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroyShaderEXT :: forall (io :: * -> *).
MonadIO io =>
Device
-> ShaderEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroyShaderEXT Device
device ShaderEXT
shader "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 vkDestroyShaderEXTPtr :: FunPtr
(Ptr Device_T -> ShaderEXT -> Ptr AllocationCallbacks -> IO ())
vkDestroyShaderEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T -> ShaderEXT -> Ptr AllocationCallbacks -> IO ())
pVkDestroyShaderEXT (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
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T -> ShaderEXT -> Ptr AllocationCallbacks -> IO ())
vkDestroyShaderEXTPtr FunPtr
(Ptr Device_T -> ShaderEXT -> Ptr AllocationCallbacks -> IO ())
-> FunPtr
(Ptr Device_T -> ShaderEXT -> Ptr AllocationCallbacks -> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T -> ShaderEXT -> 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 vkDestroyShaderEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkDestroyShaderEXT' :: Ptr Device_T -> ShaderEXT -> Ptr AllocationCallbacks -> IO ()
vkDestroyShaderEXT' = FunPtr
(Ptr Device_T -> ShaderEXT -> Ptr AllocationCallbacks -> IO ())
-> Ptr Device_T -> ShaderEXT -> Ptr AllocationCallbacks -> IO ()
mkVkDestroyShaderEXT FunPtr
(Ptr Device_T -> ShaderEXT -> Ptr AllocationCallbacks -> IO ())
vkDestroyShaderEXTPtr
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
"vkDestroyShaderEXT" (Ptr Device_T -> ShaderEXT -> Ptr AllocationCallbacks -> IO ()
vkDestroyShaderEXT'
(Device -> Ptr Device_T
deviceHandle (Device
device))
(ShaderEXT
shader)
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" mkVkGetShaderBinaryDataEXT
:: FunPtr (Ptr Device_T -> ShaderEXT -> Ptr CSize -> Ptr () -> IO Result) -> Ptr Device_T -> ShaderEXT -> Ptr CSize -> Ptr () -> IO Result
getShaderBinaryDataEXT :: forall io
. (MonadIO io)
=>
Device
->
ShaderEXT
-> io (Result, ("data" ::: ByteString))
getShaderBinaryDataEXT :: forall (io :: * -> *).
MonadIO io =>
Device -> ShaderEXT -> io (Result, "data" ::: ByteString)
getShaderBinaryDataEXT Device
device ShaderEXT
shader = IO (Result, "data" ::: ByteString)
-> io (Result, "data" ::: ByteString)
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Result, "data" ::: ByteString)
-> io (Result, "data" ::: ByteString))
-> (ContT
(Result, "data" ::: ByteString) IO (Result, "data" ::: ByteString)
-> IO (Result, "data" ::: ByteString))
-> ContT
(Result, "data" ::: ByteString) IO (Result, "data" ::: ByteString)
-> io (Result, "data" ::: ByteString)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT
(Result, "data" ::: ByteString) IO (Result, "data" ::: ByteString)
-> IO (Result, "data" ::: ByteString)
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT
(Result, "data" ::: ByteString) IO (Result, "data" ::: ByteString)
-> io (Result, "data" ::: ByteString))
-> ContT
(Result, "data" ::: ByteString) IO (Result, "data" ::: ByteString)
-> io (Result, "data" ::: ByteString)
forall a b. (a -> b) -> a -> b
$ do
let vkGetShaderBinaryDataEXTPtr :: FunPtr
(Ptr Device_T -> ShaderEXT -> Ptr CSize -> Ptr () -> IO Result)
vkGetShaderBinaryDataEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T -> ShaderEXT -> Ptr CSize -> Ptr () -> IO Result)
pVkGetShaderBinaryDataEXT (case Device
device of Device{DeviceCmds
$sel:deviceCmds:Device :: Device -> DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT (Result, "data" ::: ByteString) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (Result, "data" ::: ByteString) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (Result, "data" ::: ByteString) IO ())
-> IO () -> ContT (Result, "data" ::: ByteString) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr Device_T -> ShaderEXT -> Ptr CSize -> Ptr () -> IO Result)
vkGetShaderBinaryDataEXTPtr FunPtr
(Ptr Device_T -> ShaderEXT -> Ptr CSize -> Ptr () -> IO Result)
-> FunPtr
(Ptr Device_T -> ShaderEXT -> Ptr CSize -> Ptr () -> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T -> ShaderEXT -> Ptr CSize -> Ptr () -> 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 vkGetShaderBinaryDataEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkGetShaderBinaryDataEXT' :: Ptr Device_T -> ShaderEXT -> Ptr CSize -> Ptr () -> IO Result
vkGetShaderBinaryDataEXT' = FunPtr
(Ptr Device_T -> ShaderEXT -> Ptr CSize -> Ptr () -> IO Result)
-> Ptr Device_T -> ShaderEXT -> Ptr CSize -> Ptr () -> IO Result
mkVkGetShaderBinaryDataEXT FunPtr
(Ptr Device_T -> ShaderEXT -> Ptr CSize -> Ptr () -> IO Result)
vkGetShaderBinaryDataEXTPtr
let device' :: Ptr Device_T
device' = Device -> Ptr Device_T
deviceHandle (Device
device)
Ptr CSize
pPDataSize <- ((Ptr CSize -> IO (Result, "data" ::: ByteString))
-> IO (Result, "data" ::: ByteString))
-> ContT (Result, "data" ::: ByteString) IO (Ptr CSize)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr CSize -> IO (Result, "data" ::: ByteString))
-> IO (Result, "data" ::: ByteString))
-> ContT (Result, "data" ::: ByteString) IO (Ptr CSize))
-> ((Ptr CSize -> IO (Result, "data" ::: ByteString))
-> IO (Result, "data" ::: ByteString))
-> ContT (Result, "data" ::: ByteString) IO (Ptr CSize)
forall a b. (a -> b) -> a -> b
$ IO (Ptr CSize)
-> (Ptr CSize -> IO ())
-> (Ptr CSize -> IO (Result, "data" ::: ByteString))
-> IO (Result, "data" ::: ByteString)
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (forall a. Int -> IO (Ptr a)
callocBytes @CSize Int
8) Ptr CSize -> IO ()
forall a. Ptr a -> IO ()
free
Result
r <- IO Result -> ContT (Result, "data" ::: ByteString) IO Result
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (Result, "data" ::: ByteString) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result -> ContT (Result, "data" ::: ByteString) IO Result)
-> IO Result -> ContT (Result, "data" ::: ByteString) IO Result
forall a b. (a -> b) -> a -> b
$ String -> IO Result -> IO Result
forall a. String -> IO a -> IO a
traceAroundEvent String
"vkGetShaderBinaryDataEXT" (Ptr Device_T -> ShaderEXT -> Ptr CSize -> Ptr () -> IO Result
vkGetShaderBinaryDataEXT'
Ptr Device_T
device'
(ShaderEXT
shader)
(Ptr CSize
pPDataSize)
(Ptr ()
forall a. Ptr a
nullPtr))
IO () -> ContT (Result, "data" ::: ByteString) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (Result, "data" ::: ByteString) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (Result, "data" ::: ByteString) IO ())
-> IO () -> ContT (Result, "data" ::: ByteString) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
CSize
pDataSize <- IO CSize -> ContT (Result, "data" ::: ByteString) IO CSize
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (Result, "data" ::: ByteString) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO CSize -> ContT (Result, "data" ::: ByteString) IO CSize)
-> IO CSize -> ContT (Result, "data" ::: ByteString) IO CSize
forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> IO a
peek @CSize Ptr CSize
pPDataSize
Ptr ()
pPData <- ((Ptr () -> IO (Result, "data" ::: ByteString))
-> IO (Result, "data" ::: ByteString))
-> ContT (Result, "data" ::: ByteString) IO (Ptr ())
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr () -> IO (Result, "data" ::: ByteString))
-> IO (Result, "data" ::: ByteString))
-> ContT (Result, "data" ::: ByteString) IO (Ptr ()))
-> ((Ptr () -> IO (Result, "data" ::: ByteString))
-> IO (Result, "data" ::: ByteString))
-> ContT (Result, "data" ::: ByteString) IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ IO (Ptr ())
-> (Ptr () -> IO ())
-> (Ptr () -> IO (Result, "data" ::: ByteString))
-> IO (Result, "data" ::: ByteString)
forall a b c. IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket (forall a. Int -> IO (Ptr a)
callocBytes @(()) (Word64 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral ((forall a b. Coercible a b => a -> b
forall a b. Coercible a b => a -> b
coerce @CSize @Word64 CSize
pDataSize)))) Ptr () -> IO ()
forall a. Ptr a -> IO ()
free
Result
r' <- IO Result -> ContT (Result, "data" ::: ByteString) IO Result
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (Result, "data" ::: ByteString) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result -> ContT (Result, "data" ::: ByteString) IO Result)
-> IO Result -> ContT (Result, "data" ::: ByteString) IO Result
forall a b. (a -> b) -> a -> b
$ String -> IO Result -> IO Result
forall a. String -> IO a -> IO a
traceAroundEvent String
"vkGetShaderBinaryDataEXT" (Ptr Device_T -> ShaderEXT -> Ptr CSize -> Ptr () -> IO Result
vkGetShaderBinaryDataEXT'
Ptr Device_T
device'
(ShaderEXT
shader)
(Ptr CSize
pPDataSize)
(Ptr ()
pPData))
IO () -> ContT (Result, "data" ::: ByteString) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (Result, "data" ::: ByteString) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (Result, "data" ::: ByteString) IO ())
-> IO () -> ContT (Result, "data" ::: ByteString) IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r' Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r'))
CSize
pDataSize'' <- IO CSize -> ContT (Result, "data" ::: ByteString) IO CSize
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (Result, "data" ::: ByteString) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO CSize -> ContT (Result, "data" ::: ByteString) IO CSize)
-> IO CSize -> ContT (Result, "data" ::: ByteString) IO CSize
forall a b. (a -> b) -> a -> b
$ forall a. Storable a => Ptr a -> IO a
peek @CSize Ptr CSize
pPDataSize
"data" ::: ByteString
pData' <- IO ("data" ::: ByteString)
-> ContT (Result, "data" ::: ByteString) IO ("data" ::: ByteString)
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (Result, "data" ::: ByteString) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO ("data" ::: ByteString)
-> ContT
(Result, "data" ::: ByteString) IO ("data" ::: ByteString))
-> IO ("data" ::: ByteString)
-> ContT (Result, "data" ::: ByteString) IO ("data" ::: ByteString)
forall a b. (a -> b) -> a -> b
$ CStringLen -> IO ("data" ::: ByteString)
packCStringLen ( forall a b. Ptr a -> Ptr b
castPtr @() @CChar Ptr ()
pPData
, (Word64 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral ((forall a b. Coercible a b => a -> b
forall a b. Coercible a b => a -> b
coerce @CSize @Word64 CSize
pDataSize''))) )
(Result, "data" ::: ByteString)
-> ContT
(Result, "data" ::: ByteString) IO (Result, "data" ::: ByteString)
forall a. a -> ContT (Result, "data" ::: ByteString) IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ((Result, "data" ::: ByteString)
-> ContT
(Result, "data" ::: ByteString) IO (Result, "data" ::: ByteString))
-> (Result, "data" ::: ByteString)
-> ContT
(Result, "data" ::: ByteString) IO (Result, "data" ::: ByteString)
forall a b. (a -> b) -> a -> b
$ ((Result
r'), "data" ::: ByteString
pData')
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkCmdBindShadersEXT
:: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ()
cmdBindShadersEXT :: forall io
. (MonadIO io)
=>
CommandBuffer
->
("stages" ::: Vector ShaderStageFlagBits)
->
("shaders" ::: Vector ShaderEXT)
-> io ()
cmdBindShadersEXT :: forall (io :: * -> *).
MonadIO io =>
CommandBuffer
-> ("stages" ::: Vector ShaderStageFlagBits)
-> ("shaders" ::: Vector ShaderEXT)
-> io ()
cmdBindShadersEXT CommandBuffer
commandBuffer "stages" ::: Vector ShaderStageFlagBits
stages "shaders" ::: Vector ShaderEXT
shaders = 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 vkCmdBindShadersEXTPtr :: FunPtr
(Ptr CommandBuffer_T
-> Flags -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ())
vkCmdBindShadersEXTPtr = DeviceCmds
-> FunPtr
(Ptr CommandBuffer_T
-> Flags -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ())
pVkCmdBindShadersEXT (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
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
(Ptr CommandBuffer_T
-> Flags -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ())
vkCmdBindShadersEXTPtr FunPtr
(Ptr CommandBuffer_T
-> Flags -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ())
-> FunPtr
(Ptr CommandBuffer_T
-> Flags -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr CommandBuffer_T
-> Flags -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> 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 vkCmdBindShadersEXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
let vkCmdBindShadersEXT' :: Ptr CommandBuffer_T
-> Flags -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ()
vkCmdBindShadersEXT' = FunPtr
(Ptr CommandBuffer_T
-> Flags -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ())
-> Ptr CommandBuffer_T
-> Flags
-> Ptr ShaderStageFlagBits
-> Ptr ShaderEXT
-> IO ()
mkVkCmdBindShadersEXT FunPtr
(Ptr CommandBuffer_T
-> Flags -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ())
vkCmdBindShadersEXTPtr
let pStagesLength :: Int
pStagesLength = ("stages" ::: Vector ShaderStageFlagBits) -> Int
forall a. Vector a -> Int
Data.Vector.length (("stages" ::: Vector ShaderStageFlagBits) -> Int)
-> ("stages" ::: Vector ShaderStageFlagBits) -> Int
forall a b. (a -> b) -> a -> b
$ ("stages" ::: Vector ShaderStageFlagBits
stages)
let pShadersLength :: Int
pShadersLength = ("shaders" ::: Vector ShaderEXT) -> Int
forall a. Vector a -> Int
Data.Vector.length (("shaders" ::: Vector ShaderEXT) -> Int)
-> ("shaders" ::: Vector ShaderEXT) -> Int
forall a b. (a -> b) -> a -> b
$ ("shaders" ::: Vector ShaderEXT
shaders)
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
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (Int -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pShadersLength Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
pStagesLength Bool -> Bool -> Bool
|| Int
pShadersLength Int -> Int -> Bool
forall a. Eq a => a -> a -> 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
"pShaders and pStages must have the same length" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
Ptr ShaderStageFlagBits
pPStages <- ((Ptr ShaderStageFlagBits -> IO ()) -> IO ())
-> ContT () IO (Ptr ShaderStageFlagBits)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr ShaderStageFlagBits -> IO ()) -> IO ())
-> ContT () IO (Ptr ShaderStageFlagBits))
-> ((Ptr ShaderStageFlagBits -> IO ()) -> IO ())
-> ContT () IO (Ptr ShaderStageFlagBits)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @ShaderStageFlagBits ((("stages" ::: Vector ShaderStageFlagBits) -> Int
forall a. Vector a -> Int
Data.Vector.length ("stages" ::: Vector ShaderStageFlagBits
stages)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
4)
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 -> ShaderStageFlagBits -> IO ())
-> ("stages" ::: Vector ShaderStageFlagBits) -> IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i ShaderStageFlagBits
e -> Ptr ShaderStageFlagBits -> ShaderStageFlagBits -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr ShaderStageFlagBits
pPStages Ptr ShaderStageFlagBits -> Int -> Ptr ShaderStageFlagBits
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr ShaderStageFlagBits) (ShaderStageFlagBits
e)) ("stages" ::: Vector ShaderStageFlagBits
stages)
Ptr ShaderEXT
pShaders <- if ("shaders" ::: Vector ShaderEXT) -> Bool
forall a. Vector a -> Bool
Data.Vector.null ("shaders" ::: Vector ShaderEXT
shaders)
then Ptr ShaderEXT -> ContT () IO (Ptr ShaderEXT)
forall a. a -> ContT () IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr ShaderEXT
forall a. Ptr a
nullPtr
else do
Ptr ShaderEXT
pPShaders <- ((Ptr ShaderEXT -> IO ()) -> IO ()) -> ContT () IO (Ptr ShaderEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr ShaderEXT -> IO ()) -> IO ())
-> ContT () IO (Ptr ShaderEXT))
-> ((Ptr ShaderEXT -> IO ()) -> IO ())
-> ContT () IO (Ptr ShaderEXT)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @ShaderEXT (((("shaders" ::: Vector ShaderEXT) -> Int
forall a. Vector a -> Int
Data.Vector.length ("shaders" ::: Vector ShaderEXT
shaders))) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
8)
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 -> ShaderEXT -> IO ())
-> ("shaders" ::: 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)) (("shaders" ::: Vector ShaderEXT
shaders))
Ptr ShaderEXT -> ContT () IO (Ptr ShaderEXT)
forall a. a -> ContT () IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Ptr ShaderEXT -> ContT () IO (Ptr ShaderEXT))
-> Ptr ShaderEXT -> ContT () IO (Ptr ShaderEXT)
forall a b. (a -> b) -> a -> b
$ Ptr ShaderEXT
pPShaders
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
"vkCmdBindShadersEXT" (Ptr CommandBuffer_T
-> Flags -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ()
vkCmdBindShadersEXT'
(CommandBuffer -> Ptr CommandBuffer_T
commandBufferHandle (CommandBuffer
commandBuffer))
((Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pStagesLength :: Word32))
(Ptr ShaderStageFlagBits
pPStages)
Ptr ShaderEXT
pShaders)
() -> 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 $bSTRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT :: StructureType
$mSTRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO
data PhysicalDeviceShaderObjectFeaturesEXT = PhysicalDeviceShaderObjectFeaturesEXT
{
PhysicalDeviceShaderObjectFeaturesEXT -> Bool
shaderObject :: Bool }
deriving (Typeable, PhysicalDeviceShaderObjectFeaturesEXT
-> PhysicalDeviceShaderObjectFeaturesEXT -> Bool
(PhysicalDeviceShaderObjectFeaturesEXT
-> PhysicalDeviceShaderObjectFeaturesEXT -> Bool)
-> (PhysicalDeviceShaderObjectFeaturesEXT
-> PhysicalDeviceShaderObjectFeaturesEXT -> Bool)
-> Eq PhysicalDeviceShaderObjectFeaturesEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceShaderObjectFeaturesEXT
-> PhysicalDeviceShaderObjectFeaturesEXT -> Bool
== :: PhysicalDeviceShaderObjectFeaturesEXT
-> PhysicalDeviceShaderObjectFeaturesEXT -> Bool
$c/= :: PhysicalDeviceShaderObjectFeaturesEXT
-> PhysicalDeviceShaderObjectFeaturesEXT -> Bool
/= :: PhysicalDeviceShaderObjectFeaturesEXT
-> PhysicalDeviceShaderObjectFeaturesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceShaderObjectFeaturesEXT)
#endif
deriving instance Show PhysicalDeviceShaderObjectFeaturesEXT
instance ToCStruct PhysicalDeviceShaderObjectFeaturesEXT where
withCStruct :: forall b.
PhysicalDeviceShaderObjectFeaturesEXT
-> (Ptr PhysicalDeviceShaderObjectFeaturesEXT -> IO b) -> IO b
withCStruct PhysicalDeviceShaderObjectFeaturesEXT
x Ptr PhysicalDeviceShaderObjectFeaturesEXT -> IO b
f = Int -> (Ptr PhysicalDeviceShaderObjectFeaturesEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceShaderObjectFeaturesEXT -> IO b) -> IO b)
-> (Ptr PhysicalDeviceShaderObjectFeaturesEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceShaderObjectFeaturesEXT
p -> Ptr PhysicalDeviceShaderObjectFeaturesEXT
-> PhysicalDeviceShaderObjectFeaturesEXT -> IO b -> IO b
forall b.
Ptr PhysicalDeviceShaderObjectFeaturesEXT
-> PhysicalDeviceShaderObjectFeaturesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderObjectFeaturesEXT
p PhysicalDeviceShaderObjectFeaturesEXT
x (Ptr PhysicalDeviceShaderObjectFeaturesEXT -> IO b
f Ptr PhysicalDeviceShaderObjectFeaturesEXT
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceShaderObjectFeaturesEXT
-> PhysicalDeviceShaderObjectFeaturesEXT -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderObjectFeaturesEXT
p PhysicalDeviceShaderObjectFeaturesEXT{Bool
$sel:shaderObject:PhysicalDeviceShaderObjectFeaturesEXT :: PhysicalDeviceShaderObjectFeaturesEXT -> Bool
shaderObject :: Bool
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderObjectFeaturesEXT
p Ptr PhysicalDeviceShaderObjectFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderObjectFeaturesEXT
p Ptr PhysicalDeviceShaderObjectFeaturesEXT -> 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 PhysicalDeviceShaderObjectFeaturesEXT
p Ptr PhysicalDeviceShaderObjectFeaturesEXT -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
shaderObject))
IO b
f
cStructSize :: Int
cStructSize = Int
24
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr PhysicalDeviceShaderObjectFeaturesEXT -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceShaderObjectFeaturesEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderObjectFeaturesEXT
p Ptr PhysicalDeviceShaderObjectFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderObjectFeaturesEXT
p Ptr PhysicalDeviceShaderObjectFeaturesEXT -> 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 PhysicalDeviceShaderObjectFeaturesEXT
p Ptr PhysicalDeviceShaderObjectFeaturesEXT -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
IO b
f
instance FromCStruct PhysicalDeviceShaderObjectFeaturesEXT where
peekCStruct :: Ptr PhysicalDeviceShaderObjectFeaturesEXT
-> IO PhysicalDeviceShaderObjectFeaturesEXT
peekCStruct Ptr PhysicalDeviceShaderObjectFeaturesEXT
p = do
Bool32
shaderObject <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceShaderObjectFeaturesEXT
p Ptr PhysicalDeviceShaderObjectFeaturesEXT -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
PhysicalDeviceShaderObjectFeaturesEXT
-> IO PhysicalDeviceShaderObjectFeaturesEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceShaderObjectFeaturesEXT
-> IO PhysicalDeviceShaderObjectFeaturesEXT)
-> PhysicalDeviceShaderObjectFeaturesEXT
-> IO PhysicalDeviceShaderObjectFeaturesEXT
forall a b. (a -> b) -> a -> b
$ Bool -> PhysicalDeviceShaderObjectFeaturesEXT
PhysicalDeviceShaderObjectFeaturesEXT
(Bool32 -> Bool
bool32ToBool Bool32
shaderObject)
instance Storable PhysicalDeviceShaderObjectFeaturesEXT where
sizeOf :: PhysicalDeviceShaderObjectFeaturesEXT -> Int
sizeOf ~PhysicalDeviceShaderObjectFeaturesEXT
_ = Int
24
alignment :: PhysicalDeviceShaderObjectFeaturesEXT -> Int
alignment ~PhysicalDeviceShaderObjectFeaturesEXT
_ = Int
8
peek :: Ptr PhysicalDeviceShaderObjectFeaturesEXT
-> IO PhysicalDeviceShaderObjectFeaturesEXT
peek = Ptr PhysicalDeviceShaderObjectFeaturesEXT
-> IO PhysicalDeviceShaderObjectFeaturesEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceShaderObjectFeaturesEXT
-> PhysicalDeviceShaderObjectFeaturesEXT -> IO ()
poke Ptr PhysicalDeviceShaderObjectFeaturesEXT
ptr PhysicalDeviceShaderObjectFeaturesEXT
poked = Ptr PhysicalDeviceShaderObjectFeaturesEXT
-> PhysicalDeviceShaderObjectFeaturesEXT -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceShaderObjectFeaturesEXT
-> PhysicalDeviceShaderObjectFeaturesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderObjectFeaturesEXT
ptr PhysicalDeviceShaderObjectFeaturesEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceShaderObjectFeaturesEXT where
zero :: PhysicalDeviceShaderObjectFeaturesEXT
zero = Bool -> PhysicalDeviceShaderObjectFeaturesEXT
PhysicalDeviceShaderObjectFeaturesEXT
Bool
forall a. Zero a => a
zero
data PhysicalDeviceShaderObjectPropertiesEXT = PhysicalDeviceShaderObjectPropertiesEXT
{
PhysicalDeviceShaderObjectPropertiesEXT -> "data" ::: ByteString
shaderBinaryUUID :: ByteString
,
PhysicalDeviceShaderObjectPropertiesEXT -> Flags
shaderBinaryVersion :: Word32
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceShaderObjectPropertiesEXT)
#endif
deriving instance Show PhysicalDeviceShaderObjectPropertiesEXT
instance ToCStruct PhysicalDeviceShaderObjectPropertiesEXT where
withCStruct :: forall b.
PhysicalDeviceShaderObjectPropertiesEXT
-> (Ptr PhysicalDeviceShaderObjectPropertiesEXT -> IO b) -> IO b
withCStruct PhysicalDeviceShaderObjectPropertiesEXT
x Ptr PhysicalDeviceShaderObjectPropertiesEXT -> IO b
f = Int
-> (Ptr PhysicalDeviceShaderObjectPropertiesEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
40 ((Ptr PhysicalDeviceShaderObjectPropertiesEXT -> IO b) -> IO b)
-> (Ptr PhysicalDeviceShaderObjectPropertiesEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceShaderObjectPropertiesEXT
p -> Ptr PhysicalDeviceShaderObjectPropertiesEXT
-> PhysicalDeviceShaderObjectPropertiesEXT -> IO b -> IO b
forall b.
Ptr PhysicalDeviceShaderObjectPropertiesEXT
-> PhysicalDeviceShaderObjectPropertiesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderObjectPropertiesEXT
p PhysicalDeviceShaderObjectPropertiesEXT
x (Ptr PhysicalDeviceShaderObjectPropertiesEXT -> IO b
f Ptr PhysicalDeviceShaderObjectPropertiesEXT
p)
pokeCStruct :: forall b.
Ptr PhysicalDeviceShaderObjectPropertiesEXT
-> PhysicalDeviceShaderObjectPropertiesEXT -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderObjectPropertiesEXT
p PhysicalDeviceShaderObjectPropertiesEXT{Flags
"data" ::: ByteString
$sel:shaderBinaryUUID:PhysicalDeviceShaderObjectPropertiesEXT :: PhysicalDeviceShaderObjectPropertiesEXT -> "data" ::: ByteString
$sel:shaderBinaryVersion:PhysicalDeviceShaderObjectPropertiesEXT :: PhysicalDeviceShaderObjectPropertiesEXT -> Flags
shaderBinaryUUID :: "data" ::: ByteString
shaderBinaryVersion :: Flags
..} IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderObjectPropertiesEXT
p Ptr PhysicalDeviceShaderObjectPropertiesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderObjectPropertiesEXT
p Ptr PhysicalDeviceShaderObjectPropertiesEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr (FixedArray UUID_SIZE Word8)
-> ("data" ::: ByteString) -> IO ()
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ("data" ::: ByteString) -> IO ()
pokeFixedLengthByteString ((Ptr PhysicalDeviceShaderObjectPropertiesEXT
p Ptr PhysicalDeviceShaderObjectPropertiesEXT
-> Int -> Ptr (FixedArray UUID_SIZE Word8)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (FixedArray UUID_SIZE Word8))) ("data" ::: ByteString
shaderBinaryUUID)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderObjectPropertiesEXT
p Ptr PhysicalDeviceShaderObjectPropertiesEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32)) (Flags
shaderBinaryVersion)
IO b
f
cStructSize :: Int
cStructSize = Int
40
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceShaderObjectPropertiesEXT -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceShaderObjectPropertiesEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderObjectPropertiesEXT
p Ptr PhysicalDeviceShaderObjectPropertiesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderObjectPropertiesEXT
p Ptr PhysicalDeviceShaderObjectPropertiesEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
Ptr (FixedArray UUID_SIZE Word8)
-> ("data" ::: ByteString) -> IO ()
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> ("data" ::: ByteString) -> IO ()
pokeFixedLengthByteString ((Ptr PhysicalDeviceShaderObjectPropertiesEXT
p Ptr PhysicalDeviceShaderObjectPropertiesEXT
-> Int -> Ptr (FixedArray UUID_SIZE Word8)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (FixedArray UUID_SIZE Word8))) ("data" ::: ByteString
forall a. Monoid a => a
mempty)
Ptr Flags -> Flags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderObjectPropertiesEXT
p Ptr PhysicalDeviceShaderObjectPropertiesEXT -> 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
f
instance FromCStruct PhysicalDeviceShaderObjectPropertiesEXT where
peekCStruct :: Ptr PhysicalDeviceShaderObjectPropertiesEXT
-> IO PhysicalDeviceShaderObjectPropertiesEXT
peekCStruct Ptr PhysicalDeviceShaderObjectPropertiesEXT
p = do
"data" ::: ByteString
shaderBinaryUUID <- Ptr (FixedArray UUID_SIZE Word8) -> IO ("data" ::: ByteString)
forall (n :: Nat).
KnownNat n =>
Ptr (FixedArray n Word8) -> IO ("data" ::: ByteString)
peekByteStringFromSizedVectorPtr ((Ptr PhysicalDeviceShaderObjectPropertiesEXT
p Ptr PhysicalDeviceShaderObjectPropertiesEXT
-> Int -> Ptr (FixedArray UUID_SIZE Word8)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr (FixedArray UUID_SIZE Word8)))
Flags
shaderBinaryVersion <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr PhysicalDeviceShaderObjectPropertiesEXT
p Ptr PhysicalDeviceShaderObjectPropertiesEXT -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32))
PhysicalDeviceShaderObjectPropertiesEXT
-> IO PhysicalDeviceShaderObjectPropertiesEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceShaderObjectPropertiesEXT
-> IO PhysicalDeviceShaderObjectPropertiesEXT)
-> PhysicalDeviceShaderObjectPropertiesEXT
-> IO PhysicalDeviceShaderObjectPropertiesEXT
forall a b. (a -> b) -> a -> b
$ ("data" ::: ByteString)
-> Flags -> PhysicalDeviceShaderObjectPropertiesEXT
PhysicalDeviceShaderObjectPropertiesEXT
"data" ::: ByteString
shaderBinaryUUID Flags
shaderBinaryVersion
instance Storable PhysicalDeviceShaderObjectPropertiesEXT where
sizeOf :: PhysicalDeviceShaderObjectPropertiesEXT -> Int
sizeOf ~PhysicalDeviceShaderObjectPropertiesEXT
_ = Int
40
alignment :: PhysicalDeviceShaderObjectPropertiesEXT -> Int
alignment ~PhysicalDeviceShaderObjectPropertiesEXT
_ = Int
8
peek :: Ptr PhysicalDeviceShaderObjectPropertiesEXT
-> IO PhysicalDeviceShaderObjectPropertiesEXT
peek = Ptr PhysicalDeviceShaderObjectPropertiesEXT
-> IO PhysicalDeviceShaderObjectPropertiesEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
poke :: Ptr PhysicalDeviceShaderObjectPropertiesEXT
-> PhysicalDeviceShaderObjectPropertiesEXT -> IO ()
poke Ptr PhysicalDeviceShaderObjectPropertiesEXT
ptr PhysicalDeviceShaderObjectPropertiesEXT
poked = Ptr PhysicalDeviceShaderObjectPropertiesEXT
-> PhysicalDeviceShaderObjectPropertiesEXT -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceShaderObjectPropertiesEXT
-> PhysicalDeviceShaderObjectPropertiesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceShaderObjectPropertiesEXT
ptr PhysicalDeviceShaderObjectPropertiesEXT
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
instance Zero PhysicalDeviceShaderObjectPropertiesEXT where
zero :: PhysicalDeviceShaderObjectPropertiesEXT
zero = ("data" ::: ByteString)
-> Flags -> PhysicalDeviceShaderObjectPropertiesEXT
PhysicalDeviceShaderObjectPropertiesEXT
"data" ::: ByteString
forall a. Monoid a => a
mempty
Flags
forall a. Zero a => a
zero
data ShaderCreateInfoEXT (es :: [Type]) = ShaderCreateInfoEXT
{
forall (es :: [*]). ShaderCreateInfoEXT es -> Chain es
next :: Chain es
,
forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderCreateFlagsEXT
flags :: ShaderCreateFlagsEXT
,
forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderStageFlagBits
stage :: ShaderStageFlagBits
,
forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderStageFlagBits
nextStage :: ShaderStageFlags
,
forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderCodeTypeEXT
codeType :: ShaderCodeTypeEXT
,
forall (es :: [*]). ShaderCreateInfoEXT es -> Word64
codeSize :: Word64
,
forall (es :: [*]). ShaderCreateInfoEXT es -> Ptr ()
code :: Ptr ()
,
forall (es :: [*]).
ShaderCreateInfoEXT es -> Maybe ("data" ::: ByteString)
name :: Maybe ByteString
,
forall (es :: [*]). ShaderCreateInfoEXT es -> Flags
setLayoutCount :: Word32
,
forall (es :: [*]).
ShaderCreateInfoEXT es -> Vector DescriptorSetLayout
setLayouts :: Vector DescriptorSetLayout
,
forall (es :: [*]). ShaderCreateInfoEXT es -> Flags
pushConstantRangeCount :: Word32
,
forall (es :: [*]).
ShaderCreateInfoEXT es -> Vector PushConstantRange
pushConstantRanges :: Vector PushConstantRange
,
forall (es :: [*]).
ShaderCreateInfoEXT es -> Maybe SpecializationInfo
specializationInfo :: Maybe SpecializationInfo
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ShaderCreateInfoEXT (es :: [Type]))
#endif
deriving instance Show (Chain es) => Show (ShaderCreateInfoEXT es)
instance Extensible ShaderCreateInfoEXT where
extensibleTypeName :: String
extensibleTypeName = String
"ShaderCreateInfoEXT"
setNext :: forall (ds :: [*]) (es :: [*]).
ShaderCreateInfoEXT ds -> Chain es -> ShaderCreateInfoEXT es
setNext ShaderCreateInfoEXT{Maybe ("data" ::: ByteString)
Maybe SpecializationInfo
Flags
Word64
Ptr ()
Vector PushConstantRange
Vector DescriptorSetLayout
ShaderStageFlagBits
Chain ds
ShaderCodeTypeEXT
ShaderCreateFlagsEXT
$sel:next:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> Chain es
$sel:flags:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderCreateFlagsEXT
$sel:stage:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderStageFlagBits
$sel:nextStage:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderStageFlagBits
$sel:codeType:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderCodeTypeEXT
$sel:codeSize:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> Word64
$sel:code:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> Ptr ()
$sel:name:ShaderCreateInfoEXT :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Maybe ("data" ::: ByteString)
$sel:setLayoutCount:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> Flags
$sel:setLayouts:ShaderCreateInfoEXT :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Vector DescriptorSetLayout
$sel:pushConstantRangeCount:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> Flags
$sel:pushConstantRanges:ShaderCreateInfoEXT :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Vector PushConstantRange
$sel:specializationInfo:ShaderCreateInfoEXT :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Maybe SpecializationInfo
next :: Chain ds
flags :: ShaderCreateFlagsEXT
stage :: ShaderStageFlagBits
nextStage :: ShaderStageFlagBits
codeType :: ShaderCodeTypeEXT
codeSize :: Word64
code :: Ptr ()
name :: Maybe ("data" ::: ByteString)
setLayoutCount :: Flags
setLayouts :: Vector DescriptorSetLayout
pushConstantRangeCount :: Flags
pushConstantRanges :: Vector PushConstantRange
specializationInfo :: Maybe SpecializationInfo
..} Chain es
next' = ShaderCreateInfoEXT{$sel:next:ShaderCreateInfoEXT :: Chain es
next = Chain es
next', Maybe ("data" ::: ByteString)
Maybe SpecializationInfo
Flags
Word64
Ptr ()
Vector PushConstantRange
Vector DescriptorSetLayout
ShaderStageFlagBits
ShaderCodeTypeEXT
ShaderCreateFlagsEXT
$sel:flags:ShaderCreateInfoEXT :: ShaderCreateFlagsEXT
$sel:stage:ShaderCreateInfoEXT :: ShaderStageFlagBits
$sel:nextStage:ShaderCreateInfoEXT :: ShaderStageFlagBits
$sel:codeType:ShaderCreateInfoEXT :: ShaderCodeTypeEXT
$sel:codeSize:ShaderCreateInfoEXT :: Word64
$sel:code:ShaderCreateInfoEXT :: Ptr ()
$sel:name:ShaderCreateInfoEXT :: Maybe ("data" ::: ByteString)
$sel:setLayoutCount:ShaderCreateInfoEXT :: Flags
$sel:setLayouts:ShaderCreateInfoEXT :: Vector DescriptorSetLayout
$sel:pushConstantRangeCount:ShaderCreateInfoEXT :: Flags
$sel:pushConstantRanges:ShaderCreateInfoEXT :: Vector PushConstantRange
$sel:specializationInfo:ShaderCreateInfoEXT :: Maybe SpecializationInfo
flags :: ShaderCreateFlagsEXT
stage :: ShaderStageFlagBits
nextStage :: ShaderStageFlagBits
codeType :: ShaderCodeTypeEXT
codeSize :: Word64
code :: Ptr ()
name :: Maybe ("data" ::: ByteString)
setLayoutCount :: Flags
setLayouts :: Vector DescriptorSetLayout
pushConstantRangeCount :: Flags
pushConstantRanges :: Vector PushConstantRange
specializationInfo :: Maybe SpecializationInfo
..}
getNext :: forall (es :: [*]). ShaderCreateInfoEXT es -> Chain es
getNext ShaderCreateInfoEXT{Maybe ("data" ::: ByteString)
Maybe SpecializationInfo
Flags
Word64
Ptr ()
Vector PushConstantRange
Vector DescriptorSetLayout
ShaderStageFlagBits
Chain es
ShaderCodeTypeEXT
ShaderCreateFlagsEXT
$sel:next:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> Chain es
$sel:flags:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderCreateFlagsEXT
$sel:stage:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderStageFlagBits
$sel:nextStage:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderStageFlagBits
$sel:codeType:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderCodeTypeEXT
$sel:codeSize:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> Word64
$sel:code:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> Ptr ()
$sel:name:ShaderCreateInfoEXT :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Maybe ("data" ::: ByteString)
$sel:setLayoutCount:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> Flags
$sel:setLayouts:ShaderCreateInfoEXT :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Vector DescriptorSetLayout
$sel:pushConstantRangeCount:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> Flags
$sel:pushConstantRanges:ShaderCreateInfoEXT :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Vector PushConstantRange
$sel:specializationInfo:ShaderCreateInfoEXT :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Maybe SpecializationInfo
next :: Chain es
flags :: ShaderCreateFlagsEXT
stage :: ShaderStageFlagBits
nextStage :: ShaderStageFlagBits
codeType :: ShaderCodeTypeEXT
codeSize :: Word64
code :: Ptr ()
name :: Maybe ("data" ::: ByteString)
setLayoutCount :: Flags
setLayouts :: Vector DescriptorSetLayout
pushConstantRangeCount :: Flags
pushConstantRanges :: Vector PushConstantRange
specializationInfo :: Maybe SpecializationInfo
..} = Chain es
next
extends :: forall e b proxy. Typeable e => proxy e -> (Extends ShaderCreateInfoEXT e => b) -> Maybe b
extends :: forall e b (proxy :: * -> *).
Typeable e =>
proxy e -> (Extends ShaderCreateInfoEXT e => b) -> Maybe b
extends proxy e
_ Extends ShaderCreateInfoEXT e => b
f
| Just e :~: PipelineShaderStageRequiredSubgroupSizeCreateInfo
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 @PipelineShaderStageRequiredSubgroupSizeCreateInfo = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends ShaderCreateInfoEXT e => b
f
| Bool
otherwise = Maybe b
forall a. Maybe a
Nothing
instance ( Extendss ShaderCreateInfoEXT es
, PokeChain es ) => ToCStruct (ShaderCreateInfoEXT es) where
withCStruct :: forall b.
ShaderCreateInfoEXT es
-> (Ptr (ShaderCreateInfoEXT es) -> IO b) -> IO b
withCStruct ShaderCreateInfoEXT es
x Ptr (ShaderCreateInfoEXT es) -> IO b
f = Int -> (Ptr (ShaderCreateInfoEXT es) -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
96 ((Ptr (ShaderCreateInfoEXT es) -> IO b) -> IO b)
-> (Ptr (ShaderCreateInfoEXT es) -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr (ShaderCreateInfoEXT es)
p -> Ptr (ShaderCreateInfoEXT es)
-> ShaderCreateInfoEXT es -> IO b -> IO b
forall b.
Ptr (ShaderCreateInfoEXT es)
-> ShaderCreateInfoEXT es -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr (ShaderCreateInfoEXT es)
p ShaderCreateInfoEXT es
x (Ptr (ShaderCreateInfoEXT es) -> IO b
f Ptr (ShaderCreateInfoEXT es)
p)
pokeCStruct :: forall b.
Ptr (ShaderCreateInfoEXT es)
-> ShaderCreateInfoEXT es -> IO b -> IO b
pokeCStruct Ptr (ShaderCreateInfoEXT es)
p ShaderCreateInfoEXT{Maybe ("data" ::: ByteString)
Maybe SpecializationInfo
Flags
Word64
Ptr ()
Vector PushConstantRange
Vector DescriptorSetLayout
ShaderStageFlagBits
Chain es
ShaderCodeTypeEXT
ShaderCreateFlagsEXT
$sel:next:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> Chain es
$sel:flags:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderCreateFlagsEXT
$sel:stage:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderStageFlagBits
$sel:nextStage:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderStageFlagBits
$sel:codeType:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderCodeTypeEXT
$sel:codeSize:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> Word64
$sel:code:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> Ptr ()
$sel:name:ShaderCreateInfoEXT :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Maybe ("data" ::: ByteString)
$sel:setLayoutCount:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> Flags
$sel:setLayouts:ShaderCreateInfoEXT :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Vector DescriptorSetLayout
$sel:pushConstantRangeCount:ShaderCreateInfoEXT :: forall (es :: [*]). ShaderCreateInfoEXT es -> Flags
$sel:pushConstantRanges:ShaderCreateInfoEXT :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Vector PushConstantRange
$sel:specializationInfo:ShaderCreateInfoEXT :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Maybe SpecializationInfo
next :: Chain es
flags :: ShaderCreateFlagsEXT
stage :: ShaderStageFlagBits
nextStage :: ShaderStageFlagBits
codeType :: ShaderCodeTypeEXT
codeSize :: Word64
code :: Ptr ()
name :: Maybe ("data" ::: ByteString)
setLayoutCount :: Flags
setLayouts :: Vector DescriptorSetLayout
pushConstantRangeCount :: Flags
pushConstantRanges :: Vector PushConstantRange
specializationInfo :: Maybe SpecializationInfo
..} 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 (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SHADER_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 (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT 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 ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr ShaderCreateFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ShaderCreateFlagsEXT)) (ShaderCreateFlagsEXT
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 ShaderStageFlagBits -> ShaderStageFlagBits -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr ShaderStageFlagBits
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr ShaderStageFlagBits)) (ShaderStageFlagBits
stage)
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 ShaderStageFlagBits -> ShaderStageFlagBits -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr ShaderStageFlagBits
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ShaderStageFlags)) (ShaderStageFlagBits
nextStage)
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 ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr ShaderCodeTypeEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr ShaderCodeTypeEXT)) (ShaderCodeTypeEXT
codeType)
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 CSize -> CSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr CSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr CSize)) (Word64 -> CSize
CSize (Word64
codeSize))
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 (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr (Ptr ()))) (Ptr ()
code)
Ptr CChar
pName'' <- case (Maybe ("data" ::: ByteString)
name) of
Maybe ("data" ::: ByteString)
Nothing -> Ptr CChar -> ContT b IO (Ptr CChar)
forall a. a -> ContT b IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr CChar
forall a. Ptr a
nullPtr
Just "data" ::: ByteString
j -> ((Ptr CChar -> IO b) -> IO b) -> ContT b IO (Ptr CChar)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr CChar -> IO b) -> IO b) -> ContT b IO (Ptr CChar))
-> ((Ptr CChar -> IO b) -> IO b) -> ContT b IO (Ptr CChar)
forall a b. (a -> b) -> a -> b
$ ("data" ::: ByteString) -> (Ptr CChar -> IO b) -> IO b
forall a. ("data" ::: ByteString) -> (Ptr CChar -> IO a) -> IO a
useAsCString ("data" ::: ByteString
j)
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 CChar) -> Ptr CChar -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr (Ptr CChar)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr (Ptr CChar))) Ptr CChar
pName''
let pSetLayoutsLength :: Int
pSetLayoutsLength = 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)
Flags
setLayoutCount'' <- IO Flags -> ContT b IO Flags
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 Flags -> ContT b IO Flags) -> IO Flags -> ContT b IO Flags
forall a b. (a -> b) -> a -> b
$ if (Flags
setLayoutCount) Flags -> Flags -> Bool
forall a. Eq a => a -> a -> Bool
== Flags
0
then Flags -> IO Flags
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags -> IO Flags) -> Flags -> IO Flags
forall a b. (a -> b) -> a -> b
$ Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pSetLayoutsLength
else do
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pSetLayoutsLength Flags -> Flags -> Bool
forall a. Eq a => a -> a -> Bool
== (Flags
setLayoutCount) Bool -> Bool -> Bool
|| Int
pSetLayoutsLength Int -> Int -> Bool
forall a. Eq a => a -> a -> 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
"pSetLayouts must be empty or have 'setLayoutCount' elements" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
Flags -> IO Flags
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags
setLayoutCount)
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 (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Word32)) (Flags
setLayoutCount'')
Ptr DescriptorSetLayout
pSetLayouts'' <- if Vector DescriptorSetLayout -> Bool
forall a. Vector a -> Bool
Data.Vector.null (Vector DescriptorSetLayout
setLayouts)
then Ptr DescriptorSetLayout -> ContT b IO (Ptr DescriptorSetLayout)
forall a. a -> ContT b IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr DescriptorSetLayout
forall a. Ptr a
nullPtr
else do
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))
Ptr DescriptorSetLayout -> ContT b IO (Ptr DescriptorSetLayout)
forall a. a -> ContT b IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Ptr DescriptorSetLayout -> ContT b IO (Ptr DescriptorSetLayout))
-> Ptr DescriptorSetLayout -> ContT b IO (Ptr DescriptorSetLayout)
forall a b. (a -> b) -> a -> b
$ Ptr DescriptorSetLayout
pPSetLayouts
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 (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es)
-> Int -> Ptr (Ptr DescriptorSetLayout)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr (Ptr DescriptorSetLayout))) Ptr DescriptorSetLayout
pSetLayouts''
let pPushConstantRangesLength :: Int
pPushConstantRangesLength = 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)
Flags
pushConstantRangeCount'' <- IO Flags -> ContT b IO Flags
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 Flags -> ContT b IO Flags) -> IO Flags -> ContT b IO Flags
forall a b. (a -> b) -> a -> b
$ if (Flags
pushConstantRangeCount) Flags -> Flags -> Bool
forall a. Eq a => a -> a -> Bool
== Flags
0
then Flags -> IO Flags
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags -> IO Flags) -> Flags -> IO Flags
forall a b. (a -> b) -> a -> b
$ Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pPushConstantRangesLength
else do
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (Int -> Flags
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
pPushConstantRangesLength Flags -> Flags -> Bool
forall a. Eq a => a -> a -> Bool
== (Flags
pushConstantRangeCount) Bool -> Bool -> Bool
|| Int
pPushConstantRangesLength Int -> Int -> Bool
forall a. Eq a => a -> a -> 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
"pPushConstantRanges must be empty or have 'pushConstantRangeCount' elements" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
Flags -> IO Flags
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags
pushConstantRangeCount)
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 (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Word32)) (Flags
pushConstantRangeCount'')
Ptr PushConstantRange
pPushConstantRanges'' <- if Vector PushConstantRange -> Bool
forall a. Vector a -> Bool
Data.Vector.null (Vector PushConstantRange
pushConstantRanges)
then Ptr PushConstantRange -> ContT b IO (Ptr PushConstantRange)
forall a. a -> ContT b IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr PushConstantRange
forall a. Ptr a
nullPtr
else do
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))
Ptr PushConstantRange -> ContT b IO (Ptr PushConstantRange)
forall a. a -> ContT b IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Ptr PushConstantRange -> ContT b IO (Ptr PushConstantRange))
-> Ptr PushConstantRange -> ContT b IO (Ptr PushConstantRange)
forall a b. (a -> b) -> a -> b
$ Ptr PushConstantRange
pPPushConstantRanges
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 (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr (Ptr PushConstantRange)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr (Ptr PushConstantRange))) Ptr PushConstantRange
pPushConstantRanges''
Ptr SpecializationInfo
pSpecializationInfo'' <- case (Maybe SpecializationInfo
specializationInfo) of
Maybe SpecializationInfo
Nothing -> Ptr SpecializationInfo -> ContT b IO (Ptr SpecializationInfo)
forall a. a -> ContT b IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr SpecializationInfo
forall a. Ptr a
nullPtr
Just SpecializationInfo
j -> ((Ptr SpecializationInfo -> IO b) -> IO b)
-> ContT b IO (Ptr SpecializationInfo)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr SpecializationInfo -> IO b) -> IO b)
-> ContT b IO (Ptr SpecializationInfo))
-> ((Ptr SpecializationInfo -> IO b) -> IO b)
-> ContT b IO (Ptr SpecializationInfo)
forall a b. (a -> b) -> a -> b
$ SpecializationInfo -> (Ptr SpecializationInfo -> IO b) -> IO b
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
SpecializationInfo -> (Ptr SpecializationInfo -> IO b) -> IO b
withCStruct (SpecializationInfo
j)
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 SpecializationInfo) -> Ptr SpecializationInfo -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr (Ptr SpecializationInfo)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr (Ptr SpecializationInfo))) Ptr SpecializationInfo
pSpecializationInfo''
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 (ShaderCreateInfoEXT es) -> IO b -> IO b
pokeZeroCStruct Ptr (ShaderCreateInfoEXT 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 (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SHADER_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 (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT 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 ShaderStageFlagBits -> ShaderStageFlagBits -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr ShaderStageFlagBits
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr ShaderStageFlagBits)) (ShaderStageFlagBits
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 ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr ShaderCodeTypeEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr ShaderCodeTypeEXT)) (ShaderCodeTypeEXT
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 CSize -> CSize -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr CSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr CSize)) (Word64 -> CSize
CSize (Word64
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 (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr (Ptr ()))) (Ptr ()
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 ShaderCreateInfoEXT es
, PeekChain es ) => FromCStruct (ShaderCreateInfoEXT es) where
peekCStruct :: Ptr (ShaderCreateInfoEXT es) -> IO (ShaderCreateInfoEXT es)
peekCStruct Ptr (ShaderCreateInfoEXT es)
p = do
Ptr ()
pNext <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr ()) ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT 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)
ShaderCreateFlagsEXT
flags <- forall a. Storable a => Ptr a -> IO a
peek @ShaderCreateFlagsEXT ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr ShaderCreateFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ShaderCreateFlagsEXT))
ShaderStageFlagBits
stage <- forall a. Storable a => Ptr a -> IO a
peek @ShaderStageFlagBits ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr ShaderStageFlagBits
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr ShaderStageFlagBits))
ShaderStageFlagBits
nextStage <- forall a. Storable a => Ptr a -> IO a
peek @ShaderStageFlags ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr ShaderStageFlagBits
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ShaderStageFlags))
ShaderCodeTypeEXT
codeType <- forall a. Storable a => Ptr a -> IO a
peek @ShaderCodeTypeEXT ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr ShaderCodeTypeEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr ShaderCodeTypeEXT))
CSize
codeSize <- forall a. Storable a => Ptr a -> IO a
peek @CSize ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr CSize
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr CSize))
Ptr ()
pCode <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr ()) ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr (Ptr ())))
Ptr CChar
pName <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr CChar) ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr (Ptr CChar)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr (Ptr CChar)))
Maybe ("data" ::: ByteString)
pName' <- (Ptr CChar -> IO ("data" ::: ByteString))
-> Ptr CChar -> IO (Maybe ("data" ::: ByteString))
forall a b. (Ptr a -> IO b) -> Ptr a -> IO (Maybe b)
maybePeek (\Ptr CChar
j -> Ptr CChar -> IO ("data" ::: ByteString)
packCString (Ptr CChar
j)) Ptr CChar
pName
Flags
setLayoutCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
56 :: Ptr Word32))
Ptr DescriptorSetLayout
pSetLayouts <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr DescriptorSetLayout) ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es)
-> Int -> Ptr (Ptr DescriptorSetLayout)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
64 :: Ptr (Ptr DescriptorSetLayout)))
let pSetLayoutsLength :: Int
pSetLayoutsLength = if Ptr DescriptorSetLayout
pSetLayouts Ptr DescriptorSetLayout -> Ptr DescriptorSetLayout -> Bool
forall a. Eq a => a -> a -> Bool
== Ptr DescriptorSetLayout
forall a. Ptr a
nullPtr then Int
0 else (Flags -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Flags
setLayoutCount)
Vector DescriptorSetLayout
pSetLayouts' <- Int
-> (Int -> IO DescriptorSetLayout)
-> IO (Vector DescriptorSetLayout)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM Int
pSetLayoutsLength (\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)))
Flags
pushConstantRangeCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr Flags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
72 :: Ptr Word32))
Ptr PushConstantRange
pPushConstantRanges <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr PushConstantRange) ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr (Ptr PushConstantRange)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
80 :: Ptr (Ptr PushConstantRange)))
let pPushConstantRangesLength :: Int
pPushConstantRangesLength = if Ptr PushConstantRange
pPushConstantRanges Ptr PushConstantRange -> Ptr PushConstantRange -> Bool
forall a. Eq a => a -> a -> Bool
== Ptr PushConstantRange
forall a. Ptr a
nullPtr then Int
0 else (Flags -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Flags
pushConstantRangeCount)
Vector PushConstantRange
pPushConstantRanges' <- Int
-> (Int -> IO PushConstantRange) -> IO (Vector PushConstantRange)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM Int
pPushConstantRangesLength (\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)))
Ptr SpecializationInfo
pSpecializationInfo <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr SpecializationInfo) ((Ptr (ShaderCreateInfoEXT es)
p Ptr (ShaderCreateInfoEXT es) -> Int -> Ptr (Ptr SpecializationInfo)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
88 :: Ptr (Ptr SpecializationInfo)))
Maybe SpecializationInfo
pSpecializationInfo' <- (Ptr SpecializationInfo -> IO SpecializationInfo)
-> Ptr SpecializationInfo -> IO (Maybe SpecializationInfo)
forall a b. (Ptr a -> IO b) -> Ptr a -> IO (Maybe b)
maybePeek (\Ptr SpecializationInfo
j -> forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @SpecializationInfo (Ptr SpecializationInfo
j)) Ptr SpecializationInfo
pSpecializationInfo
ShaderCreateInfoEXT es -> IO (ShaderCreateInfoEXT es)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ShaderCreateInfoEXT es -> IO (ShaderCreateInfoEXT es))
-> ShaderCreateInfoEXT es -> IO (ShaderCreateInfoEXT es)
forall a b. (a -> b) -> a -> b
$ Chain es
-> ShaderCreateFlagsEXT
-> ShaderStageFlagBits
-> ShaderStageFlagBits
-> ShaderCodeTypeEXT
-> Word64
-> Ptr ()
-> Maybe ("data" ::: ByteString)
-> Flags
-> Vector DescriptorSetLayout
-> Flags
-> Vector PushConstantRange
-> Maybe SpecializationInfo
-> ShaderCreateInfoEXT es
forall (es :: [*]).
Chain es
-> ShaderCreateFlagsEXT
-> ShaderStageFlagBits
-> ShaderStageFlagBits
-> ShaderCodeTypeEXT
-> Word64
-> Ptr ()
-> Maybe ("data" ::: ByteString)
-> Flags
-> Vector DescriptorSetLayout
-> Flags
-> Vector PushConstantRange
-> Maybe SpecializationInfo
-> ShaderCreateInfoEXT es
ShaderCreateInfoEXT
Chain es
next
ShaderCreateFlagsEXT
flags
ShaderStageFlagBits
stage
ShaderStageFlagBits
nextStage
ShaderCodeTypeEXT
codeType
(forall a b. Coercible a b => a -> b
forall a b. Coercible a b => a -> b
coerce @CSize @Word64 CSize
codeSize)
Ptr ()
pCode
Maybe ("data" ::: ByteString)
pName'
Flags
setLayoutCount
Vector DescriptorSetLayout
pSetLayouts'
Flags
pushConstantRangeCount
Vector PushConstantRange
pPushConstantRanges'
Maybe SpecializationInfo
pSpecializationInfo'
instance es ~ '[] => Zero (ShaderCreateInfoEXT es) where
zero :: ShaderCreateInfoEXT es
zero = Chain es
-> ShaderCreateFlagsEXT
-> ShaderStageFlagBits
-> ShaderStageFlagBits
-> ShaderCodeTypeEXT
-> Word64
-> Ptr ()
-> Maybe ("data" ::: ByteString)
-> Flags
-> Vector DescriptorSetLayout
-> Flags
-> Vector PushConstantRange
-> Maybe SpecializationInfo
-> ShaderCreateInfoEXT es
forall (es :: [*]).
Chain es
-> ShaderCreateFlagsEXT
-> ShaderStageFlagBits
-> ShaderStageFlagBits
-> ShaderCodeTypeEXT
-> Word64
-> Ptr ()
-> Maybe ("data" ::: ByteString)
-> Flags
-> Vector DescriptorSetLayout
-> Flags
-> Vector PushConstantRange
-> Maybe SpecializationInfo
-> ShaderCreateInfoEXT es
ShaderCreateInfoEXT
()
ShaderCreateFlagsEXT
forall a. Zero a => a
zero
ShaderStageFlagBits
forall a. Zero a => a
zero
ShaderStageFlagBits
forall a. Zero a => a
zero
ShaderCodeTypeEXT
forall a. Zero a => a
zero
Word64
forall a. Zero a => a
zero
Ptr ()
forall a. Zero a => a
zero
Maybe ("data" ::: ByteString)
forall a. Maybe a
Nothing
Flags
forall a. Zero a => a
zero
Vector DescriptorSetLayout
forall a. Monoid a => a
mempty
Flags
forall a. Zero a => a
zero
Vector PushConstantRange
forall a. Monoid a => a
mempty
Maybe SpecializationInfo
forall a. Maybe a
Nothing
type ShaderCreateFlagsEXT = ShaderCreateFlagBitsEXT
newtype ShaderCreateFlagBitsEXT = ShaderCreateFlagBitsEXT Flags
deriving newtype (ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool
(ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool)
-> (ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool)
-> Eq ShaderCreateFlagsEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool
== :: ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool
$c/= :: ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool
/= :: ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool
Eq, Eq ShaderCreateFlagsEXT
Eq ShaderCreateFlagsEXT =>
(ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Ordering)
-> (ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool)
-> (ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool)
-> (ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool)
-> (ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool)
-> (ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT)
-> (ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT)
-> Ord ShaderCreateFlagsEXT
ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool
ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Ordering
ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Ordering
compare :: ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Ordering
$c< :: ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool
< :: ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool
$c<= :: ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool
<= :: ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool
$c> :: ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool
> :: ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool
$c>= :: ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool
>= :: ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> Bool
$cmax :: ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT
max :: ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT
$cmin :: ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT
min :: ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT
Ord, Ptr ShaderCreateFlagsEXT -> IO ShaderCreateFlagsEXT
Ptr ShaderCreateFlagsEXT -> Int -> IO ShaderCreateFlagsEXT
Ptr ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT -> IO ()
Ptr ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> IO ()
ShaderCreateFlagsEXT -> Int
(ShaderCreateFlagsEXT -> Int)
-> (ShaderCreateFlagsEXT -> Int)
-> (Ptr ShaderCreateFlagsEXT -> Int -> IO ShaderCreateFlagsEXT)
-> (Ptr ShaderCreateFlagsEXT
-> Int -> ShaderCreateFlagsEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO ShaderCreateFlagsEXT)
-> (forall b. Ptr b -> Int -> ShaderCreateFlagsEXT -> IO ())
-> (Ptr ShaderCreateFlagsEXT -> IO ShaderCreateFlagsEXT)
-> (Ptr ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> IO ())
-> Storable ShaderCreateFlagsEXT
forall b. Ptr b -> Int -> IO ShaderCreateFlagsEXT
forall b. Ptr b -> Int -> ShaderCreateFlagsEXT -> 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 :: ShaderCreateFlagsEXT -> Int
sizeOf :: ShaderCreateFlagsEXT -> Int
$calignment :: ShaderCreateFlagsEXT -> Int
alignment :: ShaderCreateFlagsEXT -> Int
$cpeekElemOff :: Ptr ShaderCreateFlagsEXT -> Int -> IO ShaderCreateFlagsEXT
peekElemOff :: Ptr ShaderCreateFlagsEXT -> Int -> IO ShaderCreateFlagsEXT
$cpokeElemOff :: Ptr ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT -> IO ()
pokeElemOff :: Ptr ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ShaderCreateFlagsEXT
peekByteOff :: forall b. Ptr b -> Int -> IO ShaderCreateFlagsEXT
$cpokeByteOff :: forall b. Ptr b -> Int -> ShaderCreateFlagsEXT -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> ShaderCreateFlagsEXT -> IO ()
$cpeek :: Ptr ShaderCreateFlagsEXT -> IO ShaderCreateFlagsEXT
peek :: Ptr ShaderCreateFlagsEXT -> IO ShaderCreateFlagsEXT
$cpoke :: Ptr ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> IO ()
poke :: Ptr ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT -> IO ()
Storable, ShaderCreateFlagsEXT
ShaderCreateFlagsEXT -> Zero ShaderCreateFlagsEXT
forall a. a -> Zero a
$czero :: ShaderCreateFlagsEXT
zero :: ShaderCreateFlagsEXT
Zero, Eq ShaderCreateFlagsEXT
ShaderCreateFlagsEXT
Eq ShaderCreateFlagsEXT =>
(ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT)
-> (ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT)
-> (ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT)
-> (ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT)
-> (ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT)
-> (ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT)
-> ShaderCreateFlagsEXT
-> (Int -> ShaderCreateFlagsEXT)
-> (ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT)
-> (ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT)
-> (ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT)
-> (ShaderCreateFlagsEXT -> Int -> Bool)
-> (ShaderCreateFlagsEXT -> Maybe Int)
-> (ShaderCreateFlagsEXT -> Int)
-> (ShaderCreateFlagsEXT -> Bool)
-> (ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT)
-> (ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT)
-> (ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT)
-> (ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT)
-> (ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT)
-> (ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT)
-> (ShaderCreateFlagsEXT -> Int)
-> Bits ShaderCreateFlagsEXT
Int -> ShaderCreateFlagsEXT
ShaderCreateFlagsEXT -> Bool
ShaderCreateFlagsEXT -> Int
ShaderCreateFlagsEXT -> Maybe Int
ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT
ShaderCreateFlagsEXT -> Int -> Bool
ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT
.&. :: ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT
$c.|. :: ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT
.|. :: ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT
$cxor :: ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT
xor :: ShaderCreateFlagsEXT
-> ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT
$ccomplement :: ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT
complement :: ShaderCreateFlagsEXT -> ShaderCreateFlagsEXT
$cshift :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
shift :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
$crotate :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
rotate :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
$czeroBits :: ShaderCreateFlagsEXT
zeroBits :: ShaderCreateFlagsEXT
$cbit :: Int -> ShaderCreateFlagsEXT
bit :: Int -> ShaderCreateFlagsEXT
$csetBit :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
setBit :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
$cclearBit :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
clearBit :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
$ccomplementBit :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
complementBit :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
$ctestBit :: ShaderCreateFlagsEXT -> Int -> Bool
testBit :: ShaderCreateFlagsEXT -> Int -> Bool
$cbitSizeMaybe :: ShaderCreateFlagsEXT -> Maybe Int
bitSizeMaybe :: ShaderCreateFlagsEXT -> Maybe Int
$cbitSize :: ShaderCreateFlagsEXT -> Int
bitSize :: ShaderCreateFlagsEXT -> Int
$cisSigned :: ShaderCreateFlagsEXT -> Bool
isSigned :: ShaderCreateFlagsEXT -> Bool
$cshiftL :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
shiftL :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
$cunsafeShiftL :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
unsafeShiftL :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
$cshiftR :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
shiftR :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
$cunsafeShiftR :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
unsafeShiftR :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
$crotateL :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
rotateL :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
$crotateR :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
rotateR :: ShaderCreateFlagsEXT -> Int -> ShaderCreateFlagsEXT
$cpopCount :: ShaderCreateFlagsEXT -> Int
popCount :: ShaderCreateFlagsEXT -> Int
Bits, Bits ShaderCreateFlagsEXT
Bits ShaderCreateFlagsEXT =>
(ShaderCreateFlagsEXT -> Int)
-> (ShaderCreateFlagsEXT -> Int)
-> (ShaderCreateFlagsEXT -> Int)
-> FiniteBits ShaderCreateFlagsEXT
ShaderCreateFlagsEXT -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: ShaderCreateFlagsEXT -> Int
finiteBitSize :: ShaderCreateFlagsEXT -> Int
$ccountLeadingZeros :: ShaderCreateFlagsEXT -> Int
countLeadingZeros :: ShaderCreateFlagsEXT -> Int
$ccountTrailingZeros :: ShaderCreateFlagsEXT -> Int
countTrailingZeros :: ShaderCreateFlagsEXT -> Int
FiniteBits)
pattern $bSHADER_CREATE_LINK_STAGE_BIT_EXT :: ShaderCreateFlagsEXT
$mSHADER_CREATE_LINK_STAGE_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
SHADER_CREATE_LINK_STAGE_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000001
pattern $bSHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT :: ShaderCreateFlagsEXT
$mSHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000040
pattern $bSHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT :: ShaderCreateFlagsEXT
$mSHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000020
pattern $bSHADER_CREATE_DISPATCH_BASE_BIT_EXT :: ShaderCreateFlagsEXT
$mSHADER_CREATE_DISPATCH_BASE_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
SHADER_CREATE_DISPATCH_BASE_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000010
pattern $bSHADER_CREATE_NO_TASK_SHADER_BIT_EXT :: ShaderCreateFlagsEXT
$mSHADER_CREATE_NO_TASK_SHADER_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000008
pattern $bSHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT :: ShaderCreateFlagsEXT
$mSHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000004
pattern $bSHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT :: ShaderCreateFlagsEXT
$mSHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000002
conNameShaderCreateFlagBitsEXT :: String
conNameShaderCreateFlagBitsEXT :: String
conNameShaderCreateFlagBitsEXT = String
"ShaderCreateFlagBitsEXT"
enumPrefixShaderCreateFlagBitsEXT :: String
enumPrefixShaderCreateFlagBitsEXT :: String
enumPrefixShaderCreateFlagBitsEXT = String
"SHADER_CREATE_"
showTableShaderCreateFlagBitsEXT :: [(ShaderCreateFlagBitsEXT, String)]
showTableShaderCreateFlagBitsEXT :: [(ShaderCreateFlagsEXT, String)]
showTableShaderCreateFlagBitsEXT =
[
( ShaderCreateFlagsEXT
SHADER_CREATE_LINK_STAGE_BIT_EXT
, String
"LINK_STAGE_BIT_EXT"
)
,
( ShaderCreateFlagsEXT
SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
, String
"FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"
)
,
( ShaderCreateFlagsEXT
SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT
, String
"FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT"
)
,
( ShaderCreateFlagsEXT
SHADER_CREATE_DISPATCH_BASE_BIT_EXT
, String
"DISPATCH_BASE_BIT_EXT"
)
,
( ShaderCreateFlagsEXT
SHADER_CREATE_NO_TASK_SHADER_BIT_EXT
, String
"NO_TASK_SHADER_BIT_EXT"
)
,
( ShaderCreateFlagsEXT
SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
, String
"REQUIRE_FULL_SUBGROUPS_BIT_EXT"
)
,
( ShaderCreateFlagsEXT
SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
, String
"ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT"
)
]
instance Show ShaderCreateFlagBitsEXT where
showsPrec :: Int -> ShaderCreateFlagsEXT -> ShowS
showsPrec =
String
-> [(ShaderCreateFlagsEXT, String)]
-> String
-> (ShaderCreateFlagsEXT -> Flags)
-> (Flags -> ShowS)
-> Int
-> ShaderCreateFlagsEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
String
enumPrefixShaderCreateFlagBitsEXT
[(ShaderCreateFlagsEXT, String)]
showTableShaderCreateFlagBitsEXT
String
conNameShaderCreateFlagBitsEXT
(\(ShaderCreateFlagBitsEXT 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 ShaderCreateFlagBitsEXT where
readPrec :: ReadPrec ShaderCreateFlagsEXT
readPrec =
String
-> [(ShaderCreateFlagsEXT, String)]
-> String
-> (Flags -> ShaderCreateFlagsEXT)
-> ReadPrec ShaderCreateFlagsEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
String
enumPrefixShaderCreateFlagBitsEXT
[(ShaderCreateFlagsEXT, String)]
showTableShaderCreateFlagBitsEXT
String
conNameShaderCreateFlagBitsEXT
Flags -> ShaderCreateFlagsEXT
ShaderCreateFlagBitsEXT
newtype ShaderCodeTypeEXT = ShaderCodeTypeEXT Int32
deriving newtype (ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool
(ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool)
-> (ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool)
-> Eq ShaderCodeTypeEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool
== :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool
$c/= :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool
/= :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool
Eq, Eq ShaderCodeTypeEXT
Eq ShaderCodeTypeEXT =>
(ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Ordering)
-> (ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool)
-> (ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool)
-> (ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool)
-> (ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool)
-> (ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> ShaderCodeTypeEXT)
-> (ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> ShaderCodeTypeEXT)
-> Ord ShaderCodeTypeEXT
ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool
ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Ordering
ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> ShaderCodeTypeEXT
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Ordering
compare :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Ordering
$c< :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool
< :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool
$c<= :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool
<= :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool
$c> :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool
> :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool
$c>= :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool
>= :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> Bool
$cmax :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> ShaderCodeTypeEXT
max :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> ShaderCodeTypeEXT
$cmin :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> ShaderCodeTypeEXT
min :: ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> ShaderCodeTypeEXT
Ord, Ptr ShaderCodeTypeEXT -> IO ShaderCodeTypeEXT
Ptr ShaderCodeTypeEXT -> Int -> IO ShaderCodeTypeEXT
Ptr ShaderCodeTypeEXT -> Int -> ShaderCodeTypeEXT -> IO ()
Ptr ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> IO ()
ShaderCodeTypeEXT -> Int
(ShaderCodeTypeEXT -> Int)
-> (ShaderCodeTypeEXT -> Int)
-> (Ptr ShaderCodeTypeEXT -> Int -> IO ShaderCodeTypeEXT)
-> (Ptr ShaderCodeTypeEXT -> Int -> ShaderCodeTypeEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO ShaderCodeTypeEXT)
-> (forall b. Ptr b -> Int -> ShaderCodeTypeEXT -> IO ())
-> (Ptr ShaderCodeTypeEXT -> IO ShaderCodeTypeEXT)
-> (Ptr ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> IO ())
-> Storable ShaderCodeTypeEXT
forall b. Ptr b -> Int -> IO ShaderCodeTypeEXT
forall b. Ptr b -> Int -> ShaderCodeTypeEXT -> 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 :: ShaderCodeTypeEXT -> Int
sizeOf :: ShaderCodeTypeEXT -> Int
$calignment :: ShaderCodeTypeEXT -> Int
alignment :: ShaderCodeTypeEXT -> Int
$cpeekElemOff :: Ptr ShaderCodeTypeEXT -> Int -> IO ShaderCodeTypeEXT
peekElemOff :: Ptr ShaderCodeTypeEXT -> Int -> IO ShaderCodeTypeEXT
$cpokeElemOff :: Ptr ShaderCodeTypeEXT -> Int -> ShaderCodeTypeEXT -> IO ()
pokeElemOff :: Ptr ShaderCodeTypeEXT -> Int -> ShaderCodeTypeEXT -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ShaderCodeTypeEXT
peekByteOff :: forall b. Ptr b -> Int -> IO ShaderCodeTypeEXT
$cpokeByteOff :: forall b. Ptr b -> Int -> ShaderCodeTypeEXT -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> ShaderCodeTypeEXT -> IO ()
$cpeek :: Ptr ShaderCodeTypeEXT -> IO ShaderCodeTypeEXT
peek :: Ptr ShaderCodeTypeEXT -> IO ShaderCodeTypeEXT
$cpoke :: Ptr ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> IO ()
poke :: Ptr ShaderCodeTypeEXT -> ShaderCodeTypeEXT -> IO ()
Storable, ShaderCodeTypeEXT
ShaderCodeTypeEXT -> Zero ShaderCodeTypeEXT
forall a. a -> Zero a
$czero :: ShaderCodeTypeEXT
zero :: ShaderCodeTypeEXT
Zero)
pattern $bSHADER_CODE_TYPE_BINARY_EXT :: ShaderCodeTypeEXT
$mSHADER_CODE_TYPE_BINARY_EXT :: forall {r}. ShaderCodeTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
SHADER_CODE_TYPE_BINARY_EXT = ShaderCodeTypeEXT 0
pattern $bSHADER_CODE_TYPE_SPIRV_EXT :: ShaderCodeTypeEXT
$mSHADER_CODE_TYPE_SPIRV_EXT :: forall {r}. ShaderCodeTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
SHADER_CODE_TYPE_SPIRV_EXT = ShaderCodeTypeEXT 1
{-# COMPLETE
SHADER_CODE_TYPE_BINARY_EXT
, SHADER_CODE_TYPE_SPIRV_EXT ::
ShaderCodeTypeEXT
#-}
conNameShaderCodeTypeEXT :: String
conNameShaderCodeTypeEXT :: String
conNameShaderCodeTypeEXT = String
"ShaderCodeTypeEXT"
enumPrefixShaderCodeTypeEXT :: String
enumPrefixShaderCodeTypeEXT :: String
enumPrefixShaderCodeTypeEXT = String
"SHADER_CODE_TYPE_"
showTableShaderCodeTypeEXT :: [(ShaderCodeTypeEXT, String)]
showTableShaderCodeTypeEXT :: [(ShaderCodeTypeEXT, String)]
showTableShaderCodeTypeEXT =
[ (ShaderCodeTypeEXT
SHADER_CODE_TYPE_BINARY_EXT, String
"BINARY_EXT")
, (ShaderCodeTypeEXT
SHADER_CODE_TYPE_SPIRV_EXT, String
"SPIRV_EXT")
]
instance Show ShaderCodeTypeEXT where
showsPrec :: Int -> ShaderCodeTypeEXT -> ShowS
showsPrec =
String
-> [(ShaderCodeTypeEXT, String)]
-> String
-> (ShaderCodeTypeEXT -> Int32)
-> (Int32 -> ShowS)
-> Int
-> ShaderCodeTypeEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
String
enumPrefixShaderCodeTypeEXT
[(ShaderCodeTypeEXT, String)]
showTableShaderCodeTypeEXT
String
conNameShaderCodeTypeEXT
(\(ShaderCodeTypeEXT Int32
x) -> Int32
x)
(Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
11)
instance Read ShaderCodeTypeEXT where
readPrec :: ReadPrec ShaderCodeTypeEXT
readPrec =
String
-> [(ShaderCodeTypeEXT, String)]
-> String
-> (Int32 -> ShaderCodeTypeEXT)
-> ReadPrec ShaderCodeTypeEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
String
enumPrefixShaderCodeTypeEXT
[(ShaderCodeTypeEXT, String)]
showTableShaderCodeTypeEXT
String
conNameShaderCodeTypeEXT
Int32 -> ShaderCodeTypeEXT
ShaderCodeTypeEXT
type ShaderRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfo
type EXT_SHADER_OBJECT_SPEC_VERSION = 1
pattern EXT_SHADER_OBJECT_SPEC_VERSION :: forall a . Integral a => a
pattern $bEXT_SHADER_OBJECT_SPEC_VERSION :: forall a. Integral a => a
$mEXT_SHADER_OBJECT_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_SHADER_OBJECT_SPEC_VERSION = 1
type EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object"
pattern EXT_SHADER_OBJECT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bEXT_SHADER_OBJECT_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mEXT_SHADER_OBJECT_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object"