{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_display_surface_counter  ( getPhysicalDeviceSurfaceCapabilities2EXT
                                                         , pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT
                                                         , SurfaceCapabilities2EXT(..)
                                                         , SurfaceCounterFlagBitsEXT( SURFACE_COUNTER_VBLANK_EXT
                                                                                    , ..
                                                                                    )
                                                         , SurfaceCounterFlagsEXT
                                                         , EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION
                                                         , pattern EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION
                                                         , EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME
                                                         , pattern EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME
                                                         , SurfaceKHR(..)
                                                         , CompositeAlphaFlagBitsKHR(..)
                                                         , CompositeAlphaFlagsKHR
                                                         , SurfaceTransformFlagBitsKHR(..)
                                                         , SurfaceTransformFlagsKHR
                                                         ) where

import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Foreign.Marshal.Alloc (allocaBytesAligned)
import GHC.Base (when)
import GHC.IO (throwIO)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Read (choose)
import GHC.Read (expectP)
import GHC.Read (parens)
import GHC.Show (showParen)
import GHC.Show (showString)
import Numeric (showHex)
import Text.ParserCombinators.ReadPrec ((+++))
import Text.ParserCombinators.ReadPrec (prec)
import Text.ParserCombinators.ReadPrec (step)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Control.Monad.IO.Class (MonadIO)
import Data.Bits (Bits)
import Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import GHC.Generics (Generic)
import GHC.IO.Exception (IOErrorType(..))
import GHC.IO.Exception (IOException(..))
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import Data.Word (Word32)
import Text.Read.Lex (Lexeme(Ident))
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Vulkan.Extensions.VK_KHR_surface (CompositeAlphaFlagsKHR)
import Vulkan.Core10.SharedTypes (Extent2D)
import Vulkan.Core10.BaseType (Flags)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSurfaceCapabilities2EXT))
import Vulkan.Core10.Handles (PhysicalDevice)
import Vulkan.Core10.Handles (PhysicalDevice(..))
import Vulkan.Core10.Handles (PhysicalDevice_T)
import Vulkan.Core10.Enums.Result (Result)
import Vulkan.Core10.Enums.Result (Result(..))
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Extensions.Handles (SurfaceKHR)
import Vulkan.Extensions.Handles (SurfaceKHR(..))
import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagBitsKHR)
import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagsKHR)
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Exception (VulkanException(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
import Vulkan.Extensions.VK_KHR_surface (CompositeAlphaFlagBitsKHR(..))
import Vulkan.Extensions.VK_KHR_surface (CompositeAlphaFlagsKHR)
import Vulkan.Extensions.Handles (SurfaceKHR(..))
import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagBitsKHR(..))
import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagsKHR)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
  unsafe
#endif
  "dynamic" mkVkGetPhysicalDeviceSurfaceCapabilities2EXT
  :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr SurfaceCapabilities2EXT -> IO Result) -> Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr SurfaceCapabilities2EXT -> IO Result

-- | vkGetPhysicalDeviceSurfaceCapabilities2EXT - Query surface capabilities
--
-- = Description
--
-- 'getPhysicalDeviceSurfaceCapabilities2EXT' behaves similarly to
-- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR',
-- with the ability to return extended information by adding extension
-- structures to the @pNext@ chain of its @pSurfaceCapabilities@ parameter.
--
-- == Valid Usage (Implicit)
--
-- -   @physicalDevice@ /must/ be a valid
--     'Vulkan.Core10.Handles.PhysicalDevice' handle
--
-- -   @surface@ /must/ be a valid 'Vulkan.Extensions.Handles.SurfaceKHR'
--     handle
--
-- -   @pSurfaceCapabilities@ /must/ be a valid pointer to a
--     'SurfaceCapabilities2EXT' structure
--
-- -   Both of @physicalDevice@, and @surface@ /must/ have been created,
--     allocated, or retrieved from the same
--     'Vulkan.Core10.Handles.Instance'
--
-- == Return Codes
--
-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
--
--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
--
-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
--
--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
--
--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
--
--     -   'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
--
-- = See Also
--
-- 'Vulkan.Core10.Handles.PhysicalDevice', 'SurfaceCapabilities2EXT',
-- 'Vulkan.Extensions.Handles.SurfaceKHR'
getPhysicalDeviceSurfaceCapabilities2EXT :: forall io
                                          . (MonadIO io)
                                         => -- | @physicalDevice@ is the physical device that will be associated with the
                                            -- swapchain to be created, as described for
                                            -- 'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'.
                                            PhysicalDevice
                                         -> -- | @surface@ is the surface that will be associated with the swapchain.
                                            SurfaceKHR
                                         -> io (SurfaceCapabilities2EXT)
