{-# language CPP #-}
-- | = Name
--
-- VK_KHR_surface_maintenance1 - instance extension
--
-- = VK_KHR_surface_maintenance1
--
-- [__Name String__]
--     @VK_KHR_surface_maintenance1@
--
-- [__Extension Type__]
--     Instance extension
--
-- [__Registered Extension Number__]
--     487
--
-- [__Revision__]
--     1
--
-- [__Ratification Status__]
--     Ratified
--
-- [__Extension and Version Dependencies__]
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>
--     and
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 VK_KHR_get_surface_capabilities2>
--
-- [__Contact__]
--
--     -   Shahbaz Youssefi
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_surface_maintenance1] @syoussefi%0A*Here describe the issue or question you have about the VK_KHR_surface_maintenance1 extension* >
--
-- [__Extension Proposal__]
--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_surface_maintenance1.adoc VK_KHR_surface_maintenance1>
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2025-03-31
--
-- [__Contributors__]
--
--     -   James Jones, NVIDIA
--
--     -   Jeff Juliano, NVIDIA
--
--     -   Lionel Landwerlin, Intel
--
--     -   Shahbaz Youssefi, Google
--
--     -   Chris Forbes, Google
--
--     -   Ian Elliott, Google
--
--     -   Hans-Kristian Arntzen, Valve
--
--     -   Daniel Stone, Collabora
--
-- == Description
--
-- This extension is based off the @VK_EXT_surface_maintenance1@ extension.
--
-- @VK_KHR_surface_maintenance1@ adds a collection of window system
-- integration features that were intentionally left out or overlooked in
-- the original @VK_KHR_surface@ extension.
--
-- The new features are as follows:
--
-- -   Allow querying number of min\/max images from a surface for a
--     particular presentation mode.
--
-- -   Allow querying a surface’s scaled presentation capabilities.
--
-- -   Allow querying a surface for the set of presentation modes which can
--     be easily switched between without requiring swapchain recreation.
--
-- == New Structures
--
-- -   Extending
--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR':
--
--     -   'SurfacePresentModeKHR'
--
-- -   Extending
--     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR':
--
--     -   'SurfacePresentModeCompatibilityKHR'
--
--     -   'SurfacePresentScalingCapabilitiesKHR'
--
-- == New Enums
--
-- -   'PresentGravityFlagBitsKHR'
--
-- -   'PresentScalingFlagBitsKHR'
--
-- == New Bitmasks
--
-- -   'PresentGravityFlagsKHR'
--
-- -   'PresentScalingFlagsKHR'
--
-- == New Enum Constants
--
-- -   'KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME'
--
-- -   'KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR'
--
-- == Version History
--
-- -   Revision 1, 2025-03-31 (Shahbaz Youssefi)
--
--     -   Based on VK_EXT_surface_maintenance1
--
-- == See Also
--
-- No cross-references are available
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_surface_maintenance1 Vulkan Specification>.
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module Vulkan.Extensions.VK_KHR_surface_maintenance1  ( pattern PRESENT_SCALING_ONE_TO_ONE_BIT_EXT
                                                      , pattern PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT
                                                      , pattern PRESENT_SCALING_STRETCH_BIT_EXT
                                                      , pattern PRESENT_GRAVITY_MIN_BIT_EXT
                                                      , pattern PRESENT_GRAVITY_MAX_BIT_EXT
                                                      , pattern PRESENT_GRAVITY_CENTERED_BIT_EXT
                                                      , SurfacePresentModeKHR(..)
                                                      , SurfacePresentScalingCapabilitiesKHR(..)
                                                      , SurfacePresentModeCompatibilityKHR(..)
                                                      , PresentScalingFlagsKHR
                                                      , PresentScalingFlagBitsKHR( PRESENT_SCALING_ONE_TO_ONE_BIT_KHR
                                                                                 , PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR
                                                                                 , PRESENT_SCALING_STRETCH_BIT_KHR
                                                                                 , ..
                                                                                 )
                                                      , PresentGravityFlagsKHR
                                                      , PresentGravityFlagBitsKHR( PRESENT_GRAVITY_MIN_BIT_KHR
                                                                                 , PRESENT_GRAVITY_MAX_BIT_KHR
                                                                                 , PRESENT_GRAVITY_CENTERED_BIT_KHR
                                                                                 , ..
                                                                                 )
                                                      , KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION
                                                      , pattern KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION
                                                      , KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME
                                                      , pattern KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME
                                                      , PresentModeKHR(..)
                                                      ) where

import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showString)
import Numeric (showHex)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
import Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Data.Word (Word32)
import Data.Kind (Type)
import Vulkan.Core10.FundamentalTypes (Extent2D)
import Vulkan.Core10.FundamentalTypes (Flags)
import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR))
import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR(..))
-- No documentation found for TopLevel "VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT"
pattern $mPRESENT_SCALING_ONE_TO_ONE_BIT_EXT :: forall {r}.
PresentScalingFlagBitsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bPRESENT_SCALING_ONE_TO_ONE_BIT_EXT :: PresentScalingFlagBitsKHR
PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = PRESENT_SCALING_ONE_TO_ONE_BIT_KHR


-- No documentation found for TopLevel "VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT"
pattern $mPRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT :: forall {r}.
PresentScalingFlagBitsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bPRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT :: PresentScalingFlagBitsKHR
PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR


-- No documentation found for TopLevel "VK_PRESENT_SCALING_STRETCH_BIT_EXT"
pattern $mPRESENT_SCALING_STRETCH_BIT_EXT :: forall {r}.
PresentScalingFlagBitsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bPRESENT_SCALING_STRETCH_BIT_EXT :: PresentScalingFlagBitsKHR
PRESENT_SCALING_STRETCH_BIT_EXT = PRESENT_SCALING_STRETCH_BIT_KHR


-- No documentation found for TopLevel "VK_PRESENT_GRAVITY_MIN_BIT_EXT"
pattern $mPRESENT_GRAVITY_MIN_BIT_EXT :: forall {r}.
PresentGravityFlagBitsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bPRESENT_GRAVITY_MIN_BIT_EXT :: PresentGravityFlagBitsKHR
PRESENT_GRAVITY_MIN_BIT_EXT = PRESENT_GRAVITY_MIN_BIT_KHR


-- No documentation found for TopLevel "VK_PRESENT_GRAVITY_MAX_BIT_EXT"
pattern $mPRESENT_GRAVITY_MAX_BIT_EXT :: forall {r}.
PresentGravityFlagBitsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bPRESENT_GRAVITY_MAX_BIT_EXT :: PresentGravityFlagBitsKHR
PRESENT_GRAVITY_MAX_BIT_EXT = PRESENT_GRAVITY_MAX_BIT_KHR


-- No documentation found for TopLevel "VK_PRESENT_GRAVITY_CENTERED_BIT_EXT"
pattern $mPRESENT_GRAVITY_CENTERED_BIT_EXT :: forall {r}.
PresentGravityFlagBitsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bPRESENT_GRAVITY_CENTERED_BIT_EXT :: PresentGravityFlagBitsKHR
PRESENT_GRAVITY_CENTERED_BIT_EXT = PRESENT_GRAVITY_CENTERED_BIT_KHR


