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

module Gpu.Vulkan.Subpass.Core (

	-- * DESCRIPTION

	Description, PtrDescription, pattern Description,
	descriptionFlags, descriptionPipelineBindPoint,
	descriptionInputAttachmentCount, descriptionPInputAttachments,
	descriptionColorAttachmentCount, descriptionPColorAttachments,
	descriptionPResolveAttachments, descriptionPDepthStencilAttachment,
	descriptionPreserveAttachmentCount, descriptionPPreserveAttachments,

	-- * DEPENDENCY

	Dependency, PtrDependency, pattern Dependency,
	dependencySrcSubpass, dependencyDstSubpass,
	dependencySrcStageMask, dependencyDstStageMask,
	dependencySrcAccessMask, dependencyDstAccessMask,
	dependencyDependencyFlags

	) where

import Foreign.Ptr
import Foreign.Storable
import Foreign.C.Struct
import Data.Word

import Gpu.Vulkan.TypeSynonyms.Core
import Gpu.Vulkan.Attachment.Core qualified as Attachment



struct "Description" (72)
{-# LINE 39 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		8 [
{-# LINE 40 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("flags", ''Word32,
{-# LINE 41 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> peekByteOff hsc_ptr 0) |],
{-# LINE 42 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 0) |]),
{-# LINE 43 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("pipelineBindPoint", ''Word32,
{-# LINE 44 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> peekByteOff hsc_ptr 4) |],
{-# LINE 45 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 4) |]),
{-# LINE 46 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("inputAttachmentCount", ''Word32,
{-# LINE 47 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 48 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]),
{-# LINE 49 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("pInputAttachments", ''Attachment.PtrReference,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 16) |],
{-# LINE 51 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 16) |]),
{-# LINE 52 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("colorAttachmentCount", ''Word32,
{-# LINE 53 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> peekByteOff hsc_ptr 24) |],
{-# LINE 54 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 24) |]),
{-# LINE 55 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("pColorAttachments", ''Attachment.PtrReference,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 32) |],
{-# LINE 57 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 32) |]),
{-# LINE 58 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("pResolveAttachments", ''Attachment.PtrReference,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 40) |],
{-# LINE 60 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 40) |]),
{-# LINE 61 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("pDepthStencilAttachment", ''Attachment.PtrReference,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 48) |],
{-# LINE 63 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 48) |]),
{-# LINE 64 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("preserveAttachmentCount", ''Word32,
{-# LINE 65 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> peekByteOff hsc_ptr 56) |],
{-# LINE 66 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 56) |]),
{-# LINE 67 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("pPreserveAttachments", ''PtrUint32T,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 64) |],
{-# LINE 69 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 64) |]) ]
{-# LINE 70 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	[''Show, ''Storable]

type PtrDescription = Ptr Description

struct "Dependency" (28)
{-# LINE 75 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		4 [
{-# LINE 76 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("srcSubpass", ''Word32,
{-# LINE 77 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> peekByteOff hsc_ptr 0) |],
{-# LINE 78 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 0) |]),
{-# LINE 79 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("dstSubpass", ''Word32,
{-# LINE 80 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> peekByteOff hsc_ptr 4) |],
{-# LINE 81 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 4) |]),
{-# LINE 82 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("srcStageMask", ''Word32,
{-# LINE 83 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 84 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]),
{-# LINE 85 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("dstStageMask", ''Word32,
{-# LINE 86 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> peekByteOff hsc_ptr 12) |],
{-# LINE 87 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 12) |]),
{-# LINE 88 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("srcAccessMask", ''Word32,
{-# LINE 89 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> peekByteOff hsc_ptr 16) |],
{-# LINE 90 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 16) |]),
{-# LINE 91 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("dstAccessMask", ''Word32,
{-# LINE 92 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> peekByteOff hsc_ptr 20) |],
{-# LINE 93 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 20) |]),
{-# LINE 94 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	("dependencyFlags", ''Word32,
{-# LINE 95 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> peekByteOff hsc_ptr 24) |],
{-# LINE 96 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 24) |]) ]
{-# LINE 97 "src/Gpu/Vulkan/Subpass/Core.hsc" #-}
	[''Show, ''Storable]

type PtrDependency = Ptr Dependency