getPhysicalDeviceSurfaceCapabilities2EXT :: PhysicalDevice -> SurfaceKHR -> io SurfaceCapabilities2EXT
getPhysicalDeviceSurfaceCapabilities2EXT physicalDevice :: PhysicalDevice
physicalDevice surface :: SurfaceKHR
surface = IO SurfaceCapabilities2EXT -> io SurfaceCapabilities2EXT
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SurfaceCapabilities2EXT -> io SurfaceCapabilities2EXT)
-> (ContT SurfaceCapabilities2EXT IO SurfaceCapabilities2EXT
    -> IO SurfaceCapabilities2EXT)
-> ContT SurfaceCapabilities2EXT IO SurfaceCapabilities2EXT
-> io SurfaceCapabilities2EXT
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT SurfaceCapabilities2EXT IO SurfaceCapabilities2EXT
-> IO SurfaceCapabilities2EXT
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT SurfaceCapabilities2EXT IO SurfaceCapabilities2EXT
 -> io SurfaceCapabilities2EXT)
-> ContT SurfaceCapabilities2EXT IO SurfaceCapabilities2EXT
-> io SurfaceCapabilities2EXT
forall a b. (a -> b) -> a -> b
$ do
  let vkGetPhysicalDeviceSurfaceCapabilities2EXTPtr :: FunPtr
  (Ptr PhysicalDevice_T
   -> SurfaceKHR
   -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
   -> IO Result)
vkGetPhysicalDeviceSurfaceCapabilities2EXTPtr = InstanceCmds
-> FunPtr
     (Ptr PhysicalDevice_T
      -> SurfaceKHR
      -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
      -> IO Result)
pVkGetPhysicalDeviceSurfaceCapabilities2EXT (PhysicalDevice -> InstanceCmds
instanceCmds (PhysicalDevice
physicalDevice :: PhysicalDevice))
  IO () -> ContT SurfaceCapabilities2EXT IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT SurfaceCapabilities2EXT IO ())
-> IO () -> ContT SurfaceCapabilities2EXT IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
  (Ptr PhysicalDevice_T
   -> SurfaceKHR
   -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
   -> IO Result)
vkGetPhysicalDeviceSurfaceCapabilities2EXTPtr FunPtr
  (Ptr PhysicalDevice_T
   -> SurfaceKHR
   -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
   -> IO Result)
-> FunPtr
     (Ptr PhysicalDevice_T
      -> SurfaceKHR
      -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
      -> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
  (Ptr PhysicalDevice_T
   -> SurfaceKHR
   -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
   -> IO Result)
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
    IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkGetPhysicalDeviceSurfaceCapabilities2EXT is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
  let vkGetPhysicalDeviceSurfaceCapabilities2EXT' :: Ptr PhysicalDevice_T
-> SurfaceKHR
-> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> IO Result
vkGetPhysicalDeviceSurfaceCapabilities2EXT' = FunPtr
  (Ptr PhysicalDevice_T
   -> SurfaceKHR
   -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
   -> IO Result)
-> Ptr PhysicalDevice_T
-> SurfaceKHR
-> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> IO Result
mkVkGetPhysicalDeviceSurfaceCapabilities2EXT FunPtr
  (Ptr PhysicalDevice_T
   -> SurfaceKHR
   -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
   -> IO Result)
vkGetPhysicalDeviceSurfaceCapabilities2EXTPtr
  "pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
pPSurfaceCapabilities <- ((("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
  -> IO SurfaceCapabilities2EXT)
 -> IO SurfaceCapabilities2EXT)
-> ContT
     SurfaceCapabilities2EXT
     IO
     ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall b.
ToCStruct SurfaceCapabilities2EXT =>
(("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT) -> IO b)
-> IO b
forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @SurfaceCapabilities2EXT)
  Result
r <- IO Result -> ContT SurfaceCapabilities2EXT IO Result
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result -> ContT SurfaceCapabilities2EXT IO Result)
-> IO Result -> ContT SurfaceCapabilities2EXT IO Result
forall a b. (a -> b) -> a -> b
$ Ptr PhysicalDevice_T
-> SurfaceKHR
-> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> IO Result
vkGetPhysicalDeviceSurfaceCapabilities2EXT' (PhysicalDevice -> Ptr PhysicalDevice_T
physicalDeviceHandle (PhysicalDevice
physicalDevice)) (SurfaceKHR
surface) ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
pPSurfaceCapabilities)
  IO () -> ContT SurfaceCapabilities2EXT IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT SurfaceCapabilities2EXT IO ())
