summaryrefslogtreecommitdiff
path: root/Main.hs
blob: 54b5c169ef382d2157e618342f61cf63719e1e74 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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 = 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