packages feed

vulkan-3.0.0.0: examples/info/Main.hs

module Main
  where

import           Graphics.Vulkan.Version
import           Graphics.Vulkan.Zero
import           Graphics.Vulkan.Core10
import           Text.Pretty.Simple
import           Data.Foldable

main :: IO ()
main = withInstance zero Nothing $ \i -> do
  pPrint i
  (_, layers    ) <- enumerateInstanceLayerProperties
  (_, extensions) <- enumerateInstanceExtensionProperties Nothing
  pPrint layers
  pPrint extensions
  (_, devices) <- enumeratePhysicalDevices i
  traverse_ deviceInfo devices

deviceInfo :: PhysicalDevice -> IO ()
deviceInfo p = do
  (_, extensions) <- enumerateDeviceExtensionProperties p Nothing
  (_, layers    ) <- enumerateDeviceLayerProperties p
  traverse_ pPrint extensions
  traverse_ pPrint layers
  pPrint =<< getPhysicalDeviceFeatures p
  pPrint =<< getPhysicalDeviceProperties p