-> IO () -> ContT SurfaceCapabilities2EXT IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
  SurfaceCapabilities2EXT
pSurfaceCapabilities <- IO SurfaceCapabilities2EXT
-> ContT SurfaceCapabilities2EXT IO SurfaceCapabilities2EXT
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO SurfaceCapabilities2EXT
 -> ContT SurfaceCapabilities2EXT IO SurfaceCapabilities2EXT)
-> IO SurfaceCapabilities2EXT
-> ContT SurfaceCapabilities2EXT IO SurfaceCapabilities2EXT
forall a b. (a -> b) -> a -> b
$ ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> IO SurfaceCapabilities2EXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @SurfaceCapabilities2EXT "pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
pPSurfaceCapabilities
  SurfaceCapabilities2EXT
-> ContT SurfaceCapabilities2EXT IO SurfaceCapabilities2EXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (SurfaceCapabilities2EXT
 -> ContT SurfaceCapabilities2EXT IO SurfaceCapabilities2EXT)
-> SurfaceCapabilities2EXT
-> ContT SurfaceCapabilities2EXT IO SurfaceCapabilities2EXT
forall a b. (a -> b) -> a -> b
$ (SurfaceCapabilities2EXT
pSurfaceCapabilities)


-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT"
pattern $bSTRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT :: StructureType
$mSTRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT :: forall r. StructureType -> (Void# -> r) -> (Void# -> r) -> r
STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT


-- | VkSurfaceCapabilities2EXT - Structure describing capabilities of a
-- surface
--
-- = Members
--
-- All members of 'SurfaceCapabilities2EXT' are identical to the
-- corresponding members of
-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' where one
-- exists. The remaining members are:
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- 'Vulkan.Extensions.VK_KHR_surface.CompositeAlphaFlagsKHR',
-- 'Vulkan.Core10.SharedTypes.Extent2D',
-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',
-- 'Vulkan.Core10.Enums.StructureType.StructureType',
-- 'SurfaceCounterFlagsEXT',
-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagBitsKHR',
-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagsKHR',
-- 'getPhysicalDeviceSurfaceCapabilities2EXT'
data SurfaceCapabilities2EXT = SurfaceCapabilities2EXT
  { -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "minImageCount"
    SurfaceCapabilities2EXT -> Word32
minImageCount :: Word32
  , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "maxImageCount"
    SurfaceCapabilities2EXT -> Word32
maxImageCount :: Word32
  , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "currentExtent"
    SurfaceCapabilities2EXT -> Extent2D
currentExtent :: Extent2D
  , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "minImageExtent"
    SurfaceCapabilities2EXT -> Extent2D
minImageExtent :: Extent2D
  , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "maxImageExtent"
    SurfaceCapabilities2EXT -> Extent2D
maxImageExtent :: Extent2D
  , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "maxImageArrayLayers"
    SurfaceCapabilities2EXT -> Word32
maxImageArrayLayers :: Word32
  , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "supportedTransforms"
    SurfaceCapabilities2EXT -> SurfaceTransformFlagsKHR
supportedTransforms :: SurfaceTransformFlagsKHR
  , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "currentTransform"
    SurfaceCapabilities2EXT -> SurfaceTransformFlagsKHR
currentTransform :: SurfaceTransformFlagBitsKHR
  , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "supportedCompositeAlpha"
    SurfaceCapabilities2EXT -> CompositeAlphaFlagsKHR
supportedCompositeAlpha :: CompositeAlphaFlagsKHR
  , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "supportedUsageFlags"
    SurfaceCapabilities2EXT -> ImageUsageFlags
supportedUsageFlags :: ImageUsageFlags
  , -- | @supportedSurfaceCounters@ is a bitmask of 'SurfaceCounterFlagBitsEXT'
    -- indicating the supported surface counter types.
    --
    -- @supportedSurfaceCounters@ /must/ not include
    -- 'SURFACE_COUNTER_VBLANK_EXT' unless the surface queried is a
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#wsi-display-surfaces display surface>
    SurfaceCapabilities2EXT -> SurfaceCounterFlagsEXT
supportedSurfaceCounters :: SurfaceCounterFlagsEXT
  }
  deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SurfaceCapabilities2EXT)
