keid-core-0.1.9.0: Core parts of Keid engine.
Safe HaskellSafe-Inferred
LanguageGHC2021

Engine.Vulkan.Types

Synopsis

Documentation

type MonadVulkan env m = (MonadUnliftIO m, MonadReader env m, HasVulkan env) Source #

class HasVulkan a where Source #

A class for Monads which can provide some Vulkan handles

Instances

Instances details
HasVulkan Headless Source # 
Instance details

Defined in Engine.Setup

HasVulkan GlobalHandles Source # 
Instance details

Defined in Engine.Types

HasVulkan env => HasVulkan (App env st) Source # 
Instance details

Defined in Engine.Vulkan.Types

HasVulkan env => HasVulkan (env, a) Source # 
Instance details

Defined in Engine.Vulkan.Types

class HasSwapchain a where Source #

Instances

Instances details
HasSwapchain SwapchainResources Source # 
Instance details

Defined in Engine.Vulkan.Swapchain

HasSwapchain (Frame renderpass pipelines resources) Source # 
Instance details

Defined in Engine.Types

Methods

getSurfaceExtent :: Frame renderpass pipelines resources -> Extent2D Source #

getSurfaceFormat :: Frame renderpass pipelines resources -> Format Source #

getDepthFormat :: Frame renderpass pipelines resources -> Format Source #

getMultisample :: Frame renderpass pipelines resources -> SampleCountFlagBits Source #

getAnisotropy :: Frame renderpass pipelines resources -> "max sampler anisotropy" ::: Float Source #

getSwapchainViews :: Frame renderpass pipelines resources -> Vector ImageView Source #

getMinImageCount :: Frame renderpass pipelines resources -> Word32 Source #

getImageCount :: Frame renderpass pipelines resources -> Word32 Source #

class RenderPass a where Source #

Minimal complete definition

refcountRenderpass

Methods

updateRenderpass :: (HasLogFunc env, HasSwapchain swapchain, HasVulkan env, MonadResource (RIO env)) => swapchain -> a -> RIO env a Source #

refcountRenderpass :: MonadResource (RIO env) => a -> RIO env () Source #

Instances

Instances details
RenderPass NoRenderPass Source # 
Instance details

Defined in Engine.Stage.Component

RenderPass Offscreen Source # 
Instance details

Defined in Render.Pass.Offscreen

Methods

updateRenderpass :: (HasLogFunc env, HasSwapchain swapchain, HasVulkan env, MonadResource (RIO env)) => swapchain -> Offscreen -> RIO env Offscreen Source #

refcountRenderpass :: MonadResource (RIO env) => Offscreen -> RIO env () Source #

data Queues q Source #

The shape of all the queues we use for our program, parameterized over the queue type so we can use it with assignQueues.

Constructors

Queues 

Fields

Instances

Instances details
Foldable Queues Source # 
Instance details

Defined in Engine.Vulkan.Types

Methods

fold :: Monoid m => Queues m -> m #

foldMap :: Monoid m => (a -> m) -> Queues a -> m #

foldMap' :: Monoid m => (a -> m) -> Queues a -> m #

foldr :: (a -> b -> b) -> b -> Queues a -> b #

foldr' :: (a -> b -> b) -> b -> Queues a -> b #

foldl :: (b -> a -> b) -> b -> Queues a -> b #

foldl' :: (b -> a -> b) -> b -> Queues a -> b #

foldr1 :: (a -> a -> a) -> Queues a -> a #

foldl1 :: (a -> a -> a) -> Queues a -> a #

toList :: Queues a -> [a] #

null :: Queues a -> Bool #

length :: Queues a -> Int #

elem :: Eq a => a -> Queues a -> Bool #

maximum :: Ord a => Queues a -> a #

minimum :: Ord a => Queues a -> a #

sum :: Num a => Queues a -> a #

product :: Num a => Queues a -> a #

Traversable Queues Source # 
Instance details

Defined in Engine.Vulkan.Types

Methods

traverse :: Applicative f => (a -> f b) -> Queues a -> f (Queues b) #

sequenceA :: Applicative f => Queues (f a) -> f (Queues a) #

mapM :: Monad m => (a -> m b) -> Queues a -> m (Queues b) #

sequence :: Monad m => Queues (m a) -> m (Queues a) #

Functor Queues Source # 
Instance details

Defined in Engine.Vulkan.Types

Methods

fmap :: (a -> b) -> Queues a -> Queues b #

(<$) :: a -> Queues b -> Queues a #

Show q => Show (Queues q) Source # 
Instance details

Defined in Engine.Vulkan.Types

Methods

showsPrec :: Int -> Queues q -> ShowS #

show :: Queues q -> String #

showList :: [Queues q] -> ShowS #

newtype Bound (dsl :: [Type]) vertices instances m a Source #

Constructors

Bound (m a) 

Instances

Instances details
MonadReader r m => MonadReader r (Bound dsl vertices instances m) Source # 
Instance details

