{-# LINE 1 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}


{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Surface
       (VkSurfaceCapabilities2EXT, VkSurfaceCapabilities2KHR,
        VkSurfaceCapabilitiesKHR, VkSurfaceFormat2KHR, VkSurfaceFormatKHR,
        VkSurfaceProtectedCapabilitiesKHR)
       where
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Internal
import Graphics.Vulkan.Types.BaseTypes                   (VkBool32)
import Graphics.Vulkan.Types.Enum.Color                  (VkColorSpaceKHR)
import Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR (VkCompositeAlphaFlagsKHR)
import Graphics.Vulkan.Types.Enum.Format                 (VkFormat)
import Graphics.Vulkan.Types.Enum.Image                  (VkImageUsageFlags)
import Graphics.Vulkan.Types.Enum.StructureType          (VkStructureType)
import Graphics.Vulkan.Types.Enum.Surface                (VkSurfaceCounterFlagsEXT,
                                                          VkSurfaceTransformFlagBitsKHR,
                                                          VkSurfaceTransformFlagsKHR)
import Graphics.Vulkan.Types.Struct.Extent               (VkExtent2D)

-- | > typedef struct VkSurfaceCapabilities2EXT {
--   >     VkStructureType sType;
--   >     void*                            pNext;
--   >     uint32_t                         minImageCount;
--   >     uint32_t                         maxImageCount;
--   >     VkExtent2D                       currentExtent;
--   >     VkExtent2D                       minImageExtent;
--   >     VkExtent2D                       maxImageExtent;
--   >     uint32_t                         maxImageArrayLayers;
--   >     VkSurfaceTransformFlagsKHR       supportedTransforms;
--   >     VkSurfaceTransformFlagBitsKHR    currentTransform;
--   >     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
--   >     VkImageUsageFlags                supportedUsageFlags;
--   >     VkSurfaceCounterFlagsEXT supportedSurfaceCounters;
--   > } VkSurfaceCapabilities2EXT;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkSurfaceCapabilities2EXT VkSurfaceCapabilities2EXT registry at www.khronos.org>
type VkSurfaceCapabilities2EXT =
     VkStruct VkSurfaceCapabilities2EXT' -- ' closing tick for hsc2hs

data VkSurfaceCapabilities2EXT' -- ' closing tick for hsc2hs

instance VulkanMarshal VkSurfaceCapabilities2EXT where
    type StructRep VkSurfaceCapabilities2EXT =
         'StructMeta "VkSurfaceCapabilities2EXT" VkSurfaceCapabilities2EXT -- ' closing tick for hsc2hs
           (72)
{-# LINE 52 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           8
{-# LINE 53 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 55 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 60 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "minImageCount" Word32 'False 
                                                       (16)
{-# LINE 65 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "maxImageCount" Word32 'False 
                                                       (20)
{-# LINE 70 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "currentExtent" VkExtent2D 'False 
                                                           (24)
{-# LINE 75 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "minImageExtent" VkExtent2D 'False 
                                                            (32)
{-# LINE 80 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "maxImageExtent" VkExtent2D 'False 
                                                            (40)
{-# LINE 85 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "maxImageArrayLayers" Word32 'False 
                                                             (48)
{-# LINE 90 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "supportedTransforms" VkSurfaceTransformFlagsKHR 'True
                (52)
{-# LINE 95 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "currentTransform" VkSurfaceTransformFlagBitsKHR 'False
                (56)
{-# LINE 100 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "supportedCompositeAlpha" VkCompositeAlphaFlagsKHR -- ' closing tick for hsc2hs
                'True -- ' closing tick for hsc2hs
                (60)
{-# LINE 106 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "supportedUsageFlags" VkImageUsageFlags 'True 
                                                                       (64)
{-# LINE 111 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "supportedSurfaceCounters" VkSurfaceCounterFlagsEXT -- ' closing tick for hsc2hs
                'True -- ' closing tick for hsc2hs
                (68)
{-# LINE 117 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkSurfaceCapabilities2KHR {
--   >     VkStructureType sType;
--   >     void*   pNext;
--   >     VkSurfaceCapabilitiesKHR surfaceCapabilities;
--   > } VkSurfaceCapabilities2KHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkSurfaceCapabilities2KHR VkSurfaceCapabilities2KHR registry at www.khronos.org>
type VkSurfaceCapabilities2KHR =
     VkStruct VkSurfaceCapabilities2KHR' -- ' closing tick for hsc2hs

data VkSurfaceCapabilities2KHR' -- ' closing tick for hsc2hs

instance VulkanMarshal VkSurfaceCapabilities2KHR where
    type StructRep VkSurfaceCapabilities2KHR =
         'StructMeta "VkSurfaceCapabilities2KHR" VkSurfaceCapabilities2KHR -- ' closing tick for hsc2hs
           (72)
{-# LINE 140 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           8
{-# LINE 141 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 143 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 148 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "surfaceCapabilities" VkSurfaceCapabilitiesKHR 'False
                (16)
{-# LINE 153 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkSurfaceCapabilitiesKHR {
--   >     uint32_t                         minImageCount;
--   >     uint32_t                         maxImageCount;
--   >     VkExtent2D                       currentExtent;
--   >     VkExtent2D                       minImageExtent;
--   >     VkExtent2D                       maxImageExtent;
--   >     uint32_t                         maxImageArrayLayers;
--   >     VkSurfaceTransformFlagsKHR       supportedTransforms;
--   >     VkSurfaceTransformFlagBitsKHR    currentTransform;
--   >     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
--   >     VkImageUsageFlags                supportedUsageFlags;
--   > } VkSurfaceCapabilitiesKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkSurfaceCapabilitiesKHR VkSurfaceCapabilitiesKHR registry at www.khronos.org>
type VkSurfaceCapabilitiesKHR = VkStruct VkSurfaceCapabilitiesKHR' -- ' closing tick for hsc2hs

data VkSurfaceCapabilitiesKHR' -- ' closing tick for hsc2hs

instance VulkanMarshal VkSurfaceCapabilitiesKHR where
    type StructRep VkSurfaceCapabilitiesKHR =
         'StructMeta "VkSurfaceCapabilitiesKHR" VkSurfaceCapabilitiesKHR -- ' closing tick for hsc2hs
           (52)
{-# LINE 182 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           4
{-# LINE 183 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           '[('FieldMeta "minImageCount" Word32 'False  -- ' closing tick for hsc2hs
                                                       (0)
{-# LINE 185 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "maxImageCount" Word32 'False 
                                                       (4)
{-# LINE 190 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "currentExtent" VkExtent2D 'False 
                                                           (8)
{-# LINE 195 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "minImageExtent" VkExtent2D 'False 
                                                            (16)
{-# LINE 200 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "maxImageExtent" VkExtent2D 'False 
                                                            (24)
{-# LINE 205 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "maxImageArrayLayers" Word32 'False 
                                                             (32)
{-# LINE 210 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "supportedTransforms" VkSurfaceTransformFlagsKHR 'True
                (36)
{-# LINE 215 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "currentTransform" VkSurfaceTransformFlagBitsKHR 'False
                (40)
{-# LINE 220 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "supportedCompositeAlpha" VkCompositeAlphaFlagsKHR -- ' closing tick for hsc2hs
                'True -- ' closing tick for hsc2hs
                (44)
{-# LINE 226 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "supportedUsageFlags" VkImageUsageFlags 'True 
                                                                       (48)
{-# LINE 231 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkSurfaceFormat2KHR {
--   >     VkStructureType sType;
--   >     void* pNext;
--   >     VkSurfaceFormatKHR surfaceFormat;
--   > } VkSurfaceFormat2KHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkSurfaceFormat2KHR VkSurfaceFormat2KHR registry at www.khronos.org>
type VkSurfaceFormat2KHR = VkStruct VkSurfaceFormat2KHR' -- ' closing tick for hsc2hs

data VkSurfaceFormat2KHR' -- ' closing tick for hsc2hs

instance VulkanMarshal VkSurfaceFormat2KHR where
    type StructRep VkSurfaceFormat2KHR =
         'StructMeta "VkSurfaceFormat2KHR" VkSurfaceFormat2KHR  -- ' closing tick for hsc2hs
                                                               (24)
{-# LINE 253 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           8
{-# LINE 254 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 256 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 261 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "surfaceFormat" VkSurfaceFormatKHR 'False 
                                                                   (16)
{-# LINE 266 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkSurfaceFormatKHR {
--   >     VkFormat                         format;
--   >     VkColorSpaceKHR                  colorSpace;
--   > } VkSurfaceFormatKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkSurfaceFormatKHR VkSurfaceFormatKHR registry at www.khronos.org>
type VkSurfaceFormatKHR = VkStruct VkSurfaceFormatKHR' -- ' closing tick for hsc2hs

data VkSurfaceFormatKHR' -- ' closing tick for hsc2hs

instance VulkanMarshal VkSurfaceFormatKHR where
    type StructRep VkSurfaceFormatKHR =
         'StructMeta "VkSurfaceFormatKHR" VkSurfaceFormatKHR  -- ' closing tick for hsc2hs
                                                             (8)
{-# LINE 287 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           4
{-# LINE 288 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           '[('FieldMeta "format" VkFormat 'False  -- ' closing tick for hsc2hs
                                                  (0)
{-# LINE 290 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "colorSpace" VkColorSpaceKHR 'False 
                                                             (4)
{-# LINE 295 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct VkSurfaceProtectedCapabilitiesKHR {
--   >     VkStructureType sType;
--   >     const void* pNext;
--   >     VkBool32 supportsProtected;
--   > } VkSurfaceProtectedCapabilitiesKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkSurfaceProtectedCapabilitiesKHR VkSurfaceProtectedCapabilitiesKHR registry at www.khronos.org>
type VkSurfaceProtectedCapabilitiesKHR =
     VkStruct VkSurfaceProtectedCapabilitiesKHR' -- ' closing tick for hsc2hs

data VkSurfaceProtectedCapabilitiesKHR' -- ' closing tick for hsc2hs

instance VulkanMarshal VkSurfaceProtectedCapabilitiesKHR where
    type StructRep VkSurfaceProtectedCapabilitiesKHR =
         'StructMeta "VkSurfaceProtectedCapabilitiesKHR" -- ' closing tick for hsc2hs
           VkSurfaceProtectedCapabilitiesKHR
           (24)
{-# LINE 319 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           8
{-# LINE 320 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 322 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 327 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "supportsProtected" VkBool32 'False 
                                                             (16)
{-# LINE 332 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkSurfaceCapabilities2KHR] -- ' closing tick for hsc2hs