#endif
deriving instance Show SurfaceCapabilities2EXT

instance ToCStruct SurfaceCapabilities2EXT where
  withCStruct :: SurfaceCapabilities2EXT
-> (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
    -> IO b)
-> IO b
withCStruct x :: SurfaceCapabilities2EXT
x f :: ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT) -> IO b
f = Int
-> Int
-> (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
    -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 72 8 ((("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT) -> IO b)
 -> IO b)
-> (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
    -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \p :: "pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> SurfaceCapabilities2EXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p SurfaceCapabilities2EXT
x (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT) -> IO b
f "pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p)
  pokeCStruct :: ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> SurfaceCapabilities2EXT -> IO b -> IO b
pokeCStruct p :: "pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p SurfaceCapabilities2EXT{..} f :: IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT)
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32)) (Word32
minImageCount)
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32)) (Word32
maxImageCount)
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Extent2D -> Extent2D -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Extent2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Extent2D)) (Extent2D
currentExtent) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Extent2D -> Extent2D -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Extent2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Extent2D)) (Extent2D
minImageExtent) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Extent2D -> Extent2D -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Extent2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr Extent2D)) (Extent2D
maxImageExtent) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Word32)) (Word32
maxImageArrayLayers)
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceTransformFlagsKHR -> SurfaceTransformFlagsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr SurfaceTransformFlagsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 52 :: Ptr SurfaceTransformFlagsKHR)) (SurfaceTransformFlagsKHR
supportedTransforms)
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceTransformFlagsKHR -> SurfaceTransformFlagsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr SurfaceTransformFlagsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr SurfaceTransformFlagBitsKHR)) (SurfaceTransformFlagsKHR
currentTransform)
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr CompositeAlphaFlagsKHR -> CompositeAlphaFlagsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr CompositeAlphaFlagsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 60 :: Ptr CompositeAlphaFlagsKHR)) (CompositeAlphaFlagsKHR
supportedCompositeAlpha)
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr ImageUsageFlags -> ImageUsageFlags -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr ImageUsageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 64 :: Ptr ImageUsageFlags)) (ImageUsageFlags
supportedUsageFlags)
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr SurfaceCounterFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 68 :: Ptr SurfaceCounterFlagsEXT)) (SurfaceCounterFlagsEXT
supportedSurfaceCounters)
    IO b -> ContT b IO b
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
  cStructSize :: Int
cStructSize = 72
  cStructAlignment :: Int
cStructAlignment = 8
  pokeZeroCStruct :: ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> IO b -> IO b
pokeZeroCStruct p :: "pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p f :: IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT)
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Extent2D -> Extent2D -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Extent2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Extent2D)) (Extent2D
forall a. Zero a => a
zero) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Extent2D -> Extent2D -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Extent2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Extent2D)) (Extent2D
forall a. Zero a => a
zero) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Extent2D -> Extent2D -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Extent2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr Extent2D)) (Extent2D
forall a. Zero a => a
zero) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Word32)) (Word32
forall a. Zero a => a
zero)
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr SurfaceTransformFlagsKHR -> SurfaceTransformFlagsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr SurfaceTransformFlagsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr SurfaceTransformFlagBitsKHR)) (SurfaceTransformFlagsKHR
forall a. Zero a => a
zero)
    IO b -> ContT b IO b
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f

