keid-core-0.1.4.0: Core parts of Keid engine.
Safe HaskellNone
LanguageHaskell2010

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

Methods

getInstance :: a -> Instance Source #

getQueues :: a -> Queues (QueueFamilyIndex, Queue) Source #

getPhysicalDevice :: a -> PhysicalDevice Source #

getPhysicalDeviceInfo :: a -> PhysicalDeviceInfo Source #

getDevice :: a -> Device Source #

getAllocator :: a -> Allocator Source #

Instances

Instances details
HasVulkan GlobalHandles Source # 
Instance details

Defined in Engine.Types

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

Defined in Engine.Vulkan.Types

Methods

getInstance :: (env, a) -> Instance Source #

getQueues :: (env, a) -> Queues (QueueFamilyIndex, Queue) Source #

getPhysicalDevice :: (env, a) -> PhysicalDevice Source #

getPhysicalDeviceInfo :: (env, a) -> PhysicalDeviceInfo Source #

getDevice :: (env, a) -> Device Source #

getAllocator :: (env, a) -> Allocator Source #

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

Defined in Engine.Vulkan.Types

Methods

getInstance :: App env st -> Instance Source #

getQueues :: App env st -> Queues (QueueFamilyIndex, Queue) Source #

getPhysicalDevice :: App env st -> PhysicalDevice Source #

getPhysicalDeviceInfo :: App env st -> PhysicalDeviceInfo Source #

getDevice :: App env st -> Device Source #

getAllocator :: App env st -> Allocator Source #

getPipelineCache :: ctx -> PipelineCache Source #

class HasSwapchain a where Source #

Methods

getSurfaceExtent :: a -> Extent2D Source #

getSurfaceFormat :: a -> Format Source #

getDepthFormat :: a -> Format Source #

getMultisample :: a -> SampleCountFlagBits Source #

getAnisotropy :: a -> "max sampler anisotropy" ::: Float Source #

getSwapchainViews :: a -> Vector ImageView Source #

getMinImageCount :: a -> Word32 Source #

getImageCount :: a -> Word32 Source #

class HasRenderPass a where Source #

Methods

getFramebuffers :: a -> Vector Framebuffer Source #

getRenderPass :: a -> RenderPass Source #

getClearValues :: a -> Vector ClearValue Source #

getRenderArea :: a -> Rect2D Source #

Instances

Instances details
HasRenderPass Offscreen Source # 
Instance details

Defined in Render.Pass.Offscreen

Methods

getFramebuffers :: Offscreen -> Vector Framebuffer Source #

getRenderPass :: Offscreen -> RenderPass Source #

getClearValues :: Offscreen -> Vector ClearValue Source #

getRenderArea :: Offscreen -> Rect2D Source #

class RenderPass a where Source #

Methods

allocateRenderpass_ :: (HasLogFunc env, HasSwapchain context, HasVulkan env, MonadResource (RIO env)) => context -> ResourceT (RIO env) a Source #

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

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

Instances

Instances details
RenderPass NoRendering Source # 
Instance details

Defined in Engine.Stage.Bootstrap.Types

Methods

allocateRenderpass_ :: (HasLogFunc env, HasSwapchain context, HasVulkan env, MonadResource (RIO env)) => context -> ResourceT (RIO env) NoRendering Source #

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

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

RenderPass Offscreen Source # 
Instance details

Defined in Render.Pass.Offscreen

Methods

allocateRenderpass_ :: (HasLogFunc env, HasSwapchain context, HasVulkan env, MonadResource (RIO env)) => context -> ResourceT (RIO env) Offscreen Source #

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

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

data PhysicalDeviceInfo Source #

Constructors

PhysicalDeviceInfo 

Fields

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
Functor Queues Source # 
Instance details

Defined in Engine.Vulkan.Types

Methods

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

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

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) #

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 #

type DsLayouts = Vector DescriptorSetLayout Source #

type DsBindings = [(DescriptorSetLayoutBinding, DescriptorBindingFlags)] Source #

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

Constructors

Bound (m a) 

Instances

Instances details
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 #

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 #

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 #

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) #

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 #

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