{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_shader_object ( createShadersEXT
, withShadersEXT
, destroyShaderEXT
, getShaderBinaryDataEXT
, cmdBindShadersEXT
, pattern STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT
, pattern ERROR_INCOMPATIBLE_SHADER_BINARY_EXT
, PhysicalDeviceShaderObjectFeaturesEXT(..)
, PhysicalDeviceShaderObjectPropertiesEXT(..)
, ShaderCreateInfoEXT(..)
, ShaderCreateFlagsEXT
, ShaderCreateFlagBitsEXT( SHADER_CREATE_LINK_STAGE_BIT_EXT
, SHADER_CREATE_64_BIT_INDEXING_BIT_EXT
, SHADER_CREATE_INDIRECT_BINDABLE_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
, SHADER_CREATE_DESCRIPTOR_HEAP_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(..)
, DepthClampRangeEXT(..)
, 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
, cmdSetDepthClampRangeEXT
, ViewportCoordinateSwizzleNV(..)
, BlendOverlapEXT(..)
, CoverageModulationModeNV(..)
, CoverageReductionModeNV(..)
, ConservativeRasterizationModeEXT(..)
, ProvokingVertexModeEXT(..)
, DepthClampModeEXT(..)
, LineRasterizationModeEXT
, 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 {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_resolve (CustomResolveCreateInfoEXT)
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 {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_heap (ShaderDescriptorSetAndBindingMappingInfoEXT)
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.ComputePipeline (SpecializationInfo)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.APIConstants (UUID_SIZE)
import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_features (ValidationFeaturesEXT)
import Vulkan.Exception (VulkanException(..))
import Vulkan.Core10.Enums.Result (Result(INCOMPATIBLE_SHADER_BINARY_EXT))
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_depth_clamp_control (cmdSetDepthClampRangeEXT)
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_depth_clamp_control (DepthClampModeEXT(..))
import Vulkan.Extensions.VK_EXT_depth_clamp_control (DepthClampRangeEXT(..))
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 (Result, ("shaders" ::: Vector ShaderEXT))
createShadersEXT :: forall (io :: * -> *).
MonadIO io =>
Device
-> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io (Result, "shaders" ::: Vector ShaderEXT)
createShadersEXT Device
device "createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)
createInfos "allocator" ::: Maybe AllocationCallbacks
allocator = IO (Result, "shaders" ::: Vector ShaderEXT)
-> io (Result, "shaders" ::: Vector ShaderEXT)
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Result, "shaders" ::: Vector ShaderEXT)
-> io (Result, "shaders" ::: Vector ShaderEXT))
-> (ContT
(Result, "shaders" ::: Vector ShaderEXT)
IO
(Result, "shaders" ::: Vector ShaderEXT)
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> ContT
(Result, "shaders" ::: Vector ShaderEXT)
IO
(Result, "shaders" ::: Vector ShaderEXT)
-> io (Result, "shaders" ::: Vector ShaderEXT)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT
(Result, "shaders" ::: Vector ShaderEXT)
IO
(Result, "shaders" ::: Vector ShaderEXT)
-> IO (Result, "shaders" ::: Vector ShaderEXT)
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT
(Result, "shaders" ::: Vector ShaderEXT)
IO
(Result, "shaders" ::: Vector ShaderEXT)
-> io (Result, "shaders" ::: Vector ShaderEXT))
-> ContT
(Result, "shaders" ::: Vector ShaderEXT)
IO
(Result, "shaders" ::: Vector ShaderEXT)
-> io (Result, "shaders" ::: Vector ShaderEXT)
forall a b. (a -> b) -> a -> b
$ do
let vkCreateShadersEXTPtr :: FunPtr
(Ptr Device_T
-> Word32
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result)
vkCreateShadersEXTPtr = DeviceCmds
-> FunPtr
(Ptr Device_T
-> Word32
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result)
pVkCreateShadersEXT (case Device
device of Device{DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds :: Device -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
IO () -> ContT (Result, "shaders" ::: Vector ShaderEXT) IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT (Result, "shaders" ::: Vector ShaderEXT) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT (Result, "shaders" ::: Vector ShaderEXT) IO ())
-> IO () -> ContT (Result, "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
-> Word32
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result)
vkCreateShadersEXTPtr FunPtr
(Ptr Device_T
-> Word32
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result)
-> FunPtr
(Ptr Device_T
-> Word32
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr Device_T
-> Word32
-> 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. (HasCallStack, 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
-> Word32
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result
vkCreateShadersEXT' = 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
mkVkCreateShadersEXT FunPtr
(Ptr Device_T
-> Word32
-> Ptr (SomeStruct ShaderCreateInfoEXT)
-> Ptr AllocationCallbacks
-> Ptr ShaderEXT
-> IO Result)
vkCreateShadersEXTPtr
pPCreateInfos <- ((Ptr (ShaderCreateInfoEXT (ZonkAny 0))
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> ContT
(Result, "shaders" ::: Vector ShaderEXT)
IO
(Ptr (ShaderCreateInfoEXT (ZonkAny 0)))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (ShaderCreateInfoEXT (ZonkAny 0))
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> ContT
(Result, "shaders" ::: Vector ShaderEXT)
IO
(Ptr (ShaderCreateInfoEXT (ZonkAny 0))))
-> ((Ptr (ShaderCreateInfoEXT (ZonkAny 0))
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> ContT
(Result, "shaders" ::: Vector ShaderEXT)
IO
(Ptr (ShaderCreateInfoEXT (ZonkAny 0)))
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)
Data.Vector.imapM_ (\Int
i SomeStruct ShaderCreateInfoEXT
e -> ((() -> IO (Result, "shaders" ::: Vector ShaderEXT))
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> ContT (Result, "shaders" ::: Vector ShaderEXT) IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO (Result, "shaders" ::: Vector ShaderEXT))
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> ContT (Result, "shaders" ::: Vector ShaderEXT) IO ())
-> ((() -> IO (Result, "shaders" ::: Vector ShaderEXT))
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> ContT (Result, "shaders" ::: Vector ShaderEXT) IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (SomeStruct ShaderCreateInfoEXT)
-> SomeStruct ShaderCreateInfoEXT
-> IO (Result, "shaders" ::: Vector ShaderEXT)
-> IO (Result, "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 (ZonkAny 1))
-> Ptr (SomeStruct ShaderCreateInfoEXT)
forall (a :: [*] -> *) (es :: [*]).
Ptr (a es) -> Ptr (SomeStruct a)
forgetExtensions (Ptr (ShaderCreateInfoEXT (ZonkAny 0))
pPCreateInfos Ptr (ShaderCreateInfoEXT (ZonkAny 0))
-> 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 (Result, "shaders" ::: Vector ShaderEXT)
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> ((() -> IO (Result, "shaders" ::: Vector ShaderEXT))
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> (() -> IO (Result, "shaders" ::: Vector ShaderEXT))
-> IO (Result, "shaders" ::: Vector ShaderEXT)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO (Result, "shaders" ::: Vector ShaderEXT))
-> () -> IO (Result, "shaders" ::: Vector ShaderEXT)
forall a b. (a -> b) -> a -> b
$ ())) (createInfos)
pAllocator <- case (allocator) of
"allocator" ::: Maybe AllocationCallbacks
Nothing -> Ptr AllocationCallbacks
-> ContT
(Result, "shaders" ::: Vector ShaderEXT)
IO
(Ptr AllocationCallbacks)
forall a. a -> ContT (Result, "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 (Result, "shaders" ::: Vector ShaderEXT))
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> ContT
(Result, "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 (Result, "shaders" ::: Vector ShaderEXT))
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> ContT
(Result, "shaders" ::: Vector ShaderEXT)
IO
(Ptr AllocationCallbacks))
-> ((Ptr AllocationCallbacks
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> ContT
(Result, "shaders" ::: Vector ShaderEXT)
IO
(Ptr AllocationCallbacks)
forall a b. (a -> b) -> a -> b
$ AllocationCallbacks
-> (Ptr AllocationCallbacks
-> IO (Result, "shaders" ::: Vector ShaderEXT))
-> IO (Result, "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)
pPShaders <- ContT $ bracket (callocBytes @ShaderEXT ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free
r <- lift $ traceAroundEvent "vkCreateShadersEXT" (vkCreateShadersEXT'
(deviceHandle (device))
((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))
(forgetExtensions (pPCreateInfos))
pAllocator
(pPShaders))
lift $ when (r < SUCCESS) (throwIO (VulkanException r))
pShaders <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (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)))
pure $ (r, pShaders)
withShadersEXT :: forall io r . MonadIO io => Device -> Vector (SomeStruct ShaderCreateInfoEXT) -> Maybe AllocationCallbacks -> (io (Result, Vector ShaderEXT) -> ((Result, Vector ShaderEXT) -> io ()) -> r) -> r
withShadersEXT :: forall (io :: * -> *) r.
MonadIO io =>
Device
-> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
-> ("allocator" ::: Maybe AllocationCallbacks)
-> (io (Result, "shaders" ::: Vector ShaderEXT)
-> ((Result, "shaders" ::: Vector ShaderEXT) -> io ()) -> r)
-> r
withShadersEXT Device
device "createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)
pCreateInfos "allocator" ::: Maybe AllocationCallbacks
pAllocator io (Result, "shaders" ::: Vector ShaderEXT)
-> ((Result, "shaders" ::: Vector ShaderEXT) -> io ()) -> r
b =
io (Result, "shaders" ::: Vector ShaderEXT)
-> ((Result, "shaders" ::: Vector ShaderEXT) -> io ()) -> r
b (Device
-> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io (Result, "shaders" ::: Vector ShaderEXT)
forall (io :: * -> *).
MonadIO io =>
Device
-> ("createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT))
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io (Result, "shaders" ::: Vector ShaderEXT)
createShadersEXT Device
device "createInfos" ::: Vector (SomeStruct ShaderCreateInfoEXT)
pCreateInfos "allocator" ::: Maybe AllocationCallbacks
pAllocator)
(\(Result
_, "shaders" ::: Vector ShaderEXT
o1) -> (ShaderEXT -> io ()) -> ("shaders" ::: Vector ShaderEXT) -> io ()
forall (t :: * -> *) (f :: * -> *) a b.
(Foldable t, Applicative f) =>
(a -> f b) -> t a -> f ()
traverse_ (\ShaderEXT
o1Elem -> Device
-> ShaderEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
forall (io :: * -> *).
MonadIO io =>
Device
-> ShaderEXT
-> ("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroyShaderEXT Device
device
ShaderEXT
o1Elem
"allocator" ::: Maybe AllocationCallbacks
pAllocator) "shaders" ::: Vector ShaderEXT
o1)
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
deviceCmds :: 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. (HasCallStack, 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
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)
lift $ traceAroundEvent "vkDestroyShaderEXT" (vkDestroyShaderEXT'
(deviceHandle (device))
(shader)
pAllocator)
pure $ ()
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
deviceCmds :: 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. (HasCallStack, 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)
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
r <- lift $ traceAroundEvent "vkGetShaderBinaryDataEXT" (vkGetShaderBinaryDataEXT'
device'
(shader)
(pPDataSize)
(nullPtr))
lift $ when (r < SUCCESS) (throwIO (VulkanException r))
pDataSize <- lift $ peek @CSize pPDataSize
pPData <- ContT $ bracket (callocBytes @(()) (fromIntegral ((coerce @CSize @Word64 pDataSize)))) free
r' <- lift $ traceAroundEvent "vkGetShaderBinaryDataEXT" (vkGetShaderBinaryDataEXT'
device'
(shader)
(pPDataSize)
(pPData))
lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))
pDataSize'' <- lift $ peek @CSize pPDataSize
pData' <- lift $ packCStringLen ( castPtr @() @CChar pPData
, (fromIntegral ((coerce @CSize @Word64 pDataSize''))) )
pure $ ((r'), 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
-> Word32 -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ())
vkCmdBindShadersEXTPtr = DeviceCmds
-> FunPtr
(Ptr CommandBuffer_T
-> Word32 -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ())
pVkCmdBindShadersEXT (case CommandBuffer
commandBuffer of CommandBuffer{DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds :: 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
-> Word32 -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ())
vkCmdBindShadersEXTPtr FunPtr
(Ptr CommandBuffer_T
-> Word32 -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ())
-> FunPtr
(Ptr CommandBuffer_T
-> Word32 -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
(Ptr CommandBuffer_T
-> Word32 -> 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. (HasCallStack, 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
-> Word32 -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ()
vkCmdBindShadersEXT' = FunPtr
(Ptr CommandBuffer_T
-> Word32 -> Ptr ShaderStageFlagBits -> Ptr ShaderEXT -> IO ())
-> Ptr CommandBuffer_T
-> Word32
-> Ptr ShaderStageFlagBits
-> Ptr ShaderEXT
-> IO ()
mkVkCmdBindShadersEXT FunPtr
(Ptr CommandBuffer_T
-> Word32 -> 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. (HasCallStack, 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
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)
lift $ 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)
pShaders <- if Data.Vector.null (shaders)
then pure nullPtr
else do
pPShaders <- ContT $ allocaBytes @ShaderEXT (((Data.Vector.length (shaders))) * 8)
lift $ 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))
pure $ pPShaders
lift $ traceAroundEvent "vkCmdBindShadersEXT" (vkCmdBindShadersEXT'
(commandBufferHandle (commandBuffer))
((fromIntegral pStagesLength :: Word32))
(pPStages)
pShaders)
pure $ ()
pattern $mSTRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSTRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT :: StructureType
STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO
pattern $mERROR_INCOMPATIBLE_SHADER_BINARY_EXT :: forall {r}. Result -> ((# #) -> r) -> ((# #) -> r) -> r
$bERROR_INCOMPATIBLE_SHADER_BINARY_EXT :: Result
ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = INCOMPATIBLE_SHADER_BINARY_EXT
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
shaderObject :: 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
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))
pure $ PhysicalDeviceShaderObjectFeaturesEXT
(bool32ToBool 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 -> Word32
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{Word32
"data" ::: ByteString
shaderBinaryUUID :: PhysicalDeviceShaderObjectPropertiesEXT -> "data" ::: ByteString
shaderBinaryVersion :: PhysicalDeviceShaderObjectPropertiesEXT -> Word32
shaderBinaryUUID :: "data" ::: ByteString
shaderBinaryVersion :: Word32
..} 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 Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderObjectPropertiesEXT
p Ptr PhysicalDeviceShaderObjectPropertiesEXT -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32)) (Word32
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 Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceShaderObjectPropertiesEXT
p Ptr PhysicalDeviceShaderObjectPropertiesEXT -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
IO b
f
instance FromCStruct PhysicalDeviceShaderObjectPropertiesEXT where
peekCStruct :: Ptr PhysicalDeviceShaderObjectPropertiesEXT
-> IO PhysicalDeviceShaderObjectPropertiesEXT
peekCStruct Ptr PhysicalDeviceShaderObjectPropertiesEXT
p = do
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)))
shaderBinaryVersion <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
pure $ PhysicalDeviceShaderObjectPropertiesEXT
shaderBinaryUUID 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)
-> Word32 -> PhysicalDeviceShaderObjectPropertiesEXT
PhysicalDeviceShaderObjectPropertiesEXT
"data" ::: ByteString
forall a. Monoid a => a
mempty
Word32
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 -> Word32
setLayoutCount :: Word32
,
forall (es :: [*]).
ShaderCreateInfoEXT es -> Vector DescriptorSetLayout
setLayouts :: Vector DescriptorSetLayout
,
forall (es :: [*]). ShaderCreateInfoEXT es -> Word32
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
Word32
Word64
Ptr ()
Vector PushConstantRange
Vector DescriptorSetLayout
ShaderStageFlagBits
Chain ds
ShaderCodeTypeEXT
ShaderCreateFlagsEXT
next :: forall (es :: [*]). ShaderCreateInfoEXT es -> Chain es
flags :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderCreateFlagsEXT
stage :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderStageFlagBits
nextStage :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderStageFlagBits
codeType :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderCodeTypeEXT
codeSize :: forall (es :: [*]). ShaderCreateInfoEXT es -> Word64
code :: forall (es :: [*]). ShaderCreateInfoEXT es -> Ptr ()
name :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Maybe ("data" ::: ByteString)
setLayoutCount :: forall (es :: [*]). ShaderCreateInfoEXT es -> Word32
setLayouts :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Vector DescriptorSetLayout
pushConstantRangeCount :: forall (es :: [*]). ShaderCreateInfoEXT es -> Word32
pushConstantRanges :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Vector PushConstantRange
specializationInfo :: 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 :: Word32
setLayouts :: Vector DescriptorSetLayout
pushConstantRangeCount :: Word32
pushConstantRanges :: Vector PushConstantRange
specializationInfo :: Maybe SpecializationInfo
..} Chain es
next' = ShaderCreateInfoEXT{next :: Chain es
next = Chain es
next', Maybe ("data" ::: ByteString)
Maybe SpecializationInfo
Word32
Word64
Ptr ()
Vector PushConstantRange
Vector DescriptorSetLayout
ShaderStageFlagBits
ShaderCodeTypeEXT
ShaderCreateFlagsEXT
flags :: ShaderCreateFlagsEXT
stage :: ShaderStageFlagBits
nextStage :: ShaderStageFlagBits
codeType :: ShaderCodeTypeEXT
codeSize :: Word64
code :: Ptr ()
name :: Maybe ("data" ::: ByteString)
setLayoutCount :: Word32
setLayouts :: Vector DescriptorSetLayout
pushConstantRangeCount :: Word32
pushConstantRanges :: Vector PushConstantRange
specializationInfo :: Maybe SpecializationInfo
flags :: ShaderCreateFlagsEXT
stage :: ShaderStageFlagBits
nextStage :: ShaderStageFlagBits
codeType :: ShaderCodeTypeEXT
codeSize :: Word64
code :: Ptr ()
name :: Maybe ("data" ::: ByteString)
setLayoutCount :: Word32
setLayouts :: Vector DescriptorSetLayout
pushConstantRangeCount :: Word32
pushConstantRanges :: Vector PushConstantRange
specializationInfo :: Maybe SpecializationInfo
..}
getNext :: forall (es :: [*]). ShaderCreateInfoEXT es -> Chain es
getNext ShaderCreateInfoEXT{Maybe ("data" ::: ByteString)
Maybe SpecializationInfo
Word32
Word64
Ptr ()
Vector PushConstantRange
Vector DescriptorSetLayout
ShaderStageFlagBits
Chain es
ShaderCodeTypeEXT
ShaderCreateFlagsEXT
next :: forall (es :: [*]). ShaderCreateInfoEXT es -> Chain es
flags :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderCreateFlagsEXT
stage :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderStageFlagBits
nextStage :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderStageFlagBits
codeType :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderCodeTypeEXT
codeSize :: forall (es :: [*]). ShaderCreateInfoEXT es -> Word64
code :: forall (es :: [*]). ShaderCreateInfoEXT es -> Ptr ()
name :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Maybe ("data" ::: ByteString)
setLayoutCount :: forall (es :: [*]). ShaderCreateInfoEXT es -> Word32
setLayouts :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Vector DescriptorSetLayout
pushConstantRangeCount :: forall (es :: [*]). ShaderCreateInfoEXT es -> Word32
pushConstantRanges :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Vector PushConstantRange
specializationInfo :: 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 :: Word32
setLayouts :: Vector DescriptorSetLayout
pushConstantRangeCount :: Word32
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 :~: ShaderDescriptorSetAndBindingMappingInfoEXT
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 @ShaderDescriptorSetAndBindingMappingInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends ShaderCreateInfoEXT e => b
f
| Just e :~: CustomResolveCreateInfoEXT
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 @CustomResolveCreateInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
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
| Just e :~: ValidationFeaturesEXT
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 @ValidationFeaturesEXT = 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
Word32
Word64
Ptr ()
Vector PushConstantRange
Vector DescriptorSetLayout
ShaderStageFlagBits
Chain es
ShaderCodeTypeEXT
ShaderCreateFlagsEXT
next :: forall (es :: [*]). ShaderCreateInfoEXT es -> Chain es
flags :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderCreateFlagsEXT
stage :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderStageFlagBits
nextStage :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderStageFlagBits
codeType :: forall (es :: [*]). ShaderCreateInfoEXT es -> ShaderCodeTypeEXT
codeSize :: forall (es :: [*]). ShaderCreateInfoEXT es -> Word64
code :: forall (es :: [*]). ShaderCreateInfoEXT es -> Ptr ()
name :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Maybe ("data" ::: ByteString)
setLayoutCount :: forall (es :: [*]). ShaderCreateInfoEXT es -> Word32
setLayouts :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Vector DescriptorSetLayout
pushConstantRangeCount :: forall (es :: [*]). ShaderCreateInfoEXT es -> Word32
pushConstantRanges :: forall (es :: [*]).
ShaderCreateInfoEXT es -> Vector PushConstantRange
specializationInfo :: 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 :: Word32
setLayouts :: Vector DescriptorSetLayout
pushConstantRangeCount :: Word32
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)
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)
lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
lift $ poke ((p `plusPtr` 16 :: Ptr ShaderCreateFlagsEXT)) (flags)
lift $ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits)) (stage)
lift $ poke ((p `plusPtr` 24 :: Ptr ShaderStageFlags)) (nextStage)
lift $ poke ((p `plusPtr` 28 :: Ptr ShaderCodeTypeEXT)) (codeType)
lift $ poke ((p `plusPtr` 32 :: Ptr CSize)) (CSize (codeSize))
lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ()))) (code)
pName'' <- case (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)
lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr CChar))) pName''
let 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)
setLayoutCount'' <- lift $ if (setLayoutCount) == 0
then pure $ fromIntegral pSetLayoutsLength
else do
unless (fromIntegral pSetLayoutsLength == (setLayoutCount) || pSetLayoutsLength == 0) $
throwIO $ IOError Nothing InvalidArgument "" "pSetLayouts must be empty or have 'setLayoutCount' elements" Nothing Nothing
pure (setLayoutCount)
lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (setLayoutCount'')
pSetLayouts'' <- if Data.Vector.null (setLayouts)
then pure nullPtr
else do
pPSetLayouts <- ContT $ allocaBytes @DescriptorSetLayout (((Data.Vector.length (setLayouts))) * 8)
lift $ 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)) ((setLayouts))
pure $ pPSetLayouts
lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr DescriptorSetLayout))) pSetLayouts''
let 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)
pushConstantRangeCount'' <- lift $ if (pushConstantRangeCount) == 0
then pure $ fromIntegral pPushConstantRangesLength
else do
unless (fromIntegral pPushConstantRangesLength == (pushConstantRangeCount) || pPushConstantRangesLength == 0) $
throwIO $ IOError Nothing InvalidArgument "" "pPushConstantRanges must be empty or have 'pushConstantRangeCount' elements" Nothing Nothing
pure (pushConstantRangeCount)
lift $ poke ((p `plusPtr` 72 :: Ptr Word32)) (pushConstantRangeCount'')
pPushConstantRanges'' <- if Data.Vector.null (pushConstantRanges)
then pure nullPtr
else do
pPPushConstantRanges <- ContT $ allocaBytes @PushConstantRange (((Data.Vector.length (pushConstantRanges))) * 12)
lift $ 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)) ((pushConstantRanges))
pure $ pPPushConstantRanges
lift $ poke ((p `plusPtr` 80 :: Ptr (Ptr PushConstantRange))) pPushConstantRanges''
pSpecializationInfo'' <- case (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)
lift $ poke ((p `plusPtr` 88 :: Ptr (Ptr SpecializationInfo))) pSpecializationInfo''
lift $ 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)
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
lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
lift $ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits)) (zero)
lift $ poke ((p `plusPtr` 28 :: Ptr ShaderCodeTypeEXT)) (zero)
lift $ poke ((p `plusPtr` 32 :: Ptr CSize)) (CSize (zero))
lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ()))) (zero)
lift $ f
instance ( Extendss ShaderCreateInfoEXT es
, PeekChain es ) => FromCStruct (ShaderCreateInfoEXT es) where
peekCStruct :: Ptr (ShaderCreateInfoEXT es) -> IO (ShaderCreateInfoEXT es)
peekCStruct Ptr (ShaderCreateInfoEXT es)
p = do
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 ())))
next <- peekChain (castPtr pNext)
flags <- peek @ShaderCreateFlagsEXT ((p `plusPtr` 16 :: Ptr ShaderCreateFlagsEXT))
stage <- peek @ShaderStageFlagBits ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits))
nextStage <- peek @ShaderStageFlags ((p `plusPtr` 24 :: Ptr ShaderStageFlags))
codeType <- peek @ShaderCodeTypeEXT ((p `plusPtr` 28 :: Ptr ShaderCodeTypeEXT))
codeSize <- peek @CSize ((p `plusPtr` 32 :: Ptr CSize))
pCode <- peek @(Ptr ()) ((p `plusPtr` 40 :: Ptr (Ptr ())))
pName <- peek @(Ptr CChar) ((p `plusPtr` 48 :: Ptr (Ptr CChar)))
pName' <- maybePeek (\Ptr CChar
j -> Ptr CChar -> IO ("data" ::: ByteString)
packCString (Ptr CChar
j)) pName
setLayoutCount <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))
pSetLayouts <- peek @(Ptr DescriptorSetLayout) ((p `plusPtr` 64 :: Ptr (Ptr DescriptorSetLayout)))
let 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 (Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Word32
setLayoutCount)
pSetLayouts' <- generateM 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)))
pushConstantRangeCount <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))
pPushConstantRanges <- peek @(Ptr PushConstantRange) ((p `plusPtr` 80 :: Ptr (Ptr PushConstantRange)))
let 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 (Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Word32
pushConstantRangeCount)
pPushConstantRanges' <- generateM 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)))
pSpecializationInfo <- peek @(Ptr SpecializationInfo) ((p `plusPtr` 88 :: Ptr (Ptr SpecializationInfo)))
pSpecializationInfo' <- maybePeek (\Ptr SpecializationInfo
j -> forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @SpecializationInfo (Ptr SpecializationInfo
j)) pSpecializationInfo
pure $ ShaderCreateInfoEXT
next
flags
stage
nextStage
codeType
(coerce @CSize @Word64 codeSize)
pCode
pName'
setLayoutCount
pSetLayouts'
pushConstantRangeCount
pPushConstantRanges'
pSpecializationInfo'
instance es ~ '[] => Zero (ShaderCreateInfoEXT es) where
zero :: ShaderCreateInfoEXT es
zero = Chain es
-> ShaderCreateFlagsEXT
-> ShaderStageFlagBits
-> ShaderStageFlagBits
-> ShaderCodeTypeEXT
-> Word64
-> Ptr ()
-> Maybe ("data" ::: ByteString)
-> Word32
-> Vector DescriptorSetLayout
-> Word32
-> Vector PushConstantRange
-> Maybe SpecializationInfo
-> ShaderCreateInfoEXT es
forall (es :: [*]).
Chain es
-> ShaderCreateFlagsEXT
-> ShaderStageFlagBits
-> ShaderStageFlagBits
-> ShaderCodeTypeEXT
-> Word64
-> Ptr ()
-> Maybe ("data" ::: ByteString)
-> Word32
-> Vector DescriptorSetLayout
-> Word32
-> 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
Word32
forall a. Zero a => a
zero
Vector DescriptorSetLayout
forall a. Monoid a => a
mempty
Word32
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 $mSHADER_CREATE_LINK_STAGE_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bSHADER_CREATE_LINK_STAGE_BIT_EXT :: ShaderCreateFlagsEXT
SHADER_CREATE_LINK_STAGE_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000001
pattern $mSHADER_CREATE_64_BIT_INDEXING_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bSHADER_CREATE_64_BIT_INDEXING_BIT_EXT :: ShaderCreateFlagsEXT
SHADER_CREATE_64_BIT_INDEXING_BIT_EXT = ShaderCreateFlagBitsEXT 0x00008000
pattern $mSHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bSHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT :: ShaderCreateFlagsEXT
SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000080
pattern $mSHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bSHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT :: ShaderCreateFlagsEXT
SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000040
pattern $mSHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bSHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT :: ShaderCreateFlagsEXT
SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000020
pattern $mSHADER_CREATE_DISPATCH_BASE_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bSHADER_CREATE_DISPATCH_BASE_BIT_EXT :: ShaderCreateFlagsEXT
SHADER_CREATE_DISPATCH_BASE_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000010
pattern $mSHADER_CREATE_NO_TASK_SHADER_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bSHADER_CREATE_NO_TASK_SHADER_BIT_EXT :: ShaderCreateFlagsEXT
SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000008
pattern $mSHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bSHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT :: ShaderCreateFlagsEXT
SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000004
pattern $mSHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bSHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT :: ShaderCreateFlagsEXT
SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000002
pattern $mSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT :: forall {r}.
ShaderCreateFlagsEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bSHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT :: ShaderCreateFlagsEXT
SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT = ShaderCreateFlagBitsEXT 0x00000400
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_64_BIT_INDEXING_BIT_EXT
, String
"64_BIT_INDEXING_BIT_EXT"
)
,
( ShaderCreateFlagsEXT
SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT
, String
"INDIRECT_BINDABLE_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"
)
,
( ShaderCreateFlagsEXT
SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT
, String
"DESCRIPTOR_HEAP_BIT_EXT"
)
]
instance Show ShaderCreateFlagBitsEXT where
showsPrec :: Int -> ShaderCreateFlagsEXT -> ShowS
showsPrec =
String
-> [(ShaderCreateFlagsEXT, String)]
-> String
-> (ShaderCreateFlagsEXT -> Word32)
-> (Word32 -> 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 Word32
x) -> Word32
x)
(\Word32
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> ShowS
forall a. Integral a => a -> ShowS
showHex Word32
x)
instance Read ShaderCreateFlagBitsEXT where
readPrec :: ReadPrec ShaderCreateFlagsEXT
readPrec =
String
-> [(ShaderCreateFlagsEXT, String)]
-> String
-> (Word32 -> ShaderCreateFlagsEXT)
-> ReadPrec ShaderCreateFlagsEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
String
enumPrefixShaderCreateFlagBitsEXT
[(ShaderCreateFlagsEXT, String)]
showTableShaderCreateFlagBitsEXT
String
conNameShaderCreateFlagBitsEXT
Word32 -> 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 $mSHADER_CODE_TYPE_BINARY_EXT :: forall {r}. ShaderCodeTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bSHADER_CODE_TYPE_BINARY_EXT :: ShaderCodeTypeEXT
SHADER_CODE_TYPE_BINARY_EXT = ShaderCodeTypeEXT 0
pattern $mSHADER_CODE_TYPE_SPIRV_EXT :: forall {r}. ShaderCodeTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
$bSHADER_CODE_TYPE_SPIRV_EXT :: ShaderCodeTypeEXT
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 $mEXT_SHADER_OBJECT_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_SHADER_OBJECT_SPEC_VERSION :: forall a. Integral a => a
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 $mEXT_SHADER_OBJECT_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_SHADER_OBJECT_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
EXT_SHADER_OBJECT_EXTENSION_NAME = "VK_EXT_shader_object"