packages feed

gpu-vulkan-core-khr-surface-0.1.0.0: src/Gpu/Vulkan/Khr/Surface/Core.hsc

{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE PatternSynonyms, ViewPatterns #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

module Gpu.Vulkan.Khr.Surface.Core (

	-- * DESTROY

	destroy, S,

	-- * CAPABILITIES

	Capabilities, pattern Capabilities,
	capabilitiesMinImageCount, capabilitiesMaxImageCount,
	capabilitiesCurrentExtent,
	capabilitiesMinImageExtent, capabilitiesMaxImageExtent,
	capabilitiesMaxImageArrayLayers,
	capabilitiesSupportedTransforms, capabilitiesCurrentTransform,
	capabilitiesSupportedCompositeAlpha, capabilitiesSupportedUsageFlags,

	-- * FORMAT

	Format, pattern Format, formatFormat, formatColorSpace

	) where

import Foreign.Ptr
import Foreign.Storable
import Foreign.C.Struct
import Data.Word

import Gpu.Vulkan.Core (Extent2d)

import qualified Gpu.Vulkan.AllocationCallbacks.Core as AllocationCallbacks
import qualified Gpu.Vulkan.Instance.Core as Instance

#include <vulkan/vulkan.h>

data STag
type S = Ptr STag

foreign import ccall "vkDestroySurfaceKHR" destroy ::
	Instance.I -> S -> Ptr AllocationCallbacks.A -> IO ()

struct "Capabilities" #{size VkSurfaceCapabilitiesKHR}
		#{alignment VkSurfaceCapabilitiesKHR} [
	("minImageCount", ''#{type uint32_t},
		[| #{peek VkSurfaceCapabilitiesKHR, minImageCount} |],
		[| #{poke VkSurfaceCapabilitiesKHR, minImageCount} |]),
	("maxImageCount", ''#{type uint32_t},
		[| #{peek VkSurfaceCapabilitiesKHR, maxImageCount} |],
		[| #{poke VkSurfaceCapabilitiesKHR, maxImageCount} |]),
	("currentExtent", ''Extent2d,
		[| #{peek VkSurfaceCapabilitiesKHR, currentExtent} |],
		[| #{poke VkSurfaceCapabilitiesKHR, currentExtent} |]),
	("minImageExtent", ''Extent2d,
		[| #{peek VkSurfaceCapabilitiesKHR, minImageExtent} |],
		[| #{poke VkSurfaceCapabilitiesKHR, minImageExtent} |]),
	("maxImageExtent", ''Extent2d,
		[| #{peek VkSurfaceCapabilitiesKHR, maxImageExtent} |],
		[| #{poke VkSurfaceCapabilitiesKHR, maxImageExtent} |]),
	("maxImageArrayLayers", ''#{type uint32_t},
		[| #{peek VkSurfaceCapabilitiesKHR, maxImageArrayLayers} |],
		[| #{poke VkSurfaceCapabilitiesKHR, maxImageArrayLayers} |]),
	("supportedTransforms", ''#{type VkSurfaceTransformFlagsKHR},
		[| #{peek VkSurfaceCapabilitiesKHR, supportedTransforms} |],
		[| #{poke VkSurfaceCapabilitiesKHR, supportedTransforms} |]),
	("currentTransform", ''#{type VkSurfaceTransformFlagBitsKHR},
		[| #{peek VkSurfaceCapabilitiesKHR, currentTransform} |],
		[| #{poke VkSurfaceCapabilitiesKHR, currentTransform} |]),
	("supportedCompositeAlpha", ''#{type VkCompositeAlphaFlagsKHR},
		[| #{peek VkSurfaceCapabilitiesKHR, supportedCompositeAlpha} |],
		[| #{poke VkSurfaceCapabilitiesKHR,
			supportedCompositeAlpha} |]),
	("supportedUsageFlags", ''#{type VkImageUsageFlags},
		[| #{peek VkSurfaceCapabilitiesKHR, supportedUsageFlags} |],
		[| #{poke VkSurfaceCapabilitiesKHR, supportedUsageFlags} |]) ]
	[''Show, ''Storable]

struct "Format" #{size VkSurfaceFormatKHR} #{alignment VkSurfaceFormatKHR} [
	("format", ''#{type VkFormat}, [| #{peek VkSurfaceFormatKHR, format} |],
		[| #{poke VkSurfaceFormatKHR, format} |]),
	("colorSpace", ''#{type VkColorSpaceKHR},
		[| #{peek VkSurfaceFormatKHR, colorSpace} |],
		[| #{poke VkSurfaceFormatKHR, colorSpace} |]) ]
	[''Show, ''Storable]