{-# LINE 1 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE PatternSynonyms, ViewPatterns #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}
module Gpu.Vulkan.PipelineLayout.Core (
create, destroy, P, CreateInfo, pattern CreateInfo,
createInfoSType, createInfoPNext, createInfoFlags,
createInfoSetLayoutCount, createInfoPSetLayouts,
createInfoPushConstantRangeCount, createInfoPPushConstantRanges
) where
import Foreign.Ptr
import Foreign.Storable
import Foreign.C.Struct
import Foreign.C.Struct.TypeSynonyms
import Data.Word
import Data.Int
import qualified Gpu.Vulkan.AllocationCallbacks.Core as AllocationCallbacks
import qualified Gpu.Vulkan.Device.Core as Device
import qualified Gpu.Vulkan.DescriptorSetLayout.Core as DescriptorSet.Layout
import qualified Gpu.Vulkan.PushConstant.Core as PushConstant
sType :: Word32
{-# LINE 32 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
sType = 30
{-# LINE 33 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
struct "CreateInfo" (48)
{-# LINE 35 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
8 [
{-# LINE 36 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
("sType", ''(), [| const $ pure () |],
[| \p _ -> (\hsc_ptr -> pokeByteOff hsc_ptr 0)
{-# LINE 38 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
p sType |]),
("pNext", ''PtrVoid,
[| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 41 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]),
{-# LINE 42 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
("flags", ''Word32,
{-# LINE 43 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 16) |],
{-# LINE 44 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 16) |]),
{-# LINE 45 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
("setLayoutCount", ''Word32,
{-# LINE 46 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 20) |],
{-# LINE 47 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 20) |]),
{-# LINE 48 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
("pSetLayouts", ''DescriptorSet.Layout.PtrD,
[| (\hsc_ptr -> peekByteOff hsc_ptr 24) |],
{-# LINE 50 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 24) |]),
{-# LINE 51 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
("pushConstantRangeCount", ''Word32,
{-# LINE 52 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
[| (\hsc_ptr -> peekByteOff hsc_ptr 32) |],
{-# LINE 54 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 32) |]),
{-# LINE 56 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
("pPushConstantRanges", ''PushConstant.PtrRange,
[| (\hsc_ptr -> peekByteOff hsc_ptr 40) |],
{-# LINE 58 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
[| (\hsc_ptr -> pokeByteOff hsc_ptr 40) |]) ]
{-# LINE 59 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
[''Show, ''Storable]
data PTag
type P = Ptr PTag
foreign import ccall "vkCreatePipelineLayout" create ::
Device.D -> Ptr CreateInfo -> Ptr AllocationCallbacks.A -> Ptr P -> IO Int32
{-# LINE 66 "src/Gpu/Vulkan/PipelineLayout/Core.hsc" #-}
foreign import ccall "vkDestroyPipelineLayout" destroy ::
Device.D -> P -> Ptr AllocationCallbacks.A -> IO ()