summaryrefslogtreecommitdiff
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
parent2e5a8167542bd0b5a6d1dea4ea4642c7b06f268e (diff)
example
-rw-r--r--Main.hs24
-rw-r--r--vktest.cabal2
2 files changed, 24 insertions, 2 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
diff --git a/vktest.cabal b/vktest.cabal
index 91cf7c9..fc6b342 100644
--- a/vktest.cabal
+++ b/vktest.cabal
@@ -17,6 +17,6 @@ executable vktest
-- other-modules:
-- other-extensions:
build-depends: base >= 4.20.2
- , vulkan-utils >= 0.5.10
+ , vulkan >= 3.27
hs-source-dirs: .
default-language: Haskell2010