{-# LANGUAGE ImportQualifiedPost #-}
{-# LANGUAGE ViewPatterns #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}
module Gpu.Vulkan.PhysicalDevice (
enumerate, M.P,
M.getProperties, M.Properties(..), M.getFeatures,
getProperties2ExtensionName,
M.getFeatures2, M.Features2(..),
M.getMemoryProperties, M.MemoryProperties(..),
M.getQueueFamilyProperties, M.getFormatProperties,
enumerateExtensionProperties,
ExtensionProperties(..), ExtensionName(..),
M.ShaderDrawParametersFeatures(..),
maintenance3ExtensionName,
module Gpu.Vulkan.PhysicalDevice.Enum,
Limits(..), Features(..),
Vulkan12Features(..), Vulkan12FeaturesNoNext(..), vulkan12FeaturesZero,
Vulkan13Features(..), Vulkan13FeaturesNoNext(..), vulkan13FeaturesZero,
DescriptorIndexingFeatures(..), DescriptorIndexingFeaturesNoNext(..),
descriptorIndexingFeaturesZero
) where
import Gpu.Vulkan.Internal
import Gpu.Vulkan.Instance.Internal qualified as Instance
import Gpu.Vulkan.Instance.Type qualified as Instance.T
import Gpu.Vulkan.PhysicalDevice.Middle qualified as M
import Gpu.Vulkan.PhysicalDevice.Enum
import Gpu.Vulkan.PhysicalDevice.Struct
import Gpu.Vulkan.Middle qualified as M
import Data.Text qualified as T
enumerate :: Instance.T.I s -> IO [M.P]
enumerate :: forall s. I s -> IO [P]
enumerate (Instance.T.I I
i) = I -> IO [P]
M.enumerate I
i
enumerateExtensionProperties ::
M.P -> Maybe LayerName -> IO [ExtensionProperties]
enumerateExtensionProperties :: P -> Maybe LayerName -> IO [ExtensionProperties]
enumerateExtensionProperties P
p (((\(LayerName Text
ln) -> Text
ln) (LayerName -> Text) -> Maybe LayerName -> Maybe Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>) -> Maybe Text
mlnm) =
(ExtensionProperties -> ExtensionProperties
extensionPropertiesFromMiddle (ExtensionProperties -> ExtensionProperties)
-> [ExtensionProperties] -> [ExtensionProperties]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>)
([ExtensionProperties] -> [ExtensionProperties])
-> IO [ExtensionProperties] -> IO [ExtensionProperties]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> P -> Maybe Text -> IO [ExtensionProperties]
M.enumerateExtensionProperties P
p Maybe Text
mlnm
data ExtensionProperties = ExtensionProperties {
ExtensionProperties -> ExtensionName
extensionPropertiesExtensionName :: ExtensionName,
ExtensionProperties -> ApiVersion
extensionPropertiesSpecVersion :: M.ApiVersion }
deriving Int -> ExtensionProperties -> ShowS
[ExtensionProperties] -> ShowS
ExtensionProperties -> String
(Int -> ExtensionProperties -> ShowS)
-> (ExtensionProperties -> String)
-> ([ExtensionProperties] -> ShowS)
-> Show ExtensionProperties
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ExtensionProperties -> ShowS
showsPrec :: Int -> ExtensionProperties -> ShowS
$cshow :: ExtensionProperties -> String
show :: ExtensionProperties -> String
$cshowList :: [ExtensionProperties] -> ShowS
showList :: [ExtensionProperties] -> ShowS
Show
extensionPropertiesFromMiddle :: M.ExtensionProperties -> ExtensionProperties
extensionPropertiesFromMiddle :: ExtensionProperties -> ExtensionProperties
extensionPropertiesFromMiddle M.ExtensionProperties {
extensionPropertiesExtensionName :: ExtensionProperties -> Text
M.extensionPropertiesExtensionName = Text
en,
extensionPropertiesSpecVersion :: ExtensionProperties -> ApiVersion
M.extensionPropertiesSpecVersion = ApiVersion
sv } = ExtensionProperties {
extensionPropertiesExtensionName :: ExtensionName
extensionPropertiesExtensionName = Text -> ExtensionName
ExtensionName Text
en,
extensionPropertiesSpecVersion :: ApiVersion
extensionPropertiesSpecVersion = ApiVersion
sv }
newtype ExtensionName = ExtensionName { ExtensionName -> Text
unExtensionName :: T.Text }
deriving (Int -> ExtensionName -> ShowS
[ExtensionName] -> ShowS
ExtensionName -> String
(Int -> ExtensionName -> ShowS)
-> (ExtensionName -> String)
-> ([ExtensionName] -> ShowS)
-> Show ExtensionName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ExtensionName -> ShowS
showsPrec :: Int -> ExtensionName -> ShowS
$cshow :: ExtensionName -> String
show :: ExtensionName -> String
$cshowList :: [ExtensionName] -> ShowS
showList :: [ExtensionName] -> ShowS
Show, ExtensionName -> ExtensionName -> Bool
(ExtensionName -> ExtensionName -> Bool)
-> (ExtensionName -> ExtensionName -> Bool) -> Eq ExtensionName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ExtensionName -> ExtensionName -> Bool
== :: ExtensionName -> ExtensionName -> Bool
$c/= :: ExtensionName -> ExtensionName -> Bool
/= :: ExtensionName -> ExtensionName -> Bool
Eq)
maintenance3ExtensionName :: ExtensionName
maintenance3ExtensionName :: ExtensionName
maintenance3ExtensionName = Text -> ExtensionName
ExtensionName Text
M.maintenance3ExtensionName
getProperties2ExtensionName :: Instance.ExtensionName
getProperties2ExtensionName :: ExtensionName
getProperties2ExtensionName = Text -> ExtensionName
Instance.ExtensionName Text
M.getProperties2ExtensionName