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


{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Attachment
       (VkAttachmentDescription, VkAttachmentDescription2,
        VkAttachmentDescription2KHR, VkAttachmentDescriptionStencilLayout,
        VkAttachmentDescriptionStencilLayoutKHR, VkAttachmentReference,
        VkAttachmentReference2, VkAttachmentReference2KHR,
        VkAttachmentReferenceStencilLayout,
        VkAttachmentReferenceStencilLayoutKHR,
        VkAttachmentSampleLocationsEXT)
       where
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Internal
import Graphics.Vulkan.Types.Enum.Attachment       (VkAttachmentDescriptionFlags,
                                                    VkAttachmentLoadOp,
                                                    VkAttachmentStoreOp)
import Graphics.Vulkan.Types.Enum.Format           (VkFormat)
import Graphics.Vulkan.Types.Enum.Image            (VkImageAspectFlags,
                                                    VkImageLayout)
import Graphics.Vulkan.Types.Enum.SampleCountFlags (VkSampleCountFlagBits)
import Graphics.Vulkan.Types.Enum.StructureType    (VkStructureType)
import {-# SOURCE #-} Graphics.Vulkan.Types.Struct.SampleLocation (VkSampleLocationsInfoEXT)

-- | > typedef struct VkAttachmentDescription {
--   >     VkAttachmentDescriptionFlags flags;
--   >     VkFormat               format;
--   >     VkSampleCountFlagBits  samples;
--   >     VkAttachmentLoadOp     loadOp;
--   >     VkAttachmentStoreOp    storeOp;
--   >     VkAttachmentLoadOp     stencilLoadOp;
--   >     VkAttachmentStoreOp    stencilStoreOp;
--   >     VkImageLayout          initialLayout;
--   >     VkImageLayout          finalLayout;
--   > } VkAttachmentDescription;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAttachmentDescription VkAttachmentDescription registry at www.khronos.org>
type VkAttachmentDescription = VkStruct VkAttachmentDescription' -- ' closing tick for hsc2hs

data VkAttachmentDescription' -- ' closing tick for hsc2hs

instance VulkanMarshal VkAttachmentDescription where
    type StructRep VkAttachmentDescription =
         'StructMeta "VkAttachmentDescription" VkAttachmentDescription -- ' closing tick for hsc2hs
           (36)
{-# LINE 50 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
           4
{-# LINE 51 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
           '[('FieldMeta "flags" VkAttachmentDescriptionFlags 'True  -- ' closing tick for hsc2hs
                                                                    (0)
{-# LINE 53 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "format" VkFormat 'False
                                                  (4)
{-# LINE 58 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "samples" VkSampleCountFlagBits 'False
                                                                (8)
{-# LINE 63 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "loadOp" VkAttachmentLoadOp 'False
                                                            (12)
{-# LINE 68 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "storeOp" VkAttachmentStoreOp 'False
                                                              (16)
{-# LINE 73 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "stencilLoadOp" VkAttachmentLoadOp 'False
                                                                   (20)
{-# LINE 78 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "stencilStoreOp" VkAttachmentStoreOp 'False
                                                                     (24)
{-# LINE 83 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "initialLayout" VkImageLayout 'False
                                                              (28)
{-# LINE 88 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "finalLayout" VkImageLayout 'False
                                                            (32)
{-# LINE 93 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.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 VkAttachmentDescription2 {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkAttachmentDescriptionFlags flags;
--   >     VkFormat                                     format;
--   >     VkSampleCountFlagBits                        samples;
--   >     VkAttachmentLoadOp                           loadOp;
--   >     VkAttachmentStoreOp                          storeOp;
--   >     VkAttachmentLoadOp                           stencilLoadOp;
--   >     VkAttachmentStoreOp                          stencilStoreOp;
--   >     VkImageLayout                                initialLayout;
--   >     VkImageLayout                                finalLayout;
--   > } VkAttachmentDescription2;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAttachmentDescription2 VkAttachmentDescription2 registry at www.khronos.org>
type VkAttachmentDescription2 = VkStruct VkAttachmentDescription2' -- ' closing tick for hsc2hs

data VkAttachmentDescription2' -- ' closing tick for hsc2hs

instance VulkanMarshal VkAttachmentDescription2 where
    type StructRep VkAttachmentDescription2 =
         'StructMeta "VkAttachmentDescription2" VkAttachmentDescription2 -- ' closing tick for hsc2hs
           (56)
{-# LINE 123 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
           8
{-# LINE 124 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 126 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.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/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkAttachmentDescriptionFlags 'True
                                                                    (16)
{-# LINE 136 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "format" VkFormat 'False
                                                  (20)
{-# LINE 141 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "samples" VkSampleCountFlagBits 'False
                                                                (24)
{-# LINE 146 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "loadOp" VkAttachmentLoadOp 'False
                                                            (28)
{-# LINE 151 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "storeOp" VkAttachmentStoreOp 'False
                                                              (32)
{-# LINE 156 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "stencilLoadOp" VkAttachmentLoadOp 'False
                                                                   (36)
{-# LINE 161 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "stencilStoreOp" VkAttachmentStoreOp 'False
                                                                     (40)
{-# LINE 166 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "initialLayout" VkImageLayout 'False
                                                              (44)
{-# LINE 171 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "finalLayout" VkImageLayout 'False
                                                            (48)
{-# LINE 176 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.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 `VkAttachmentDescription2`
type VkAttachmentDescription2KHR = VkAttachmentDescription2

-- | > typedef struct VkAttachmentDescriptionStencilLayout {
--   >     VkStructureTypesType;
--   >     void*    pNext;
--   >     VkImageLayout                  stencilInitialLayout;
--   >     VkImageLayout                  stencilFinalLayout;
--   > } VkAttachmentDescriptionStencilLayout;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayout registry at www.khronos.org>
type VkAttachmentDescriptionStencilLayout =
     VkStruct VkAttachmentDescriptionStencilLayout' -- ' closing tick for hsc2hs

data VkAttachmentDescriptionStencilLayout' -- ' closing tick for hsc2hs

instance VulkanMarshal VkAttachmentDescriptionStencilLayout where
    type StructRep VkAttachmentDescriptionStencilLayout =
         'StructMeta "VkAttachmentDescriptionStencilLayout" -- ' closing tick for hsc2hs
           VkAttachmentDescriptionStencilLayout
           (24)
{-# LINE 204 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
           8
{-# LINE 205 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 207 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 212 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "stencilInitialLayout" VkImageLayout 'False
                                                                     (16)
{-# LINE 217 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "stencilFinalLayout" VkImageLayout 'False
                                                                   (20)
{-# LINE 222 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkAttachmentDescription2] -- ' closing tick for hsc2hs

-- | Alias for `VkAttachmentDescriptionStencilLayout`
type VkAttachmentDescriptionStencilLayoutKHR =
     VkAttachmentDescriptionStencilLayout

-- | > typedef struct VkAttachmentReference {
--   >     uint32_t               attachment;
--   >     VkImageLayout          layout;
--   > } VkAttachmentReference;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAttachmentReference VkAttachmentReference registry at www.khronos.org>
type VkAttachmentReference = VkStruct VkAttachmentReference' -- ' closing tick for hsc2hs

data VkAttachmentReference' -- ' closing tick for hsc2hs

instance VulkanMarshal VkAttachmentReference where
    type StructRep VkAttachmentReference =
         'StructMeta "VkAttachmentReference" VkAttachmentReference  -- ' closing tick for hsc2hs
                                                                   (8)
{-# LINE 247 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
           4
{-# LINE 248 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
           '[('FieldMeta "attachment" Word32 'False  -- ' closing tick for hsc2hs
                                                    (0)
{-# LINE 250 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "layout" VkImageLayout 'False
                                                       (4)
{-# LINE 255 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.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 VkAttachmentReference2 {
--   >     VkStructureType sType;
--   >     const void* pNext;
--   >     uint32_t                          attachment;
--   >     VkImageLayout                     layout;
--   >     VkImageAspectFlags aspectMask;
--   > } VkAttachmentReference2;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAttachmentReference2 VkAttachmentReference2 registry at www.khronos.org>
type VkAttachmentReference2 = VkStruct VkAttachmentReference2' -- ' closing tick for hsc2hs

data VkAttachmentReference2' -- ' closing tick for hsc2hs

instance VulkanMarshal VkAttachmentReference2 where
    type StructRep VkAttachmentReference2 =
         'StructMeta "VkAttachmentReference2" VkAttachmentReference2 -- ' closing tick for hsc2hs
           (32)
{-# LINE 279 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
           8
{-# LINE 280 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 282 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 287 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "attachment" Word32 'False
                                                    (16)
{-# LINE 292 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "layout" VkImageLayout 'False
                                                       (20)
{-# LINE 297 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "aspectMask" VkImageAspectFlags 'False
                                                                (24)
{-# LINE 302 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.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 `VkAttachmentReference2`
type VkAttachmentReference2KHR = VkAttachmentReference2

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

data VkAttachmentReferenceStencilLayout' -- ' closing tick for hsc2hs

instance VulkanMarshal VkAttachmentReferenceStencilLayout where
    type StructRep VkAttachmentReferenceStencilLayout =
         'StructMeta "VkAttachmentReferenceStencilLayout" -- ' closing tick for hsc2hs
           VkAttachmentReferenceStencilLayout
           (24)
{-# LINE 329 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
           8
{-# LINE 330 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 332 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 337 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "stencilLayout" VkImageLayout 'False
                                                              (16)
{-# LINE 342 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkAttachmentReference2] -- ' closing tick for hsc2hs

-- | Alias for `VkAttachmentReferenceStencilLayout`
type VkAttachmentReferenceStencilLayoutKHR =
     VkAttachmentReferenceStencilLayout

-- | > typedef struct VkAttachmentSampleLocationsEXT {
--   >     uint32_t                         attachmentIndex;
--   >     VkSampleLocationsInfoEXT         sampleLocationsInfo;
--   > } VkAttachmentSampleLocationsEXT;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkAttachmentSampleLocationsEXT VkAttachmentSampleLocationsEXT registry at www.khronos.org>
type VkAttachmentSampleLocationsEXT =
     VkStruct VkAttachmentSampleLocationsEXT' -- ' closing tick for hsc2hs

data VkAttachmentSampleLocationsEXT' -- ' closing tick for hsc2hs

instance VulkanMarshal VkAttachmentSampleLocationsEXT where
    type StructRep VkAttachmentSampleLocationsEXT =
         'StructMeta "VkAttachmentSampleLocationsEXT" -- ' closing tick for hsc2hs
           VkAttachmentSampleLocationsEXT
           (48)
{-# LINE 369 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
           8
{-# LINE 370 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
           '[('FieldMeta "attachmentIndex" Word32 'False  -- ' closing tick for hsc2hs
                                                         (0)
{-# LINE 372 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "sampleLocationsInfo" VkSampleLocationsInfoEXT 'False
                (8)
{-# LINE 377 "src-gen/Graphics/Vulkan/Types/Struct/Attachment.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