Defined in Engine.Vulkan.Types

Methods

ask :: Bound dsl vertices instances m r #

local :: (r -> r) -> Bound dsl vertices instances m a -> Bound dsl vertices instances m a #

reader :: (r -> a) -> Bound dsl vertices instances m a #

MonadState s m => MonadState s (Bound dsl vertices instances m) Source # 
Instance details

Defined in Engine.Vulkan.Types

Methods

get :: Bound dsl vertices instances m s #

put :: s -> Bound dsl vertices instances m () #

state :: (s -> (a, s)) -> Bound dsl vertices instances m a #

MonadIO m => MonadIO (Bound dsl vertices instances m) Source # 
Instance details

Defined in Engine.Vulkan.Types

Methods

liftIO :: IO a -> Bound dsl vertices instances m a #

Foldable m => Foldable (Bound dsl vertices instances m) Source # 
Instance details

Defined in Engine.Vulkan.Types

Methods

fold :: Monoid m0 => Bound dsl vertices instances m m0 -> m0 #

foldMap :: Monoid m0 => (a -> m0) -> Bound dsl vertices instances m a -> m0 #

foldMap' :: Monoid m0 => (a -> m0) -> Bound dsl vertices instances m a -> m0 #

foldr :: (a -> b -> b) -> b -> Bound dsl vertices instances m a -> b #

foldr' :: (a -> b -> b) -> b -> Bound dsl vertices instances m a -> b #

foldl :: (b -> a -> b) -> b -> Bound dsl vertices instances m a -> b #

foldl' :: (b -> a -> b) -> b -> Bound dsl vertices instances m a -> b #

foldr1 :: (a -> a -> a) -> Bound dsl vertices instances m a -> a #

foldl1 :: (a -> a -> a) -> Bound dsl vertices instances m a -> a #

toList :: Bound dsl vertices instances m a -> [a] #

null :: Bound dsl vertices instances m a -> Bool #

length :: Bound dsl vertices instances m a -> Int #

elem :: Eq a => a -> Bound dsl vertices instances m a -> Bool #

maximum :: Ord a => Bound dsl vertices instances m a -> a #

minimum :: Ord a => Bound dsl vertices instances m a -> a #

sum :: Num a => Bound dsl vertices instances m a -> a #

product :: Num a => Bound dsl vertices instances m a -> a #

Traversable m => Traversable (Bound dsl vertices instances m) Source # 
Instance details

Defined in Engine.Vulkan.Types

Methods

traverse :: Applicative f => (a -> f b) -> Bound dsl vertices instances m a -> f (Bound dsl vertices instances m b) #

sequenceA :: Applicative f => Bound dsl vertices instances m (f a) -> f (Bound dsl vertices instances m a) #

mapM :: Monad m0 => (a -> m0 b) -> Bound dsl vertices instances m a -> m0 (Bound dsl vertices instances m b) #

sequence :: Monad m0 => Bound dsl vertices instances m (m0 a) -> m0 (Bound dsl vertices instances m a) #

Applicative m => Applicative (Bound dsl vertices instances m) Source # 
Instance details

Defined in Engine.Vulkan.Types

Methods

pure :: a -> Bound dsl vertices instances m a #

(<*>) :: Bound dsl vertices instances m (a -> b) -> Bound dsl vertices instances m a -> Bound dsl vertices instances m b #

liftA2 :: (a -> b -> c) -> Bound dsl vertices instances m a -> Bound dsl vertices instances m b -> Bound dsl vertices instances m c #

(*>) :: Bound dsl vertices instances m a -> Bound dsl vertices instances m b -> Bound dsl vertices instances m b #

(<*) :: Bound dsl vertices instances m a -> Bound dsl vertices instances m b -> Bound dsl vertices instances m a #

Functor m => Functor (Bound dsl vertices instances m) Source # 
Instance details

Defined in Engine.Vulkan.Types

Methods

fmap :: (a -> b) -> Bound dsl vertices instances m a -> Bound dsl vertices instances m b #

(<$) :: a -> Bound dsl vertices instances m b -> Bound dsl vertices instances m a #

Monad m => Monad (Bound dsl vertices instances m) Source # 
Instance details

Defined in Engine.Vulkan.Types

Methods

(>>=) :: Bound dsl vertices instances m a -> (a -> Bound dsl vertices instances m b) -> Bound dsl vertices instances m b #

(>>) :: Bound dsl vertices instances m a -> Bound dsl vertices instances m b -> Bound dsl vertices instances m b #

return :: a -> Bound dsl vertices instances m a #

MonadUnliftIO m => MonadUnliftIO (Bound dsl vertices instances m) Source # 
Instance details

Defined in Engine.Vulkan.Types

Methods

withRunInIO :: ((forall a. Bound dsl vertices instances m a -> IO a) -> IO b) -> Bound dsl vertices instances m b #