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


{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Framebuffer
       (VkFramebufferAttachmentImageInfo,
        VkFramebufferAttachmentImageInfoKHR,
        VkFramebufferAttachmentsCreateInfo,
        VkFramebufferAttachmentsCreateInfoKHR, VkFramebufferCreateInfo,
        VkFramebufferMixedSamplesCombinationNV)
       where
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Internal
import Graphics.Vulkan.Types.Enum.Coverage               (VkCoverageReductionModeNV)
import Graphics.Vulkan.Types.Enum.Format                 (VkFormat)
import Graphics.Vulkan.Types.Enum.FramebufferCreateFlags (VkFramebufferCreateFlags)
import Graphics.Vulkan.Types.Enum.Image                  (VkImageCreateFlags,
                                                          VkImageUsageFlags)
import Graphics.Vulkan.Types.Enum.SampleCountFlags       (VkSampleCountFlagBits,
                                                          VkSampleCountFlags)
import Graphics.Vulkan.Types.Enum.StructureType          (VkStructureType)
import Graphics.Vulkan.Types.Handles                     (VkImageView,
                                                          VkRenderPass)

-- | > typedef struct VkFramebufferAttachmentImageInfo {
--   >     VkStructureType sType;
--   >     const void*                              pNext;
--   >     VkImageCreateFlags       flags;
--   >     VkImageUsageFlags                        usage;
--   >     uint32_t                                 width;
--   >     uint32_t                                 height;
--   >     uint32_t                                 layerCount;
--   >     uint32_t                 viewFormatCount;
--   >     const VkFormat*    pViewFormats;
--   > } VkFramebufferAttachmentImageInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfo registry at www.khronos.org>
type VkFramebufferAttachmentImageInfo =
     VkStruct VkFramebufferAttachmentImageInfo' -- ' closing tick for hsc2hs

data VkFramebufferAttachmentImageInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkFramebufferAttachmentImageInfo where
    type StructRep VkFramebufferAttachmentImageInfo =
         'StructMeta "VkFramebufferAttachmentImageInfo" -- ' closing tick for hsc2hs
           VkFramebufferAttachmentImageInfo
           (48)
{-# LINE 51 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
           8
{-# LINE 52 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 54 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 59 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkImageCreateFlags 'True 
                                                          (16)
{-# LINE 64 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "usage" VkImageUsageFlags 'False 
                                                          (20)
{-# LINE 69 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "width" Word32 'False 
                                               (24)
{-# LINE 74 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "height" Word32 'False 
                                                (28)
{-# LINE 79 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "layerCount" Word32 'False 
                                                    (32)
{-# LINE 84 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "viewFormatCount" Word32 'True 
                                                        (36)
{-# LINE 89 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pViewFormats" (Ptr VkFormat) 'False 
                                                              (40)
{-# LINE 94 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.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

-- | Alias for `VkFramebufferAttachmentImageInfo`
type VkFramebufferAttachmentImageInfoKHR =
     VkFramebufferAttachmentImageInfo

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

data VkFramebufferAttachmentsCreateInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkFramebufferAttachmentsCreateInfo where
    type StructRep VkFramebufferAttachmentsCreateInfo =
         'StructMeta "VkFramebufferAttachmentsCreateInfo" -- ' closing tick for hsc2hs
           VkFramebufferAttachmentsCreateInfo
           (32)
{-# LINE 123 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
           8
{-# LINE 124 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 126 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 131 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "attachmentImageInfoCount" Word32 'True 
                                                                 (16)
{-# LINE 136 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pAttachmentImageInfos" -- ' closing tick for hsc2hs
                (Ptr VkFramebufferAttachmentImageInfo)
                'False -- ' closing tick for hsc2hs
                (24)
{-# LINE 143 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkFramebufferCreateInfo] -- ' closing tick for hsc2hs

-- | Alias for `VkFramebufferAttachmentsCreateInfo`
type VkFramebufferAttachmentsCreateInfoKHR =
     VkFramebufferAttachmentsCreateInfo

-- | > typedef struct VkFramebufferCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkFramebufferCreateFlags    flags;
--   >     VkRenderPass           renderPass;
--   >     uint32_t               attachmentCount;
--   >     const VkImageView*     pAttachments;
--   >     uint32_t               width;
--   >     uint32_t               height;
--   >     uint32_t               layers;
--   > } VkFramebufferCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFramebufferCreateInfo VkFramebufferCreateInfo registry at www.khronos.org>
type VkFramebufferCreateInfo = VkStruct VkFramebufferCreateInfo' -- ' closing tick for hsc2hs

data VkFramebufferCreateInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkFramebufferCreateInfo where
    type StructRep VkFramebufferCreateInfo =
         'StructMeta "VkFramebufferCreateInfo" VkFramebufferCreateInfo -- ' closing tick for hsc2hs
           (64)
{-# LINE 175 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
           8
{-# LINE 176 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 178 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 183 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkFramebufferCreateFlags 'True 
                                                                (16)
{-# LINE 188 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "renderPass" VkRenderPass 'False 
                                                          (24)
{-# LINE 193 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "attachmentCount" Word32 'True 
                                                        (32)
{-# LINE 198 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pAttachments" (Ptr VkImageView) 'False 
                                                                 (40)
{-# LINE 203 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "width" Word32 'False 
                                               (48)
{-# LINE 208 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "height" Word32 'False 
                                                (52)
{-# LINE 213 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "layers" Word32 'False 
                                                (56)
{-# LINE 218 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.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 VkFramebufferMixedSamplesCombinationNV {
--   >     VkStructureType sType;
--   >     void*                      pNext;
--   >     VkCoverageReductionModeNV  coverageReductionMode;
--   >     VkSampleCountFlagBits      rasterizationSamples;
--   >     VkSampleCountFlags         depthStencilSamples;
--   >     VkSampleCountFlags         colorSamples;
--   > } VkFramebufferMixedSamplesCombinationNV;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkFramebufferMixedSamplesCombinationNV VkFramebufferMixedSamplesCombinationNV registry at www.khronos.org>
type VkFramebufferMixedSamplesCombinationNV =
     VkStruct VkFramebufferMixedSamplesCombinationNV' -- ' closing tick for hsc2hs

data VkFramebufferMixedSamplesCombinationNV' -- ' closing tick for hsc2hs

instance VulkanMarshal VkFramebufferMixedSamplesCombinationNV where
    type StructRep VkFramebufferMixedSamplesCombinationNV =
         'StructMeta "VkFramebufferMixedSamplesCombinationNV" -- ' closing tick for hsc2hs
           VkFramebufferMixedSamplesCombinationNV
           (32)
{-# LINE 245 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
           8
{-# LINE 246 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 248 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 253 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "coverageReductionMode" VkCoverageReductionModeNV -- ' closing tick for hsc2hs
                'False -- ' closing tick for hsc2hs
                (16)
{-# LINE 259 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "rasterizationSamples" VkSampleCountFlagBits 'False
                (20)
{-# LINE 264 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "depthStencilSamples" VkSampleCountFlags 'False
                (24)
{-# LINE 269 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "colorSamples" VkSampleCountFlags 'False 
                                                                  (28)
{-# LINE 274 "src-gen/Graphics/Vulkan/Types/Struct/Framebuffer.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