instance FromCStruct SurfaceCapabilities2EXT where
  peekCStruct :: ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> IO SurfaceCapabilities2EXT
peekCStruct p :: "pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p = do
    Word32
minImageCount <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: Ptr Word32))
    Word32
maxImageCount <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 20 :: Ptr Word32))
    Extent2D
currentExtent <- Ptr Extent2D -> IO Extent2D
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @Extent2D (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Extent2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 24 :: Ptr Extent2D))
    Extent2D
minImageExtent <- Ptr Extent2D -> IO Extent2D
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @Extent2D (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Extent2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr Extent2D))
    Extent2D
maxImageExtent <- Ptr Extent2D -> IO Extent2D
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @Extent2D (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Extent2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr Extent2D))
    Word32
maxImageArrayLayers <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek @Word32 (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 48 :: Ptr Word32))
    SurfaceTransformFlagsKHR
supportedTransforms <- Ptr SurfaceTransformFlagsKHR -> IO SurfaceTransformFlagsKHR
forall a. Storable a => Ptr a -> IO a
peek @SurfaceTransformFlagsKHR (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr SurfaceTransformFlagsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 52 :: Ptr SurfaceTransformFlagsKHR))
    SurfaceTransformFlagsKHR
currentTransform <- Ptr SurfaceTransformFlagsKHR -> IO SurfaceTransformFlagsKHR
forall a. Storable a => Ptr a -> IO a
peek @SurfaceTransformFlagBitsKHR (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr SurfaceTransformFlagsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 56 :: Ptr SurfaceTransformFlagBitsKHR))
    CompositeAlphaFlagsKHR
supportedCompositeAlpha <- Ptr CompositeAlphaFlagsKHR -> IO CompositeAlphaFlagsKHR
forall a. Storable a => Ptr a -> IO a
peek @CompositeAlphaFlagsKHR (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr CompositeAlphaFlagsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 60 :: Ptr CompositeAlphaFlagsKHR))
    ImageUsageFlags
supportedUsageFlags <- Ptr ImageUsageFlags -> IO ImageUsageFlags
forall a. Storable a => Ptr a -> IO a
peek @ImageUsageFlags (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr ImageUsageFlags
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 64 :: Ptr ImageUsageFlags))
    SurfaceCounterFlagsEXT
supportedSurfaceCounters <- Ptr SurfaceCounterFlagsEXT -> IO SurfaceCounterFlagsEXT
forall a. Storable a => Ptr a -> IO a
peek @SurfaceCounterFlagsEXT (("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT
p ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT)
-> Int -> Ptr SurfaceCounterFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 68 :: Ptr SurfaceCounterFlagsEXT))
    SurfaceCapabilities2EXT -> IO SurfaceCapabilities2EXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (SurfaceCapabilities2EXT -> IO SurfaceCapabilities2EXT)
-> SurfaceCapabilities2EXT -> IO SurfaceCapabilities2EXT
forall a b. (a -> b) -> a -> b
$ Word32
-> Word32
-> Extent2D
-> Extent2D
-> Extent2D
-> Word32
-> SurfaceTransformFlagsKHR
-> SurfaceTransformFlagsKHR
-> CompositeAlphaFlagsKHR
-> ImageUsageFlags
-> SurfaceCounterFlagsEXT
-> SurfaceCapabilities2EXT
SurfaceCapabilities2EXT
             Word32
minImageCount Word32
maxImageCount Extent2D
currentExtent Extent2D
minImageExtent Extent2D
maxImageExtent Word32
maxImageArrayLayers SurfaceTransformFlagsKHR
supportedTransforms SurfaceTransformFlagsKHR
currentTransform CompositeAlphaFlagsKHR
supportedCompositeAlpha ImageUsageFlags
supportedUsageFlags SurfaceCounterFlagsEXT
supportedSurfaceCounters

instance Zero SurfaceCapabilities2EXT where
  zero :: SurfaceCapabilities2EXT