-- | VkSurfacePresentModeKHR - Structure describing present mode of a surface
--
-- = Description
--
-- If the 'SurfacePresentModeKHR' structure is included in the @pNext@
-- chain of
-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR',
-- the values returned in
-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@minImageCount@,
-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@maxImageCount@,
-- 'SurfacePresentScalingCapabilitiesKHR'::@minScaledImageExtent@, and
-- 'SurfacePresentScalingCapabilitiesKHR'::@maxScaledImageExtent@ are valid
-- only for the specified @presentMode@. If @presentMode@ is
-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'
-- or
-- 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR',
-- the per-present mode image counts /must/ both be one. The per-present
-- mode image counts /may/ be less-than or greater-than the image counts
-- returned when 'SurfacePresentModeKHR' is not provided.
--
-- If
-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModesCreateInfoKHR'
-- is provided to swapchain creation, the requirements for forward progress
-- may be less strict. For example, a FIFO swapchain might only require 2
-- images to guarantee forward progress, but a MAILBOX one might require 4.
-- Without the per-present image counts, such an implementation would have
-- to return 4 in
-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@minImageCount@,
-- which pessimizes FIFO. Conversely, an implementation may return a low
-- number for minImageCount, but internally bump the image count when
-- application queries
-- 'Vulkan.Extensions.VK_KHR_swapchain.getSwapchainImagesKHR', which can
-- surprise applications, and is not discoverable until swapchain creation.
-- Using 'SurfacePresentModeKHR' and
-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModesCreateInfoKHR'
-- together effectively removes this problem.
--
-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModesCreateInfoKHR'
-- is required for the specification to be backwards compatible with
-- applications that do not know about, or make use of this feature.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 VK_EXT_surface_maintenance1>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_maintenance1 VK_KHR_surface_maintenance1>,
-- 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data SurfacePresentModeKHR = SurfacePresentModeKHR
  { -- | @presentMode@ is the presentation mode the swapchain will use.
    --
    -- #VUID-VkSurfacePresentModeKHR-presentMode-07780# @presentMode@ /must/ be
    -- a value reported by
    -- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfacePresentModesKHR'
    -- for the specified surface
    --
    -- #VUID-VkSurfacePresentModeKHR-presentMode-parameter# @presentMode@
    -- /must/ be a valid 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR'
    -- value
    SurfacePresentModeKHR -> PresentModeKHR
presentMode :: PresentModeKHR }
  deriving (Typeable, SurfacePresentModeKHR -> SurfacePresentModeKHR -> Bool
(SurfacePresentModeKHR -> SurfacePresentModeKHR -> Bool)
-> (SurfacePresentModeKHR -> SurfacePresentModeKHR -> Bool)
-> Eq SurfacePresentModeKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SurfacePresentModeKHR -> SurfacePresentModeKHR -> Bool
== :: SurfacePresentModeKHR -> SurfacePresentModeKHR -> Bool
$c/= :: SurfacePresentModeKHR -> SurfacePresentModeKHR -> Bool
/= :: SurfacePresentModeKHR -> SurfacePresentModeKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SurfacePresentModeKHR)
#endif
deriving instance Show SurfacePresentModeKHR

instance ToCStruct SurfacePresentModeKHR where
  withCStruct :: forall b.
SurfacePresentModeKHR
-> (Ptr SurfacePresentModeKHR -> IO b) -> IO b
withCStruct SurfacePresentModeKHR
x Ptr SurfacePresentModeKHR -> IO b
f = Int -> (Ptr SurfacePresentModeKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr SurfacePresentModeKHR -> IO b) -> IO b)
-> (Ptr SurfacePresentModeKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr SurfacePresentModeKHR
p -> Ptr SurfacePresentModeKHR -> SurfacePresentModeKHR -> IO b -> IO b
forall b.
Ptr SurfacePresentModeKHR -> SurfacePresentModeKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SurfacePresentModeKHR
p SurfacePresentModeKHR
x (Ptr SurfacePresentModeKHR -> IO b
f Ptr SurfacePresentModeKHR
p)
  pokeCStruct :: forall b.
Ptr SurfacePresentModeKHR -> SurfacePresentModeKHR -> IO b -> IO b
pokeCStruct Ptr SurfacePresentModeKHR
p SurfacePresentModeKHR{PresentModeKHR
presentMode :: SurfacePresentModeKHR -> PresentModeKHR
presentMode :: PresentModeKHR
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentModeKHR
p Ptr SurfacePresentModeKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentModeKHR
p Ptr SurfacePresentModeKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr PresentModeKHR -> PresentModeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentModeKHR
p Ptr SurfacePresentModeKHR -> Int -> Ptr PresentModeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PresentModeKHR)) (PresentModeKHR
presentMode)
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr SurfacePresentModeKHR -> IO b -> IO b
pokeZeroCStruct Ptr SurfacePresentModeKHR
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentModeKHR
p Ptr SurfacePresentModeKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentModeKHR
p Ptr SurfacePresentModeKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr PresentModeKHR -> PresentModeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentModeKHR
p Ptr SurfacePresentModeKHR -> Int -> Ptr PresentModeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PresentModeKHR)) (PresentModeKHR
forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct SurfacePresentModeKHR where
  peekCStruct :: Ptr SurfacePresentModeKHR -> IO SurfacePresentModeKHR
peekCStruct Ptr SurfacePresentModeKHR
p = do
    presentMode <- forall a. Storable a => Ptr a -> IO a
peek @PresentModeKHR ((Ptr SurfacePresentModeKHR
p Ptr SurfacePresentModeKHR -> Int -> Ptr PresentModeKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PresentModeKHR))
    pure $ SurfacePresentModeKHR
             presentMode

instance Storable SurfacePresentModeKHR where
  sizeOf :: SurfacePresentModeKHR -> Int
sizeOf ~SurfacePresentModeKHR
_ = Int
24
  alignment :: SurfacePresentModeKHR -> Int
alignment ~SurfacePresentModeKHR
_ = Int
8
  peek :: Ptr SurfacePresentModeKHR -> IO SurfacePresentModeKHR
peek = Ptr SurfacePresentModeKHR -> IO SurfacePresentModeKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr SurfacePresentModeKHR -> SurfacePresentModeKHR -> IO ()
poke Ptr SurfacePresentModeKHR
ptr SurfacePresentModeKHR
poked = Ptr SurfacePresentModeKHR
-> SurfacePresentModeKHR -> IO () -> IO ()
forall b.
Ptr SurfacePresentModeKHR -> SurfacePresentModeKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SurfacePresentModeKHR
ptr SurfacePresentModeKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero SurfacePresentModeKHR where
  zero :: SurfacePresentModeKHR
zero = PresentModeKHR -> SurfacePresentModeKHR
SurfacePresentModeKHR
           PresentModeKHR
forall a. Zero a => a
zero


-- | VkSurfacePresentScalingCapabilitiesKHR - Structure describing the
-- presentation scaling capabilities of the surface
--
-- = Description
--
-- To query the set of supported scaling modes for a given present mode,
-- add a 'SurfacePresentModeKHR' structure in the @pNext@ chain of
-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'
-- when calling
-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'.
-- The implementation /must/ return the same values in
-- 'SurfacePresentScalingCapabilitiesKHR' for any of the compatible present
-- modes as obtained through 'SurfacePresentModeCompatibilityKHR'.
--
-- The application /can/ specify the scaling mode when creating a swapchain
-- through the use of
-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentScalingCreateInfoKHR'.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 VK_EXT_surface_maintenance1>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_maintenance1 VK_KHR_surface_maintenance1>,
-- 'Vulkan.Core10.FundamentalTypes.Extent2D', 'PresentGravityFlagsKHR',
-- 'PresentScalingFlagsKHR',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data SurfacePresentScalingCapabilitiesKHR = SurfacePresentScalingCapabilitiesKHR
  { -- | @supportedPresentScaling@ is a bitmask of 'PresentScalingFlagBitsKHR'
    -- representing the scaling methods supported by the surface, or @0@ if
    -- application-defined scaling is not supported.
    --
    -- #VUID-VkSurfacePresentScalingCapabilitiesKHR-supportedPresentScaling-parameter#
    -- @supportedPresentScaling@ /must/ be a valid combination of
    -- 'PresentScalingFlagBitsKHR' values
    SurfacePresentScalingCapabilitiesKHR -> PresentScalingFlagBitsKHR
supportedPresentScaling :: PresentScalingFlagsKHR
  , -- | @supportedPresentGravityX@ is a bitmask of 'PresentGravityFlagBitsKHR'
    -- representing the X-axis pixel gravity supported by the surface, or @0@
    -- if Vulkan-defined pixel gravity is not supported for the X axis.
    --
    -- #VUID-VkSurfacePresentScalingCapabilitiesKHR-supportedPresentGravityX-parameter#
    -- @supportedPresentGravityX@ /must/ be a valid combination of
    -- 'PresentGravityFlagBitsKHR' values
    SurfacePresentScalingCapabilitiesKHR -> PresentGravityFlagBitsKHR
supportedPresentGravityX :: PresentGravityFlagsKHR
  , -- | @supportedPresentGravityY@ is a bitmask of 'PresentGravityFlagBitsKHR'
    -- representing the Y-axis pixel gravity supported by the surface, or @0@
    -- if Vulkan-defined pixel gravity is not supported for the Y axis.
    --
    -- #VUID-VkSurfacePresentScalingCapabilitiesKHR-supportedPresentGravityY-parameter#
    -- @supportedPresentGravityY@ /must/ be a valid combination of
    -- 'PresentGravityFlagBitsKHR' values
    SurfacePresentScalingCapabilitiesKHR -> PresentGravityFlagBitsKHR
supportedPresentGravityY :: PresentGravityFlagsKHR
  , -- | @minScaledImageExtent@ contains the smallest valid swapchain extent for
    -- the surface on the specified device when one of the scaling methods
    -- specified in @supportedPresentScaling@ is used, or the special value
    -- (0xFFFFFFFF, 0xFFFFFFFF) indicating that the surface size will be
    -- determined by the extent of a swapchain targeting the surface. The
    -- @width@ and @height@ of the extent will each be smaller than or equal to
    -- the corresponding @width@ and @height@ of
    -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@minImageExtent@.
    SurfacePresentScalingCapabilitiesKHR -> Extent2D
minScaledImageExtent :: Extent2D
  , -- | @maxScaledImageExtent@ contains the largest valid swapchain extent for
    -- the surface on the specified device when one of the scaling methods
    -- specified in @supportedPresentScaling@ is used, or the special value
    -- described above for @minScaledImageExtent@. The @width@ and @height@ of
    -- the extent will each be greater than or equal to the corresponding
    -- @width@ and @height@ of
    -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@maxImageExtent@.
    SurfacePresentScalingCapabilitiesKHR -> Extent2D
maxScaledImageExtent :: Extent2D
  }
  deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SurfacePresentScalingCapabilitiesKHR)
