summaryrefslogtreecommitdiff
path: root/Main.hs
diff options
context:
space:
mode:
authorandromeda <andromeda@lenovo>2026-08-17 02:14:41 +0200
committerandromeda <andromeda@lenovo>2026-08-17 02:14:41 +0200
commita49e506fcd5a037dd29831e5dbcd0c574060c4b5 (patch)
tree0ddeff00ba10c0f3cb460cdc83680cda1d5a1c6c /Main.hs
parent2e5a8167542bd0b5a6d1dea4ea4642c7b06f268e (diff)
example
Diffstat (limited to 'Main.hs')
-rw-r--r--Main.hs24
1 files changed, 23 insertions, 1 deletions
diff --git a/Main.hs b/Main.hs
index f16f6f5..54b5c16 100644
--- a/Main.hs
+++ b/Main.hs
@@ -1,4 +1,26 @@
module Main (main) where
+import qualified Vulkan.Core10 as Vk
+import Vulkan.Zero (zero)
+import Control.Exception (bracket)
+import Data.Foldable (traverse_)
+
main :: IO ()
-main = putStrLn "Hello, Haskell!"
+main = Vk.withInstance zero Nothing bracket $ \i -> do
+ putStrLn $ show i
+ (_, layers) <- Vk.enumerateInstanceLayerProperties
+ (_, extensions) <- Vk.enumerateInstanceExtensionProperties Nothing
+ putStrLn $ show layers
+ putStrLn $ show extensions
+ (_, devices) <- Vk.enumeratePhysicalDevices i
+ traverse_ deviceInfo devices
+
+deviceInfo :: Vk.PhysicalDevice -> IO ()
+deviceInfo p = do
+ (_, extensions) <- Vk.enumerateDeviceExtensionProperties p Nothing
+ (_, layers) <- Vk.enumerateDeviceLayerProperties p
+ traverse_ (putStrLn . show) extensions
+ traverse_ (putStrLn . show) layers
+ (putStrLn . show) =<< Vk.getPhysicalDeviceFeatures p
+ (putStrLn . show) =<< Vk.getPhysicalDeviceProperties p
+ (putStrLn . show) =<< Vk.getPhysicalDeviceMemoryProperties p \ No newline at end of file