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


{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Swapchain
       (VkSwapchainCounterCreateInfoEXT, VkSwapchainCreateInfoKHR,
        VkSwapchainDisplayNativeHdrCreateInfoAMD)
       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 (VkCompositeAlphaFlagBitsKHR)
import Graphics.Vulkan.Types.Enum.Format                 (VkFormat)
import Graphics.Vulkan.Types.Enum.Image                  (VkImageUsageFlags)
import Graphics.Vulkan.Types.Enum.PresentModeKHR         (VkPresentModeKHR)
import Graphics.Vulkan.Types.Enum.SharingMode            (VkSharingMode)
import Graphics.Vulkan.Types.Enum.StructureType          (VkStructureType)
import Graphics.Vulkan.Types.Enum.Surface                (VkSurfaceCounterFlagsEXT,
                                                          VkSurfaceTransformFlagBitsKHR)
import Graphics.Vulkan.Types.Enum.Swapchain              (VkSwapchainCreateFlagsKHR)
import Graphics.Vulkan.Types.Handles                     (VkSurfaceKHR,
                                                          VkSwapchainKHR)
import Graphics.Vulkan.Types.Struct.Extent               (VkExtent2D)

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

data VkSwapchainCounterCreateInfoEXT' -- ' closing tick for hsc2hs

instance VulkanMarshal VkSwapchainCounterCreateInfoEXT where
    type StructRep VkSwapchainCounterCreateInfoEXT =
         'StructMeta "VkSwapchainCounterCreateInfoEXT" -- ' closing tick for hsc2hs
           VkSwapchainCounterCreateInfoEXT
           (24)
{-# LINE 46 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
           8
{-# LINE 47 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 49 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 54 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "surfaceCounters" VkSurfaceCounterFlagsEXT 'True
                (16)
{-# LINE 59 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkSwapchainCreateInfoKHR] -- ' closing tick for hsc2hs

-- | > typedef struct VkSwapchainCreateInfoKHR {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkSwapchainCreateFlagsKHR        flags;
--   >     VkSurfaceKHR                     surface;
--   >     uint32_t                         minImageCount;
--   >     VkFormat                         imageFormat;
--   >     VkColorSpaceKHR                  imageColorSpace;
--   >     VkExtent2D                       imageExtent;
--   >     uint32_t                         imageArrayLayers;
--   >     VkImageUsageFlags                imageUsage;
--   >     VkSharingMode                    imageSharingMode;
--   >     uint32_t         queueFamilyIndexCount;
--   >     const uint32_t*                  pQueueFamilyIndices;
--   >     VkSurfaceTransformFlagBitsKHR    preTransform;
--   >     VkCompositeAlphaFlagBitsKHR      compositeAlpha;
--   >     VkPresentModeKHR                 presentMode;
--   >     VkBool32                         clipped;
--   >     VkSwapchainKHR   oldSwapchain;
--   > } VkSwapchainCreateInfoKHR;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkSwapchainCreateInfoKHR VkSwapchainCreateInfoKHR registry at www.khronos.org>
type VkSwapchainCreateInfoKHR = VkStruct VkSwapchainCreateInfoKHR' -- ' closing tick for hsc2hs

data VkSwapchainCreateInfoKHR' -- ' closing tick for hsc2hs

instance VulkanMarshal VkSwapchainCreateInfoKHR where
    type StructRep VkSwapchainCreateInfoKHR =
         'StructMeta "VkSwapchainCreateInfoKHR" VkSwapchainCreateInfoKHR -- ' closing tick for hsc2hs
           (104)
{-# LINE 96 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
           8
{-# LINE 97 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 99 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 104 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkSwapchainCreateFlagsKHR 'True 
                                                                 (16)
{-# LINE 109 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "surface" VkSurfaceKHR 'False 
                                                       (24)
{-# LINE 114 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "minImageCount" Word32 'False 
                                                       (32)
{-# LINE 119 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "imageFormat" VkFormat 'False 
                                                       (36)
{-# LINE 124 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "imageColorSpace" VkColorSpaceKHR 'False 
                                                                  (40)
{-# LINE 129 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "imageExtent" VkExtent2D 'False 
                                                         (44)
{-# LINE 134 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "imageArrayLayers" Word32 'False 
                                                          (52)
{-# LINE 139 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "imageUsage" VkImageUsageFlags 'False 
                                                               (56)
{-# LINE 144 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "imageSharingMode" VkSharingMode 'False 
                                                                 (60)
{-# LINE 149 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "queueFamilyIndexCount" Word32 'True 
                                                              (64)
{-# LINE 154 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pQueueFamilyIndices" (Ptr Word32) 'False 
                                                                   (72)
{-# LINE 159 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "preTransform" VkSurfaceTransformFlagBitsKHR 'False
                (80)
{-# LINE 164 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "compositeAlpha" VkCompositeAlphaFlagBitsKHR 'False
                (84)
{-# LINE 169 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "presentMode" VkPresentModeKHR 'False 
                                                               (88)
{-# LINE 174 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "clipped" VkBool32 'False 
                                                   (92)
{-# LINE 179 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "oldSwapchain" VkSwapchainKHR 'True 
                                                             (96)
{-# LINE 184 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

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

data VkSwapchainDisplayNativeHdrCreateInfoAMD' -- ' closing tick for hsc2hs

instance VulkanMarshal VkSwapchainDisplayNativeHdrCreateInfoAMD
         where
    type StructRep VkSwapchainDisplayNativeHdrCreateInfoAMD =
         'StructMeta "VkSwapchainDisplayNativeHdrCreateInfoAMD" -- ' closing tick for hsc2hs
           VkSwapchainDisplayNativeHdrCreateInfoAMD
           (24)
{-# LINE 209 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
           8
{-# LINE 210 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 212 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 217 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "localDimmingEnable" VkBool32 'False 
                                                              (16)
{-# LINE 222 "src-gen/Graphics/Vulkan/Types/Struct/Swapchain.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkSwapchainCreateInfoKHR] -- ' closing tick for hsc2hs