#endif
deriving instance Show SurfacePresentScalingCapabilitiesKHR

instance ToCStruct SurfacePresentScalingCapabilitiesKHR where
  withCStruct :: forall b.
SurfacePresentScalingCapabilitiesKHR
-> (Ptr SurfacePresentScalingCapabilitiesKHR -> IO b) -> IO b
withCStruct SurfacePresentScalingCapabilitiesKHR
x Ptr SurfacePresentScalingCapabilitiesKHR -> IO b
f = Int -> (Ptr SurfacePresentScalingCapabilitiesKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
48 ((Ptr SurfacePresentScalingCapabilitiesKHR -> IO b) -> IO b)
-> (Ptr SurfacePresentScalingCapabilitiesKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr SurfacePresentScalingCapabilitiesKHR
p -> Ptr SurfacePresentScalingCapabilitiesKHR
-> SurfacePresentScalingCapabilitiesKHR -> IO b -> IO b
forall b.
Ptr SurfacePresentScalingCapabilitiesKHR
-> SurfacePresentScalingCapabilitiesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SurfacePresentScalingCapabilitiesKHR
p SurfacePresentScalingCapabilitiesKHR
x (Ptr SurfacePresentScalingCapabilitiesKHR -> IO b
f Ptr SurfacePresentScalingCapabilitiesKHR
p)
  pokeCStruct :: forall b.
Ptr SurfacePresentScalingCapabilitiesKHR
-> SurfacePresentScalingCapabilitiesKHR -> IO b -> IO b
pokeCStruct Ptr SurfacePresentScalingCapabilitiesKHR
p SurfacePresentScalingCapabilitiesKHR{Extent2D
PresentGravityFlagBitsKHR
PresentScalingFlagBitsKHR
supportedPresentScaling :: SurfacePresentScalingCapabilitiesKHR -> PresentScalingFlagBitsKHR
supportedPresentGravityX :: SurfacePresentScalingCapabilitiesKHR -> PresentGravityFlagBitsKHR
supportedPresentGravityY :: SurfacePresentScalingCapabilitiesKHR -> PresentGravityFlagBitsKHR
minScaledImageExtent :: SurfacePresentScalingCapabilitiesKHR -> Extent2D
maxScaledImageExtent :: SurfacePresentScalingCapabilitiesKHR -> Extent2D
supportedPresentScaling :: PresentScalingFlagBitsKHR
supportedPresentGravityX :: PresentGravityFlagBitsKHR
supportedPresentGravityY :: PresentGravityFlagBitsKHR
minScaledImageExtent :: Extent2D
maxScaledImageExtent :: Extent2D
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentScalingCapabilitiesKHR
p Ptr SurfacePresentScalingCapabilitiesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentScalingCapabilitiesKHR
p Ptr SurfacePresentScalingCapabilitiesKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentScalingCapabilitiesKHR
p Ptr SurfacePresentScalingCapabilitiesKHR
-> Int -> Ptr PresentScalingFlagBitsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PresentScalingFlagsKHR)) (PresentScalingFlagBitsKHR
supportedPresentScaling)
    Ptr PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentScalingCapabilitiesKHR
p Ptr SurfacePresentScalingCapabilitiesKHR
-> Int -> Ptr PresentGravityFlagBitsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr PresentGravityFlagsKHR)) (PresentGravityFlagBitsKHR
supportedPresentGravityX)
    Ptr PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentScalingCapabilitiesKHR
p Ptr SurfacePresentScalingCapabilitiesKHR
-> Int -> Ptr PresentGravityFlagBitsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr PresentGravityFlagsKHR)) (PresentGravityFlagBitsKHR
supportedPresentGravityY)
    Ptr Extent2D -> Extent2D -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentScalingCapabilitiesKHR
p Ptr SurfacePresentScalingCapabilitiesKHR -> Int -> Ptr Extent2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Extent2D)) (Extent2D
minScaledImageExtent)
    Ptr Extent2D -> Extent2D -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentScalingCapabilitiesKHR
p Ptr SurfacePresentScalingCapabilitiesKHR -> Int -> Ptr Extent2D
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Extent2D)) (Extent2D
maxScaledImageExtent)
    IO b
f
  cStructSize :: Int
cStructSize = Int
48
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr SurfacePresentScalingCapabilitiesKHR -> IO b -> IO b
pokeZeroCStruct Ptr SurfacePresentScalingCapabilitiesKHR
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentScalingCapabilitiesKHR
p Ptr SurfacePresentScalingCapabilitiesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentScalingCapabilitiesKHR
p Ptr SurfacePresentScalingCapabilitiesKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    IO b
f

instance FromCStruct SurfacePresentScalingCapabilitiesKHR where
  peekCStruct :: Ptr SurfacePresentScalingCapabilitiesKHR
-> IO SurfacePresentScalingCapabilitiesKHR
peekCStruct Ptr SurfacePresentScalingCapabilitiesKHR
p = do
    supportedPresentScaling <- forall a. Storable a => Ptr a -> IO a