zero = Word32
-> Word32
-> Extent2D
-> Extent2D
-> Extent2D
-> Word32
-> SurfaceTransformFlagsKHR
-> SurfaceTransformFlagsKHR
-> CompositeAlphaFlagsKHR
-> ImageUsageFlags
-> SurfaceCounterFlagsEXT
-> SurfaceCapabilities2EXT
SurfaceCapabilities2EXT
           Word32
forall a. Zero a => a
zero
           Word32
forall a. Zero a => a
zero
           Extent2D
forall a. Zero a => a
zero
           Extent2D
forall a. Zero a => a
zero
           Extent2D
forall a. Zero a => a
zero
           Word32
forall a. Zero a => a
zero
           SurfaceTransformFlagsKHR
forall a. Zero a => a
zero
           SurfaceTransformFlagsKHR
forall a. Zero a => a
zero
           CompositeAlphaFlagsKHR
forall a. Zero a => a
zero
           ImageUsageFlags
forall a. Zero a => a
zero
           SurfaceCounterFlagsEXT
forall a. Zero a => a
zero


-- | VkSurfaceCounterFlagBitsEXT - Surface-relative counter types
--
-- = See Also
--
-- 'SurfaceCounterFlagsEXT',
-- 'Vulkan.Extensions.VK_EXT_display_control.getSwapchainCounterEXT'
newtype SurfaceCounterFlagBitsEXT = SurfaceCounterFlagBitsEXT Flags
  deriving newtype (SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool
(SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool)
-> (SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool)
-> Eq SurfaceCounterFlagsEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool
$c/= :: SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool
== :: SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool
$c== :: SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool
Eq, Eq SurfaceCounterFlagsEXT
Eq SurfaceCounterFlagsEXT =>
(SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Ordering)
-> (SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool)
-> (SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool)
-> (SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool)
-> (SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool)
-> (SurfaceCounterFlagsEXT
    -> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT)
-> (SurfaceCounterFlagsEXT
    -> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT)
-> Ord SurfaceCounterFlagsEXT
SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool
SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Ordering
SurfaceCounterFlagsEXT
-> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: SurfaceCounterFlagsEXT
-> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT
$cmin :: SurfaceCounterFlagsEXT
-> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT
max :: SurfaceCounterFlagsEXT
-> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT
$cmax :: SurfaceCounterFlagsEXT
-> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT
>= :: SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool
$c>= :: SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool
> :: SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool
$c> :: SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool
<= :: SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool
$c<= :: SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool
< :: SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool
$c< :: SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Bool
compare :: SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Ordering
$ccompare :: SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> Ordering
$cp1Ord :: Eq SurfaceCounterFlagsEXT
Ord, Ptr b -> Int -> IO SurfaceCounterFlagsEXT
Ptr b -> Int -> SurfaceCounterFlagsEXT -> IO ()
Ptr SurfaceCounterFlagsEXT -> IO SurfaceCounterFlagsEXT
Ptr SurfaceCounterFlagsEXT -> Int -> IO SurfaceCounterFlagsEXT
Ptr SurfaceCounterFlagsEXT
-> Int -> SurfaceCounterFlagsEXT -> IO ()
Ptr SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> IO ()
SurfaceCounterFlagsEXT -> Int
(SurfaceCounterFlagsEXT -> Int)
-> (SurfaceCounterFlagsEXT -> Int)
-> (Ptr SurfaceCounterFlagsEXT -> Int -> IO SurfaceCounterFlagsEXT)
-> (Ptr SurfaceCounterFlagsEXT
    -> Int -> SurfaceCounterFlagsEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO SurfaceCounterFlagsEXT)
-> (forall b. Ptr b -> Int -> SurfaceCounterFlagsEXT -> IO ())
-> (Ptr SurfaceCounterFlagsEXT -> IO SurfaceCounterFlagsEXT)
-> (Ptr SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> IO ())
-> Storable SurfaceCounterFlagsEXT
forall b. Ptr b -> Int -> IO SurfaceCounterFlagsEXT
forall b. Ptr b -> Int -> SurfaceCounterFlagsEXT -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
poke :: Ptr SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> IO ()
$cpoke :: Ptr SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT -> IO ()
peek :: Ptr SurfaceCounterFlagsEXT -> IO SurfaceCounterFlagsEXT
$cpeek :: Ptr SurfaceCounterFlagsEXT -> IO SurfaceCounterFlagsEXT
pokeByteOff :: Ptr b -> Int -> SurfaceCounterFlagsEXT -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> SurfaceCounterFlagsEXT -> IO ()
peekByteOff :: Ptr b -> Int -> IO SurfaceCounterFlagsEXT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO SurfaceCounterFlagsEXT
pokeElemOff :: Ptr SurfaceCounterFlagsEXT
-> Int -> SurfaceCounterFlagsEXT -> IO ()
$cpokeElemOff :: Ptr SurfaceCounterFlagsEXT
-> Int -> SurfaceCounterFlagsEXT -> IO ()
peekElemOff :: Ptr SurfaceCounterFlagsEXT -> Int -> IO SurfaceCounterFlagsEXT
$cpeekElemOff :: Ptr SurfaceCounterFlagsEXT -> Int -> IO SurfaceCounterFlagsEXT
alignment :: SurfaceCounterFlagsEXT -> Int
$calignment :: SurfaceCounterFlagsEXT -> Int
sizeOf :: SurfaceCounterFlagsEXT -> Int
$csizeOf :: SurfaceCounterFlagsEXT -> Int
Storable, SurfaceCounterFlagsEXT
SurfaceCounterFlagsEXT -> Zero SurfaceCounterFlagsEXT
forall a. a -> Zero a
zero :: SurfaceCounterFlagsEXT
$czero :: SurfaceCounterFlagsEXT
Zero, Eq SurfaceCounterFlagsEXT
SurfaceCounterFlagsEXT
Eq SurfaceCounterFlagsEXT =>
(SurfaceCounterFlagsEXT
 -> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT)
-> (SurfaceCounterFlagsEXT
    -> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT)
-> (SurfaceCounterFlagsEXT
    -> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT)
-> (SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT)
-> (SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT)
-> (SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT)
-> SurfaceCounterFlagsEXT
-> (Int -> SurfaceCounterFlagsEXT)
-> (SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT)
-> (SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT)
-> (SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT)
-> (SurfaceCounterFlagsEXT -> Int -> Bool)
-> (SurfaceCounterFlagsEXT -> Maybe Int)
-> (SurfaceCounterFlagsEXT -> Int)
-> (SurfaceCounterFlagsEXT -> Bool)
-> (SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT)
-> (SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT)
-> (SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT)
-> (SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT)
-> (SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT)
-> (SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT)
-> (SurfaceCounterFlagsEXT -> Int)
-> Bits SurfaceCounterFlagsEXT
Int -> SurfaceCounterFlagsEXT
SurfaceCounterFlagsEXT -> Bool
SurfaceCounterFlagsEXT -> Int
SurfaceCounterFlagsEXT -> Maybe Int
SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT
SurfaceCounterFlagsEXT -> Int -> Bool
SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
SurfaceCounterFlagsEXT
-> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
popCount :: SurfaceCounterFlagsEXT -> Int
$cpopCount :: SurfaceCounterFlagsEXT -> Int
rotateR :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
$crotateR :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
rotateL :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
$crotateL :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
unsafeShiftR :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
$cunsafeShiftR :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
shiftR :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
$cshiftR :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
unsafeShiftL :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
$cunsafeShiftL :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
shiftL :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
$cshiftL :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
isSigned :: SurfaceCounterFlagsEXT -> Bool
$cisSigned :: SurfaceCounterFlagsEXT -> Bool
bitSize :: SurfaceCounterFlagsEXT -> Int
$cbitSize :: SurfaceCounterFlagsEXT -> Int
bitSizeMaybe :: SurfaceCounterFlagsEXT -> Maybe Int
$cbitSizeMaybe :: SurfaceCounterFlagsEXT -> Maybe Int
testBit :: SurfaceCounterFlagsEXT -> Int -> Bool
$ctestBit :: SurfaceCounterFlagsEXT -> Int -> Bool
complementBit :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
$ccomplementBit :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
clearBit :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
$cclearBit :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
setBit :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
$csetBit :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
bit :: Int -> SurfaceCounterFlagsEXT
$cbit :: Int -> SurfaceCounterFlagsEXT
zeroBits :: SurfaceCounterFlagsEXT
$czeroBits :: SurfaceCounterFlagsEXT
rotate :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
$crotate :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
shift :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
$cshift :: SurfaceCounterFlagsEXT -> Int -> SurfaceCounterFlagsEXT
complement :: SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT
$ccomplement :: SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT
xor :: SurfaceCounterFlagsEXT
-> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT
$cxor :: SurfaceCounterFlagsEXT
-> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT
.|. :: SurfaceCounterFlagsEXT
-> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT
$c.|. :: SurfaceCounterFlagsEXT
-> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT
.&. :: SurfaceCounterFlagsEXT
-> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT
$c.&. :: SurfaceCounterFlagsEXT
-> SurfaceCounterFlagsEXT -> SurfaceCounterFlagsEXT
$cp1Bits :: Eq SurfaceCounterFlagsEXT
Bits)

