{-# LINE 1 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE PatternSynonyms, ViewPatterns #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

module Gpu.Vulkan.Pipeline.Compute.Core (

	-- * CREATE

	createCs, CreateInfo, pattern CreateInfo,
	createInfoSType, createInfoPNext, createInfoFlags,
	createInfoStage, createInfoLayout,
	createInfoBasePipelineHandle, createInfoBasePipelineIndex

	) 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.Pipeline.Core as Pipeline
import qualified Gpu.Vulkan.Pipeline.ShaderStage.Core as Pipeline.ShaderStage
import qualified Gpu.Vulkan.PipelineLayout.Core as Pipeline.Layout
import qualified Gpu.Vulkan.PipelineCache.Core as Cache



stype :: Word32
{-# LINE 34 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
stype = 29
{-# LINE 35 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}

struct "CreateInfo" (96)
{-# LINE 37 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
		8 [
{-# LINE 38 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
	("sType", ''(), [| const $ pure () |],
		[| \p _ -> (\hsc_ptr -> pokeByteOff hsc_ptr 0)
{-# LINE 40 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
			p stype |]),
	("pNext", ''PtrVoid,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 43 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]),
{-# LINE 44 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
	("flags", ''Word32,
{-# LINE 45 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
		[| (\hsc_ptr -> peekByteOff hsc_ptr 16) |],
{-# LINE 46 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 16) |]),
{-# LINE 47 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
	("stage", ''Pipeline.ShaderStage.CreateInfo,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 24) |],
{-# LINE 49 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 24) |]),
{-# LINE 50 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
	("layout", ''Pipeline.Layout.P,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 72) |],
{-# LINE 52 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 72) |]),
{-# LINE 53 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
	("basePipelineHandle", ''Pipeline.P,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 80) |],
{-# LINE 55 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 80) |]),
{-# LINE 56 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
	("basePipelineIndex", ''Int32,
{-# LINE 57 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
		[| (\hsc_ptr -> peekByteOff hsc_ptr 88) |],
{-# LINE 58 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 88) |]) ]
{-# LINE 59 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
	[''Show, ''Storable]

foreign import ccall "vkCreateComputePipelines" createCs ::
	Device.D -> Cache.P -> Word32 -> Ptr CreateInfo ->
{-# LINE 63 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}
	Ptr AllocationCallbacks.A -> Ptr Pipeline.P -> IO Int32
{-# LINE 64 "src/Gpu/Vulkan/Pipeline/Compute/Core.hsc" #-}