peek @PresentScalingFlagsKHR ((Ptr SurfacePresentScalingCapabilitiesKHR
p Ptr SurfacePresentScalingCapabilitiesKHR
-> Int -> Ptr PresentScalingFlagBitsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PresentScalingFlagsKHR))
    supportedPresentGravityX <- peek @PresentGravityFlagsKHR ((p `plusPtr` 20 :: Ptr PresentGravityFlagsKHR))
    supportedPresentGravityY <- peek @PresentGravityFlagsKHR ((p `plusPtr` 24 :: Ptr PresentGravityFlagsKHR))
    minScaledImageExtent <- peekCStruct @Extent2D ((p `plusPtr` 28 :: Ptr Extent2D))
    maxScaledImageExtent <- peekCStruct @Extent2D ((p `plusPtr` 36 :: Ptr Extent2D))
    pure $ SurfacePresentScalingCapabilitiesKHR
             supportedPresentScaling
             supportedPresentGravityX
             supportedPresentGravityY
             minScaledImageExtent
             maxScaledImageExtent

instance Storable SurfacePresentScalingCapabilitiesKHR where
  sizeOf :: SurfacePresentScalingCapabilitiesKHR -> Int
sizeOf ~SurfacePresentScalingCapabilitiesKHR
_ = Int
48
  alignment :: SurfacePresentScalingCapabilitiesKHR -> Int
alignment ~SurfacePresentScalingCapabilitiesKHR
_ = Int
8
  peek :: Ptr SurfacePresentScalingCapabilitiesKHR
-> IO SurfacePresentScalingCapabilitiesKHR
peek = Ptr SurfacePresentScalingCapabilitiesKHR
-> IO SurfacePresentScalingCapabilitiesKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr SurfacePresentScalingCapabilitiesKHR
-> SurfacePresentScalingCapabilitiesKHR -> IO ()
poke Ptr SurfacePresentScalingCapabilitiesKHR
ptr SurfacePresentScalingCapabilitiesKHR
poked = Ptr SurfacePresentScalingCapabilitiesKHR
-> SurfacePresentScalingCapabilitiesKHR -> IO () -> IO ()
forall b.
Ptr SurfacePresentScalingCapabilitiesKHR
-> SurfacePresentScalingCapabilitiesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SurfacePresentScalingCapabilitiesKHR
ptr SurfacePresentScalingCapabilitiesKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero SurfacePresentScalingCapabilitiesKHR where
  zero :: SurfacePresentScalingCapabilitiesKHR
zero = PresentScalingFlagBitsKHR
-> PresentGravityFlagBitsKHR
-> PresentGravityFlagBitsKHR
-> Extent2D
-> Extent2D
-> SurfacePresentScalingCapabilitiesKHR
SurfacePresentScalingCapabilitiesKHR
           PresentScalingFlagBitsKHR
forall a. Zero a => a
zero
           PresentGravityFlagBitsKHR
forall a. Zero a => a
zero
           PresentGravityFlagBitsKHR
forall a. Zero a => a
zero
           Extent2D
forall a. Zero a => a
zero
           Extent2D
forall a. Zero a => a
zero


-- | VkSurfacePresentModeCompatibilityKHR - Structure describing the subset
-- of compatible presentation modes for the purposes of switching without
-- swapchain recreation
--
-- = Description
--
-- If @pPresentModes@ is @NULL@, then the number of present modes that are
-- compatible with the one specified in 'SurfacePresentModeKHR' is returned
-- in @presentModeCount@. Otherwise, @presentModeCount@ /must/ be set by
-- the application to the number of elements in the @pPresentModes@ array,
-- and on return is overwritten with the number of values actually written
-- to @pPresentModes@. If the value of @presentModeCount@ is less than the
-- number of compatible present modes that are supported, at most
-- @presentModeCount@ values will be written to @pPresentModes@. The
-- implementation /must/ include the present mode passed to
-- 'SurfacePresentModeKHR' in @pPresentModes@, unless @presentModeCount@ is
-- zero.
--
-- To query the set of present modes compatible with a given initial
-- present mode, add a 'SurfacePresentModeKHR' structure in the @pNext@
-- chain of
-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'
-- when calling
-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'.
--
-- The application /can/ create a swapchain whose present mode /can/ be
-- modified through the use of
-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModesCreateInfoKHR'.
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-VkSurfacePresentModeCompatibilityKHR-sType-sType# @sType@
--     /must/ be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR'
--
-- -   #VUID-VkSurfacePresentModeCompatibilityKHR-pPresentModes-parameter#
--     If @presentModeCount@ is not @0@, and @pPresentModes@ is not @NULL@,
--     @pPresentModes@ /must/ be a valid pointer to an array of
--     @presentModeCount@ 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR'
--     values
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 VK_EXT_surface_maintenance1>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_maintenance1 VK_KHR_surface_maintenance1>,
-- 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data SurfacePresentModeCompatibilityKHR = SurfacePresentModeCompatibilityKHR
  { -- | @presentModeCount@ is an integer related to the number of present modes
    -- available or queried, as described below.
    SurfacePresentModeCompatibilityKHR -> Word32
presentModeCount :: Word32
  , -- | @pPresentModes@ is a pointer to an array of
    -- 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR' in which present modes
    -- compatible with a given present mode are returned.
    SurfacePresentModeCompatibilityKHR -> Ptr PresentModeKHR
presentModes :: Ptr PresentModeKHR
  }
  deriving (Typeable, SurfacePresentModeCompatibilityKHR
-> SurfacePresentModeCompatibilityKHR -> Bool
(SurfacePresentModeCompatibilityKHR
 -> SurfacePresentModeCompatibilityKHR -> Bool)
-> (SurfacePresentModeCompatibilityKHR
    -> SurfacePresentModeCompatibilityKHR -> Bool)
-> Eq SurfacePresentModeCompatibilityKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SurfacePresentModeCompatibilityKHR
-> SurfacePresentModeCompatibilityKHR -> Bool
== :: SurfacePresentModeCompatibilityKHR
-> SurfacePresentModeCompatibilityKHR -> Bool
$c/= :: SurfacePresentModeCompatibilityKHR
-> SurfacePresentModeCompatibilityKHR -> Bool
/= :: SurfacePresentModeCompatibilityKHR
-> SurfacePresentModeCompatibilityKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SurfacePresentModeCompatibilityKHR)
#endif
deriving instance Show SurfacePresentModeCompatibilityKHR

instance ToCStruct SurfacePresentModeCompatibilityKHR where
  withCStruct :: forall b.
SurfacePresentModeCompatibilityKHR
-> (Ptr SurfacePresentModeCompatibilityKHR -> IO b) -> IO b
withCStruct SurfacePresentModeCompatibilityKHR
x Ptr SurfacePresentModeCompatibilityKHR -> IO b
f = Int -> (Ptr SurfacePresentModeCompatibilityKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr SurfacePresentModeCompatibilityKHR -> IO b) -> IO b)
-> (Ptr SurfacePresentModeCompatibilityKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr SurfacePresentModeCompatibilityKHR
p -> Ptr SurfacePresentModeCompatibilityKHR
-> SurfacePresentModeCompatibilityKHR -> IO b -> IO b
forall b.
Ptr SurfacePresentModeCompatibilityKHR
-> SurfacePresentModeCompatibilityKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SurfacePresentModeCompatibilityKHR
p SurfacePresentModeCompatibilityKHR
x (Ptr SurfacePresentModeCompatibilityKHR -> IO b
f Ptr SurfacePresentModeCompatibilityKHR
p)
  pokeCStruct :: forall b.
Ptr SurfacePresentModeCompatibilityKHR
-> SurfacePresentModeCompatibilityKHR -> IO b -> IO b
pokeCStruct Ptr SurfacePresentModeCompatibilityKHR
p SurfacePresentModeCompatibilityKHR{Word32
Ptr PresentModeKHR
presentModeCount :: SurfacePresentModeCompatibilityKHR -> Word32
presentModes :: SurfacePresentModeCompatibilityKHR -> Ptr PresentModeKHR
presentModeCount :: Word32
presentModes :: Ptr PresentModeKHR
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentModeCompatibilityKHR
p Ptr SurfacePresentModeCompatibilityKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentModeCompatibilityKHR
p Ptr SurfacePresentModeCompatibilityKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentModeCompatibilityKHR
p Ptr SurfacePresentModeCompatibilityKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) (Word32
presentModeCount)
    Ptr (Ptr PresentModeKHR) -> Ptr PresentModeKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentModeCompatibilityKHR
p Ptr SurfacePresentModeCompatibilityKHR
-> Int -> Ptr (Ptr PresentModeKHR)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr PresentModeKHR))) (Ptr PresentModeKHR
presentModes)
    IO b