-- | 'SURFACE_COUNTER_VBLANK_EXT' specifies a counter incrementing once every
-- time a vertical blanking period occurs on the display associated with
-- the surface.
pattern $bSURFACE_COUNTER_VBLANK_EXT :: SurfaceCounterFlagsEXT
$mSURFACE_COUNTER_VBLANK_EXT :: forall r.
SurfaceCounterFlagsEXT -> (Void# -> r) -> (Void# -> r) -> r
SURFACE_COUNTER_VBLANK_EXT = SurfaceCounterFlagBitsEXT 0x00000001

type SurfaceCounterFlagsEXT = SurfaceCounterFlagBitsEXT

instance Show SurfaceCounterFlagBitsEXT where
  showsPrec :: Int -> SurfaceCounterFlagsEXT -> ShowS
showsPrec p :: Int
p = \case
    SURFACE_COUNTER_VBLANK_EXT -> String -> ShowS
showString "SURFACE_COUNTER_VBLANK_EXT"
    SurfaceCounterFlagBitsEXT x :: Word32
x -> Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 11) (String -> ShowS
showString "SurfaceCounterFlagBitsEXT 0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> ShowS
forall a. (Integral a, Show a) => a -> ShowS
showHex Word32
x)

instance Read SurfaceCounterFlagBitsEXT where
  readPrec :: ReadPrec SurfaceCounterFlagsEXT
