{-# 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)
       where
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Internal
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.1-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 50 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           8
{-# LINE 51 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 53 "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 58 "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 63 "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 68 "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 73 "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 78 "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 83 "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 88 "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 93 "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 98 "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 104 "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 109 "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 115 "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.1-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 138 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           8
{-# LINE 139 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 141 "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 146 "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 151 "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.1-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 180 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           4
{-# LINE 181 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           '[('FieldMeta "minImageCount" Word32 'False  -- ' closing tick for hsc2hs
                                                       (0)
{-# LINE 183 "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 188 "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 193 "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 198 "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 203 "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 208 "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 213 "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 218 "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 224 "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 229 "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.1-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 251 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           8
{-# LINE 252 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 254 "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 259 "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 264 "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.1-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 285 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           4
{-# LINE 286 "src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc" #-}
           '[('FieldMeta "format" VkFormat 'False  -- ' closing tick for hsc2hs
                                                  (0)
{-# LINE 288 "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 293 "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