{-# LINE 1 "src/Gpu/Vulkan/Subpass/Middle/Internal.hsc" #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE BlockArguments, TupleSections #-} {-# LANGUAGE PatternSynonyms, ViewPatterns #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module Gpu.Vulkan.Subpass.Middle.Internal where import Foreign.Marshal.Alloc import Foreign.Marshal.Array import Foreign.Storable import Foreign.Storable.PeekPoke import Foreign.C.Enum import Control.Arrow import Data.Word import Gpu.Vulkan.Enum import Gpu.Vulkan.Subpass.Enum import qualified Gpu.Vulkan.Pipeline.Enum as Pipeline import qualified Gpu.Vulkan.Attachment.Middle.Internal as Attachment import qualified Gpu.Vulkan.Subpass.Core as C data Description = Description { Description -> DescriptionFlags descriptionFlags :: DescriptionFlags, Description -> BindPoint descriptionPipelineBindPoint :: Pipeline.BindPoint, Description -> [Reference] descriptionInputAttachments :: [Attachment.Reference], Description -> Either [Reference] [(Reference, Reference)] descriptionColorAndResolveAttachments :: Either [Attachment.Reference] [(Attachment.Reference, Attachment.Reference)], Description -> Maybe Reference descriptionDepthStencilAttachment :: Maybe Attachment.Reference, Description -> [Word32] descriptionPreserveAttachments :: [Word32] } deriving Int -> Description -> ShowS [Description] -> ShowS Description -> String (Int -> Description -> ShowS) -> (Description -> String) -> ([Description] -> ShowS) -> Show Description forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Description -> ShowS showsPrec :: Int -> Description -> ShowS $cshow :: Description -> String show :: Description -> String $cshowList :: [Description] -> ShowS showList :: [Description] -> ShowS Show descriptionToCore :: Description -> (C.Description -> IO r) -> IO r descriptionToCore :: forall r. Description -> (Description -> IO r) -> IO r descriptionToCore Description { descriptionFlags :: Description -> DescriptionFlags descriptionFlags = DescriptionFlagBits Word32 flgs, descriptionPipelineBindPoint :: Description -> BindPoint descriptionPipelineBindPoint = Pipeline.BindPoint Word32 bp, descriptionInputAttachments :: Description -> [Reference] descriptionInputAttachments = [Reference] -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length ([Reference] -> Int) -> ([Reference] -> [Reference]) -> [Reference] -> (Int, [Reference]) forall b c c'. (b -> c) -> (b -> c') -> b -> (c, c') forall (a :: * -> * -> *) b c c'. Arrow a => a b c -> a b c' -> a b (c, c') &&& (Reference -> Reference Attachment.referenceToCore (Reference -> Reference) -> [Reference] -> [Reference] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$>) -> (Int iac, [Reference] ias), descriptionColorAndResolveAttachments :: Description -> Either [Reference] [(Reference, Reference)] descriptionColorAndResolveAttachments = (([Reference], Maybe [Reference]) -> Int forall a. ([Reference], a) -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length (([Reference], Maybe [Reference]) -> Int) -> (([Reference], Maybe [Reference]) -> ([Reference], Maybe [Reference])) -> ([Reference], Maybe [Reference]) -> (Int, ([Reference], Maybe [Reference])) forall b c c'. (b -> c) -> (b -> c') -> b -> (c, c') forall (a :: * -> * -> *) b c c'. Arrow a => a b c -> a b c' -> a b (c, c') &&& ([Reference], Maybe [Reference]) -> ([Reference], Maybe [Reference]) forall a. a -> a id) (([Reference], Maybe [Reference]) -> (Int, ([Reference], Maybe [Reference]))) -> (Either [Reference] [(Reference, Reference)] -> ([Reference], Maybe [Reference])) -> Either [Reference] [(Reference, Reference)] -> (Int, ([Reference], Maybe [Reference])) forall b c a. (b -> c) -> (a -> b) -> a -> c . ([Reference] -> ([Reference], Maybe [Reference])) -> ([(Reference, Reference)] -> ([Reference], Maybe [Reference])) -> Either [Reference] [(Reference, Reference)] -> ([Reference], Maybe [Reference]) forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (, Maybe [Reference] forall a. Maybe a Nothing) (([Reference] -> Maybe [Reference] forall a. a -> Maybe a Just ([Reference] -> Maybe [Reference]) -> ([Reference], [Reference]) -> ([Reference], Maybe [Reference]) forall b c d. (b -> c) -> (d, b) -> (d, c) forall (a :: * -> * -> *) b c d. Arrow a => a b c -> a (d, b) (d, c) `second`) (([Reference], [Reference]) -> ([Reference], Maybe [Reference])) -> ([(Reference, Reference)] -> ([Reference], [Reference])) -> [(Reference, Reference)] -> ([Reference], Maybe [Reference]) forall b c a. (b -> c) -> (a -> b) -> a -> c . [(Reference, Reference)] -> ([Reference], [Reference]) forall a b. [(a, b)] -> ([a], [b]) unzip) -> (Int cac, ( (Reference -> Reference Attachment.referenceToCore (Reference -> Reference) -> [Reference] -> [Reference] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$>) -> [Reference] cas, ((Reference -> Reference Attachment.referenceToCore (Reference -> Reference) -> [Reference] -> [Reference] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$>) ([Reference] -> [Reference]) -> Maybe [Reference] -> Maybe [Reference] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$>) -> Maybe [Reference] mras)), descriptionDepthStencilAttachment :: Description -> Maybe Reference descriptionDepthStencilAttachment = (Reference -> Reference Attachment.referenceToCore (Reference -> Reference) -> Maybe Reference -> Maybe Reference forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$>) -> Maybe Reference mdsa, descriptionPreserveAttachments :: Description -> [Word32] descriptionPreserveAttachments = [Word32] -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length ([Word32] -> Int) -> ([Word32] -> [Word32]) -> [Word32] -> (Int, [Word32]) forall b c c'. (b -> c) -> (b -> c') -> b -> (c, c') forall (a :: * -> * -> *) b c c'. Arrow a => a b c -> a b c' -> a b (c, c') &&& [Word32] -> [Word32] forall a. a -> a id -> (Int pac, [Word32] pas) } Description -> IO r f = Int -> (Ptr Reference -> IO r) -> IO r forall a b. Storable a => Int -> (Ptr a -> IO b) -> IO b allocaArray Int iac \Ptr Reference pias -> Ptr Reference -> [Reference] -> IO () forall a. Storable a => Ptr a -> [a] -> IO () pokeArray Ptr Reference pias [Reference] ias IO () -> IO r -> IO r forall a b. IO a -> IO b -> IO b forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> Int -> (Ptr Reference -> IO r) -> IO r forall a b. Storable a => Int -> (Ptr a -> IO b) -> IO b allocaArray Int cac \Ptr Reference pcas -> Ptr Reference -> [Reference] -> IO () forall a. Storable a => Ptr a -> [a] -> IO () pokeArray Ptr Reference pcas [Reference] cas IO () -> IO r -> IO r forall a b. IO a -> IO b -> IO b forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> ((Ptr Reference -> IO r) -> IO r) -> ([Reference] -> (Ptr Reference -> IO r) -> IO r) -> Maybe [Reference] -> (Ptr Reference -> IO r) -> IO r forall b a. b -> (a -> b) -> Maybe a -> b maybe ((Ptr Reference -> IO r) -> Ptr Reference -> IO r forall a b. (a -> b) -> a -> b $ Ptr Reference forall a. Ptr a NullPtr) (\[Reference] ras Ptr Reference -> IO r g -> Int -> (Ptr Reference -> IO r) -> IO r forall a b. Storable a => Int -> (Ptr a -> IO b) -> IO b allocaArray Int cac \Ptr Reference p -> Ptr Reference -> [Reference] -> IO () forall a. Storable a => Ptr a -> [a] -> IO () pokeArray Ptr Reference p [Reference] ras IO () -> IO r -> IO r forall a b. IO a -> IO b -> IO b forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> Ptr Reference -> IO r g Ptr Reference p) Maybe [Reference] mras \Ptr Reference pras -> ((Ptr Reference -> IO r) -> IO r) -> (Reference -> (Ptr Reference -> IO r) -> IO r) -> Maybe Reference -> (Ptr Reference -> IO r) -> IO r forall b a. b -> (a -> b) -> Maybe a -> b maybe ((Ptr Reference -> IO r) -> Ptr Reference -> IO r forall a b. (a -> b) -> a -> b $ Ptr Reference forall a. Ptr a NullPtr) (\Reference dsa Ptr Reference -> IO r g -> (Ptr Reference -> IO r) -> IO r forall a b. Storable a => (Ptr a -> IO b) -> IO b alloca \Ptr Reference p -> Ptr Reference -> Reference -> IO () forall a. Storable a => Ptr a -> a -> IO () poke Ptr Reference p Reference dsa IO () -> IO r -> IO r forall a b. IO a -> IO b -> IO b forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> Ptr Reference -> IO r g Ptr Reference p) Maybe Reference mdsa \Ptr Reference pdsa -> Int -> (Ptr Word32 -> IO r) -> IO r forall a b. Storable a => Int -> (Ptr a -> IO b) -> IO b allocaArray Int pac \Ptr Word32 ppas -> Ptr Word32 -> [Word32] -> IO () forall a. Storable a => Ptr a -> [a] -> IO () pokeArray Ptr Word32 ppas [Word32] pas IO () -> IO r -> IO r forall a b. IO a -> IO b -> IO b forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> Description -> IO r f C.Description { descriptionFlags :: Word32 C.descriptionFlags = Word32 flgs, descriptionPipelineBindPoint :: Word32 C.descriptionPipelineBindPoint = Word32 bp, descriptionInputAttachmentCount :: Word32 C.descriptionInputAttachmentCount = Int -> Word32 forall a b. (Integral a, Num b) => a -> b fromIntegral Int iac, descriptionPInputAttachments :: Ptr Reference C.descriptionPInputAttachments = Ptr Reference pias, descriptionColorAttachmentCount :: Word32 C.descriptionColorAttachmentCount = Int -> Word32 forall a b. (Integral a, Num b) => a -> b fromIntegral Int cac, descriptionPColorAttachments :: Ptr Reference C.descriptionPColorAttachments = Ptr Reference pcas, descriptionPResolveAttachments :: Ptr Reference C.descriptionPResolveAttachments = Ptr Reference pras, descriptionPDepthStencilAttachment :: Ptr Reference C.descriptionPDepthStencilAttachment = Ptr Reference pdsa, descriptionPreserveAttachmentCount :: Word32 C.descriptionPreserveAttachmentCount = Int -> Word32 forall a b. (Integral a, Num b) => a -> b fromIntegral Int pac, descriptionPPreserveAttachments :: Ptr Word32 C.descriptionPPreserveAttachments = Ptr Word32 ppas } enum "S" ''Word32 [''Show, ''Storable, ''Num] {-# LINE 75 "src/Gpu/Vulkan/Subpass/Middle/Internal.hsc" #-} [("SExternal", 4294967295)] {-# LINE 76 "src/Gpu/Vulkan/Subpass/Middle/Internal.hsc" #-} data Dependency = Dependency { Dependency -> S dependencySrcSubpass :: S, Dependency -> S dependencyDstSubpass :: S, Dependency -> StageFlags dependencySrcStageMask :: Pipeline.StageFlags, Dependency -> StageFlags dependencyDstStageMask :: Pipeline.StageFlags, Dependency -> AccessFlags dependencySrcAccessMask :: AccessFlags, Dependency -> AccessFlags dependencyDstAccessMask :: AccessFlags, Dependency -> DependencyFlags dependencyDependencyFlags :: DependencyFlags } deriving Int -> Dependency -> ShowS [Dependency] -> ShowS Dependency -> String (Int -> Dependency -> ShowS) -> (Dependency -> String) -> ([Dependency] -> ShowS) -> Show Dependency forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Dependency -> ShowS showsPrec :: Int -> Dependency -> ShowS $cshow :: Dependency -> String show :: Dependency -> String $cshowList :: [Dependency] -> ShowS showList :: [Dependency] -> ShowS Show dependencyToCore :: Dependency -> C.Dependency dependencyToCore :: Dependency -> Dependency dependencyToCore Dependency { dependencySrcSubpass :: Dependency -> S dependencySrcSubpass = S Word32 ss, dependencyDstSubpass :: Dependency -> S dependencyDstSubpass = S Word32 ds, dependencySrcStageMask :: Dependency -> StageFlags dependencySrcStageMask = Pipeline.StageFlagBits Word32 ssm, dependencyDstStageMask :: Dependency -> StageFlags dependencyDstStageMask = Pipeline.StageFlagBits Word32 dsm, dependencySrcAccessMask :: Dependency -> AccessFlags dependencySrcAccessMask = AccessFlagBits Word32 sam, dependencyDstAccessMask :: Dependency -> AccessFlags dependencyDstAccessMask = AccessFlagBits Word32 dam, dependencyDependencyFlags :: Dependency -> DependencyFlags dependencyDependencyFlags = DependencyFlagBits Word32 flgs } = C.Dependency { dependencySrcSubpass :: Word32 C.dependencySrcSubpass = Word32 ss, dependencyDstSubpass :: Word32 C.dependencyDstSubpass = Word32 ds, dependencySrcStageMask :: Word32 C.dependencySrcStageMask = Word32 ssm, dependencyDstStageMask :: Word32 C.dependencyDstStageMask = Word32 dsm, dependencySrcAccessMask :: Word32 C.dependencySrcAccessMask = Word32 sam, dependencyDstAccessMask :: Word32 C.dependencyDstAccessMask = Word32 dam, dependencyDependencyFlags :: Word32 C.dependencyDependencyFlags = Word32 flgs }