f
  cStructSize :: Int
cStructSize = Int
32
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr SurfacePresentModeCompatibilityKHR -> IO b -> IO b
pokeZeroCStruct Ptr SurfacePresentModeCompatibilityKHR
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentModeCompatibilityKHR
p Ptr SurfacePresentModeCompatibilityKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr SurfacePresentModeCompatibilityKHR
p Ptr SurfacePresentModeCompatibilityKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    IO b
f

instance FromCStruct SurfacePresentModeCompatibilityKHR where
  peekCStruct :: Ptr SurfacePresentModeCompatibilityKHR
-> IO SurfacePresentModeCompatibilityKHR
peekCStruct Ptr SurfacePresentModeCompatibilityKHR
p = do
    presentModeCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr SurfacePresentModeCompatibilityKHR
p Ptr SurfacePresentModeCompatibilityKHR -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
    pPresentModes <- peek @(Ptr PresentModeKHR) ((p `plusPtr` 24 :: Ptr (Ptr PresentModeKHR)))
    pure $ SurfacePresentModeCompatibilityKHR
             presentModeCount pPresentModes

instance Storable SurfacePresentModeCompatibilityKHR where
  sizeOf :: SurfacePresentModeCompatibilityKHR -> Int
sizeOf ~SurfacePresentModeCompatibilityKHR
_ = Int
32
  alignment :: SurfacePresentModeCompatibilityKHR -> Int
alignment ~SurfacePresentModeCompatibilityKHR
_ = Int
8
  peek :: Ptr SurfacePresentModeCompatibilityKHR
-> IO SurfacePresentModeCompatibilityKHR
peek = Ptr SurfacePresentModeCompatibilityKHR
-> IO SurfacePresentModeCompatibilityKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr SurfacePresentModeCompatibilityKHR
-> SurfacePresentModeCompatibilityKHR -> IO ()
poke Ptr SurfacePresentModeCompatibilityKHR
ptr SurfacePresentModeCompatibilityKHR
poked = Ptr SurfacePresentModeCompatibilityKHR
-> SurfacePresentModeCompatibilityKHR -> IO () -> IO ()
forall b.
Ptr SurfacePresentModeCompatibilityKHR
-> SurfacePresentModeCompatibilityKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr SurfacePresentModeCompatibilityKHR
ptr SurfacePresentModeCompatibilityKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero SurfacePresentModeCompatibilityKHR where
  zero :: SurfacePresentModeCompatibilityKHR
zero = Word32 -> Ptr PresentModeKHR -> SurfacePresentModeCompatibilityKHR
SurfacePresentModeCompatibilityKHR
           Word32
forall a. Zero a => a
zero
           Ptr PresentModeKHR
forall a. Zero a => a
zero


type PresentScalingFlagsKHR = PresentScalingFlagBitsKHR