readPrec = ReadPrec SurfaceCounterFlagsEXT -> ReadPrec SurfaceCounterFlagsEXT
forall a. ReadPrec a -> ReadPrec a
parens ([(String, ReadPrec SurfaceCounterFlagsEXT)]
-> ReadPrec SurfaceCounterFlagsEXT
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose [("SURFACE_COUNTER_VBLANK_EXT", SurfaceCounterFlagsEXT -> ReadPrec SurfaceCounterFlagsEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure SurfaceCounterFlagsEXT
SURFACE_COUNTER_VBLANK_EXT)]
                     ReadPrec SurfaceCounterFlagsEXT
-> ReadPrec SurfaceCounterFlagsEXT
-> ReadPrec SurfaceCounterFlagsEXT
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
                     Int
-> ReadPrec SurfaceCounterFlagsEXT
-> ReadPrec SurfaceCounterFlagsEXT
forall a. Int -> ReadPrec a -> ReadPrec a
prec 10 (do
                       Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident "SurfaceCounterFlagBitsEXT")
                       Word32
v <- ReadPrec Word32 -> ReadPrec Word32
forall a. ReadPrec a -> ReadPrec a
step ReadPrec Word32
forall a. Read a => ReadPrec a
readPrec
                       SurfaceCounterFlagsEXT -> ReadPrec SurfaceCounterFlagsEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Word32 -> SurfaceCounterFlagsEXT
SurfaceCounterFlagBitsEXT Word32
v)))


type EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION"
pattern EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION :: forall a . Integral a => a
pattern $bEXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION :: a
$mEXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1


type EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter"

-- No documentation found for TopLevel "VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME"
pattern EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bEXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME :: a
$mEXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME :: forall r a.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter"