module Graphics.Vulkan.KHR.Display where
import Graphics.Vulkan.Device( VkPhysicalDevice(..)
)
import Text.Read.Lex( Lexeme(Ident)
)
import GHC.Read( expectP
, choose
)
import Data.Word( Word64
, Word32
)
import Foreign.Ptr( Ptr
, plusPtr
)
import Graphics.Vulkan.KHR.Surface( VkSurfaceTransformFlagBitsKHR(..)
, VkSurfaceTransformFlagsKHR(..)
, VkSurfaceKHR(..)
)
import Data.Int( Int32
)
import Data.Bits( Bits
, FiniteBits
)
import Foreign.Storable( Storable(..)
)
import Data.Void( Void
)
import Graphics.Vulkan.Memory( VkInternalAllocationType(..)
, PFN_vkAllocationFunction
, PFN_vkReallocationFunction
, PFN_vkInternalAllocationNotification
, VkAllocationCallbacks(..)
, VkSystemAllocationScope(..)
, PFN_vkFreeFunction
, PFN_vkInternalFreeNotification
)
import Text.Read( Read(..)
, parens
)
import Text.ParserCombinators.ReadPrec( prec
, (+++)
, step
)
import Graphics.Vulkan.DeviceInitialization( VkInstance(..)
)
import Graphics.Vulkan.Core( VkResult(..)
, VkBool32(..)
, VkExtent2D(..)
, VkFlags(..)
, VkOffset2D(..)
, VkStructureType(..)
)
import Foreign.C.Types( CFloat
, CFloat(..)
, CChar
, CSize(..)
)
data VkDisplaySurfaceCreateInfoKHR =
VkDisplaySurfaceCreateInfoKHR{ vkSType :: VkStructureType
, vkPNext :: Ptr Void
, vkFlags :: VkDisplaySurfaceCreateFlagsKHR
, vkDisplayMode :: VkDisplayModeKHR
, vkPlaneIndex :: Word32
, vkPlaneStackIndex :: Word32
, vkTransform :: VkSurfaceTransformFlagBitsKHR
, vkGlobalAlpha :: CFloat
, vkAlphaMode :: VkDisplayPlaneAlphaFlagBitsKHR
, vkImageExtent :: VkExtent2D
}
deriving (Eq)
instance Storable VkDisplaySurfaceCreateInfoKHR where
sizeOf ~_ = 64
alignment ~_ = 8
peek ptr = VkDisplaySurfaceCreateInfoKHR <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 24)
<*> peek (ptr `plusPtr` 32)
<*> peek (ptr `plusPtr` 36)
<*> peek (ptr `plusPtr` 40)
<*> peek (ptr `plusPtr` 44)
<*> peek (ptr `plusPtr` 48)
<*> peek (ptr `plusPtr` 52)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDisplaySurfaceCreateInfoKHR))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDisplaySurfaceCreateInfoKHR))
*> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkDisplaySurfaceCreateInfoKHR))
*> poke (ptr `plusPtr` 24) (vkDisplayMode (poked :: VkDisplaySurfaceCreateInfoKHR))
*> poke (ptr `plusPtr` 32) (vkPlaneIndex (poked :: VkDisplaySurfaceCreateInfoKHR))
*> poke (ptr `plusPtr` 36) (vkPlaneStackIndex (poked :: VkDisplaySurfaceCreateInfoKHR))
*> poke (ptr `plusPtr` 40) (vkTransform (poked :: VkDisplaySurfaceCreateInfoKHR))
*> poke (ptr `plusPtr` 44) (vkGlobalAlpha (poked :: VkDisplaySurfaceCreateInfoKHR))
*> poke (ptr `plusPtr` 48) (vkAlphaMode (poked :: VkDisplaySurfaceCreateInfoKHR))
*> poke (ptr `plusPtr` 52) (vkImageExtent (poked :: VkDisplaySurfaceCreateInfoKHR))
data VkDisplayPlaneCapabilitiesKHR =
VkDisplayPlaneCapabilitiesKHR{ vkSupportedAlpha :: VkDisplayPlaneAlphaFlagsKHR
, vkMinSrcPosition :: VkOffset2D
, vkMaxSrcPosition :: VkOffset2D
, vkMinSrcExtent :: VkExtent2D
, vkMaxSrcExtent :: VkExtent2D
, vkMinDstPosition :: VkOffset2D
, vkMaxDstPosition :: VkOffset2D
, vkMinDstExtent :: VkExtent2D
, vkMaxDstExtent :: VkExtent2D
}
deriving (Eq)
instance Storable VkDisplayPlaneCapabilitiesKHR where
sizeOf ~_ = 68
alignment ~_ = 4
peek ptr = VkDisplayPlaneCapabilitiesKHR <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 4)
<*> peek (ptr `plusPtr` 12)
<*> peek (ptr `plusPtr` 20)
<*> peek (ptr `plusPtr` 28)
<*> peek (ptr `plusPtr` 36)
<*> peek (ptr `plusPtr` 44)
<*> peek (ptr `plusPtr` 52)
<*> peek (ptr `plusPtr` 60)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSupportedAlpha (poked :: VkDisplayPlaneCapabilitiesKHR))
*> poke (ptr `plusPtr` 4) (vkMinSrcPosition (poked :: VkDisplayPlaneCapabilitiesKHR))
*> poke (ptr `plusPtr` 12) (vkMaxSrcPosition (poked :: VkDisplayPlaneCapabilitiesKHR))
*> poke (ptr `plusPtr` 20) (vkMinSrcExtent (poked :: VkDisplayPlaneCapabilitiesKHR))
*> poke (ptr `plusPtr` 28) (vkMaxSrcExtent (poked :: VkDisplayPlaneCapabilitiesKHR))
*> poke (ptr `plusPtr` 36) (vkMinDstPosition (poked :: VkDisplayPlaneCapabilitiesKHR))
*> poke (ptr `plusPtr` 44) (vkMaxDstPosition (poked :: VkDisplayPlaneCapabilitiesKHR))
*> poke (ptr `plusPtr` 52) (vkMinDstExtent (poked :: VkDisplayPlaneCapabilitiesKHR))
*> poke (ptr `plusPtr` 60) (vkMaxDstExtent (poked :: VkDisplayPlaneCapabilitiesKHR))
foreign import ccall "vkGetDisplayModePropertiesKHR" vkGetDisplayModePropertiesKHR ::
VkPhysicalDevice ->
VkDisplayKHR ->
Ptr Word32 -> Ptr VkDisplayModePropertiesKHR -> IO VkResult
data VkDisplayPropertiesKHR =
VkDisplayPropertiesKHR{ vkDisplay :: VkDisplayKHR
, vkDisplayName :: Ptr CChar
, vkPhysicalDimensions :: VkExtent2D
, vkPhysicalResolution :: VkExtent2D
, vkSupportedTransforms :: VkSurfaceTransformFlagsKHR
, vkPlaneReorderPossible :: VkBool32
, vkPersistentContent :: VkBool32
}
deriving (Eq)
instance Storable VkDisplayPropertiesKHR where
sizeOf ~_ = 48
alignment ~_ = 8
peek ptr = VkDisplayPropertiesKHR <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 24)
<*> peek (ptr `plusPtr` 32)
<*> peek (ptr `plusPtr` 36)
<*> peek (ptr `plusPtr` 40)
poke ptr poked = poke (ptr `plusPtr` 0) (vkDisplay (poked :: VkDisplayPropertiesKHR))
*> poke (ptr `plusPtr` 8) (vkDisplayName (poked :: VkDisplayPropertiesKHR))
*> poke (ptr `plusPtr` 16) (vkPhysicalDimensions (poked :: VkDisplayPropertiesKHR))
*> poke (ptr `plusPtr` 24) (vkPhysicalResolution (poked :: VkDisplayPropertiesKHR))
*> poke (ptr `plusPtr` 32) (vkSupportedTransforms (poked :: VkDisplayPropertiesKHR))
*> poke (ptr `plusPtr` 36) (vkPlaneReorderPossible (poked :: VkDisplayPropertiesKHR))
*> poke (ptr `plusPtr` 40) (vkPersistentContent (poked :: VkDisplayPropertiesKHR))
foreign import ccall "vkGetDisplayPlaneSupportedDisplaysKHR" vkGetDisplayPlaneSupportedDisplaysKHR ::
VkPhysicalDevice ->
Word32 -> Ptr Word32 -> Ptr VkDisplayKHR -> IO VkResult
foreign import ccall "vkCreateDisplayModeKHR" vkCreateDisplayModeKHR ::
VkPhysicalDevice ->
VkDisplayKHR ->
Ptr VkDisplayModeCreateInfoKHR ->
Ptr VkAllocationCallbacks -> Ptr VkDisplayModeKHR -> IO VkResult
data VkDisplayPlanePropertiesKHR =
VkDisplayPlanePropertiesKHR{ vkCurrentDisplay :: VkDisplayKHR
, vkCurrentStackIndex :: Word32
}
deriving (Eq)
instance Storable VkDisplayPlanePropertiesKHR where
sizeOf ~_ = 16
alignment ~_ = 8
peek ptr = VkDisplayPlanePropertiesKHR <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
poke ptr poked = poke (ptr `plusPtr` 0) (vkCurrentDisplay (poked :: VkDisplayPlanePropertiesKHR))
*> poke (ptr `plusPtr` 8) (vkCurrentStackIndex (poked :: VkDisplayPlanePropertiesKHR))
foreign import ccall "vkGetDisplayPlaneCapabilitiesKHR" vkGetDisplayPlaneCapabilitiesKHR ::
VkPhysicalDevice ->
VkDisplayModeKHR ->
Word32 -> Ptr VkDisplayPlaneCapabilitiesKHR -> IO VkResult
data VkDisplayModePropertiesKHR =
VkDisplayModePropertiesKHR{ vkDisplayMode :: VkDisplayModeKHR
, vkParameters :: VkDisplayModeParametersKHR
}
deriving (Eq)
instance Storable VkDisplayModePropertiesKHR where
sizeOf ~_ = 24
alignment ~_ = 8
peek ptr = VkDisplayModePropertiesKHR <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
poke ptr poked = poke (ptr `plusPtr` 0) (vkDisplayMode (poked :: VkDisplayModePropertiesKHR))
*> poke (ptr `plusPtr` 8) (vkParameters (poked :: VkDisplayModePropertiesKHR))
newtype VkDisplayPlaneAlphaFlagBitsKHR = VkDisplayPlaneAlphaFlagBitsKHR VkFlags
deriving (Eq, Storable, Bits, FiniteBits)
type VkDisplayPlaneAlphaFlagsKHR = VkDisplayPlaneAlphaFlagBitsKHR
instance Show VkDisplayPlaneAlphaFlagBitsKHR where
showsPrec _ VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = showString "VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"
showsPrec _ VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = showString "VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"
showsPrec _ VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = showString "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"
showsPrec _ VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = showString "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"
showsPrec p (VkDisplayPlaneAlphaFlagBitsKHR x) = showParen (p >= 11) (showString "VkDisplayPlaneAlphaFlagBitsKHR " . showsPrec 11 x)
instance Read VkDisplayPlaneAlphaFlagBitsKHR where
readPrec = parens ( choose [ ("VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR", pure VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR)
, ("VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR", pure VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR)
, ("VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR", pure VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR)
, ("VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR", pure VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR)
] +++
prec 10 (do
expectP (Ident "VkDisplayPlaneAlphaFlagBitsKHR")
v <- step readPrec
pure (VkDisplayPlaneAlphaFlagBitsKHR v)
)
)
pattern VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = VkDisplayPlaneAlphaFlagBitsKHR 0x1
pattern VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = VkDisplayPlaneAlphaFlagBitsKHR 0x2
pattern VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = VkDisplayPlaneAlphaFlagBitsKHR 0x4
pattern VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = VkDisplayPlaneAlphaFlagBitsKHR 0x8
newtype VkDisplayModeCreateFlagsKHR = VkDisplayModeCreateFlagsKHR VkFlags
deriving (Eq, Storable)
data VkDisplayModeCreateInfoKHR =
VkDisplayModeCreateInfoKHR{ vkSType :: VkStructureType
, vkPNext :: Ptr Void
, vkFlags :: VkDisplayModeCreateFlagsKHR
, vkParameters :: VkDisplayModeParametersKHR
}
deriving (Eq)
instance Storable VkDisplayModeCreateInfoKHR where
sizeOf ~_ = 32
alignment ~_ = 8
peek ptr = VkDisplayModeCreateInfoKHR <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDisplayModeCreateInfoKHR))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDisplayModeCreateInfoKHR))
*> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkDisplayModeCreateInfoKHR))
*> poke (ptr `plusPtr` 20) (vkParameters (poked :: VkDisplayModeCreateInfoKHR))
foreign import ccall "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" vkGetPhysicalDeviceDisplayPlanePropertiesKHR ::
VkPhysicalDevice ->
Ptr Word32 -> Ptr VkDisplayPlanePropertiesKHR -> IO VkResult
newtype VkDisplayModeKHR = VkDisplayModeKHR Word64
deriving (Eq, Storable)
data VkDisplayModeParametersKHR =
VkDisplayModeParametersKHR{ vkVisibleRegion :: VkExtent2D
, vkRefreshRate :: Word32
}
deriving (Eq)
instance Storable VkDisplayModeParametersKHR where
sizeOf ~_ = 12
alignment ~_ = 4
peek ptr = VkDisplayModeParametersKHR <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
poke ptr poked = poke (ptr `plusPtr` 0) (vkVisibleRegion (poked :: VkDisplayModeParametersKHR))
*> poke (ptr `plusPtr` 8) (vkRefreshRate (poked :: VkDisplayModeParametersKHR))
newtype VkDisplaySurfaceCreateFlagsKHR = VkDisplaySurfaceCreateFlagsKHR VkFlags
deriving (Eq, Storable)
newtype VkDisplayKHR = VkDisplayKHR Word64
deriving (Eq, Storable)
foreign import ccall "vkGetPhysicalDeviceDisplayPropertiesKHR" vkGetPhysicalDeviceDisplayPropertiesKHR ::
VkPhysicalDevice ->
Ptr Word32 -> Ptr VkDisplayPropertiesKHR -> IO VkResult
foreign import ccall "vkCreateDisplayPlaneSurfaceKHR" vkCreateDisplayPlaneSurfaceKHR ::
VkInstance ->
Ptr VkDisplaySurfaceCreateInfoKHR ->
Ptr VkAllocationCallbacks -> Ptr VkSurfaceKHR -> IO VkResult