-- | VkPresentScalingFlagBitsKHR - Bitmask specifying presentation scaling
-- methods
--
-- = Description
--
-- -   'PRESENT_SCALING_ONE_TO_ONE_BIT_KHR' specifies that no scaling
--     occurs, and pixels in the swapchain image are mapped to one and only
--     one pixel in the surface. The mapping between pixels is defined by
--     the chosen presentation gravity.
--
-- -   'PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR' specifies that the
--     swapchain image will be minified or magnified such that at least one
--     of the resulting width or height is equal to the corresponding
--     surface dimension, and the other resulting dimension is less than or
--     equal to the corresponding surface dimension, with the aspect ratio
--     of the resulting image being identical to that of the original
--     swapchain image.
--
-- -   'PRESENT_SCALING_STRETCH_BIT_KHR' specifies that the swapchain image
--     will be minified or magnified such that the resulting image
--     dimensions are equal to those of the surface.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 VK_EXT_surface_maintenance1>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_maintenance1 VK_KHR_surface_maintenance1>,
-- 'PresentScalingFlagsKHR'
newtype PresentScalingFlagBitsKHR = PresentScalingFlagBitsKHR Flags
  deriving newtype (PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool
(PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool)
-> (PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool)
-> Eq PresentScalingFlagBitsKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool
== :: PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool
$c/= :: PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool
/= :: PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool
Eq, Eq PresentScalingFlagBitsKHR
Eq PresentScalingFlagBitsKHR =>
(PresentScalingFlagBitsKHR
 -> PresentScalingFlagBitsKHR -> Ordering)
-> (PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool)
-> (PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool)
-> (PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool)
-> (PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool)
-> (PresentScalingFlagBitsKHR
    -> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR)
-> (PresentScalingFlagBitsKHR
    -> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR)
-> Ord PresentScalingFlagBitsKHR
PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool
PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Ordering
PresentScalingFlagBitsKHR
-> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR
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
$ccompare :: PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Ordering
compare :: PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Ordering
$c< :: PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool
< :: PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool
$c<= :: PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool
<= :: PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool
$c> :: PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool
> :: PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool
$c>= :: PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool
>= :: PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> Bool
$cmax :: PresentScalingFlagBitsKHR
-> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR
max :: PresentScalingFlagBitsKHR
-> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR
$cmin :: PresentScalingFlagBitsKHR
-> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR
min :: PresentScalingFlagBitsKHR
-> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR
Ord, Ptr PresentScalingFlagBitsKHR -> IO PresentScalingFlagBitsKHR
Ptr PresentScalingFlagBitsKHR
-> Int -> IO PresentScalingFlagBitsKHR
Ptr PresentScalingFlagBitsKHR
-> Int -> PresentScalingFlagBitsKHR -> IO ()
Ptr PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> IO ()
PresentScalingFlagBitsKHR -> Int
(PresentScalingFlagBitsKHR -> Int)
-> (PresentScalingFlagBitsKHR -> Int)
-> (Ptr PresentScalingFlagBitsKHR
    -> Int -> IO PresentScalingFlagBitsKHR)
-> (Ptr PresentScalingFlagBitsKHR
    -> Int -> PresentScalingFlagBitsKHR -> IO ())
-> (forall b. Ptr b -> Int -> IO PresentScalingFlagBitsKHR)
-> (forall b. Ptr b -> Int -> PresentScalingFlagBitsKHR -> IO ())
-> (Ptr PresentScalingFlagBitsKHR -> IO PresentScalingFlagBitsKHR)
-> (Ptr PresentScalingFlagBitsKHR
    -> PresentScalingFlagBitsKHR -> IO ())
-> Storable PresentScalingFlagBitsKHR
forall b. Ptr b -> Int -> IO PresentScalingFlagBitsKHR
forall b. Ptr b -> Int -> PresentScalingFlagBitsKHR -> 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
$csizeOf :: PresentScalingFlagBitsKHR -> Int
sizeOf :: PresentScalingFlagBitsKHR -> Int
$calignment :: PresentScalingFlagBitsKHR -> Int
alignment :: PresentScalingFlagBitsKHR -> Int
$cpeekElemOff :: Ptr PresentScalingFlagBitsKHR
-> Int -> IO PresentScalingFlagBitsKHR
peekElemOff :: Ptr PresentScalingFlagBitsKHR
-> Int -> IO PresentScalingFlagBitsKHR
$cpokeElemOff :: Ptr PresentScalingFlagBitsKHR
-> Int -> PresentScalingFlagBitsKHR -> IO ()
pokeElemOff :: Ptr PresentScalingFlagBitsKHR
-> Int -> PresentScalingFlagBitsKHR -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO PresentScalingFlagBitsKHR
peekByteOff :: forall b. Ptr b -> Int -> IO PresentScalingFlagBitsKHR
$cpokeByteOff :: forall b. Ptr b -> Int -> PresentScalingFlagBitsKHR -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> PresentScalingFlagBitsKHR -> IO ()
$cpeek :: Ptr PresentScalingFlagBitsKHR -> IO PresentScalingFlagBitsKHR
peek :: Ptr PresentScalingFlagBitsKHR -> IO PresentScalingFlagBitsKHR
$cpoke :: Ptr PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> IO ()
poke :: Ptr PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR -> IO ()
Storable, PresentScalingFlagBitsKHR
PresentScalingFlagBitsKHR -> Zero PresentScalingFlagBitsKHR
forall a. a -> Zero a
$czero :: PresentScalingFlagBitsKHR
zero :: PresentScalingFlagBitsKHR
Zero, Eq PresentScalingFlagBitsKHR
PresentScalingFlagBitsKHR
Eq PresentScalingFlagBitsKHR =>
(PresentScalingFlagBitsKHR
 -> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR)
-> (PresentScalingFlagBitsKHR
    -> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR)
-> (PresentScalingFlagBitsKHR
    -> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR)
-> (PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR)
-> (PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR)
-> (PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR)
-> PresentScalingFlagBitsKHR
-> (Int -> PresentScalingFlagBitsKHR)
-> (PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR)
-> (PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR)
-> (PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR)
-> (PresentScalingFlagBitsKHR -> Int -> Bool)
-> (PresentScalingFlagBitsKHR -> Maybe Int)
-> (PresentScalingFlagBitsKHR -> Int)
-> (PresentScalingFlagBitsKHR -> Bool)
-> (PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR)
-> (PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR)
-> (PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR)
-> (PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR)
-> (PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR)
-> (PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR)
-> (PresentScalingFlagBitsKHR -> Int)
-> Bits PresentScalingFlagBitsKHR
Int -> PresentScalingFlagBitsKHR
PresentScalingFlagBitsKHR -> Bool
PresentScalingFlagBitsKHR -> Int
PresentScalingFlagBitsKHR -> Maybe Int
PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR
PresentScalingFlagBitsKHR -> Int -> Bool
PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
PresentScalingFlagBitsKHR
-> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR
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
$c.&. :: PresentScalingFlagBitsKHR
-> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR
.&. :: PresentScalingFlagBitsKHR
-> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR
$c.|. :: PresentScalingFlagBitsKHR
-> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR
.|. :: PresentScalingFlagBitsKHR
-> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR
$cxor :: PresentScalingFlagBitsKHR
-> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR
xor :: PresentScalingFlagBitsKHR
-> PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR
$ccomplement :: PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR
complement :: PresentScalingFlagBitsKHR -> PresentScalingFlagBitsKHR
$cshift :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
shift :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
$crotate :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
rotate :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
$czeroBits :: PresentScalingFlagBitsKHR
zeroBits :: PresentScalingFlagBitsKHR
$cbit :: Int -> PresentScalingFlagBitsKHR
bit :: Int -> PresentScalingFlagBitsKHR
$csetBit :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
setBit :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
$cclearBit :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
clearBit :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
$ccomplementBit :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
complementBit :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
$ctestBit :: PresentScalingFlagBitsKHR -> Int -> Bool
testBit :: PresentScalingFlagBitsKHR -> Int -> Bool
$cbitSizeMaybe :: PresentScalingFlagBitsKHR -> Maybe Int
bitSizeMaybe :: PresentScalingFlagBitsKHR -> Maybe Int
$cbitSize :: PresentScalingFlagBitsKHR -> Int
bitSize :: PresentScalingFlagBitsKHR -> Int
$cisSigned :: PresentScalingFlagBitsKHR -> Bool
isSigned :: PresentScalingFlagBitsKHR -> Bool
$cshiftL :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
shiftL :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
$cunsafeShiftL :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
unsafeShiftL :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
$cshiftR :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
shiftR :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
$cunsafeShiftR :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
unsafeShiftR :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
$crotateL :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
rotateL :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
$crotateR :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
rotateR :: PresentScalingFlagBitsKHR -> Int -> PresentScalingFlagBitsKHR
$cpopCount :: PresentScalingFlagBitsKHR -> Int
popCount :: PresentScalingFlagBitsKHR -> Int
Bits, Bits PresentScalingFlagBitsKHR
Bits PresentScalingFlagBitsKHR =>
(PresentScalingFlagBitsKHR -> Int)
-> (PresentScalingFlagBitsKHR -> Int)
-> (PresentScalingFlagBitsKHR -> Int)
-> FiniteBits PresentScalingFlagBitsKHR
PresentScalingFlagBitsKHR -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: PresentScalingFlagBitsKHR -> Int
finiteBitSize :: PresentScalingFlagBitsKHR -> Int
$ccountLeadingZeros :: PresentScalingFlagBitsKHR -> Int
countLeadingZeros :: PresentScalingFlagBitsKHR -> Int
$ccountTrailingZeros :: PresentScalingFlagBitsKHR -> Int
countTrailingZeros :: PresentScalingFlagBitsKHR -> Int
FiniteBits)

-- No documentation found for Nested "VkPresentScalingFlagBitsKHR" "VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR"
pattern $mPRESENT_SCALING_ONE_TO_ONE_BIT_KHR :: forall {r}.
PresentScalingFlagBitsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bPRESENT_SCALING_ONE_TO_ONE_BIT_KHR :: PresentScalingFlagBitsKHR
PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = PresentScalingFlagBitsKHR 0x00000001

-- No documentation found for Nested "VkPresentScalingFlagBitsKHR" "VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR"
pattern $mPRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR :: forall {r}.
PresentScalingFlagBitsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bPRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR :: PresentScalingFlagBitsKHR
PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = PresentScalingFlagBitsKHR 0x00000002

-- No documentation found for Nested "VkPresentScalingFlagBitsKHR" "VK_PRESENT_SCALING_STRETCH_BIT_KHR"
pattern $mPRESENT_SCALING_STRETCH_BIT_KHR :: forall {r}.
PresentScalingFlagBitsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bPRESENT_SCALING_STRETCH_BIT_KHR :: PresentScalingFlagBitsKHR
PRESENT_SCALING_STRETCH_BIT_KHR = PresentScalingFlagBitsKHR 0x00000004

conNamePresentScalingFlagBitsKHR :: String
conNamePresentScalingFlagBitsKHR :: String
conNamePresentScalingFlagBitsKHR = String
"PresentScalingFlagBitsKHR"

enumPrefixPresentScalingFlagBitsKHR :: String
enumPrefixPresentScalingFlagBitsKHR :: String
enumPrefixPresentScalingFlagBitsKHR = String
"PRESENT_SCALING_"

showTablePresentScalingFlagBitsKHR :: [(PresentScalingFlagBitsKHR, String)]
showTablePresentScalingFlagBitsKHR :: [(PresentScalingFlagBitsKHR, String)]
showTablePresentScalingFlagBitsKHR =
  [
    ( PresentScalingFlagBitsKHR
PRESENT_SCALING_ONE_TO_ONE_BIT_KHR
    , String
"ONE_TO_ONE_BIT_KHR"
    )
  ,
    ( PresentScalingFlagBitsKHR
PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR
    , String
"ASPECT_RATIO_STRETCH_BIT_KHR"
    )
  ,
    ( PresentScalingFlagBitsKHR
PRESENT_SCALING_STRETCH_BIT_KHR
    , String
"STRETCH_BIT_KHR"
    )
  ]

instance Show PresentScalingFlagBitsKHR where
  showsPrec :: Int -> PresentScalingFlagBitsKHR -> ShowS
showsPrec =
    String
-> [(PresentScalingFlagBitsKHR, String)]
-> String
-> (PresentScalingFlagBitsKHR -> Word32)
-> (Word32 -> ShowS)
-> Int
-> PresentScalingFlagBitsKHR
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixPresentScalingFlagBitsKHR
      [(PresentScalingFlagBitsKHR, String)]
showTablePresentScalingFlagBitsKHR
      String
conNamePresentScalingFlagBitsKHR
      (\(PresentScalingFlagBitsKHR Word32
x) -> Word32
x)
      (\Word32
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> ShowS
forall a. Integral a => a -> ShowS
showHex Word32
x)

instance Read PresentScalingFlagBitsKHR where
  readPrec :: ReadPrec PresentScalingFlagBitsKHR
readPrec =
    String
-> [(PresentScalingFlagBitsKHR, String)]
-> String
-> (Word32 -> PresentScalingFlagBitsKHR)
-> ReadPrec PresentScalingFlagBitsKHR
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixPresentScalingFlagBitsKHR
      [(PresentScalingFlagBitsKHR, String)]
showTablePresentScalingFlagBitsKHR
      String
conNamePresentScalingFlagBitsKHR
      Word32 -> PresentScalingFlagBitsKHR
PresentScalingFlagBitsKHR

type PresentGravityFlagsKHR = PresentGravityFlagBitsKHR

-- | VkPresentGravityFlagBitsKHR - Bitmask specifying presentation pixel
-- gravity on either the x or y axis
--
-- = Description
--
-- -   'PRESENT_GRAVITY_MIN_BIT_KHR' means that the pixels will gravitate
--     towards the top or left side of the surface.
--
-- -   'PRESENT_GRAVITY_MAX_BIT_KHR' means that the pixels will gravitate
--     towards the bottom or right side of the surface.
--
-- -   'PRESENT_GRAVITY_CENTERED_BIT_KHR' means that the pixels will be
--     centered in the surface.
--
-- If the value in
-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@currentTransform@
-- is not
-- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
-- it is implementation-defined whether the gravity configuration applies
-- to the presented image before or after transformation.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_surface_maintenance1 VK_EXT_surface_maintenance1>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_maintenance1 VK_KHR_surface_maintenance1>,
-- 'PresentGravityFlagsKHR'
newtype PresentGravityFlagBitsKHR = PresentGravityFlagBitsKHR Flags
  deriving newtype (PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool
(PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool)
-> (PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool)
-> Eq PresentGravityFlagBitsKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool
== :: PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool
$c/= :: PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool
/= :: PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool
Eq, Eq PresentGravityFlagBitsKHR
Eq PresentGravityFlagBitsKHR =>
(PresentGravityFlagBitsKHR
 -> PresentGravityFlagBitsKHR -> Ordering)
-> (PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool)
-> (PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool)
-> (PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool)
-> (PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool)
-> (PresentGravityFlagBitsKHR
    -> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR)
-> (PresentGravityFlagBitsKHR
    -> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR)
-> Ord PresentGravityFlagBitsKHR
PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool
PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Ordering
PresentGravityFlagBitsKHR
-> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR
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
$ccompare :: PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Ordering
compare :: PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Ordering
$c< :: PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool
< :: PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool
$c<= :: PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool
<= :: PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool
$c> :: PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool
> :: PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool
$c>= :: PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool
>= :: PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> Bool
$cmax :: PresentGravityFlagBitsKHR
-> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR
max :: PresentGravityFlagBitsKHR
-> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR
$cmin :: PresentGravityFlagBitsKHR
-> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR
min :: PresentGravityFlagBitsKHR
-> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR
Ord, Ptr PresentGravityFlagBitsKHR -> IO PresentGravityFlagBitsKHR
Ptr PresentGravityFlagBitsKHR
-> Int -> IO PresentGravityFlagBitsKHR
Ptr PresentGravityFlagBitsKHR
-> Int -> PresentGravityFlagBitsKHR -> IO ()
Ptr PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> IO ()
PresentGravityFlagBitsKHR -> Int
(PresentGravityFlagBitsKHR -> Int)
-> (PresentGravityFlagBitsKHR -> Int)
-> (Ptr PresentGravityFlagBitsKHR
    -> Int -> IO PresentGravityFlagBitsKHR)
-> (Ptr PresentGravityFlagBitsKHR
    -> Int -> PresentGravityFlagBitsKHR -> IO ())
-> (forall b. Ptr b -> Int -> IO PresentGravityFlagBitsKHR)
-> (forall b. Ptr b -> Int -> PresentGravityFlagBitsKHR -> IO ())
-> (Ptr PresentGravityFlagBitsKHR -> IO PresentGravityFlagBitsKHR)
-> (Ptr PresentGravityFlagBitsKHR
    -> PresentGravityFlagBitsKHR -> IO ())
-> Storable PresentGravityFlagBitsKHR
forall b. Ptr b -> Int -> IO PresentGravityFlagBitsKHR
forall b. Ptr b -> Int -> PresentGravityFlagBitsKHR -> 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
$csizeOf :: PresentGravityFlagBitsKHR -> Int
sizeOf :: PresentGravityFlagBitsKHR -> Int
$calignment :: PresentGravityFlagBitsKHR -> Int
alignment :: PresentGravityFlagBitsKHR -> Int
$cpeekElemOff :: Ptr PresentGravityFlagBitsKHR
-> Int -> IO PresentGravityFlagBitsKHR
peekElemOff :: Ptr PresentGravityFlagBitsKHR
-> Int -> IO PresentGravityFlagBitsKHR
$cpokeElemOff :: Ptr PresentGravityFlagBitsKHR
-> Int -> PresentGravityFlagBitsKHR -> IO ()
pokeElemOff :: Ptr PresentGravityFlagBitsKHR
-> Int -> PresentGravityFlagBitsKHR -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO PresentGravityFlagBitsKHR
peekByteOff :: forall b. Ptr b -> Int -> IO PresentGravityFlagBitsKHR
$cpokeByteOff :: forall b. Ptr b -> Int -> PresentGravityFlagBitsKHR -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> PresentGravityFlagBitsKHR -> IO ()
$cpeek :: Ptr PresentGravityFlagBitsKHR -> IO PresentGravityFlagBitsKHR
peek :: Ptr PresentGravityFlagBitsKHR -> IO PresentGravityFlagBitsKHR
$cpoke :: Ptr PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> IO ()
poke :: Ptr PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR -> IO ()
Storable, PresentGravityFlagBitsKHR
PresentGravityFlagBitsKHR -> Zero PresentGravityFlagBitsKHR
forall a. a -> Zero a
$czero :: PresentGravityFlagBitsKHR
zero :: PresentGravityFlagBitsKHR
Zero, Eq PresentGravityFlagBitsKHR
PresentGravityFlagBitsKHR
Eq PresentGravityFlagBitsKHR =>
(PresentGravityFlagBitsKHR
 -> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR)
-> (PresentGravityFlagBitsKHR
    -> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR)
-> (PresentGravityFlagBitsKHR
    -> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR)
-> (PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR)
-> (PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR)
-> (PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR)
-> PresentGravityFlagBitsKHR
-> (Int -> PresentGravityFlagBitsKHR)
-> (PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR)
-> (PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR)
-> (PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR)
-> (PresentGravityFlagBitsKHR -> Int -> Bool)
-> (PresentGravityFlagBitsKHR -> Maybe Int)
-> (PresentGravityFlagBitsKHR -> Int)
-> (PresentGravityFlagBitsKHR -> Bool)
-> (PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR)
-> (PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR)
-> (PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR)
-> (PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR)
-> (PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR)
-> (PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR)
-> (PresentGravityFlagBitsKHR -> Int)
-> Bits PresentGravityFlagBitsKHR
Int -> PresentGravityFlagBitsKHR
PresentGravityFlagBitsKHR -> Bool
PresentGravityFlagBitsKHR -> Int
PresentGravityFlagBitsKHR -> Maybe Int
PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR
PresentGravityFlagBitsKHR -> Int -> Bool
PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
PresentGravityFlagBitsKHR
-> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR
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
$c.&. :: PresentGravityFlagBitsKHR
-> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR
.&. :: PresentGravityFlagBitsKHR
-> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR
$c.|. :: PresentGravityFlagBitsKHR
-> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR
.|. :: PresentGravityFlagBitsKHR
-> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR
$cxor :: PresentGravityFlagBitsKHR
-> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR
xor :: PresentGravityFlagBitsKHR
-> PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR
$ccomplement :: PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR
complement :: PresentGravityFlagBitsKHR -> PresentGravityFlagBitsKHR
$cshift :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
shift :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
$crotate :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
rotate :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
$czeroBits :: PresentGravityFlagBitsKHR
zeroBits :: PresentGravityFlagBitsKHR
$cbit :: Int -> PresentGravityFlagBitsKHR
bit :: Int -> PresentGravityFlagBitsKHR
$csetBit :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
setBit :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
$cclearBit :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
clearBit :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
$ccomplementBit :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
complementBit :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
$ctestBit :: PresentGravityFlagBitsKHR -> Int -> Bool
testBit :: PresentGravityFlagBitsKHR -> Int -> Bool
$cbitSizeMaybe :: PresentGravityFlagBitsKHR -> Maybe Int
bitSizeMaybe :: PresentGravityFlagBitsKHR -> Maybe Int
$cbitSize :: PresentGravityFlagBitsKHR -> Int
bitSize :: PresentGravityFlagBitsKHR -> Int
$cisSigned :: PresentGravityFlagBitsKHR -> Bool
isSigned :: PresentGravityFlagBitsKHR -> Bool
$cshiftL :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
shiftL :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
$cunsafeShiftL :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
unsafeShiftL :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
$cshiftR :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
shiftR :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
$cunsafeShiftR :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
unsafeShiftR :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
$crotateL :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
rotateL :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
$crotateR :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
rotateR :: PresentGravityFlagBitsKHR -> Int -> PresentGravityFlagBitsKHR
$cpopCount :: PresentGravityFlagBitsKHR -> Int
popCount :: PresentGravityFlagBitsKHR -> Int
Bits, Bits PresentGravityFlagBitsKHR
Bits PresentGravityFlagBitsKHR =>
(PresentGravityFlagBitsKHR -> Int)
-> (PresentGravityFlagBitsKHR -> Int)
-> (PresentGravityFlagBitsKHR -> Int)
-> FiniteBits PresentGravityFlagBitsKHR
PresentGravityFlagBitsKHR -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: PresentGravityFlagBitsKHR -> Int
finiteBitSize :: PresentGravityFlagBitsKHR -> Int
$ccountLeadingZeros :: PresentGravityFlagBitsKHR -> Int
countLeadingZeros :: PresentGravityFlagBitsKHR -> Int
$ccountTrailingZeros :: PresentGravityFlagBitsKHR -> Int
countTrailingZeros :: PresentGravityFlagBitsKHR -> Int
FiniteBits)

-- No documentation found for Nested "VkPresentGravityFlagBitsKHR" "VK_PRESENT_GRAVITY_MIN_BIT_KHR"
pattern $mPRESENT_GRAVITY_MIN_BIT_KHR :: forall {r}.
PresentGravityFlagBitsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bPRESENT_GRAVITY_MIN_BIT_KHR :: PresentGravityFlagBitsKHR
PRESENT_GRAVITY_MIN_BIT_KHR = PresentGravityFlagBitsKHR 0x00000001

-- No documentation found for Nested "VkPresentGravityFlagBitsKHR" "VK_PRESENT_GRAVITY_MAX_BIT_KHR"
pattern $mPRESENT_GRAVITY_MAX_BIT_KHR :: forall {r}.
PresentGravityFlagBitsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bPRESENT_GRAVITY_MAX_BIT_KHR :: PresentGravityFlagBitsKHR
PRESENT_GRAVITY_MAX_BIT_KHR = PresentGravityFlagBitsKHR 0x00000002

-- No documentation found for Nested "VkPresentGravityFlagBitsKHR" "VK_PRESENT_GRAVITY_CENTERED_BIT_KHR"
pattern $mPRESENT_GRAVITY_CENTERED_BIT_KHR :: forall {r}.
PresentGravityFlagBitsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bPRESENT_GRAVITY_CENTERED_BIT_KHR :: PresentGravityFlagBitsKHR
PRESENT_GRAVITY_CENTERED_BIT_KHR = PresentGravityFlagBitsKHR 0x00000004

conNamePresentGravityFlagBitsKHR :: String
conNamePresentGravityFlagBitsKHR :: String
conNamePresentGravityFlagBitsKHR = String
"PresentGravityFlagBitsKHR"

enumPrefixPresentGravityFlagBitsKHR :: String
enumPrefixPresentGravityFlagBitsKHR :: String
enumPrefixPresentGravityFlagBitsKHR = String
"PRESENT_GRAVITY_"

showTablePresentGravityFlagBitsKHR :: [(PresentGravityFlagBitsKHR, String)]
showTablePresentGravityFlagBitsKHR :: [(PresentGravityFlagBitsKHR, String)]
showTablePresentGravityFlagBitsKHR =
  [
    ( PresentGravityFlagBitsKHR
PRESENT_GRAVITY_MIN_BIT_KHR
    , String
"MIN_BIT_KHR"
    )
  ,
    ( PresentGravityFlagBitsKHR
PRESENT_GRAVITY_MAX_BIT_KHR
    , String
"MAX_BIT_KHR"
    )
  ,
    ( PresentGravityFlagBitsKHR
PRESENT_GRAVITY_CENTERED_BIT_KHR
    , String
"CENTERED_BIT_KHR"
    )
  ]

instance Show PresentGravityFlagBitsKHR where
  showsPrec :: Int -> PresentGravityFlagBitsKHR -> ShowS
showsPrec =
    String
-> [(PresentGravityFlagBitsKHR, String)]
-> String
-> (PresentGravityFlagBitsKHR -> Word32)
-> (Word32 -> ShowS)
-> Int
-> PresentGravityFlagBitsKHR
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixPresentGravityFlagBitsKHR
      [(PresentGravityFlagBitsKHR, String)]
showTablePresentGravityFlagBitsKHR
      String
conNamePresentGravityFlagBitsKHR
      (\(PresentGravityFlagBitsKHR Word32
x) -> Word32
x)
      (\Word32
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> ShowS
forall a. Integral a => a -> ShowS
showHex Word32
x)

instance Read PresentGravityFlagBitsKHR where
  readPrec :: ReadPrec PresentGravityFlagBitsKHR
readPrec =
    String
-> [(PresentGravityFlagBitsKHR, String)]
-> String
-> (Word32 -> PresentGravityFlagBitsKHR)
-> ReadPrec PresentGravityFlagBitsKHR
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixPresentGravityFlagBitsKHR
      [(PresentGravityFlagBitsKHR, String)]
showTablePresentGravityFlagBitsKHR
      String
conNamePresentGravityFlagBitsKHR
      Word32 -> PresentGravityFlagBitsKHR
PresentGravityFlagBitsKHR

type KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION"
pattern KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION :: forall a . Integral a => a
pattern $mKHR_SURFACE_MAINTENANCE_1_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_SURFACE_MAINTENANCE_1_SPEC_VERSION :: forall a. Integral a => a
KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION = 1


type KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1"

-- No documentation found for TopLevel "VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME"
pattern KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mKHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME = "VK_KHR_surface_maintenance1"