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

{-# LINE 2 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleContexts      #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MagicHash             #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PatternSynonyms       #-}
{-# LANGUAGE ScopedTypeVariables   #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeApplications      #-}
{-# LANGUAGE TypeFamilies          #-}
{-# LANGUAGE UndecidableInstances  #-}
module Graphics.Vulkan.Types.Struct.Pipeline
       (VkGraphicsPipelineCreateInfo(..), VkPipelineCacheCreateInfo(..),
        VkPipelineColorBlendAdvancedStateCreateInfoEXT(..),
        VkPipelineColorBlendAttachmentState(..),
        VkPipelineColorBlendStateCreateInfo(..),
        VkPipelineCoverageModulationStateCreateInfoNV(..),
        VkPipelineCoverageToColorStateCreateInfoNV(..),
        VkPipelineDepthStencilStateCreateInfo(..),
        VkPipelineDiscardRectangleStateCreateInfoEXT(..),
        VkPipelineDynamicStateCreateInfo(..),
        VkPipelineInputAssemblyStateCreateInfo(..),
        VkPipelineLayoutCreateInfo(..),
        VkPipelineMultisampleStateCreateInfo(..),
        VkPipelineRasterizationConservativeStateCreateInfoEXT(..),
        VkPipelineRasterizationStateCreateInfo(..),
        VkPipelineRasterizationStateRasterizationOrderAMD(..),
        VkPipelineSampleLocationsStateCreateInfoEXT(..),
        VkPipelineShaderStageCreateInfo(..),
        VkPipelineTessellationDomainOriginStateCreateInfo(..),
        VkPipelineTessellationDomainOriginStateCreateInfoKHR,
        VkPipelineTessellationStateCreateInfo(..),
        VkPipelineVertexInputDivisorStateCreateInfoEXT(..),
        VkPipelineVertexInputStateCreateInfo(..),
        VkPipelineViewportStateCreateInfo(..),
        VkPipelineViewportSwizzleStateCreateInfoNV(..),
        VkPipelineViewportWScalingStateCreateInfoNV(..))
       where
import           Foreign.Storable                                            (Storable (..))
import           GHC.Base                                                    (Addr#,
                                                                              ByteArray#,
                                                                              Proxy#,
                                                                              byteArrayContents#,
                                                                              plusAddr#,
                                                                              proxy#)
import           GHC.TypeLits                                                (KnownNat,
                                                                              natVal') -- ' closing tick for hsc2hs
import           Graphics.Vulkan.Marshal
import           Graphics.Vulkan.Marshal.Internal
import           Graphics.Vulkan.Types.BaseTypes                             (VkBool32,
                                                                              VkSampleMask)
import           Graphics.Vulkan.Types.Bitmasks                              (VkPipelineCacheCreateFlags,
                                                                              VkPipelineColorBlendStateCreateFlags,
                                                                              VkPipelineCoverageModulationStateCreateFlagsNV,
                                                                              VkPipelineCoverageToColorStateCreateFlagsNV,
                                                                              VkPipelineDepthStencilStateCreateFlags,
                                                                              VkPipelineDiscardRectangleStateCreateFlagsEXT,
                                                                              VkPipelineDynamicStateCreateFlags,
                                                                              VkPipelineInputAssemblyStateCreateFlags,
                                                                              VkPipelineLayoutCreateFlags,
                                                                              VkPipelineMultisampleStateCreateFlags,
                                                                              VkPipelineRasterizationConservativeStateCreateFlagsEXT,
                                                                              VkPipelineRasterizationStateCreateFlags,
                                                                              VkPipelineShaderStageCreateFlags,
                                                                              VkPipelineTessellationStateCreateFlags,
                                                                              VkPipelineVertexInputStateCreateFlags,
                                                                              VkPipelineViewportStateCreateFlags,
                                                                              VkPipelineViewportSwizzleStateCreateFlagsNV)
import           Graphics.Vulkan.Types.Enum.Blend                            (VkBlendFactor,
                                                                              VkBlendOp,
                                                                              VkBlendOverlapEXT)
import           Graphics.Vulkan.Types.Enum.Color                            (VkColorComponentFlags)
import           Graphics.Vulkan.Types.Enum.CompareOp                        (VkCompareOp)
import           Graphics.Vulkan.Types.Enum.ConservativeRasterizationModeEXT (VkConservativeRasterizationModeEXT)
import           Graphics.Vulkan.Types.Enum.CoverageModulationModeNV         (VkCoverageModulationModeNV)
import           Graphics.Vulkan.Types.Enum.CullModeFlags                    (VkCullModeFlags)
import           Graphics.Vulkan.Types.Enum.DiscardRectangleModeEXT          (VkDiscardRectangleModeEXT)
import           Graphics.Vulkan.Types.Enum.DynamicState                     (VkDynamicState)
import           Graphics.Vulkan.Types.Enum.FrontFace                        (VkFrontFace)
import           Graphics.Vulkan.Types.Enum.LogicOp                          (VkLogicOp)
import           Graphics.Vulkan.Types.Enum.Pipeline                         (VkPipelineCreateFlags)
import           Graphics.Vulkan.Types.Enum.PolygonMode                      (VkPolygonMode)
import           Graphics.Vulkan.Types.Enum.PrimitiveTopology                (VkPrimitiveTopology)
import           Graphics.Vulkan.Types.Enum.RasterizationOrderAMD            (VkRasterizationOrderAMD)
import           Graphics.Vulkan.Types.Enum.SampleCountFlags                 (VkSampleCountFlagBits)
import           Graphics.Vulkan.Types.Enum.Shader                           (VkShaderStageFlagBits)
import           Graphics.Vulkan.Types.Enum.StructureType                    (VkStructureType)
import           Graphics.Vulkan.Types.Enum.TessellationDomainOrigin         (VkTessellationDomainOrigin)
import           Graphics.Vulkan.Types.Handles                               (VkDescriptorSetLayout,
                                                                              VkPipeline,
                                                                              VkPipelineLayout,
                                                                              VkRenderPass,
                                                                              VkShaderModule)
import           Graphics.Vulkan.Types.Struct.PushConstantRange              (VkPushConstantRange)
import           Graphics.Vulkan.Types.Struct.Rect                           (VkRect2D)
import           Graphics.Vulkan.Types.Struct.SampleLocation                 (VkSampleLocationsInfoEXT)
import           Graphics.Vulkan.Types.Struct.Specialization                 (VkSpecializationInfo)
import           Graphics.Vulkan.Types.Struct.StencilOpState                 (VkStencilOpState)
import           Graphics.Vulkan.Types.Struct.VertexInput                    (VkVertexInputAttributeDescription,
                                                                              VkVertexInputBindingDescription,
                                                                              VkVertexInputBindingDivisorDescriptionEXT)
import           Graphics.Vulkan.Types.Struct.Viewport                       (VkViewport,
                                                                              VkViewportSwizzleNV,
                                                                              VkViewportWScalingNV)
import           System.IO.Unsafe                                            (unsafeDupablePerformIO)

-- | > typedef struct VkGraphicsPipelineCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkPipelineCreateFlags  flags;
--   >     uint32_t               stageCount;
--   >     const VkPipelineShaderStageCreateInfo* pStages;
--   >     const VkPipelineVertexInputStateCreateInfo* pVertexInputState;
--   >     const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
--   >     const VkPipelineTessellationStateCreateInfo* pTessellationState;
--   >     const VkPipelineViewportStateCreateInfo* pViewportState;
--   >     const VkPipelineRasterizationStateCreateInfo* pRasterizationState;
--   >     const VkPipelineMultisampleStateCreateInfo* pMultisampleState;
--   >     const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState;
--   >     const VkPipelineColorBlendStateCreateInfo* pColorBlendState;
--   >     const VkPipelineDynamicStateCreateInfo* pDynamicState;
--   >     VkPipelineLayout       layout;
--   >     VkRenderPass           renderPass;
--   >     uint32_t               subpass;
--   >     VkPipeline      basePipelineHandle;
--   >     int32_t                basePipelineIndex;
--   > } VkGraphicsPipelineCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkGraphicsPipelineCreateInfo VkGraphicsPipelineCreateInfo registry at www.khronos.org>
data VkGraphicsPipelineCreateInfo = VkGraphicsPipelineCreateInfo# Addr#
                                                                  ByteArray#

instance Eq VkGraphicsPipelineCreateInfo where
        (VkGraphicsPipelineCreateInfo# a _) ==
          x@(VkGraphicsPipelineCreateInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkGraphicsPipelineCreateInfo where
        (VkGraphicsPipelineCreateInfo# a _) `compare`
          x@(VkGraphicsPipelineCreateInfo# b _) = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkGraphicsPipelineCreateInfo where
        sizeOf ~_ = (144)
{-# LINE 150 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 154 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkGraphicsPipelineCreateInfo where
        unsafeAddr (VkGraphicsPipelineCreateInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkGraphicsPipelineCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkGraphicsPipelineCreateInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkGraphicsPipelineCreateInfo where
        type StructFields VkGraphicsPipelineCreateInfo =
             '["sType", "pNext", "flags", "stageCount", "pStages", -- ' closing tick for hsc2hs
               "pVertexInputState", "pInputAssemblyState", "pTessellationState",
               "pViewportState", "pRasterizationState", "pMultisampleState",
               "pDepthStencilState", "pColorBlendState", "pDynamicState",
               "layout", "renderPass", "subpass", "basePipelineHandle",
               "basePipelineIndex"]
        type CUnionType VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkGraphicsPipelineCreateInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkGraphicsPipelineCreateInfo where
        type FieldType "sType" VkGraphicsPipelineCreateInfo =
             VkStructureType
        type FieldOptional "sType" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkGraphicsPipelineCreateInfo =
             (0)
{-# LINE 196 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 204 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkGraphicsPipelineCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 211 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 215 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkGraphicsPipelineCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 221 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkGraphicsPipelineCreateInfo where
        type FieldType "pNext" VkGraphicsPipelineCreateInfo = Ptr Void
        type FieldOptional "pNext" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkGraphicsPipelineCreateInfo =
             (8)
{-# LINE 228 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 236 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkGraphicsPipelineCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 243 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 247 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkGraphicsPipelineCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 253 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkGraphicsPipelineCreateInfo where
        type FieldType "flags" VkGraphicsPipelineCreateInfo =
             VkPipelineCreateFlags
        type FieldOptional "flags" VkGraphicsPipelineCreateInfo = 'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkGraphicsPipelineCreateInfo =
             (16)
{-# LINE 261 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 269 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkGraphicsPipelineCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 276 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 280 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkGraphicsPipelineCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 286 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "stageCount" VkGraphicsPipelineCreateInfo where
        type FieldType "stageCount" VkGraphicsPipelineCreateInfo = Word32
        type FieldOptional "stageCount" VkGraphicsPipelineCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "stageCount" VkGraphicsPipelineCreateInfo =
             (20)
{-# LINE 294 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "stageCount" VkGraphicsPipelineCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 303 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "stageCount" VkGraphicsPipelineCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 310 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 314 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "stageCount" VkGraphicsPipelineCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 320 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pStages" VkGraphicsPipelineCreateInfo where
        type FieldType "pStages" VkGraphicsPipelineCreateInfo =
             Ptr VkPipelineShaderStageCreateInfo
        type FieldOptional "pStages" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pStages" VkGraphicsPipelineCreateInfo =
             (24)
{-# LINE 328 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pStages" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 336 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pStages" VkGraphicsPipelineCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 343 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 347 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pStages" VkGraphicsPipelineCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 353 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pVertexInputState" VkGraphicsPipelineCreateInfo where
        type FieldType "pVertexInputState" VkGraphicsPipelineCreateInfo =
             Ptr VkPipelineVertexInputStateCreateInfo
        type FieldOptional "pVertexInputState" VkGraphicsPipelineCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pVertexInputState" VkGraphicsPipelineCreateInfo =
             (32)
{-# LINE 362 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pVertexInputState" VkGraphicsPipelineCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 371 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pVertexInputState" VkGraphicsPipelineCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 378 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 382 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pVertexInputState" VkGraphicsPipelineCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 389 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pInputAssemblyState" VkGraphicsPipelineCreateInfo where
        type FieldType "pInputAssemblyState" VkGraphicsPipelineCreateInfo =
             Ptr VkPipelineInputAssemblyStateCreateInfo
        type FieldOptional "pInputAssemblyState"
               VkGraphicsPipelineCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pInputAssemblyState" VkGraphicsPipelineCreateInfo
             =
             (40)
{-# LINE 400 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pInputAssemblyState"
               VkGraphicsPipelineCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (40)
{-# LINE 410 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pInputAssemblyState" VkGraphicsPipelineCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 418 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (40)
{-# LINE 422 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pInputAssemblyState" VkGraphicsPipelineCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 429 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pTessellationState" VkGraphicsPipelineCreateInfo where
        type FieldType "pTessellationState" VkGraphicsPipelineCreateInfo =
             Ptr VkPipelineTessellationStateCreateInfo
        type FieldOptional "pTessellationState"
               VkGraphicsPipelineCreateInfo
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "pTessellationState" VkGraphicsPipelineCreateInfo
             =
             (48)
{-# LINE 440 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pTessellationState" VkGraphicsPipelineCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (48)
{-# LINE 449 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pTessellationState" VkGraphicsPipelineCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 457 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (48)
{-# LINE 461 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pTessellationState" VkGraphicsPipelineCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 468 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pViewportState" VkGraphicsPipelineCreateInfo where
        type FieldType "pViewportState" VkGraphicsPipelineCreateInfo =
             Ptr VkPipelineViewportStateCreateInfo
        type FieldOptional "pViewportState" VkGraphicsPipelineCreateInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "pViewportState" VkGraphicsPipelineCreateInfo =
             (56)
{-# LINE 477 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pViewportState" VkGraphicsPipelineCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (56)
{-# LINE 486 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pViewportState" VkGraphicsPipelineCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (56))
{-# LINE 493 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (56)
{-# LINE 497 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pViewportState" VkGraphicsPipelineCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (56)
{-# LINE 503 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pRasterizationState" VkGraphicsPipelineCreateInfo where
        type FieldType "pRasterizationState" VkGraphicsPipelineCreateInfo =
             Ptr VkPipelineRasterizationStateCreateInfo
        type FieldOptional "pRasterizationState"
               VkGraphicsPipelineCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pRasterizationState" VkGraphicsPipelineCreateInfo
             =
             (64)
{-# LINE 514 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pRasterizationState"
               VkGraphicsPipelineCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (64)
{-# LINE 524 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pRasterizationState" VkGraphicsPipelineCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (64))
{-# LINE 532 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (64)
{-# LINE 536 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pRasterizationState" VkGraphicsPipelineCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (64)
{-# LINE 543 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pMultisampleState" VkGraphicsPipelineCreateInfo where
        type FieldType "pMultisampleState" VkGraphicsPipelineCreateInfo =
             Ptr VkPipelineMultisampleStateCreateInfo
        type FieldOptional "pMultisampleState" VkGraphicsPipelineCreateInfo
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "pMultisampleState" VkGraphicsPipelineCreateInfo =
             (72)
{-# LINE 552 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pMultisampleState" VkGraphicsPipelineCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (72)
{-# LINE 561 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pMultisampleState" VkGraphicsPipelineCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (72))
{-# LINE 568 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (72)
{-# LINE 572 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pMultisampleState" VkGraphicsPipelineCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (72)
{-# LINE 579 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pDepthStencilState" VkGraphicsPipelineCreateInfo where
        type FieldType "pDepthStencilState" VkGraphicsPipelineCreateInfo =
             Ptr VkPipelineDepthStencilStateCreateInfo
        type FieldOptional "pDepthStencilState"
               VkGraphicsPipelineCreateInfo
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "pDepthStencilState" VkGraphicsPipelineCreateInfo
             =
             (80)
{-# LINE 590 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pDepthStencilState" VkGraphicsPipelineCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (80)
{-# LINE 599 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pDepthStencilState" VkGraphicsPipelineCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (80))
{-# LINE 607 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (80)
{-# LINE 611 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pDepthStencilState" VkGraphicsPipelineCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (80)
{-# LINE 618 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pColorBlendState" VkGraphicsPipelineCreateInfo where
        type FieldType "pColorBlendState" VkGraphicsPipelineCreateInfo =
             Ptr VkPipelineColorBlendStateCreateInfo
        type FieldOptional "pColorBlendState" VkGraphicsPipelineCreateInfo
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "pColorBlendState" VkGraphicsPipelineCreateInfo =
             (88)
{-# LINE 627 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pColorBlendState" VkGraphicsPipelineCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (88)
{-# LINE 636 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pColorBlendState" VkGraphicsPipelineCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (88))
{-# LINE 643 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (88)
{-# LINE 647 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pColorBlendState" VkGraphicsPipelineCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (88)
{-# LINE 653 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pDynamicState" VkGraphicsPipelineCreateInfo where
        type FieldType "pDynamicState" VkGraphicsPipelineCreateInfo =
             Ptr VkPipelineDynamicStateCreateInfo
        type FieldOptional "pDynamicState" VkGraphicsPipelineCreateInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "pDynamicState" VkGraphicsPipelineCreateInfo =
             (96)
{-# LINE 662 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pDynamicState" VkGraphicsPipelineCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (96)
{-# LINE 671 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pDynamicState" VkGraphicsPipelineCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (96))
{-# LINE 678 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (96)
{-# LINE 682 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pDynamicState" VkGraphicsPipelineCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (96)
{-# LINE 688 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "layout" VkGraphicsPipelineCreateInfo where
        type FieldType "layout" VkGraphicsPipelineCreateInfo =
             VkPipelineLayout
        type FieldOptional "layout" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "layout" VkGraphicsPipelineCreateInfo =
             (104)
{-# LINE 696 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "layout" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (104)
{-# LINE 704 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "layout" VkGraphicsPipelineCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (104))
{-# LINE 711 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (104)
{-# LINE 715 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "layout" VkGraphicsPipelineCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (104)
{-# LINE 721 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "renderPass" VkGraphicsPipelineCreateInfo where
        type FieldType "renderPass" VkGraphicsPipelineCreateInfo =
             VkRenderPass
        type FieldOptional "renderPass" VkGraphicsPipelineCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "renderPass" VkGraphicsPipelineCreateInfo =
             (112)
{-# LINE 730 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "renderPass" VkGraphicsPipelineCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (112)
{-# LINE 739 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "renderPass" VkGraphicsPipelineCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (112))
{-# LINE 746 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (112)
{-# LINE 750 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "renderPass" VkGraphicsPipelineCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (112)
{-# LINE 756 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "subpass" VkGraphicsPipelineCreateInfo where
        type FieldType "subpass" VkGraphicsPipelineCreateInfo = Word32
        type FieldOptional "subpass" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "subpass" VkGraphicsPipelineCreateInfo =
             (120)
{-# LINE 763 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "subpass" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (120)
{-# LINE 771 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "subpass" VkGraphicsPipelineCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (120))
{-# LINE 778 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (120)
{-# LINE 782 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "subpass" VkGraphicsPipelineCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (120)
{-# LINE 788 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "basePipelineHandle" VkGraphicsPipelineCreateInfo where
        type FieldType "basePipelineHandle" VkGraphicsPipelineCreateInfo =
             VkPipeline
        type FieldOptional "basePipelineHandle"
               VkGraphicsPipelineCreateInfo
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "basePipelineHandle" VkGraphicsPipelineCreateInfo
             =
             (128)
{-# LINE 799 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "basePipelineHandle" VkGraphicsPipelineCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (128)
{-# LINE 808 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "basePipelineHandle" VkGraphicsPipelineCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (128))
{-# LINE 816 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (128)
{-# LINE 820 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "basePipelineHandle" VkGraphicsPipelineCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (128)
{-# LINE 827 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "basePipelineIndex" VkGraphicsPipelineCreateInfo where
        type FieldType "basePipelineIndex" VkGraphicsPipelineCreateInfo =
             Int32
        type FieldOptional "basePipelineIndex" VkGraphicsPipelineCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "basePipelineIndex" VkGraphicsPipelineCreateInfo =
             (136)
{-# LINE 836 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "basePipelineIndex" VkGraphicsPipelineCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (136)
{-# LINE 845 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "basePipelineIndex" VkGraphicsPipelineCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (136))
{-# LINE 852 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (136)
{-# LINE 856 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "basePipelineIndex" VkGraphicsPipelineCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (136)
{-# LINE 863 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkGraphicsPipelineCreateInfo where
        showsPrec d x
          = showString "VkGraphicsPipelineCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "stageCount = " .
                                  showsPrec d (getField @"stageCount" x) .
                                    showString ", " .
                                      showString "pStages = " .
                                        showsPrec d (getField @"pStages" x) .
                                          showString ", " .
                                            showString "pVertexInputState = " .
                                              showsPrec d (getField @"pVertexInputState" x) .
                                                showString ", " .
                                                  showString "pInputAssemblyState = " .
                                                    showsPrec d (getField @"pInputAssemblyState" x)
                                                      .
                                                      showString ", " .
                                                        showString "pTessellationState = " .
                                                          showsPrec d
                                                            (getField @"pTessellationState" x)
                                                            .
                                                            showString ", " .
                                                              showString "pViewportState = " .
                                                                showsPrec d
                                                                  (getField @"pViewportState" x)
                                                                  .
                                                                  showString ", " .
                                                                    showString
                                                                      "pRasterizationState = "
                                                                      .
                                                                      showsPrec d
                                                                        (getField
                                                                           @"pRasterizationState"
                                                                           x)
                                                                        .
                                                                        showString ", " .
                                                                          showString
                                                                            "pMultisampleState = "
                                                                            .
                                                                            showsPrec d
                                                                              (getField
                                                                                 @"pMultisampleState"
                                                                                 x)
                                                                              .
                                                                              showString ", " .
                                                                                showString
                                                                                  "pDepthStencilState = "
                                                                                  .
                                                                                  showsPrec d
                                                                                    (getField
                                                                                       @"pDepthStencilState"
                                                                                       x)
                                                                                    .
                                                                                    showString ", "
                                                                                      .
                                                                                      showString
                                                                                        "pColorBlendState = "
                                                                                        .
                                                                                        showsPrec d
                                                                                          (getField
                                                                                             @"pColorBlendState"
                                                                                             x)
                                                                                          .
                                                                                          showString
                                                                                            ", "
                                                                                            .
                                                                                            showString
                                                                                              "pDynamicState = "
                                                                                              .
                                                                                              showsPrec
                                                                                                d
                                                                                                (getField
                                                                                                   @"pDynamicState"
                                                                                                   x)
                                                                                                .
                                                                                                showString
                                                                                                  ", "
                                                                                                  .
                                                                                                  showString
                                                                                                    "layout = "
                                                                                                    .
                                                                                                    showsPrec
                                                                                                      d
                                                                                                      (getField
                                                                                                         @"layout"
                                                                                                         x)
                                                                                                      .
                                                                                                      showString
                                                                                                        ", "
                                                                                                        .
                                                                                                        showString
                                                                                                          "renderPass = "
                                                                                                          .
                                                                                                          showsPrec
                                                                                                            d
                                                                                                            (getField
                                                                                                               @"renderPass"
                                                                                                               x)
                                                                                                            .
                                                                                                            showString
                                                                                                              ", "
                                                                                                              .
                                                                                                              showString
                                                                                                                "subpass = "
                                                                                                                .
                                                                                                                showsPrec
                                                                                                                  d
                                                                                                                  (getField
                                                                                                                     @"subpass"
                                                                                                                     x)
                                                                                                                  .
                                                                                                                  showString
                                                                                                                    ", "
                                                                                                                    .
                                                                                                                    showString
                                                                                                                      "basePipelineHandle = "
                                                                                                                      .
                                                                                                                      showsPrec
                                                                                                                        d
                                                                                                                        (getField
                                                                                                                           @"basePipelineHandle"
                                                                                                                           x)
                                                                                                                        .
                                                                                                                        showString
                                                                                                                          ", "
                                                                                                                          .
                                                                                                                          showString
                                                                                                                            "basePipelineIndex = "
                                                                                                                            .
                                                                                                                            showsPrec
                                                                                                                              d
                                                                                                                              (getField
                                                                                                                                 @"basePipelineIndex"
                                                                                                                                 x)
                                                                                                                              .
                                                                                                                              showChar
                                                                                                                                '}'

-- | > typedef struct VkPipelineCacheCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkPipelineCacheCreateFlags    flags;
--   >     size_t                 initialDataSize;
--   >     const void*            pInitialData;
--   > } VkPipelineCacheCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineCacheCreateInfo VkPipelineCacheCreateInfo registry at www.khronos.org>
data VkPipelineCacheCreateInfo = VkPipelineCacheCreateInfo# Addr#
                                                            ByteArray#

instance Eq VkPipelineCacheCreateInfo where
        (VkPipelineCacheCreateInfo# a _) ==
          x@(VkPipelineCacheCreateInfo# b _) = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineCacheCreateInfo where
        (VkPipelineCacheCreateInfo# a _) `compare`
          x@(VkPipelineCacheCreateInfo# b _) = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineCacheCreateInfo where
        sizeOf ~_ = (40)
{-# LINE 1036 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_ = (8)
{-# LINE 1039 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkPipelineCacheCreateInfo where
        unsafeAddr (VkPipelineCacheCreateInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineCacheCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineCacheCreateInfo# (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineCacheCreateInfo where
        type StructFields VkPipelineCacheCreateInfo =
             '["sType", "pNext", "flags", "initialDataSize", "pInitialData"] -- ' closing tick for hsc2hs
        type CUnionType VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineCacheCreateInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineCacheCreateInfo where
        type FieldType "sType" VkPipelineCacheCreateInfo = VkStructureType
        type FieldOptional "sType" VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkPipelineCacheCreateInfo =
             (0)
{-# LINE 1074 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType" VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 1082 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineCacheCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 1089 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 1093 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineCacheCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 1099 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineCacheCreateInfo where
        type FieldType "pNext" VkPipelineCacheCreateInfo = Ptr Void
        type FieldOptional "pNext" VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkPipelineCacheCreateInfo =
             (8)
{-# LINE 1106 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext" VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 1114 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineCacheCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 1121 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 1125 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineCacheCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 1131 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkPipelineCacheCreateInfo where
        type FieldType "flags" VkPipelineCacheCreateInfo =
             VkPipelineCacheCreateFlags
        type FieldOptional "flags" VkPipelineCacheCreateInfo = 'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkPipelineCacheCreateInfo =
             (16)
{-# LINE 1139 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags" VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 1147 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkPipelineCacheCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1154 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 1158 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkPipelineCacheCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1164 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "initialDataSize" VkPipelineCacheCreateInfo where
        type FieldType "initialDataSize" VkPipelineCacheCreateInfo = CSize
        type FieldOptional "initialDataSize" VkPipelineCacheCreateInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "initialDataSize" VkPipelineCacheCreateInfo =
             (24)
{-# LINE 1172 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "initialDataSize" VkPipelineCacheCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 1181 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "initialDataSize" VkPipelineCacheCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 1188 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 1192 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "initialDataSize" VkPipelineCacheCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 1198 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pInitialData" VkPipelineCacheCreateInfo where
        type FieldType "pInitialData" VkPipelineCacheCreateInfo = Ptr Void
        type FieldOptional "pInitialData" VkPipelineCacheCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pInitialData" VkPipelineCacheCreateInfo =
             (32)
{-# LINE 1206 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pInitialData" VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 1214 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pInitialData" VkPipelineCacheCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 1221 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 1225 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pInitialData" VkPipelineCacheCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 1231 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineCacheCreateInfo where
        showsPrec d x
          = showString "VkPipelineCacheCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "initialDataSize = " .
                                  showsPrec d (getField @"initialDataSize" x) .
                                    showString ", " .
                                      showString "pInitialData = " .
                                        showsPrec d (getField @"pInitialData" x) . showChar '}'

-- | > typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkBool32               srcPremultiplied;
--   >     VkBool32               dstPremultiplied;
--   >     VkBlendOverlapEXT      blendOverlap;
--   > } VkPipelineColorBlendAdvancedStateCreateInfoEXT;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineColorBlendAdvancedStateCreateInfoEXT VkPipelineColorBlendAdvancedStateCreateInfoEXT registry at www.khronos.org>
data VkPipelineColorBlendAdvancedStateCreateInfoEXT = VkPipelineColorBlendAdvancedStateCreateInfoEXT# Addr#
                                                                                                      ByteArray#

instance Eq VkPipelineColorBlendAdvancedStateCreateInfoEXT where
        (VkPipelineColorBlendAdvancedStateCreateInfoEXT# a _) ==
          x@(VkPipelineColorBlendAdvancedStateCreateInfoEXT# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineColorBlendAdvancedStateCreateInfoEXT where
        (VkPipelineColorBlendAdvancedStateCreateInfoEXT# a _) `compare`
          x@(VkPipelineColorBlendAdvancedStateCreateInfoEXT# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        sizeOf ~_
          = (32)
{-# LINE 1280 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 1284 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim
           VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        unsafeAddr (VkPipelineColorBlendAdvancedStateCreateInfoEXT# a _)
          = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray
          (VkPipelineColorBlendAdvancedStateCreateInfoEXT# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineColorBlendAdvancedStateCreateInfoEXT#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal
           VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        type StructFields VkPipelineColorBlendAdvancedStateCreateInfoEXT =
             '["sType", "pNext", "srcPremultiplied", "dstPremultiplied", -- ' closing tick for hsc2hs
               "blendOverlap"]
        type CUnionType VkPipelineColorBlendAdvancedStateCreateInfoEXT =
             'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineColorBlendAdvancedStateCreateInfoEXT =
             'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineColorBlendAdvancedStateCreateInfoEXT =
             '[VkPipelineColorBlendStateCreateInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        type FieldType "sType"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             = VkStructureType
        type FieldOptional "sType"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             =
             (0)
{-# LINE 1337 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 1347 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 1355 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 1359 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType"
           VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 1367 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        type FieldType "pNext"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             = Ptr Void
        type FieldOptional "pNext"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             =
             (8)
{-# LINE 1381 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 1391 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 1399 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 1403 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext"
           VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 1411 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "srcPremultiplied"
           VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        type FieldType "srcPremultiplied"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             = VkBool32
        type FieldOptional "srcPremultiplied"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "srcPremultiplied"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             =
             (16)
{-# LINE 1426 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "srcPremultiplied"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 1436 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "srcPremultiplied"
           VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1445 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 1449 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "srcPremultiplied"
           VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1457 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "dstPremultiplied"
           VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        type FieldType "dstPremultiplied"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             = VkBool32
        type FieldOptional "dstPremultiplied"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "dstPremultiplied"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             =
             (20)
{-# LINE 1472 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "dstPremultiplied"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 1482 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "dstPremultiplied"
           VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 1491 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 1495 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "dstPremultiplied"
           VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 1503 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "blendOverlap"
           VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        type FieldType "blendOverlap"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             = VkBlendOverlapEXT
        type FieldOptional "blendOverlap"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "blendOverlap"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             =
             (24)
{-# LINE 1518 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "blendOverlap"
               VkPipelineColorBlendAdvancedStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 1528 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "blendOverlap"
           VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 1537 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 1541 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "blendOverlap"
           VkPipelineColorBlendAdvancedStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 1549 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineColorBlendAdvancedStateCreateInfoEXT where
        showsPrec d x
          = showString "VkPipelineColorBlendAdvancedStateCreateInfoEXT {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "srcPremultiplied = " .
                            showsPrec d (getField @"srcPremultiplied" x) .
                              showString ", " .
                                showString "dstPremultiplied = " .
                                  showsPrec d (getField @"dstPremultiplied" x) .
                                    showString ", " .
                                      showString "blendOverlap = " .
                                        showsPrec d (getField @"blendOverlap" x) . showChar '}'

-- | > typedef struct VkPipelineColorBlendAttachmentState {
--   >     VkBool32               blendEnable;
--   >     VkBlendFactor          srcColorBlendFactor;
--   >     VkBlendFactor          dstColorBlendFactor;
--   >     VkBlendOp              colorBlendOp;
--   >     VkBlendFactor          srcAlphaBlendFactor;
--   >     VkBlendFactor          dstAlphaBlendFactor;
--   >     VkBlendOp              alphaBlendOp;
--   >     VkColorComponentFlags  colorWriteMask;
--   > } VkPipelineColorBlendAttachmentState;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineColorBlendAttachmentState VkPipelineColorBlendAttachmentState registry at www.khronos.org>
data VkPipelineColorBlendAttachmentState = VkPipelineColorBlendAttachmentState# Addr#
                                                                                ByteArray#

instance Eq VkPipelineColorBlendAttachmentState where
        (VkPipelineColorBlendAttachmentState# a _) ==
          x@(VkPipelineColorBlendAttachmentState# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineColorBlendAttachmentState where
        (VkPipelineColorBlendAttachmentState# a _) `compare`
          x@(VkPipelineColorBlendAttachmentState# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineColorBlendAttachmentState where
        sizeOf ~_ = (32)
{-# LINE 1599 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (4)
{-# LINE 1603 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkPipelineColorBlendAttachmentState
         where
        unsafeAddr (VkPipelineColorBlendAttachmentState# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineColorBlendAttachmentState# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineColorBlendAttachmentState#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineColorBlendAttachmentState where
        type StructFields VkPipelineColorBlendAttachmentState =
             '["blendEnable", "srcColorBlendFactor", "dstColorBlendFactor", -- ' closing tick for hsc2hs
               "colorBlendOp", "srcAlphaBlendFactor", "dstAlphaBlendFactor",
               "alphaBlendOp", "colorWriteMask"]
        type CUnionType VkPipelineColorBlendAttachmentState = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineColorBlendAttachmentState = 'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineColorBlendAttachmentState = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "blendEnable" VkPipelineColorBlendAttachmentState where
        type FieldType "blendEnable" VkPipelineColorBlendAttachmentState =
             VkBool32
        type FieldOptional "blendEnable"
               VkPipelineColorBlendAttachmentState
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "blendEnable" VkPipelineColorBlendAttachmentState
             =
             (0)
{-# LINE 1646 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "blendEnable" VkPipelineColorBlendAttachmentState
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 1655 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "blendEnable" VkPipelineColorBlendAttachmentState
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 1663 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 1667 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "blendEnable" VkPipelineColorBlendAttachmentState
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 1674 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "srcColorBlendFactor" VkPipelineColorBlendAttachmentState
         where
        type FieldType "srcColorBlendFactor"
               VkPipelineColorBlendAttachmentState
             = VkBlendFactor
        type FieldOptional "srcColorBlendFactor"
               VkPipelineColorBlendAttachmentState
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "srcColorBlendFactor"
               VkPipelineColorBlendAttachmentState
             =
             (4)
{-# LINE 1688 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "srcColorBlendFactor"
               VkPipelineColorBlendAttachmentState
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (4)
{-# LINE 1698 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "srcColorBlendFactor"
           VkPipelineColorBlendAttachmentState
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (4))
{-# LINE 1707 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (4)
{-# LINE 1711 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "srcColorBlendFactor"
           VkPipelineColorBlendAttachmentState
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (4)
{-# LINE 1719 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "dstColorBlendFactor" VkPipelineColorBlendAttachmentState
         where
        type FieldType "dstColorBlendFactor"
               VkPipelineColorBlendAttachmentState
             = VkBlendFactor
        type FieldOptional "dstColorBlendFactor"
               VkPipelineColorBlendAttachmentState
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "dstColorBlendFactor"
               VkPipelineColorBlendAttachmentState
             =
             (8)
{-# LINE 1733 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "dstColorBlendFactor"
               VkPipelineColorBlendAttachmentState
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 1743 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "dstColorBlendFactor"
           VkPipelineColorBlendAttachmentState
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 1752 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 1756 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "dstColorBlendFactor"
           VkPipelineColorBlendAttachmentState
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 1764 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "colorBlendOp" VkPipelineColorBlendAttachmentState where
        type FieldType "colorBlendOp" VkPipelineColorBlendAttachmentState =
             VkBlendOp
        type FieldOptional "colorBlendOp"
               VkPipelineColorBlendAttachmentState
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "colorBlendOp" VkPipelineColorBlendAttachmentState
             =
             (12)
{-# LINE 1775 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "colorBlendOp"
               VkPipelineColorBlendAttachmentState
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (12)
{-# LINE 1785 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "colorBlendOp" VkPipelineColorBlendAttachmentState
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (12))
{-# LINE 1793 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (12)
{-# LINE 1797 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "colorBlendOp" VkPipelineColorBlendAttachmentState
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (12)
{-# LINE 1804 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "srcAlphaBlendFactor" VkPipelineColorBlendAttachmentState
         where
        type FieldType "srcAlphaBlendFactor"
               VkPipelineColorBlendAttachmentState
             = VkBlendFactor
        type FieldOptional "srcAlphaBlendFactor"
               VkPipelineColorBlendAttachmentState
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "srcAlphaBlendFactor"
               VkPipelineColorBlendAttachmentState
             =
             (16)
{-# LINE 1818 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "srcAlphaBlendFactor"
               VkPipelineColorBlendAttachmentState
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 1828 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "srcAlphaBlendFactor"
           VkPipelineColorBlendAttachmentState
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1837 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 1841 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "srcAlphaBlendFactor"
           VkPipelineColorBlendAttachmentState
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1849 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "dstAlphaBlendFactor" VkPipelineColorBlendAttachmentState
         where
        type FieldType "dstAlphaBlendFactor"
               VkPipelineColorBlendAttachmentState
             = VkBlendFactor
        type FieldOptional "dstAlphaBlendFactor"
               VkPipelineColorBlendAttachmentState
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "dstAlphaBlendFactor"
               VkPipelineColorBlendAttachmentState
             =
             (20)
{-# LINE 1863 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "dstAlphaBlendFactor"
               VkPipelineColorBlendAttachmentState
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 1873 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "dstAlphaBlendFactor"
           VkPipelineColorBlendAttachmentState
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 1882 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 1886 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "dstAlphaBlendFactor"
           VkPipelineColorBlendAttachmentState
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 1894 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "alphaBlendOp" VkPipelineColorBlendAttachmentState where
        type FieldType "alphaBlendOp" VkPipelineColorBlendAttachmentState =
             VkBlendOp
        type FieldOptional "alphaBlendOp"
               VkPipelineColorBlendAttachmentState
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "alphaBlendOp" VkPipelineColorBlendAttachmentState
             =
             (24)
{-# LINE 1905 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "alphaBlendOp"
               VkPipelineColorBlendAttachmentState
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 1915 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "alphaBlendOp" VkPipelineColorBlendAttachmentState
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 1923 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 1927 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "alphaBlendOp" VkPipelineColorBlendAttachmentState
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 1934 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "colorWriteMask" VkPipelineColorBlendAttachmentState where
        type FieldType "colorWriteMask" VkPipelineColorBlendAttachmentState
             = VkColorComponentFlags
        type FieldOptional "colorWriteMask"
               VkPipelineColorBlendAttachmentState
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "colorWriteMask"
               VkPipelineColorBlendAttachmentState
             =
             (28)
{-# LINE 1946 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "colorWriteMask"
               VkPipelineColorBlendAttachmentState
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (28)
{-# LINE 1956 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "colorWriteMask" VkPipelineColorBlendAttachmentState
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (28))
{-# LINE 1964 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (28)
{-# LINE 1968 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "colorWriteMask" VkPipelineColorBlendAttachmentState
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (28)
{-# LINE 1975 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineColorBlendAttachmentState where
        showsPrec d x
          = showString "VkPipelineColorBlendAttachmentState {" .
              showString "blendEnable = " .
                showsPrec d (getField @"blendEnable" x) .
                  showString ", " .
                    showString "srcColorBlendFactor = " .
                      showsPrec d (getField @"srcColorBlendFactor" x) .
                        showString ", " .
                          showString "dstColorBlendFactor = " .
                            showsPrec d (getField @"dstColorBlendFactor" x) .
                              showString ", " .
                                showString "colorBlendOp = " .
                                  showsPrec d (getField @"colorBlendOp" x) .
                                    showString ", " .
                                      showString "srcAlphaBlendFactor = " .
                                        showsPrec d (getField @"srcAlphaBlendFactor" x) .
                                          showString ", " .
                                            showString "dstAlphaBlendFactor = " .
                                              showsPrec d (getField @"dstAlphaBlendFactor" x) .
                                                showString ", " .
                                                  showString "alphaBlendOp = " .
                                                    showsPrec d (getField @"alphaBlendOp" x) .
                                                      showString ", " .
                                                        showString "colorWriteMask = " .
                                                          showsPrec d (getField @"colorWriteMask" x)
                                                            . showChar '}'

-- | > typedef struct VkPipelineColorBlendStateCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkPipelineColorBlendStateCreateFlags    flags;
--   >     VkBool32               logicOpEnable;
--   >     VkLogicOp              logicOp;
--   >     uint32_t               attachmentCount;
--   >     const VkPipelineColorBlendAttachmentState* pAttachments;
--   >     float                  blendConstants[4];
--   > } VkPipelineColorBlendStateCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineColorBlendStateCreateInfo VkPipelineColorBlendStateCreateInfo registry at www.khronos.org>
data VkPipelineColorBlendStateCreateInfo = VkPipelineColorBlendStateCreateInfo# Addr#
                                                                                ByteArray#

instance Eq VkPipelineColorBlendStateCreateInfo where
        (VkPipelineColorBlendStateCreateInfo# a _) ==
          x@(VkPipelineColorBlendStateCreateInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineColorBlendStateCreateInfo where
        (VkPipelineColorBlendStateCreateInfo# a _) `compare`
          x@(VkPipelineColorBlendStateCreateInfo# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineColorBlendStateCreateInfo where
        sizeOf ~_ = (56)
{-# LINE 2035 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 2039 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkPipelineColorBlendStateCreateInfo
         where
        unsafeAddr (VkPipelineColorBlendStateCreateInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineColorBlendStateCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineColorBlendStateCreateInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineColorBlendStateCreateInfo where
        type StructFields VkPipelineColorBlendStateCreateInfo =
             '["sType", "pNext", "flags", "logicOpEnable", "logicOp", -- ' closing tick for hsc2hs
               "attachmentCount", "pAttachments", "blendConstants"]
        type CUnionType VkPipelineColorBlendStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineColorBlendStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineColorBlendStateCreateInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineColorBlendStateCreateInfo where
        type FieldType "sType" VkPipelineColorBlendStateCreateInfo =
             VkStructureType
        type FieldOptional "sType" VkPipelineColorBlendStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkPipelineColorBlendStateCreateInfo =
             (0)
{-# LINE 2079 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType" VkPipelineColorBlendStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 2088 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineColorBlendStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 2095 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 2099 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineColorBlendStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 2105 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineColorBlendStateCreateInfo where
        type FieldType "pNext" VkPipelineColorBlendStateCreateInfo =
             Ptr Void
        type FieldOptional "pNext" VkPipelineColorBlendStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkPipelineColorBlendStateCreateInfo =
             (8)
{-# LINE 2114 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext" VkPipelineColorBlendStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 2123 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineColorBlendStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 2130 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 2134 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineColorBlendStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 2140 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkPipelineColorBlendStateCreateInfo where
        type FieldType "flags" VkPipelineColorBlendStateCreateInfo =
             VkPipelineColorBlendStateCreateFlags
        type FieldOptional "flags" VkPipelineColorBlendStateCreateInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkPipelineColorBlendStateCreateInfo =
             (16)
{-# LINE 2149 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags" VkPipelineColorBlendStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 2158 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkPipelineColorBlendStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 2165 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 2169 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkPipelineColorBlendStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 2175 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "logicOpEnable" VkPipelineColorBlendStateCreateInfo where
        type FieldType "logicOpEnable" VkPipelineColorBlendStateCreateInfo
             = VkBool32
        type FieldOptional "logicOpEnable"
               VkPipelineColorBlendStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "logicOpEnable"
               VkPipelineColorBlendStateCreateInfo
             =
             (20)
{-# LINE 2187 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "logicOpEnable"
               VkPipelineColorBlendStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 2197 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "logicOpEnable" VkPipelineColorBlendStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 2205 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 2209 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "logicOpEnable" VkPipelineColorBlendStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 2216 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "logicOp" VkPipelineColorBlendStateCreateInfo where
        type FieldType "logicOp" VkPipelineColorBlendStateCreateInfo =
             VkLogicOp
        type FieldOptional "logicOp" VkPipelineColorBlendStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "logicOp" VkPipelineColorBlendStateCreateInfo =
             (24)
{-# LINE 2225 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "logicOp" VkPipelineColorBlendStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 2234 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "logicOp" VkPipelineColorBlendStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 2241 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 2245 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "logicOp" VkPipelineColorBlendStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 2251 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "attachmentCount" VkPipelineColorBlendStateCreateInfo
         where
        type FieldType "attachmentCount"
               VkPipelineColorBlendStateCreateInfo
             = Word32
        type FieldOptional "attachmentCount"
               VkPipelineColorBlendStateCreateInfo
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "attachmentCount"
               VkPipelineColorBlendStateCreateInfo
             =
             (28)
{-# LINE 2265 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "attachmentCount"
               VkPipelineColorBlendStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (28)
{-# LINE 2275 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "attachmentCount" VkPipelineColorBlendStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (28))
{-# LINE 2283 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (28)
{-# LINE 2287 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "attachmentCount" VkPipelineColorBlendStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (28)
{-# LINE 2294 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pAttachments" VkPipelineColorBlendStateCreateInfo where
        type FieldType "pAttachments" VkPipelineColorBlendStateCreateInfo =
             Ptr VkPipelineColorBlendAttachmentState
        type FieldOptional "pAttachments"
               VkPipelineColorBlendStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pAttachments" VkPipelineColorBlendStateCreateInfo
             =
             (32)
{-# LINE 2305 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pAttachments"
               VkPipelineColorBlendStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 2315 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pAttachments" VkPipelineColorBlendStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 2323 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 2327 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pAttachments" VkPipelineColorBlendStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 2334 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "blendConstants" VkPipelineColorBlendStateCreateInfo where
        type FieldType "blendConstants" VkPipelineColorBlendStateCreateInfo
             = Float
{-# LINE 2339 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldOptional "blendConstants"
               VkPipelineColorBlendStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "blendConstants"
               VkPipelineColorBlendStateCreateInfo
             =
             (40)
{-# LINE 2346 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "blendConstants"
               VkPipelineColorBlendStateCreateInfo
             = 'True -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (40)
{-# LINE 2356 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         (KnownNat idx,
          IndexInBounds "blendConstants" idx
            VkPipelineColorBlendStateCreateInfo) =>
         CanReadFieldArray "blendConstants" idx
           VkPipelineColorBlendStateCreateInfo
         where
        {-# SPECIALISE instance
                       CanReadFieldArray "blendConstants" 0
                         VkPipelineColorBlendStateCreateInfo
                       #-}

        {-# SPECIALISE instance
                       CanReadFieldArray "blendConstants" 1
                         VkPipelineColorBlendStateCreateInfo
                       #-}

        {-# SPECIALISE instance
                       CanReadFieldArray "blendConstants" 2
                         VkPipelineColorBlendStateCreateInfo
                       #-}

        {-# SPECIALISE instance
                       CanReadFieldArray "blendConstants" 3
                         VkPipelineColorBlendStateCreateInfo
                       #-}
        type FieldArrayLength "blendConstants"
               VkPipelineColorBlendStateCreateInfo
             = 4

        {-# INLINE fieldArrayLength #-}
        fieldArrayLength = 4

        {-# INLINE getFieldArray #-}
        getFieldArray = f
          where {-# NOINLINE f #-}
                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
                off
                  = (40)
{-# LINE 2396 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
                      +
                      sizeOf (undefined :: Float) *
{-# LINE 2398 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
                        fromInteger (natVal' (proxy# :: Proxy# idx)) -- ' closing tick for hsc2hs

        {-# INLINE readFieldArray #-}
        readFieldArray p
          = peekByteOff p
              ((40)
{-# LINE 2404 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
                 +
                 sizeOf (undefined :: Float) *
{-# LINE 2406 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
                   fromInteger (natVal' (proxy# :: Proxy# idx))) -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         (KnownNat idx,
          IndexInBounds "blendConstants" idx
            VkPipelineColorBlendStateCreateInfo) =>
         CanWriteFieldArray "blendConstants" idx
           VkPipelineColorBlendStateCreateInfo
         where
        {-# SPECIALISE instance
                       CanWriteFieldArray "blendConstants" 0
                         VkPipelineColorBlendStateCreateInfo
                       #-}

        {-# SPECIALISE instance
                       CanWriteFieldArray "blendConstants" 1
                         VkPipelineColorBlendStateCreateInfo
                       #-}

        {-# SPECIALISE instance
                       CanWriteFieldArray "blendConstants" 2
                         VkPipelineColorBlendStateCreateInfo
                       #-}

        {-# SPECIALISE instance
                       CanWriteFieldArray "blendConstants" 3
                         VkPipelineColorBlendStateCreateInfo
                       #-}

        {-# INLINE writeFieldArray #-}
        writeFieldArray p
          = pokeByteOff p
              ((40)
{-# LINE 2439 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
                 +
                 sizeOf (undefined :: Float) *
{-# LINE 2441 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
                   fromInteger (natVal' (proxy# :: Proxy# idx))) -- ' closing tick for hsc2hs

instance Show VkPipelineColorBlendStateCreateInfo where
        showsPrec d x
          = showString "VkPipelineColorBlendStateCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "logicOpEnable = " .
                                  showsPrec d (getField @"logicOpEnable" x) .
                                    showString ", " .
                                      showString "logicOp = " .
                                        showsPrec d (getField @"logicOp" x) .
                                          showString ", " .
                                            showString "attachmentCount = " .
                                              showsPrec d (getField @"attachmentCount" x) .
                                                showString ", " .
                                                  showString "pAttachments = " .
                                                    showsPrec d (getField @"pAttachments" x) .
                                                      showString ", " .
                                                        (showString "blendConstants = [" .
                                                           showsPrec d
                                                             (let s = sizeOf
                                                                        (undefined ::
                                                                           FieldType
                                                                             "blendConstants"
                                                                             VkPipelineColorBlendStateCreateInfo)
                                                                  o = fieldOffset @"blendConstants"
                                                                        @VkPipelineColorBlendStateCreateInfo
                                                                  f i
                                                                    = peekByteOff (unsafePtr x) i ::
                                                                        IO
                                                                          (FieldType
                                                                             "blendConstants"
                                                                             VkPipelineColorBlendStateCreateInfo)
                                                                in
                                                                unsafeDupablePerformIO . mapM f $
                                                                  map (\ i -> o + i * s)
                                                                    [0 .. 4 - 1])
                                                             . showChar ']')
                                                          . showChar '}'

-- | > typedef struct VkPipelineCoverageModulationStateCreateInfoNV {
--   >     VkStructureType sType;
--   >     const void*                                                                      pNext;
--   >     VkPipelineCoverageModulationStateCreateFlagsNV                   flags;
--   >     VkCoverageModulationModeNV                                                       coverageModulationMode;
--   >     VkBool32                                                                         coverageModulationTableEnable;
--   >     uint32_t                                                                         coverageModulationTableCount;
--   >     const float* pCoverageModulationTable;
--   > } VkPipelineCoverageModulationStateCreateInfoNV;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineCoverageModulationStateCreateInfoNV VkPipelineCoverageModulationStateCreateInfoNV registry at www.khronos.org>
data VkPipelineCoverageModulationStateCreateInfoNV = VkPipelineCoverageModulationStateCreateInfoNV# Addr#
                                                                                                    ByteArray#

instance Eq VkPipelineCoverageModulationStateCreateInfoNV where
        (VkPipelineCoverageModulationStateCreateInfoNV# a _) ==
          x@(VkPipelineCoverageModulationStateCreateInfoNV# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineCoverageModulationStateCreateInfoNV where
        (VkPipelineCoverageModulationStateCreateInfoNV# a _) `compare`
          x@(VkPipelineCoverageModulationStateCreateInfoNV# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineCoverageModulationStateCreateInfoNV
         where
        sizeOf ~_
          = (40)
{-# LINE 2521 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 2525 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim
           VkPipelineCoverageModulationStateCreateInfoNV
         where
        unsafeAddr (VkPipelineCoverageModulationStateCreateInfoNV# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray
          (VkPipelineCoverageModulationStateCreateInfoNV# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineCoverageModulationStateCreateInfoNV#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal
           VkPipelineCoverageModulationStateCreateInfoNV
         where
        type StructFields VkPipelineCoverageModulationStateCreateInfoNV =
             '["sType", "pNext", "flags", "coverageModulationMode", -- ' closing tick for hsc2hs
               "coverageModulationTableEnable", "coverageModulationTableCount",
               "pCoverageModulationTable"]
        type CUnionType VkPipelineCoverageModulationStateCreateInfoNV =
             'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineCoverageModulationStateCreateInfoNV =
             'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineCoverageModulationStateCreateInfoNV =
             '[VkPipelineMultisampleStateCreateInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineCoverageModulationStateCreateInfoNV
         where
        type FieldType "sType"
               VkPipelineCoverageModulationStateCreateInfoNV
             = VkStructureType
        type FieldOptional "sType"
               VkPipelineCoverageModulationStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType"
               VkPipelineCoverageModulationStateCreateInfoNV
             =
             (0)
{-# LINE 2578 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType"
               VkPipelineCoverageModulationStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 2588 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineCoverageModulationStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 2596 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 2600 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineCoverageModulationStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 2607 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineCoverageModulationStateCreateInfoNV
         where
        type FieldType "pNext"
               VkPipelineCoverageModulationStateCreateInfoNV
             = Ptr Void
        type FieldOptional "pNext"
               VkPipelineCoverageModulationStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext"
               VkPipelineCoverageModulationStateCreateInfoNV
             =
             (8)
{-# LINE 2621 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext"
               VkPipelineCoverageModulationStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 2631 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineCoverageModulationStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 2639 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 2643 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineCoverageModulationStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 2650 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkPipelineCoverageModulationStateCreateInfoNV
         where
        type FieldType "flags"
               VkPipelineCoverageModulationStateCreateInfoNV
             = VkPipelineCoverageModulationStateCreateFlagsNV
        type FieldOptional "flags"
               VkPipelineCoverageModulationStateCreateInfoNV
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "flags"
               VkPipelineCoverageModulationStateCreateInfoNV
             =
             (16)
{-# LINE 2664 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags"
               VkPipelineCoverageModulationStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 2674 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkPipelineCoverageModulationStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 2682 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 2686 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkPipelineCoverageModulationStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 2693 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "coverageModulationMode"
           VkPipelineCoverageModulationStateCreateInfoNV
         where
        type FieldType "coverageModulationMode"
               VkPipelineCoverageModulationStateCreateInfoNV
             = VkCoverageModulationModeNV
        type FieldOptional "coverageModulationMode"
               VkPipelineCoverageModulationStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "coverageModulationMode"
               VkPipelineCoverageModulationStateCreateInfoNV
             =
             (20)
{-# LINE 2708 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "coverageModulationMode"
               VkPipelineCoverageModulationStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 2718 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "coverageModulationMode"
           VkPipelineCoverageModulationStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 2727 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 2731 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "coverageModulationMode"
           VkPipelineCoverageModulationStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 2739 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "coverageModulationTableEnable"
           VkPipelineCoverageModulationStateCreateInfoNV
         where
        type FieldType "coverageModulationTableEnable"
               VkPipelineCoverageModulationStateCreateInfoNV
             = VkBool32
        type FieldOptional "coverageModulationTableEnable"
               VkPipelineCoverageModulationStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "coverageModulationTableEnable"
               VkPipelineCoverageModulationStateCreateInfoNV
             =
             (24)
{-# LINE 2754 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "coverageModulationTableEnable"
               VkPipelineCoverageModulationStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 2764 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "coverageModulationTableEnable"
           VkPipelineCoverageModulationStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 2773 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 2777 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "coverageModulationTableEnable"
           VkPipelineCoverageModulationStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 2785 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "coverageModulationTableCount"
           VkPipelineCoverageModulationStateCreateInfoNV
         where
        type FieldType "coverageModulationTableCount"
               VkPipelineCoverageModulationStateCreateInfoNV
             = Word32
        type FieldOptional "coverageModulationTableCount"
               VkPipelineCoverageModulationStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "coverageModulationTableCount"
               VkPipelineCoverageModulationStateCreateInfoNV
             =
             (28)
{-# LINE 2800 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "coverageModulationTableCount"
               VkPipelineCoverageModulationStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (28)
{-# LINE 2810 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "coverageModulationTableCount"
           VkPipelineCoverageModulationStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (28))
{-# LINE 2819 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (28)
{-# LINE 2823 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "coverageModulationTableCount"
           VkPipelineCoverageModulationStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (28)
{-# LINE 2831 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pCoverageModulationTable"
           VkPipelineCoverageModulationStateCreateInfoNV
         where
        type FieldType "pCoverageModulationTable"
               VkPipelineCoverageModulationStateCreateInfoNV
             = Ptr Float
{-# LINE 2839 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldOptional "pCoverageModulationTable"
               VkPipelineCoverageModulationStateCreateInfoNV
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "pCoverageModulationTable"
               VkPipelineCoverageModulationStateCreateInfoNV
             =
             (32)
{-# LINE 2846 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pCoverageModulationTable"
               VkPipelineCoverageModulationStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 2856 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pCoverageModulationTable"
           VkPipelineCoverageModulationStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 2865 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 2869 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pCoverageModulationTable"
           VkPipelineCoverageModulationStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 2877 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineCoverageModulationStateCreateInfoNV where
        showsPrec d x
          = showString "VkPipelineCoverageModulationStateCreateInfoNV {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "coverageModulationMode = " .
                                  showsPrec d (getField @"coverageModulationMode" x) .
                                    showString ", " .
                                      showString "coverageModulationTableEnable = " .
                                        showsPrec d (getField @"coverageModulationTableEnable" x) .
                                          showString ", " .
                                            showString "coverageModulationTableCount = " .
                                              showsPrec d
                                                (getField @"coverageModulationTableCount" x)
                                                .
                                                showString ", " .
                                                  showString "pCoverageModulationTable = " .
                                                    showsPrec d
                                                      (getField @"pCoverageModulationTable" x)
                                                      . showChar '}'

-- | > typedef struct VkPipelineCoverageToColorStateCreateInfoNV {
--   >     VkStructureType sType;
--   >     const void*                                                                      pNext;
--   >     VkPipelineCoverageToColorStateCreateFlagsNV                    flags;
--   >     VkBool32                         coverageToColorEnable;
--   >     uint32_t         coverageToColorLocation;
--   > } VkPipelineCoverageToColorStateCreateInfoNV;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineCoverageToColorStateCreateInfoNV VkPipelineCoverageToColorStateCreateInfoNV registry at www.khronos.org>
data VkPipelineCoverageToColorStateCreateInfoNV = VkPipelineCoverageToColorStateCreateInfoNV# Addr#
                                                                                              ByteArray#

instance Eq VkPipelineCoverageToColorStateCreateInfoNV where
        (VkPipelineCoverageToColorStateCreateInfoNV# a _) ==
          x@(VkPipelineCoverageToColorStateCreateInfoNV# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineCoverageToColorStateCreateInfoNV where
        (VkPipelineCoverageToColorStateCreateInfoNV# a _) `compare`
          x@(VkPipelineCoverageToColorStateCreateInfoNV# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineCoverageToColorStateCreateInfoNV where
        sizeOf ~_
          = (32)
{-# LINE 2935 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 2939 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim
           VkPipelineCoverageToColorStateCreateInfoNV
         where
        unsafeAddr (VkPipelineCoverageToColorStateCreateInfoNV# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineCoverageToColorStateCreateInfoNV# _ b)
          = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineCoverageToColorStateCreateInfoNV#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineCoverageToColorStateCreateInfoNV
         where
        type StructFields VkPipelineCoverageToColorStateCreateInfoNV =
             '["sType", "pNext", "flags", "coverageToColorEnable", -- ' closing tick for hsc2hs
               "coverageToColorLocation"]
        type CUnionType VkPipelineCoverageToColorStateCreateInfoNV = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineCoverageToColorStateCreateInfoNV =
             'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineCoverageToColorStateCreateInfoNV =
             '[VkPipelineMultisampleStateCreateInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineCoverageToColorStateCreateInfoNV where
        type FieldType "sType" VkPipelineCoverageToColorStateCreateInfoNV =
             VkStructureType
        type FieldOptional "sType"
               VkPipelineCoverageToColorStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkPipelineCoverageToColorStateCreateInfoNV
             =
             (0)
{-# LINE 2986 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType"
               VkPipelineCoverageToColorStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 2996 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineCoverageToColorStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 3004 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 3008 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineCoverageToColorStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 3015 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineCoverageToColorStateCreateInfoNV where
        type FieldType "pNext" VkPipelineCoverageToColorStateCreateInfoNV =
             Ptr Void
        type FieldOptional "pNext"
               VkPipelineCoverageToColorStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkPipelineCoverageToColorStateCreateInfoNV
             =
             (8)
{-# LINE 3026 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext"
               VkPipelineCoverageToColorStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 3036 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineCoverageToColorStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 3044 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 3048 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineCoverageToColorStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 3055 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkPipelineCoverageToColorStateCreateInfoNV where
        type FieldType "flags" VkPipelineCoverageToColorStateCreateInfoNV =
             VkPipelineCoverageToColorStateCreateFlagsNV
        type FieldOptional "flags"
               VkPipelineCoverageToColorStateCreateInfoNV
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkPipelineCoverageToColorStateCreateInfoNV
             =
             (16)
{-# LINE 3066 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags"
               VkPipelineCoverageToColorStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 3076 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkPipelineCoverageToColorStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 3084 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 3088 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkPipelineCoverageToColorStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 3095 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "coverageToColorEnable"
           VkPipelineCoverageToColorStateCreateInfoNV
         where
        type FieldType "coverageToColorEnable"
               VkPipelineCoverageToColorStateCreateInfoNV
             = VkBool32
        type FieldOptional "coverageToColorEnable"
               VkPipelineCoverageToColorStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "coverageToColorEnable"
               VkPipelineCoverageToColorStateCreateInfoNV
             =
             (20)
{-# LINE 3110 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "coverageToColorEnable"
               VkPipelineCoverageToColorStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 3120 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "coverageToColorEnable"
           VkPipelineCoverageToColorStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 3129 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 3133 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "coverageToColorEnable"
           VkPipelineCoverageToColorStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 3141 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "coverageToColorLocation"
           VkPipelineCoverageToColorStateCreateInfoNV
         where
        type FieldType "coverageToColorLocation"
               VkPipelineCoverageToColorStateCreateInfoNV
             = Word32
        type FieldOptional "coverageToColorLocation"
               VkPipelineCoverageToColorStateCreateInfoNV
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "coverageToColorLocation"
               VkPipelineCoverageToColorStateCreateInfoNV
             =
             (24)
{-# LINE 3156 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "coverageToColorLocation"
               VkPipelineCoverageToColorStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 3166 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "coverageToColorLocation"
           VkPipelineCoverageToColorStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 3175 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 3179 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "coverageToColorLocation"
           VkPipelineCoverageToColorStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 3187 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineCoverageToColorStateCreateInfoNV where
        showsPrec d x
          = showString "VkPipelineCoverageToColorStateCreateInfoNV {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "coverageToColorEnable = " .
                                  showsPrec d (getField @"coverageToColorEnable" x) .
                                    showString ", " .
                                      showString "coverageToColorLocation = " .
                                        showsPrec d (getField @"coverageToColorLocation" x) .
                                          showChar '}'

-- | > typedef struct VkPipelineDepthStencilStateCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkPipelineDepthStencilStateCreateFlags    flags;
--   >     VkBool32               depthTestEnable;
--   >     VkBool32               depthWriteEnable;
--   >     VkCompareOp            depthCompareOp;
--   >     VkBool32               depthBoundsTestEnable;
--   >     VkBool32               stencilTestEnable;
--   >     VkStencilOpState       front;
--   >     VkStencilOpState       back;
--   >     float                  minDepthBounds;
--   >     float                  maxDepthBounds;
--   > } VkPipelineDepthStencilStateCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineDepthStencilStateCreateInfo VkPipelineDepthStencilStateCreateInfo registry at www.khronos.org>
data VkPipelineDepthStencilStateCreateInfo = VkPipelineDepthStencilStateCreateInfo# Addr#
                                                                                    ByteArray#

instance Eq VkPipelineDepthStencilStateCreateInfo where
        (VkPipelineDepthStencilStateCreateInfo# a _) ==
          x@(VkPipelineDepthStencilStateCreateInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineDepthStencilStateCreateInfo where
        (VkPipelineDepthStencilStateCreateInfo# a _) `compare`
          x@(VkPipelineDepthStencilStateCreateInfo# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineDepthStencilStateCreateInfo where
        sizeOf ~_
          = (104)
{-# LINE 3243 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 3247 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkPipelineDepthStencilStateCreateInfo
         where
        unsafeAddr (VkPipelineDepthStencilStateCreateInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineDepthStencilStateCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineDepthStencilStateCreateInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineDepthStencilStateCreateInfo where
        type StructFields VkPipelineDepthStencilStateCreateInfo =
             '["sType", "pNext", "flags", "depthTestEnable", "depthWriteEnable", -- ' closing tick for hsc2hs
               "depthCompareOp", "depthBoundsTestEnable", "stencilTestEnable",
               "front", "back", "minDepthBounds", "maxDepthBounds"]
        type CUnionType VkPipelineDepthStencilStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineDepthStencilStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineDepthStencilStateCreateInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineDepthStencilStateCreateInfo where
        type FieldType "sType" VkPipelineDepthStencilStateCreateInfo =
             VkStructureType
        type FieldOptional "sType" VkPipelineDepthStencilStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkPipelineDepthStencilStateCreateInfo =
             (0)
{-# LINE 3288 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType" VkPipelineDepthStencilStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 3297 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineDepthStencilStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 3304 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 3308 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineDepthStencilStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 3314 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineDepthStencilStateCreateInfo where
        type FieldType "pNext" VkPipelineDepthStencilStateCreateInfo =
             Ptr Void
        type FieldOptional "pNext" VkPipelineDepthStencilStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkPipelineDepthStencilStateCreateInfo =
             (8)
{-# LINE 3323 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext" VkPipelineDepthStencilStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 3332 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineDepthStencilStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 3339 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 3343 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineDepthStencilStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 3349 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkPipelineDepthStencilStateCreateInfo where
        type FieldType "flags" VkPipelineDepthStencilStateCreateInfo =
             VkPipelineDepthStencilStateCreateFlags
        type FieldOptional "flags" VkPipelineDepthStencilStateCreateInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkPipelineDepthStencilStateCreateInfo =
             (16)
{-# LINE 3358 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags" VkPipelineDepthStencilStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 3367 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkPipelineDepthStencilStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 3374 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 3378 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkPipelineDepthStencilStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 3384 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "depthTestEnable" VkPipelineDepthStencilStateCreateInfo
         where
        type FieldType "depthTestEnable"
               VkPipelineDepthStencilStateCreateInfo
             = VkBool32
        type FieldOptional "depthTestEnable"
               VkPipelineDepthStencilStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "depthTestEnable"
               VkPipelineDepthStencilStateCreateInfo
             =
             (20)
{-# LINE 3398 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "depthTestEnable"
               VkPipelineDepthStencilStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 3408 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "depthTestEnable"
           VkPipelineDepthStencilStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 3417 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 3421 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "depthTestEnable"
           VkPipelineDepthStencilStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 3429 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "depthWriteEnable" VkPipelineDepthStencilStateCreateInfo
         where
        type FieldType "depthWriteEnable"
               VkPipelineDepthStencilStateCreateInfo
             = VkBool32
        type FieldOptional "depthWriteEnable"
               VkPipelineDepthStencilStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "depthWriteEnable"
               VkPipelineDepthStencilStateCreateInfo
             =
             (24)
{-# LINE 3443 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "depthWriteEnable"
               VkPipelineDepthStencilStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 3453 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "depthWriteEnable"
           VkPipelineDepthStencilStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 3462 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 3466 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "depthWriteEnable"
           VkPipelineDepthStencilStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 3474 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "depthCompareOp" VkPipelineDepthStencilStateCreateInfo
         where
        type FieldType "depthCompareOp"
               VkPipelineDepthStencilStateCreateInfo
             = VkCompareOp
        type FieldOptional "depthCompareOp"
               VkPipelineDepthStencilStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "depthCompareOp"
               VkPipelineDepthStencilStateCreateInfo
             =
             (28)
{-# LINE 3488 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "depthCompareOp"
               VkPipelineDepthStencilStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (28)
{-# LINE 3498 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "depthCompareOp" VkPipelineDepthStencilStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (28))
{-# LINE 3506 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (28)
{-# LINE 3510 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "depthCompareOp"
           VkPipelineDepthStencilStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (28)
{-# LINE 3518 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "depthBoundsTestEnable"
           VkPipelineDepthStencilStateCreateInfo
         where
        type FieldType "depthBoundsTestEnable"
               VkPipelineDepthStencilStateCreateInfo
             = VkBool32
        type FieldOptional "depthBoundsTestEnable"
               VkPipelineDepthStencilStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "depthBoundsTestEnable"
               VkPipelineDepthStencilStateCreateInfo
             =
             (32)
{-# LINE 3533 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "depthBoundsTestEnable"
               VkPipelineDepthStencilStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 3543 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "depthBoundsTestEnable"
           VkPipelineDepthStencilStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 3552 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 3556 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "depthBoundsTestEnable"
           VkPipelineDepthStencilStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 3564 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "stencilTestEnable" VkPipelineDepthStencilStateCreateInfo
         where
        type FieldType "stencilTestEnable"
               VkPipelineDepthStencilStateCreateInfo
             = VkBool32
        type FieldOptional "stencilTestEnable"
               VkPipelineDepthStencilStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "stencilTestEnable"
               VkPipelineDepthStencilStateCreateInfo
             =
             (36)
{-# LINE 3578 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "stencilTestEnable"
               VkPipelineDepthStencilStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (36)
{-# LINE 3588 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "stencilTestEnable"
           VkPipelineDepthStencilStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (36))
{-# LINE 3597 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (36)
{-# LINE 3601 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "stencilTestEnable"
           VkPipelineDepthStencilStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (36)
{-# LINE 3609 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "front" VkPipelineDepthStencilStateCreateInfo where
        type FieldType "front" VkPipelineDepthStencilStateCreateInfo =
             VkStencilOpState
        type FieldOptional "front" VkPipelineDepthStencilStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "front" VkPipelineDepthStencilStateCreateInfo =
             (40)
{-# LINE 3618 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "front" VkPipelineDepthStencilStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (40)
{-# LINE 3627 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "front" VkPipelineDepthStencilStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 3634 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (40)
{-# LINE 3638 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "front" VkPipelineDepthStencilStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 3644 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "back" VkPipelineDepthStencilStateCreateInfo where
        type FieldType "back" VkPipelineDepthStencilStateCreateInfo =
             VkStencilOpState
        type FieldOptional "back" VkPipelineDepthStencilStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "back" VkPipelineDepthStencilStateCreateInfo =
             (68)
{-# LINE 3653 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "back" VkPipelineDepthStencilStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (68)
{-# LINE 3662 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "back" VkPipelineDepthStencilStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (68))
{-# LINE 3669 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (68)
{-# LINE 3673 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "back" VkPipelineDepthStencilStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (68)
{-# LINE 3679 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "minDepthBounds" VkPipelineDepthStencilStateCreateInfo
         where
        type FieldType "minDepthBounds"
               VkPipelineDepthStencilStateCreateInfo
             = Float
{-# LINE 3686 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldOptional "minDepthBounds"
               VkPipelineDepthStencilStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "minDepthBounds"
               VkPipelineDepthStencilStateCreateInfo
             =
             (96)
{-# LINE 3693 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "minDepthBounds"
               VkPipelineDepthStencilStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (96)
{-# LINE 3703 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "minDepthBounds" VkPipelineDepthStencilStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (96))
{-# LINE 3711 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (96)
{-# LINE 3715 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "minDepthBounds"
           VkPipelineDepthStencilStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (96)
{-# LINE 3723 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "maxDepthBounds" VkPipelineDepthStencilStateCreateInfo
         where
        type FieldType "maxDepthBounds"
               VkPipelineDepthStencilStateCreateInfo
             = Float
{-# LINE 3730 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldOptional "maxDepthBounds"
               VkPipelineDepthStencilStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "maxDepthBounds"
               VkPipelineDepthStencilStateCreateInfo
             =
             (100)
{-# LINE 3737 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "maxDepthBounds"
               VkPipelineDepthStencilStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (100)
{-# LINE 3747 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "maxDepthBounds" VkPipelineDepthStencilStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (100))
{-# LINE 3755 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (100)
{-# LINE 3759 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "maxDepthBounds"
           VkPipelineDepthStencilStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (100)
{-# LINE 3767 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineDepthStencilStateCreateInfo where
        showsPrec d x
          = showString "VkPipelineDepthStencilStateCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "depthTestEnable = " .
                                  showsPrec d (getField @"depthTestEnable" x) .
                                    showString ", " .
                                      showString "depthWriteEnable = " .
                                        showsPrec d (getField @"depthWriteEnable" x) .
                                          showString ", " .
                                            showString "depthCompareOp = " .
                                              showsPrec d (getField @"depthCompareOp" x) .
                                                showString ", " .
                                                  showString "depthBoundsTestEnable = " .
                                                    showsPrec d
                                                      (getField @"depthBoundsTestEnable" x)
                                                      .
                                                      showString ", " .
                                                        showString "stencilTestEnable = " .
                                                          showsPrec d
                                                            (getField @"stencilTestEnable" x)
                                                            .
                                                            showString ", " .
                                                              showString "front = " .
                                                                showsPrec d (getField @"front" x) .
                                                                  showString ", " .
                                                                    showString "back = " .
                                                                      showsPrec d
                                                                        (getField @"back" x)
                                                                        .
                                                                        showString ", " .
                                                                          showString
                                                                            "minDepthBounds = "
                                                                            .
                                                                            showsPrec d
                                                                              (getField
                                                                                 @"minDepthBounds"
                                                                                 x)
                                                                              .
                                                                              showString ", " .
                                                                                showString
                                                                                  "maxDepthBounds = "
                                                                                  .
                                                                                  showsPrec d
                                                                                    (getField
                                                                                       @"maxDepthBounds"
                                                                                       x)
                                                                                    . showChar '}'

-- | > typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT {
--   >     VkStructureType sType;
--   >     const void*                                                                      pNext;
--   >     VkPipelineDiscardRectangleStateCreateFlagsEXT                    flags;
--   >     VkDiscardRectangleModeEXT                                                        discardRectangleMode;
--   >     uint32_t                                                         discardRectangleCount;
--   >     const VkRect2D* pDiscardRectangles;
--   > } VkPipelineDiscardRectangleStateCreateInfoEXT;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineDiscardRectangleStateCreateInfoEXT VkPipelineDiscardRectangleStateCreateInfoEXT registry at www.khronos.org>
data VkPipelineDiscardRectangleStateCreateInfoEXT = VkPipelineDiscardRectangleStateCreateInfoEXT# Addr#
                                                                                                  ByteArray#

instance Eq VkPipelineDiscardRectangleStateCreateInfoEXT where
        (VkPipelineDiscardRectangleStateCreateInfoEXT# a _) ==
          x@(VkPipelineDiscardRectangleStateCreateInfoEXT# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineDiscardRectangleStateCreateInfoEXT where
        (VkPipelineDiscardRectangleStateCreateInfoEXT# a _) `compare`
          x@(VkPipelineDiscardRectangleStateCreateInfoEXT# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        sizeOf ~_
          = (40)
{-# LINE 3856 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 3860 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim
           VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        unsafeAddr (VkPipelineDiscardRectangleStateCreateInfoEXT# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineDiscardRectangleStateCreateInfoEXT# _ b)
          = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineDiscardRectangleStateCreateInfoEXT#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        type StructFields VkPipelineDiscardRectangleStateCreateInfoEXT =
             '["sType", "pNext", "flags", "discardRectangleMode", -- ' closing tick for hsc2hs
               "discardRectangleCount", "pDiscardRectangles"]
        type CUnionType VkPipelineDiscardRectangleStateCreateInfoEXT =
             'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineDiscardRectangleStateCreateInfoEXT =
             'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineDiscardRectangleStateCreateInfoEXT =
             '[VkGraphicsPipelineCreateInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineDiscardRectangleStateCreateInfoEXT where
        type FieldType "sType" VkPipelineDiscardRectangleStateCreateInfoEXT
             = VkStructureType
        type FieldOptional "sType"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             =
             (0)
{-# LINE 3909 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 3919 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 3927 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 3931 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 3938 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineDiscardRectangleStateCreateInfoEXT where
        type FieldType "pNext" VkPipelineDiscardRectangleStateCreateInfoEXT
             = Ptr Void
        type FieldOptional "pNext"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             =
             (8)
{-# LINE 3950 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 3960 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 3968 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 3972 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 3979 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkPipelineDiscardRectangleStateCreateInfoEXT where
        type FieldType "flags" VkPipelineDiscardRectangleStateCreateInfoEXT
             = VkPipelineDiscardRectangleStateCreateFlagsEXT
        type FieldOptional "flags"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "flags"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             =
             (16)
{-# LINE 3991 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 4001 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 4009 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 4013 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 4020 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "discardRectangleMode"
           VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        type FieldType "discardRectangleMode"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             = VkDiscardRectangleModeEXT
        type FieldOptional "discardRectangleMode"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "discardRectangleMode"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             =
             (20)
{-# LINE 4035 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "discardRectangleMode"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 4045 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "discardRectangleMode"
           VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 4054 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 4058 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "discardRectangleMode"
           VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 4066 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "discardRectangleCount"
           VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        type FieldType "discardRectangleCount"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             = Word32
        type FieldOptional "discardRectangleCount"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "discardRectangleCount"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             =
             (24)
{-# LINE 4081 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "discardRectangleCount"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 4091 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "discardRectangleCount"
           VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 4100 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 4104 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "discardRectangleCount"
           VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 4112 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pDiscardRectangles"
           VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        type FieldType "pDiscardRectangles"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             = Ptr VkRect2D
        type FieldOptional "pDiscardRectangles"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "pDiscardRectangles"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             =
             (32)
{-# LINE 4127 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pDiscardRectangles"
               VkPipelineDiscardRectangleStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 4137 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pDiscardRectangles"
           VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 4146 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 4150 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pDiscardRectangles"
           VkPipelineDiscardRectangleStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 4158 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineDiscardRectangleStateCreateInfoEXT where
        showsPrec d x
          = showString "VkPipelineDiscardRectangleStateCreateInfoEXT {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "discardRectangleMode = " .
                                  showsPrec d (getField @"discardRectangleMode" x) .
                                    showString ", " .
                                      showString "discardRectangleCount = " .
                                        showsPrec d (getField @"discardRectangleCount" x) .
                                          showString ", " .
                                            showString "pDiscardRectangles = " .
                                              showsPrec d (getField @"pDiscardRectangles" x) .
                                                showChar '}'

-- | > typedef struct VkPipelineDynamicStateCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkPipelineDynamicStateCreateFlags    flags;
--   >     uint32_t               dynamicStateCount;
--   >     const VkDynamicState*  pDynamicStates;
--   > } VkPipelineDynamicStateCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineDynamicStateCreateInfo VkPipelineDynamicStateCreateInfo registry at www.khronos.org>
data VkPipelineDynamicStateCreateInfo = VkPipelineDynamicStateCreateInfo# Addr#
                                                                          ByteArray#

instance Eq VkPipelineDynamicStateCreateInfo where
        (VkPipelineDynamicStateCreateInfo# a _) ==
          x@(VkPipelineDynamicStateCreateInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineDynamicStateCreateInfo where
        (VkPipelineDynamicStateCreateInfo# a _) `compare`
          x@(VkPipelineDynamicStateCreateInfo# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineDynamicStateCreateInfo where
        sizeOf ~_ = (32)
{-# LINE 4209 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 4213 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkPipelineDynamicStateCreateInfo where
        unsafeAddr (VkPipelineDynamicStateCreateInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineDynamicStateCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineDynamicStateCreateInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineDynamicStateCreateInfo where
        type StructFields VkPipelineDynamicStateCreateInfo =
             '["sType", "pNext", "flags", "dynamicStateCount", "pDynamicStates"] -- ' closing tick for hsc2hs
        type CUnionType VkPipelineDynamicStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineDynamicStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineDynamicStateCreateInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineDynamicStateCreateInfo where
        type FieldType "sType" VkPipelineDynamicStateCreateInfo =
             VkStructureType
        type FieldOptional "sType" VkPipelineDynamicStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkPipelineDynamicStateCreateInfo =
             (0)
{-# LINE 4251 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType" VkPipelineDynamicStateCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 4259 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineDynamicStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 4266 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 4270 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineDynamicStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 4276 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineDynamicStateCreateInfo where
        type FieldType "pNext" VkPipelineDynamicStateCreateInfo = Ptr Void
        type FieldOptional "pNext" VkPipelineDynamicStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkPipelineDynamicStateCreateInfo =
             (8)
{-# LINE 4284 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext" VkPipelineDynamicStateCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 4292 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineDynamicStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 4299 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 4303 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineDynamicStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 4309 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkPipelineDynamicStateCreateInfo where
        type FieldType "flags" VkPipelineDynamicStateCreateInfo =
             VkPipelineDynamicStateCreateFlags
        type FieldOptional "flags" VkPipelineDynamicStateCreateInfo = 'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkPipelineDynamicStateCreateInfo =
             (16)
{-# LINE 4317 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags" VkPipelineDynamicStateCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 4325 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkPipelineDynamicStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 4332 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 4336 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkPipelineDynamicStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 4342 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "dynamicStateCount" VkPipelineDynamicStateCreateInfo where
        type FieldType "dynamicStateCount" VkPipelineDynamicStateCreateInfo
             = Word32
        type FieldOptional "dynamicStateCount"
               VkPipelineDynamicStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "dynamicStateCount"
               VkPipelineDynamicStateCreateInfo
             =
             (20)
{-# LINE 4354 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "dynamicStateCount"
               VkPipelineDynamicStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 4364 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "dynamicStateCount" VkPipelineDynamicStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 4372 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 4376 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "dynamicStateCount" VkPipelineDynamicStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 4383 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pDynamicStates" VkPipelineDynamicStateCreateInfo where
        type FieldType "pDynamicStates" VkPipelineDynamicStateCreateInfo =
             Ptr VkDynamicState
        type FieldOptional "pDynamicStates"
               VkPipelineDynamicStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pDynamicStates" VkPipelineDynamicStateCreateInfo
             =
             (24)
{-# LINE 4394 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pDynamicStates" VkPipelineDynamicStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 4403 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pDynamicStates" VkPipelineDynamicStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 4411 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 4415 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pDynamicStates" VkPipelineDynamicStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 4422 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineDynamicStateCreateInfo where
        showsPrec d x
          = showString "VkPipelineDynamicStateCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "dynamicStateCount = " .
                                  showsPrec d (getField @"dynamicStateCount" x) .
                                    showString ", " .
                                      showString "pDynamicStates = " .
                                        showsPrec d (getField @"pDynamicStates" x) . showChar '}'

-- | > typedef struct VkPipelineInputAssemblyStateCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkPipelineInputAssemblyStateCreateFlags    flags;
--   >     VkPrimitiveTopology    topology;
--   >     VkBool32               primitiveRestartEnable;
--   > } VkPipelineInputAssemblyStateCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineInputAssemblyStateCreateInfo VkPipelineInputAssemblyStateCreateInfo registry at www.khronos.org>
data VkPipelineInputAssemblyStateCreateInfo = VkPipelineInputAssemblyStateCreateInfo# Addr#
                                                                                      ByteArray#

instance Eq VkPipelineInputAssemblyStateCreateInfo where
        (VkPipelineInputAssemblyStateCreateInfo# a _) ==
          x@(VkPipelineInputAssemblyStateCreateInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineInputAssemblyStateCreateInfo where
        (VkPipelineInputAssemblyStateCreateInfo# a _) `compare`
          x@(VkPipelineInputAssemblyStateCreateInfo# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineInputAssemblyStateCreateInfo where
        sizeOf ~_
          = (32)
{-# LINE 4470 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 4474 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkPipelineInputAssemblyStateCreateInfo
         where
        unsafeAddr (VkPipelineInputAssemblyStateCreateInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineInputAssemblyStateCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineInputAssemblyStateCreateInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineInputAssemblyStateCreateInfo where
        type StructFields VkPipelineInputAssemblyStateCreateInfo =
             '["sType", "pNext", "flags", "topology", "primitiveRestartEnable"] -- ' closing tick for hsc2hs
        type CUnionType VkPipelineInputAssemblyStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineInputAssemblyStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineInputAssemblyStateCreateInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineInputAssemblyStateCreateInfo where
        type FieldType "sType" VkPipelineInputAssemblyStateCreateInfo =
             VkStructureType
        type FieldOptional "sType" VkPipelineInputAssemblyStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkPipelineInputAssemblyStateCreateInfo =
             (0)
{-# LINE 4513 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType" VkPipelineInputAssemblyStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 4522 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineInputAssemblyStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 4529 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 4533 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineInputAssemblyStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 4539 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineInputAssemblyStateCreateInfo where
        type FieldType "pNext" VkPipelineInputAssemblyStateCreateInfo =
             Ptr Void
        type FieldOptional "pNext" VkPipelineInputAssemblyStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkPipelineInputAssemblyStateCreateInfo =
             (8)
{-# LINE 4548 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext" VkPipelineInputAssemblyStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 4557 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineInputAssemblyStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 4564 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 4568 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineInputAssemblyStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 4574 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkPipelineInputAssemblyStateCreateInfo where
        type FieldType "flags" VkPipelineInputAssemblyStateCreateInfo =
             VkPipelineInputAssemblyStateCreateFlags
        type FieldOptional "flags" VkPipelineInputAssemblyStateCreateInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkPipelineInputAssemblyStateCreateInfo =
             (16)
{-# LINE 4583 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags" VkPipelineInputAssemblyStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 4592 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkPipelineInputAssemblyStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 4599 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 4603 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkPipelineInputAssemblyStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 4609 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "topology" VkPipelineInputAssemblyStateCreateInfo where
        type FieldType "topology" VkPipelineInputAssemblyStateCreateInfo =
             VkPrimitiveTopology
        type FieldOptional "topology"
               VkPipelineInputAssemblyStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "topology" VkPipelineInputAssemblyStateCreateInfo
             =
             (20)
{-# LINE 4620 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "topology" VkPipelineInputAssemblyStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 4629 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "topology" VkPipelineInputAssemblyStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 4637 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 4641 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "topology" VkPipelineInputAssemblyStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 4648 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "primitiveRestartEnable"
           VkPipelineInputAssemblyStateCreateInfo
         where
        type FieldType "primitiveRestartEnable"
               VkPipelineInputAssemblyStateCreateInfo
             = VkBool32
        type FieldOptional "primitiveRestartEnable"
               VkPipelineInputAssemblyStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "primitiveRestartEnable"
               VkPipelineInputAssemblyStateCreateInfo
             =
             (24)
{-# LINE 4663 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "primitiveRestartEnable"
               VkPipelineInputAssemblyStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 4673 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "primitiveRestartEnable"
           VkPipelineInputAssemblyStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 4682 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 4686 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "primitiveRestartEnable"
           VkPipelineInputAssemblyStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 4694 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineInputAssemblyStateCreateInfo where
        showsPrec d x
          = showString "VkPipelineInputAssemblyStateCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "topology = " .
                                  showsPrec d (getField @"topology" x) .
                                    showString ", " .
                                      showString "primitiveRestartEnable = " .
                                        showsPrec d (getField @"primitiveRestartEnable" x) .
                                          showChar '}'

-- | > typedef struct VkPipelineLayoutCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkPipelineLayoutCreateFlags    flags;
--   >     uint32_t               setLayoutCount;
--   >     const VkDescriptorSetLayout* pSetLayouts;
--   >     uint32_t               pushConstantRangeCount;
--   >     const VkPushConstantRange* pPushConstantRanges;
--   > } VkPipelineLayoutCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineLayoutCreateInfo VkPipelineLayoutCreateInfo registry at www.khronos.org>
data VkPipelineLayoutCreateInfo = VkPipelineLayoutCreateInfo# Addr#
                                                              ByteArray#

instance Eq VkPipelineLayoutCreateInfo where
        (VkPipelineLayoutCreateInfo# a _) ==
          x@(VkPipelineLayoutCreateInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineLayoutCreateInfo where
        (VkPipelineLayoutCreateInfo# a _) `compare`
          x@(VkPipelineLayoutCreateInfo# b _) = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineLayoutCreateInfo where
        sizeOf ~_ = (48)
{-# LINE 4743 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_ = (8)
{-# LINE 4746 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkPipelineLayoutCreateInfo where
        unsafeAddr (VkPipelineLayoutCreateInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineLayoutCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineLayoutCreateInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineLayoutCreateInfo where
        type StructFields VkPipelineLayoutCreateInfo =
             '["sType", "pNext", "flags", "setLayoutCount", "pSetLayouts", -- ' closing tick for hsc2hs
               "pushConstantRangeCount", "pPushConstantRanges"]
        type CUnionType VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineLayoutCreateInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineLayoutCreateInfo where
        type FieldType "sType" VkPipelineLayoutCreateInfo = VkStructureType
        type FieldOptional "sType" VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkPipelineLayoutCreateInfo =
             (0)
{-# LINE 4783 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType" VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 4791 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineLayoutCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 4798 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 4802 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineLayoutCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 4808 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineLayoutCreateInfo where
        type FieldType "pNext" VkPipelineLayoutCreateInfo = Ptr Void
        type FieldOptional "pNext" VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkPipelineLayoutCreateInfo =
             (8)
{-# LINE 4815 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext" VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 4823 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineLayoutCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 4830 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 4834 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineLayoutCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 4840 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkPipelineLayoutCreateInfo where
        type FieldType "flags" VkPipelineLayoutCreateInfo =
             VkPipelineLayoutCreateFlags
        type FieldOptional "flags" VkPipelineLayoutCreateInfo = 'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkPipelineLayoutCreateInfo =
             (16)
{-# LINE 4848 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags" VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 4856 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkPipelineLayoutCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 4863 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 4867 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkPipelineLayoutCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 4873 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "setLayoutCount" VkPipelineLayoutCreateInfo where
        type FieldType "setLayoutCount" VkPipelineLayoutCreateInfo = Word32
        type FieldOptional "setLayoutCount" VkPipelineLayoutCreateInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "setLayoutCount" VkPipelineLayoutCreateInfo =
             (20)
{-# LINE 4881 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "setLayoutCount" VkPipelineLayoutCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 4890 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "setLayoutCount" VkPipelineLayoutCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 4897 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 4901 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "setLayoutCount" VkPipelineLayoutCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 4907 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pSetLayouts" VkPipelineLayoutCreateInfo where
        type FieldType "pSetLayouts" VkPipelineLayoutCreateInfo =
             Ptr VkDescriptorSetLayout
        type FieldOptional "pSetLayouts" VkPipelineLayoutCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pSetLayouts" VkPipelineLayoutCreateInfo =
             (24)
{-# LINE 4916 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pSetLayouts" VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 4924 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pSetLayouts" VkPipelineLayoutCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 4931 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 4935 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pSetLayouts" VkPipelineLayoutCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 4941 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pushConstantRangeCount" VkPipelineLayoutCreateInfo where
        type FieldType "pushConstantRangeCount" VkPipelineLayoutCreateInfo
             = Word32
        type FieldOptional "pushConstantRangeCount"
               VkPipelineLayoutCreateInfo
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "pushConstantRangeCount"
               VkPipelineLayoutCreateInfo
             =
             (32)
{-# LINE 4953 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pushConstantRangeCount"
               VkPipelineLayoutCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 4963 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pushConstantRangeCount" VkPipelineLayoutCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 4971 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 4975 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pushConstantRangeCount" VkPipelineLayoutCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 4982 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pPushConstantRanges" VkPipelineLayoutCreateInfo where
        type FieldType "pPushConstantRanges" VkPipelineLayoutCreateInfo =
             Ptr VkPushConstantRange
        type FieldOptional "pPushConstantRanges" VkPipelineLayoutCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pPushConstantRanges" VkPipelineLayoutCreateInfo =
             (40)
{-# LINE 4991 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pPushConstantRanges" VkPipelineLayoutCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (40)
{-# LINE 5000 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pPushConstantRanges" VkPipelineLayoutCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 5007 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (40)
{-# LINE 5011 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pPushConstantRanges" VkPipelineLayoutCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 5018 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineLayoutCreateInfo where
        showsPrec d x
          = showString "VkPipelineLayoutCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "setLayoutCount = " .
                                  showsPrec d (getField @"setLayoutCount" x) .
                                    showString ", " .
                                      showString "pSetLayouts = " .
                                        showsPrec d (getField @"pSetLayouts" x) .
                                          showString ", " .
                                            showString "pushConstantRangeCount = " .
                                              showsPrec d (getField @"pushConstantRangeCount" x) .
                                                showString ", " .
                                                  showString "pPushConstantRanges = " .
                                                    showsPrec d (getField @"pPushConstantRanges" x)
                                                      . showChar '}'

-- | > typedef struct VkPipelineMultisampleStateCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkPipelineMultisampleStateCreateFlags    flags;
--   >     VkSampleCountFlagBits  rasterizationSamples;
--   >     VkBool32               sampleShadingEnable;
--   >     float                  minSampleShading;
--   >     const VkSampleMask*    pSampleMask;
--   >     VkBool32               alphaToCoverageEnable;
--   >     VkBool32               alphaToOneEnable;
--   > } VkPipelineMultisampleStateCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineMultisampleStateCreateInfo VkPipelineMultisampleStateCreateInfo registry at www.khronos.org>
data VkPipelineMultisampleStateCreateInfo = VkPipelineMultisampleStateCreateInfo# Addr#
                                                                                  ByteArray#

instance Eq VkPipelineMultisampleStateCreateInfo where
        (VkPipelineMultisampleStateCreateInfo# a _) ==
          x@(VkPipelineMultisampleStateCreateInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineMultisampleStateCreateInfo where
        (VkPipelineMultisampleStateCreateInfo# a _) `compare`
          x@(VkPipelineMultisampleStateCreateInfo# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineMultisampleStateCreateInfo where
        sizeOf ~_
          = (48)
{-# LINE 5077 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 5081 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkPipelineMultisampleStateCreateInfo
         where
        unsafeAddr (VkPipelineMultisampleStateCreateInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineMultisampleStateCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineMultisampleStateCreateInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineMultisampleStateCreateInfo where
        type StructFields VkPipelineMultisampleStateCreateInfo =
             '["sType", "pNext", "flags", "rasterizationSamples", -- ' closing tick for hsc2hs
               "sampleShadingEnable", "minSampleShading", "pSampleMask",
               "alphaToCoverageEnable", "alphaToOneEnable"]
        type CUnionType VkPipelineMultisampleStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineMultisampleStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineMultisampleStateCreateInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineMultisampleStateCreateInfo where
        type FieldType "sType" VkPipelineMultisampleStateCreateInfo =
             VkStructureType
        type FieldOptional "sType" VkPipelineMultisampleStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkPipelineMultisampleStateCreateInfo =
             (0)
{-# LINE 5122 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType" VkPipelineMultisampleStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 5131 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineMultisampleStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 5138 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 5142 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineMultisampleStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 5148 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineMultisampleStateCreateInfo where
        type FieldType "pNext" VkPipelineMultisampleStateCreateInfo =
             Ptr Void
        type FieldOptional "pNext" VkPipelineMultisampleStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkPipelineMultisampleStateCreateInfo =
             (8)
{-# LINE 5157 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext" VkPipelineMultisampleStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 5166 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineMultisampleStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 5173 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 5177 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineMultisampleStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 5183 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkPipelineMultisampleStateCreateInfo where
        type FieldType "flags" VkPipelineMultisampleStateCreateInfo =
             VkPipelineMultisampleStateCreateFlags
        type FieldOptional "flags" VkPipelineMultisampleStateCreateInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkPipelineMultisampleStateCreateInfo =
             (16)
{-# LINE 5192 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags" VkPipelineMultisampleStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 5201 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkPipelineMultisampleStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 5208 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 5212 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkPipelineMultisampleStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 5218 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "rasterizationSamples"
           VkPipelineMultisampleStateCreateInfo
         where
        type FieldType "rasterizationSamples"
               VkPipelineMultisampleStateCreateInfo
             = VkSampleCountFlagBits
        type FieldOptional "rasterizationSamples"
               VkPipelineMultisampleStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "rasterizationSamples"
               VkPipelineMultisampleStateCreateInfo
             =
             (20)
{-# LINE 5233 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "rasterizationSamples"
               VkPipelineMultisampleStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 5243 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "rasterizationSamples"
           VkPipelineMultisampleStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 5252 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 5256 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "rasterizationSamples"
           VkPipelineMultisampleStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 5264 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "sampleShadingEnable" VkPipelineMultisampleStateCreateInfo
         where
        type FieldType "sampleShadingEnable"
               VkPipelineMultisampleStateCreateInfo
             = VkBool32
        type FieldOptional "sampleShadingEnable"
               VkPipelineMultisampleStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sampleShadingEnable"
               VkPipelineMultisampleStateCreateInfo
             =
             (24)
{-# LINE 5278 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sampleShadingEnable"
               VkPipelineMultisampleStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 5288 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sampleShadingEnable"
           VkPipelineMultisampleStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 5297 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 5301 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sampleShadingEnable"
           VkPipelineMultisampleStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 5309 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "minSampleShading" VkPipelineMultisampleStateCreateInfo
         where
        type FieldType "minSampleShading"
               VkPipelineMultisampleStateCreateInfo
             = Float
{-# LINE 5316 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldOptional "minSampleShading"
               VkPipelineMultisampleStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "minSampleShading"
               VkPipelineMultisampleStateCreateInfo
             =
             (28)
{-# LINE 5323 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "minSampleShading"
               VkPipelineMultisampleStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (28)
{-# LINE 5333 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "minSampleShading"
           VkPipelineMultisampleStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (28))
{-# LINE 5342 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (28)
{-# LINE 5346 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "minSampleShading"
           VkPipelineMultisampleStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (28)
{-# LINE 5354 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pSampleMask" VkPipelineMultisampleStateCreateInfo where
        type FieldType "pSampleMask" VkPipelineMultisampleStateCreateInfo =
             Ptr VkSampleMask
        type FieldOptional "pSampleMask"
               VkPipelineMultisampleStateCreateInfo
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "pSampleMask" VkPipelineMultisampleStateCreateInfo
             =
             (32)
{-# LINE 5365 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pSampleMask"
               VkPipelineMultisampleStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 5375 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pSampleMask" VkPipelineMultisampleStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 5383 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 5387 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pSampleMask" VkPipelineMultisampleStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 5394 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "alphaToCoverageEnable"
           VkPipelineMultisampleStateCreateInfo
         where
        type FieldType "alphaToCoverageEnable"
               VkPipelineMultisampleStateCreateInfo
             = VkBool32
        type FieldOptional "alphaToCoverageEnable"
               VkPipelineMultisampleStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "alphaToCoverageEnable"
               VkPipelineMultisampleStateCreateInfo
             =
             (40)
{-# LINE 5409 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "alphaToCoverageEnable"
               VkPipelineMultisampleStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (40)
{-# LINE 5419 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "alphaToCoverageEnable"
           VkPipelineMultisampleStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 5428 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (40)
{-# LINE 5432 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "alphaToCoverageEnable"
           VkPipelineMultisampleStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 5440 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "alphaToOneEnable" VkPipelineMultisampleStateCreateInfo
         where
        type FieldType "alphaToOneEnable"
               VkPipelineMultisampleStateCreateInfo
             = VkBool32
        type FieldOptional "alphaToOneEnable"
               VkPipelineMultisampleStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "alphaToOneEnable"
               VkPipelineMultisampleStateCreateInfo
             =
             (44)
{-# LINE 5454 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "alphaToOneEnable"
               VkPipelineMultisampleStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (44)
{-# LINE 5464 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "alphaToOneEnable"
           VkPipelineMultisampleStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (44))
{-# LINE 5473 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (44)
{-# LINE 5477 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "alphaToOneEnable"
           VkPipelineMultisampleStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (44)
{-# LINE 5485 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineMultisampleStateCreateInfo where
        showsPrec d x
          = showString "VkPipelineMultisampleStateCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "rasterizationSamples = " .
                                  showsPrec d (getField @"rasterizationSamples" x) .
                                    showString ", " .
                                      showString "sampleShadingEnable = " .
                                        showsPrec d (getField @"sampleShadingEnable" x) .
                                          showString ", " .
                                            showString "minSampleShading = " .
                                              showsPrec d (getField @"minSampleShading" x) .
                                                showString ", " .
                                                  showString "pSampleMask = " .
                                                    showsPrec d (getField @"pSampleMask" x) .
                                                      showString ", " .
                                                        showString "alphaToCoverageEnable = " .
                                                          showsPrec d
                                                            (getField @"alphaToCoverageEnable" x)
                                                            .
                                                            showString ", " .
                                                              showString "alphaToOneEnable = " .
                                                                showsPrec d
                                                                  (getField @"alphaToOneEnable" x)
                                                                  . showChar '}'

-- | > typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT {
--   >     VkStructureType sType;
--   >     const void*                                                                      pNext;
--   >     VkPipelineRasterizationConservativeStateCreateFlagsEXT           flags;
--   >     VkConservativeRasterizationModeEXT                                               conservativeRasterizationMode;
--   >     float                                                                            extraPrimitiveOverestimationSize;
--   > } VkPipelineRasterizationConservativeStateCreateInfoEXT;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineRasterizationConservativeStateCreateInfoEXT VkPipelineRasterizationConservativeStateCreateInfoEXT registry at www.khronos.org>
data VkPipelineRasterizationConservativeStateCreateInfoEXT = VkPipelineRasterizationConservativeStateCreateInfoEXT# Addr#
                                                                                                                    ByteArray#

instance Eq VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        (VkPipelineRasterizationConservativeStateCreateInfoEXT# a _) ==
          x@(VkPipelineRasterizationConservativeStateCreateInfoEXT# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        (VkPipelineRasterizationConservativeStateCreateInfoEXT# a _)
          `compare`
          x@(VkPipelineRasterizationConservativeStateCreateInfoEXT# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        sizeOf ~_
          = (32)
{-# LINE 5554 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 5558 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        unsafeAddr
          (VkPipelineRasterizationConservativeStateCreateInfoEXT# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray
          (VkPipelineRasterizationConservativeStateCreateInfoEXT# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineRasterizationConservativeStateCreateInfoEXT#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        type StructFields
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             =
             '["sType", "pNext", "flags", "conservativeRasterizationMode", -- ' closing tick for hsc2hs
               "extraPrimitiveOverestimationSize"]
        type CUnionType
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type StructExtends
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = '[VkPipelineRasterizationStateCreateInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType"
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        type FieldType "sType"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = VkStructureType
        type FieldOptional "sType"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             =
             (0)
{-# LINE 5617 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 5627 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType"
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 5636 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 5640 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType"
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 5648 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext"
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        type FieldType "pNext"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = Ptr Void
        type FieldOptional "pNext"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             =
             (8)
{-# LINE 5663 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 5673 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext"
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 5682 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 5686 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext"
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 5694 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags"
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        type FieldType "flags"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = VkPipelineRasterizationConservativeStateCreateFlagsEXT
        type FieldOptional "flags"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "flags"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             =
             (16)
{-# LINE 5709 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 5719 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags"
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 5728 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 5732 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags"
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 5740 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "conservativeRasterizationMode"
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        type FieldType "conservativeRasterizationMode"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = VkConservativeRasterizationModeEXT
        type FieldOptional "conservativeRasterizationMode"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "conservativeRasterizationMode"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             =
             (20)
{-# LINE 5755 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "conservativeRasterizationMode"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 5765 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "conservativeRasterizationMode"
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 5774 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 5778 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "conservativeRasterizationMode"
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 5786 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "extraPrimitiveOverestimationSize"
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        type FieldType "extraPrimitiveOverestimationSize"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = Float
{-# LINE 5794 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldOptional "extraPrimitiveOverestimationSize"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "extraPrimitiveOverestimationSize"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             =
             (24)
{-# LINE 5801 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "extraPrimitiveOverestimationSize"
               VkPipelineRasterizationConservativeStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 5811 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "extraPrimitiveOverestimationSize"
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 5820 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 5824 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "extraPrimitiveOverestimationSize"
           VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 5832 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineRasterizationConservativeStateCreateInfoEXT
         where
        showsPrec d x
          = showString
              "VkPipelineRasterizationConservativeStateCreateInfoEXT {"
              .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "conservativeRasterizationMode = " .
                                  showsPrec d (getField @"conservativeRasterizationMode" x) .
                                    showString ", " .
                                      showString "extraPrimitiveOverestimationSize = " .
                                        showsPrec d (getField @"extraPrimitiveOverestimationSize" x)
                                          . showChar '}'

-- | > typedef struct VkPipelineRasterizationStateCreateInfo {
--   >     VkStructureType sType;
--   >     const void* pNext;
--   >     VkPipelineRasterizationStateCreateFlags    flags;
--   >     VkBool32               depthClampEnable;
--   >     VkBool32               rasterizerDiscardEnable;
--   >     VkPolygonMode          polygonMode;
--   >     VkCullModeFlags        cullMode;
--   >     VkFrontFace            frontFace;
--   >     VkBool32               depthBiasEnable;
--   >     float                  depthBiasConstantFactor;
--   >     float                  depthBiasClamp;
--   >     float                  depthBiasSlopeFactor;
--   >     float                  lineWidth;
--   > } VkPipelineRasterizationStateCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineRasterizationStateCreateInfo VkPipelineRasterizationStateCreateInfo registry at www.khronos.org>
data VkPipelineRasterizationStateCreateInfo = VkPipelineRasterizationStateCreateInfo# Addr#
                                                                                      ByteArray#

instance Eq VkPipelineRasterizationStateCreateInfo where
        (VkPipelineRasterizationStateCreateInfo# a _) ==
          x@(VkPipelineRasterizationStateCreateInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineRasterizationStateCreateInfo where
        (VkPipelineRasterizationStateCreateInfo# a _) `compare`
          x@(VkPipelineRasterizationStateCreateInfo# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineRasterizationStateCreateInfo where
        sizeOf ~_
          = (64)
{-# LINE 5892 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 5896 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkPipelineRasterizationStateCreateInfo
         where
        unsafeAddr (VkPipelineRasterizationStateCreateInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineRasterizationStateCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineRasterizationStateCreateInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineRasterizationStateCreateInfo where
        type StructFields VkPipelineRasterizationStateCreateInfo =
             '["sType", "pNext", "flags", "depthClampEnable", -- ' closing tick for hsc2hs
               "rasterizerDiscardEnable", "polygonMode", "cullMode", "frontFace",
               "depthBiasEnable", "depthBiasConstantFactor", "depthBiasClamp",
               "depthBiasSlopeFactor", "lineWidth"]
        type CUnionType VkPipelineRasterizationStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineRasterizationStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineRasterizationStateCreateInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineRasterizationStateCreateInfo where
        type FieldType "sType" VkPipelineRasterizationStateCreateInfo =
             VkStructureType
        type FieldOptional "sType" VkPipelineRasterizationStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkPipelineRasterizationStateCreateInfo =
             (0)
{-# LINE 5938 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType" VkPipelineRasterizationStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 5947 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineRasterizationStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 5954 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 5958 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineRasterizationStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 5964 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineRasterizationStateCreateInfo where
        type FieldType "pNext" VkPipelineRasterizationStateCreateInfo =
             Ptr Void
        type FieldOptional "pNext" VkPipelineRasterizationStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkPipelineRasterizationStateCreateInfo =
             (8)
{-# LINE 5973 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext" VkPipelineRasterizationStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 5982 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineRasterizationStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 5989 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 5993 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineRasterizationStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 5999 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkPipelineRasterizationStateCreateInfo where
        type FieldType "flags" VkPipelineRasterizationStateCreateInfo =
             VkPipelineRasterizationStateCreateFlags
        type FieldOptional "flags" VkPipelineRasterizationStateCreateInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkPipelineRasterizationStateCreateInfo =
             (16)
{-# LINE 6008 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags" VkPipelineRasterizationStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 6017 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkPipelineRasterizationStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 6024 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 6028 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkPipelineRasterizationStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 6034 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "depthClampEnable" VkPipelineRasterizationStateCreateInfo
         where
        type FieldType "depthClampEnable"
               VkPipelineRasterizationStateCreateInfo
             = VkBool32
        type FieldOptional "depthClampEnable"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "depthClampEnable"
               VkPipelineRasterizationStateCreateInfo
             =
             (20)
{-# LINE 6048 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "depthClampEnable"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 6058 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "depthClampEnable"
           VkPipelineRasterizationStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 6067 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 6071 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "depthClampEnable"
           VkPipelineRasterizationStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 6079 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "rasterizerDiscardEnable"
           VkPipelineRasterizationStateCreateInfo
         where
        type FieldType "rasterizerDiscardEnable"
               VkPipelineRasterizationStateCreateInfo
             = VkBool32
        type FieldOptional "rasterizerDiscardEnable"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "rasterizerDiscardEnable"
               VkPipelineRasterizationStateCreateInfo
             =
             (24)
{-# LINE 6094 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "rasterizerDiscardEnable"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 6104 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "rasterizerDiscardEnable"
           VkPipelineRasterizationStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 6113 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 6117 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "rasterizerDiscardEnable"
           VkPipelineRasterizationStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 6125 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "polygonMode" VkPipelineRasterizationStateCreateInfo where
        type FieldType "polygonMode" VkPipelineRasterizationStateCreateInfo
             = VkPolygonMode
        type FieldOptional "polygonMode"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "polygonMode"
               VkPipelineRasterizationStateCreateInfo
             =
             (28)
{-# LINE 6137 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "polygonMode"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (28)
{-# LINE 6147 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "polygonMode" VkPipelineRasterizationStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (28))
{-# LINE 6155 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (28)
{-# LINE 6159 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "polygonMode" VkPipelineRasterizationStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (28)
{-# LINE 6166 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "cullMode" VkPipelineRasterizationStateCreateInfo where
        type FieldType "cullMode" VkPipelineRasterizationStateCreateInfo =
             VkCullModeFlags
        type FieldOptional "cullMode"
               VkPipelineRasterizationStateCreateInfo
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "cullMode" VkPipelineRasterizationStateCreateInfo
             =
             (32)
{-# LINE 6177 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "cullMode" VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 6186 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "cullMode" VkPipelineRasterizationStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 6194 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 6198 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "cullMode" VkPipelineRasterizationStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 6205 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "frontFace" VkPipelineRasterizationStateCreateInfo where
        type FieldType "frontFace" VkPipelineRasterizationStateCreateInfo =
             VkFrontFace
        type FieldOptional "frontFace"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "frontFace" VkPipelineRasterizationStateCreateInfo
             =
             (36)
{-# LINE 6216 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "frontFace"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (36)
{-# LINE 6226 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "frontFace" VkPipelineRasterizationStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (36))
{-# LINE 6234 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (36)
{-# LINE 6238 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "frontFace" VkPipelineRasterizationStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (36)
{-# LINE 6245 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "depthBiasEnable" VkPipelineRasterizationStateCreateInfo
         where
        type FieldType "depthBiasEnable"
               VkPipelineRasterizationStateCreateInfo
             = VkBool32
        type FieldOptional "depthBiasEnable"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "depthBiasEnable"
               VkPipelineRasterizationStateCreateInfo
             =
             (40)
{-# LINE 6259 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "depthBiasEnable"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (40)
{-# LINE 6269 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "depthBiasEnable"
           VkPipelineRasterizationStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 6278 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (40)
{-# LINE 6282 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "depthBiasEnable"
           VkPipelineRasterizationStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 6290 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "depthBiasConstantFactor"
           VkPipelineRasterizationStateCreateInfo
         where
        type FieldType "depthBiasConstantFactor"
               VkPipelineRasterizationStateCreateInfo
             = Float
{-# LINE 6298 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldOptional "depthBiasConstantFactor"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "depthBiasConstantFactor"
               VkPipelineRasterizationStateCreateInfo
             =
             (44)
{-# LINE 6305 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "depthBiasConstantFactor"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (44)
{-# LINE 6315 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "depthBiasConstantFactor"
           VkPipelineRasterizationStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (44))
{-# LINE 6324 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (44)
{-# LINE 6328 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "depthBiasConstantFactor"
           VkPipelineRasterizationStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (44)
{-# LINE 6336 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "depthBiasClamp" VkPipelineRasterizationStateCreateInfo
         where
        type FieldType "depthBiasClamp"
               VkPipelineRasterizationStateCreateInfo
             = Float
{-# LINE 6343 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldOptional "depthBiasClamp"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "depthBiasClamp"
               VkPipelineRasterizationStateCreateInfo
             =
             (48)
{-# LINE 6350 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "depthBiasClamp"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (48)
{-# LINE 6360 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "depthBiasClamp"
           VkPipelineRasterizationStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 6369 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (48)
{-# LINE 6373 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "depthBiasClamp"
           VkPipelineRasterizationStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 6381 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "depthBiasSlopeFactor"
           VkPipelineRasterizationStateCreateInfo
         where
        type FieldType "depthBiasSlopeFactor"
               VkPipelineRasterizationStateCreateInfo
             = Float
{-# LINE 6389 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldOptional "depthBiasSlopeFactor"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "depthBiasSlopeFactor"
               VkPipelineRasterizationStateCreateInfo
             =
             (52)
{-# LINE 6396 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "depthBiasSlopeFactor"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (52)
{-# LINE 6406 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "depthBiasSlopeFactor"
           VkPipelineRasterizationStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (52))
{-# LINE 6415 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (52)
{-# LINE 6419 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "depthBiasSlopeFactor"
           VkPipelineRasterizationStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (52)
{-# LINE 6427 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "lineWidth" VkPipelineRasterizationStateCreateInfo where
        type FieldType "lineWidth" VkPipelineRasterizationStateCreateInfo =
             Float
{-# LINE 6432 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldOptional "lineWidth"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "lineWidth" VkPipelineRasterizationStateCreateInfo
             =
             (56)
{-# LINE 6438 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "lineWidth"
               VkPipelineRasterizationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (56)
{-# LINE 6448 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "lineWidth" VkPipelineRasterizationStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (56))
{-# LINE 6456 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (56)
{-# LINE 6460 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "lineWidth" VkPipelineRasterizationStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (56)
{-# LINE 6467 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineRasterizationStateCreateInfo where
        showsPrec d x
          = showString "VkPipelineRasterizationStateCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "depthClampEnable = " .
                                  showsPrec d (getField @"depthClampEnable" x) .
                                    showString ", " .
                                      showString "rasterizerDiscardEnable = " .
                                        showsPrec d (getField @"rasterizerDiscardEnable" x) .
                                          showString ", " .
                                            showString "polygonMode = " .
                                              showsPrec d (getField @"polygonMode" x) .
                                                showString ", " .
                                                  showString "cullMode = " .
                                                    showsPrec d (getField @"cullMode" x) .
                                                      showString ", " .
                                                        showString "frontFace = " .
                                                          showsPrec d (getField @"frontFace" x) .
                                                            showString ", " .
                                                              showString "depthBiasEnable = " .
                                                                showsPrec d
                                                                  (getField @"depthBiasEnable" x)
                                                                  .
                                                                  showString ", " .
                                                                    showString
                                                                      "depthBiasConstantFactor = "
                                                                      .
                                                                      showsPrec d
                                                                        (getField
                                                                           @"depthBiasConstantFactor"
                                                                           x)
                                                                        .
                                                                        showString ", " .
                                                                          showString
                                                                            "depthBiasClamp = "
                                                                            .
                                                                            showsPrec d
                                                                              (getField
                                                                                 @"depthBiasClamp"
                                                                                 x)
                                                                              .
                                                                              showString ", " .
                                                                                showString
                                                                                  "depthBiasSlopeFactor = "
                                                                                  .
                                                                                  showsPrec d
                                                                                    (getField
                                                                                       @"depthBiasSlopeFactor"
                                                                                       x)
                                                                                    .
                                                                                    showString ", "
                                                                                      .
                                                                                      showString
                                                                                        "lineWidth = "
                                                                                        .
                                                                                        showsPrec d
                                                                                          (getField
                                                                                             @"lineWidth"
                                                                                             x)
                                                                                          .
                                                                                          showChar
                                                                                            '}'

-- | > typedef struct VkPipelineRasterizationStateRasterizationOrderAMD {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkRasterizationOrderAMD          rasterizationOrder;
--   > } VkPipelineRasterizationStateRasterizationOrderAMD;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineRasterizationStateRasterizationOrderAMD VkPipelineRasterizationStateRasterizationOrderAMD registry at www.khronos.org>
data VkPipelineRasterizationStateRasterizationOrderAMD = VkPipelineRasterizationStateRasterizationOrderAMD# Addr#
                                                                                                            ByteArray#

instance Eq VkPipelineRasterizationStateRasterizationOrderAMD where
        (VkPipelineRasterizationStateRasterizationOrderAMD# a _) ==
          x@(VkPipelineRasterizationStateRasterizationOrderAMD# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineRasterizationStateRasterizationOrderAMD
         where
        (VkPipelineRasterizationStateRasterizationOrderAMD# a _) `compare`
          x@(VkPipelineRasterizationStateRasterizationOrderAMD# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineRasterizationStateRasterizationOrderAMD
         where
        sizeOf ~_
          = (24)
{-# LINE 6568 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 6572 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim
           VkPipelineRasterizationStateRasterizationOrderAMD
         where
        unsafeAddr (VkPipelineRasterizationStateRasterizationOrderAMD# a _)
          = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray
          (VkPipelineRasterizationStateRasterizationOrderAMD# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineRasterizationStateRasterizationOrderAMD#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal
           VkPipelineRasterizationStateRasterizationOrderAMD
         where
        type StructFields VkPipelineRasterizationStateRasterizationOrderAMD
             = '["sType", "pNext", "rasterizationOrder"] -- ' closing tick for hsc2hs
        type CUnionType VkPipelineRasterizationStateRasterizationOrderAMD =
             'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineRasterizationStateRasterizationOrderAMD
             = 'False -- ' closing tick for hsc2hs
        type StructExtends
               VkPipelineRasterizationStateRasterizationOrderAMD
             = '[VkPipelineRasterizationStateCreateInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineRasterizationStateRasterizationOrderAMD
         where
        type FieldType "sType"
               VkPipelineRasterizationStateRasterizationOrderAMD
             = VkStructureType
        type FieldOptional "sType"
               VkPipelineRasterizationStateRasterizationOrderAMD
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType"
               VkPipelineRasterizationStateRasterizationOrderAMD
             =
             (0)
{-# LINE 6625 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType"
               VkPipelineRasterizationStateRasterizationOrderAMD
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 6635 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType"
           VkPipelineRasterizationStateRasterizationOrderAMD
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 6644 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 6648 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType"
           VkPipelineRasterizationStateRasterizationOrderAMD
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 6656 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineRasterizationStateRasterizationOrderAMD
         where
        type FieldType "pNext"
               VkPipelineRasterizationStateRasterizationOrderAMD
             = Ptr Void
        type FieldOptional "pNext"
               VkPipelineRasterizationStateRasterizationOrderAMD
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext"
               VkPipelineRasterizationStateRasterizationOrderAMD
             =
             (8)
{-# LINE 6670 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext"
               VkPipelineRasterizationStateRasterizationOrderAMD
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 6680 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext"
           VkPipelineRasterizationStateRasterizationOrderAMD
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 6689 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 6693 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext"
           VkPipelineRasterizationStateRasterizationOrderAMD
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 6701 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "rasterizationOrder"
           VkPipelineRasterizationStateRasterizationOrderAMD
         where
        type FieldType "rasterizationOrder"
               VkPipelineRasterizationStateRasterizationOrderAMD
             = VkRasterizationOrderAMD
        type FieldOptional "rasterizationOrder"
               VkPipelineRasterizationStateRasterizationOrderAMD
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "rasterizationOrder"
               VkPipelineRasterizationStateRasterizationOrderAMD
             =
             (16)
{-# LINE 6716 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "rasterizationOrder"
               VkPipelineRasterizationStateRasterizationOrderAMD
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 6726 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "rasterizationOrder"
           VkPipelineRasterizationStateRasterizationOrderAMD
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 6735 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 6739 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "rasterizationOrder"
           VkPipelineRasterizationStateRasterizationOrderAMD
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 6747 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineRasterizationStateRasterizationOrderAMD
         where
        showsPrec d x
          = showString "VkPipelineRasterizationStateRasterizationOrderAMD {"
              .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "rasterizationOrder = " .
                            showsPrec d (getField @"rasterizationOrder" x) . showChar '}'

-- | > typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkBool32                         sampleLocationsEnable;
--   >     VkSampleLocationsInfoEXT         sampleLocationsInfo;
--   > } VkPipelineSampleLocationsStateCreateInfoEXT;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineSampleLocationsStateCreateInfoEXT VkPipelineSampleLocationsStateCreateInfoEXT registry at www.khronos.org>
data VkPipelineSampleLocationsStateCreateInfoEXT = VkPipelineSampleLocationsStateCreateInfoEXT# Addr#
                                                                                                ByteArray#

instance Eq VkPipelineSampleLocationsStateCreateInfoEXT where
        (VkPipelineSampleLocationsStateCreateInfoEXT# a _) ==
          x@(VkPipelineSampleLocationsStateCreateInfoEXT# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineSampleLocationsStateCreateInfoEXT where
        (VkPipelineSampleLocationsStateCreateInfoEXT# a _) `compare`
          x@(VkPipelineSampleLocationsStateCreateInfoEXT# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineSampleLocationsStateCreateInfoEXT where
        sizeOf ~_
          = (64)
{-# LINE 6790 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 6794 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim
           VkPipelineSampleLocationsStateCreateInfoEXT
         where
        unsafeAddr (VkPipelineSampleLocationsStateCreateInfoEXT# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineSampleLocationsStateCreateInfoEXT# _ b)
          = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineSampleLocationsStateCreateInfoEXT#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineSampleLocationsStateCreateInfoEXT
         where
        type StructFields VkPipelineSampleLocationsStateCreateInfoEXT =
             '["sType", "pNext", "sampleLocationsEnable", "sampleLocationsInfo"] -- ' closing tick for hsc2hs
        type CUnionType VkPipelineSampleLocationsStateCreateInfoEXT =
             'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineSampleLocationsStateCreateInfoEXT =
             'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineSampleLocationsStateCreateInfoEXT =
             '[VkPipelineMultisampleStateCreateInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineSampleLocationsStateCreateInfoEXT where
        type FieldType "sType" VkPipelineSampleLocationsStateCreateInfoEXT
             = VkStructureType
        type FieldOptional "sType"
               VkPipelineSampleLocationsStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType"
               VkPipelineSampleLocationsStateCreateInfoEXT
             =
             (0)
{-# LINE 6842 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType"
               VkPipelineSampleLocationsStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 6852 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineSampleLocationsStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 6860 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 6864 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineSampleLocationsStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 6871 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineSampleLocationsStateCreateInfoEXT where
        type FieldType "pNext" VkPipelineSampleLocationsStateCreateInfoEXT
             = Ptr Void
        type FieldOptional "pNext"
               VkPipelineSampleLocationsStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext"
               VkPipelineSampleLocationsStateCreateInfoEXT
             =
             (8)
{-# LINE 6883 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext"
               VkPipelineSampleLocationsStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 6893 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineSampleLocationsStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 6901 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 6905 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineSampleLocationsStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 6912 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "sampleLocationsEnable"
           VkPipelineSampleLocationsStateCreateInfoEXT
         where
        type FieldType "sampleLocationsEnable"
               VkPipelineSampleLocationsStateCreateInfoEXT
             = VkBool32
        type FieldOptional "sampleLocationsEnable"
               VkPipelineSampleLocationsStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sampleLocationsEnable"
               VkPipelineSampleLocationsStateCreateInfoEXT
             =
             (16)
{-# LINE 6927 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sampleLocationsEnable"
               VkPipelineSampleLocationsStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 6937 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sampleLocationsEnable"
           VkPipelineSampleLocationsStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 6946 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 6950 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sampleLocationsEnable"
           VkPipelineSampleLocationsStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 6958 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "sampleLocationsInfo"
           VkPipelineSampleLocationsStateCreateInfoEXT
         where
        type FieldType "sampleLocationsInfo"
               VkPipelineSampleLocationsStateCreateInfoEXT
             = VkSampleLocationsInfoEXT
        type FieldOptional "sampleLocationsInfo"
               VkPipelineSampleLocationsStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sampleLocationsInfo"
               VkPipelineSampleLocationsStateCreateInfoEXT
             =
             (24)
{-# LINE 6973 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sampleLocationsInfo"
               VkPipelineSampleLocationsStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 6983 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sampleLocationsInfo"
           VkPipelineSampleLocationsStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 6992 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 6996 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sampleLocationsInfo"
           VkPipelineSampleLocationsStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 7004 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineSampleLocationsStateCreateInfoEXT where
        showsPrec d x
          = showString "VkPipelineSampleLocationsStateCreateInfoEXT {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "sampleLocationsEnable = " .
                            showsPrec d (getField @"sampleLocationsEnable" x) .
                              showString ", " .
                                showString "sampleLocationsInfo = " .
                                  showsPrec d (getField @"sampleLocationsInfo" x) . showChar '}'

-- | > typedef struct VkPipelineShaderStageCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkPipelineShaderStageCreateFlags    flags;
--   >     VkShaderStageFlagBits  stage;
--   >     VkShaderModule         module;
--   >     const char*            pName;
--   >     const VkSpecializationInfo* pSpecializationInfo;
--   > } VkPipelineShaderStageCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineShaderStageCreateInfo VkPipelineShaderStageCreateInfo registry at www.khronos.org>
data VkPipelineShaderStageCreateInfo = VkPipelineShaderStageCreateInfo# Addr#
                                                                        ByteArray#

instance Eq VkPipelineShaderStageCreateInfo where
        (VkPipelineShaderStageCreateInfo# a _) ==
          x@(VkPipelineShaderStageCreateInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineShaderStageCreateInfo where
        (VkPipelineShaderStageCreateInfo# a _) `compare`
          x@(VkPipelineShaderStageCreateInfo# b _) = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineShaderStageCreateInfo where
        sizeOf ~_ = (48)
{-# LINE 7049 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 7053 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkPipelineShaderStageCreateInfo where
        unsafeAddr (VkPipelineShaderStageCreateInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineShaderStageCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineShaderStageCreateInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineShaderStageCreateInfo where
        type StructFields VkPipelineShaderStageCreateInfo =
             '["sType", "pNext", "flags", "stage", "module", "pName", -- ' closing tick for hsc2hs
               "pSpecializationInfo"]
        type CUnionType VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineShaderStageCreateInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineShaderStageCreateInfo where
        type FieldType "sType" VkPipelineShaderStageCreateInfo =
             VkStructureType
        type FieldOptional "sType" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkPipelineShaderStageCreateInfo =
             (0)
{-# LINE 7091 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 7099 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineShaderStageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 7106 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 7110 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineShaderStageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 7116 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineShaderStageCreateInfo where
        type FieldType "pNext" VkPipelineShaderStageCreateInfo = Ptr Void
        type FieldOptional "pNext" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkPipelineShaderStageCreateInfo =
             (8)
{-# LINE 7123 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 7131 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineShaderStageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 7138 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 7142 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineShaderStageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 7148 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkPipelineShaderStageCreateInfo where
        type FieldType "flags" VkPipelineShaderStageCreateInfo =
             VkPipelineShaderStageCreateFlags
        type FieldOptional "flags" VkPipelineShaderStageCreateInfo = 'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkPipelineShaderStageCreateInfo =
             (16)
{-# LINE 7156 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 7164 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkPipelineShaderStageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 7171 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 7175 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkPipelineShaderStageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 7181 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "stage" VkPipelineShaderStageCreateInfo where
        type FieldType "stage" VkPipelineShaderStageCreateInfo =
             VkShaderStageFlagBits
        type FieldOptional "stage" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "stage" VkPipelineShaderStageCreateInfo =
             (20)
{-# LINE 7189 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "stage" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 7197 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "stage" VkPipelineShaderStageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 7204 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 7208 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "stage" VkPipelineShaderStageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 7214 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "module" VkPipelineShaderStageCreateInfo where
        type FieldType "module" VkPipelineShaderStageCreateInfo =
             VkShaderModule
        type FieldOptional "module" VkPipelineShaderStageCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "module" VkPipelineShaderStageCreateInfo =
             (24)
{-# LINE 7223 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "module" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 7231 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "module" VkPipelineShaderStageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 7238 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 7242 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "module" VkPipelineShaderStageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 7248 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pName" VkPipelineShaderStageCreateInfo where
        type FieldType "pName" VkPipelineShaderStageCreateInfo = CString
        type FieldOptional "pName" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pName" VkPipelineShaderStageCreateInfo =
             (32)
{-# LINE 7255 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pName" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 7263 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pName" VkPipelineShaderStageCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 7270 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 7274 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pName" VkPipelineShaderStageCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 7280 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pSpecializationInfo" VkPipelineShaderStageCreateInfo
         where
        type FieldType "pSpecializationInfo"
               VkPipelineShaderStageCreateInfo
             = Ptr VkSpecializationInfo
        type FieldOptional "pSpecializationInfo"
               VkPipelineShaderStageCreateInfo
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "pSpecializationInfo"
               VkPipelineShaderStageCreateInfo
             =
             (40)
{-# LINE 7294 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pSpecializationInfo"
               VkPipelineShaderStageCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (40)
{-# LINE 7304 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pSpecializationInfo" VkPipelineShaderStageCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 7312 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (40)
{-# LINE 7316 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pSpecializationInfo" VkPipelineShaderStageCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 7323 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineShaderStageCreateInfo where
        showsPrec d x
          = showString "VkPipelineShaderStageCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "stage = " .
                                  showsPrec d (getField @"stage" x) .
                                    showString ", " .
                                      showString "module = " .
                                        showsPrec d (getField @"module" x) .
                                          showString ", " .
                                            showString "pName = " .
                                              showsPrec d (getField @"pName" x) .
                                                showString ", " .
                                                  showString "pSpecializationInfo = " .
                                                    showsPrec d (getField @"pSpecializationInfo" x)
                                                      . showChar '}'

-- | > typedef struct VkPipelineTessellationDomainOriginStateCreateInfo {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkTessellationDomainOrigin    domainOrigin;
--   > } VkPipelineTessellationDomainOriginStateCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfo registry at www.khronos.org>
data VkPipelineTessellationDomainOriginStateCreateInfo = VkPipelineTessellationDomainOriginStateCreateInfo# Addr#
                                                                                                            ByteArray#

instance Eq VkPipelineTessellationDomainOriginStateCreateInfo where
        (VkPipelineTessellationDomainOriginStateCreateInfo# a _) ==
          x@(VkPipelineTessellationDomainOriginStateCreateInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineTessellationDomainOriginStateCreateInfo
         where
        (VkPipelineTessellationDomainOriginStateCreateInfo# a _) `compare`
          x@(VkPipelineTessellationDomainOriginStateCreateInfo# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineTessellationDomainOriginStateCreateInfo
         where
        sizeOf ~_
          = (24)
{-# LINE 7378 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 7382 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim
           VkPipelineTessellationDomainOriginStateCreateInfo
         where
        unsafeAddr (VkPipelineTessellationDomainOriginStateCreateInfo# a _)
          = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray
          (VkPipelineTessellationDomainOriginStateCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineTessellationDomainOriginStateCreateInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal
           VkPipelineTessellationDomainOriginStateCreateInfo
         where
        type StructFields VkPipelineTessellationDomainOriginStateCreateInfo
             = '["sType", "pNext", "domainOrigin"] -- ' closing tick for hsc2hs
        type CUnionType VkPipelineTessellationDomainOriginStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineTessellationDomainOriginStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type StructExtends
               VkPipelineTessellationDomainOriginStateCreateInfo
             = '[VkPipelineTessellationStateCreateInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineTessellationDomainOriginStateCreateInfo
         where
        type FieldType "sType"
               VkPipelineTessellationDomainOriginStateCreateInfo
             = VkStructureType
        type FieldOptional "sType"
               VkPipelineTessellationDomainOriginStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType"
               VkPipelineTessellationDomainOriginStateCreateInfo
             =
             (0)
{-# LINE 7435 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType"
               VkPipelineTessellationDomainOriginStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 7445 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType"
           VkPipelineTessellationDomainOriginStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 7454 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 7458 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType"
           VkPipelineTessellationDomainOriginStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 7466 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineTessellationDomainOriginStateCreateInfo
         where
        type FieldType "pNext"
               VkPipelineTessellationDomainOriginStateCreateInfo
             = Ptr Void
        type FieldOptional "pNext"
               VkPipelineTessellationDomainOriginStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext"
               VkPipelineTessellationDomainOriginStateCreateInfo
             =
             (8)
{-# LINE 7480 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext"
               VkPipelineTessellationDomainOriginStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 7490 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext"
           VkPipelineTessellationDomainOriginStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 7499 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 7503 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext"
           VkPipelineTessellationDomainOriginStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 7511 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "domainOrigin"
           VkPipelineTessellationDomainOriginStateCreateInfo
         where
        type FieldType "domainOrigin"
               VkPipelineTessellationDomainOriginStateCreateInfo
             = VkTessellationDomainOrigin
        type FieldOptional "domainOrigin"
               VkPipelineTessellationDomainOriginStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "domainOrigin"
               VkPipelineTessellationDomainOriginStateCreateInfo
             =
             (16)
{-# LINE 7526 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "domainOrigin"
               VkPipelineTessellationDomainOriginStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 7536 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "domainOrigin"
           VkPipelineTessellationDomainOriginStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 7545 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 7549 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "domainOrigin"
           VkPipelineTessellationDomainOriginStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 7557 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineTessellationDomainOriginStateCreateInfo
         where
        showsPrec d x
          = showString "VkPipelineTessellationDomainOriginStateCreateInfo {"
              .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "domainOrigin = " .
                            showsPrec d (getField @"domainOrigin" x) . showChar '}'

-- | Alias for `VkPipelineTessellationDomainOriginStateCreateInfo`
type VkPipelineTessellationDomainOriginStateCreateInfoKHR =
     VkPipelineTessellationDomainOriginStateCreateInfo

-- | > typedef struct VkPipelineTessellationStateCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkPipelineTessellationStateCreateFlags    flags;
--   >     uint32_t               patchControlPoints;
--   > } VkPipelineTessellationStateCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineTessellationStateCreateInfo VkPipelineTessellationStateCreateInfo registry at www.khronos.org>
data VkPipelineTessellationStateCreateInfo = VkPipelineTessellationStateCreateInfo# Addr#
                                                                                    ByteArray#

instance Eq VkPipelineTessellationStateCreateInfo where
        (VkPipelineTessellationStateCreateInfo# a _) ==
          x@(VkPipelineTessellationStateCreateInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineTessellationStateCreateInfo where
        (VkPipelineTessellationStateCreateInfo# a _) `compare`
          x@(VkPipelineTessellationStateCreateInfo# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineTessellationStateCreateInfo where
        sizeOf ~_
          = (24)
{-# LINE 7604 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 7608 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkPipelineTessellationStateCreateInfo
         where
        unsafeAddr (VkPipelineTessellationStateCreateInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineTessellationStateCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineTessellationStateCreateInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineTessellationStateCreateInfo where
        type StructFields VkPipelineTessellationStateCreateInfo =
             '["sType", "pNext", "flags", "patchControlPoints"] -- ' closing tick for hsc2hs
        type CUnionType VkPipelineTessellationStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineTessellationStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineTessellationStateCreateInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineTessellationStateCreateInfo where
        type FieldType "sType" VkPipelineTessellationStateCreateInfo =
             VkStructureType
        type FieldOptional "sType" VkPipelineTessellationStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkPipelineTessellationStateCreateInfo =
             (0)
{-# LINE 7647 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType" VkPipelineTessellationStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 7656 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineTessellationStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 7663 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 7667 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineTessellationStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 7673 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineTessellationStateCreateInfo where
        type FieldType "pNext" VkPipelineTessellationStateCreateInfo =
             Ptr Void
        type FieldOptional "pNext" VkPipelineTessellationStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkPipelineTessellationStateCreateInfo =
             (8)
{-# LINE 7682 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext" VkPipelineTessellationStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 7691 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineTessellationStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 7698 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 7702 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineTessellationStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 7708 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkPipelineTessellationStateCreateInfo where
        type FieldType "flags" VkPipelineTessellationStateCreateInfo =
             VkPipelineTessellationStateCreateFlags
        type FieldOptional "flags" VkPipelineTessellationStateCreateInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkPipelineTessellationStateCreateInfo =
             (16)
{-# LINE 7717 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags" VkPipelineTessellationStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 7726 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkPipelineTessellationStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 7733 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 7737 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkPipelineTessellationStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 7743 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "patchControlPoints" VkPipelineTessellationStateCreateInfo
         where
        type FieldType "patchControlPoints"
               VkPipelineTessellationStateCreateInfo
             = Word32
        type FieldOptional "patchControlPoints"
               VkPipelineTessellationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "patchControlPoints"
               VkPipelineTessellationStateCreateInfo
             =
             (20)
{-# LINE 7757 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "patchControlPoints"
               VkPipelineTessellationStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 7767 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "patchControlPoints"
           VkPipelineTessellationStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 7776 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 7780 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "patchControlPoints"
           VkPipelineTessellationStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 7788 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineTessellationStateCreateInfo where
        showsPrec d x
          = showString "VkPipelineTessellationStateCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "patchControlPoints = " .
                                  showsPrec d (getField @"patchControlPoints" x) . showChar '}'

-- | > typedef struct VkPipelineVertexInputDivisorStateCreateInfoEXT {
--   >     VkStructureType sType;
--   >     const void*                         pNext;
--   >     uint32_t                            vertexBindingDivisorCount;
--   >     const VkVertexInputBindingDivisorDescriptionEXT*      pVertexBindingDivisors;
--   > } VkPipelineVertexInputDivisorStateCreateInfoEXT;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineVertexInputDivisorStateCreateInfoEXT VkPipelineVertexInputDivisorStateCreateInfoEXT registry at www.khronos.org>
data VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfoEXT# Addr#
                                                                                                      ByteArray#

instance Eq VkPipelineVertexInputDivisorStateCreateInfoEXT where
        (VkPipelineVertexInputDivisorStateCreateInfoEXT# a _) ==
          x@(VkPipelineVertexInputDivisorStateCreateInfoEXT# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineVertexInputDivisorStateCreateInfoEXT where
        (VkPipelineVertexInputDivisorStateCreateInfoEXT# a _) `compare`
          x@(VkPipelineVertexInputDivisorStateCreateInfoEXT# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineVertexInputDivisorStateCreateInfoEXT
         where
        sizeOf ~_
          = (32)
{-# LINE 7833 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 7837 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim
           VkPipelineVertexInputDivisorStateCreateInfoEXT
         where
        unsafeAddr (VkPipelineVertexInputDivisorStateCreateInfoEXT# a _)
          = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray
          (VkPipelineVertexInputDivisorStateCreateInfoEXT# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineVertexInputDivisorStateCreateInfoEXT#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal
           VkPipelineVertexInputDivisorStateCreateInfoEXT
         where
        type StructFields VkPipelineVertexInputDivisorStateCreateInfoEXT =
             '["sType", "pNext", "vertexBindingDivisorCount", -- ' closing tick for hsc2hs
               "pVertexBindingDivisors"]
        type CUnionType VkPipelineVertexInputDivisorStateCreateInfoEXT =
             'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineVertexInputDivisorStateCreateInfoEXT =
             'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineVertexInputDivisorStateCreateInfoEXT =
             '[VkPipelineVertexInputStateCreateInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineVertexInputDivisorStateCreateInfoEXT
         where
        type FieldType "sType"
               VkPipelineVertexInputDivisorStateCreateInfoEXT
             = VkStructureType
        type FieldOptional "sType"
               VkPipelineVertexInputDivisorStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType"
               VkPipelineVertexInputDivisorStateCreateInfoEXT
             =
             (0)
{-# LINE 7890 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType"
               VkPipelineVertexInputDivisorStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 7900 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineVertexInputDivisorStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 7908 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 7912 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType"
           VkPipelineVertexInputDivisorStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 7920 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineVertexInputDivisorStateCreateInfoEXT
         where
        type FieldType "pNext"
               VkPipelineVertexInputDivisorStateCreateInfoEXT
             = Ptr Void
        type FieldOptional "pNext"
               VkPipelineVertexInputDivisorStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext"
               VkPipelineVertexInputDivisorStateCreateInfoEXT
             =
             (8)
{-# LINE 7934 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext"
               VkPipelineVertexInputDivisorStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 7944 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineVertexInputDivisorStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 7952 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 7956 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext"
           VkPipelineVertexInputDivisorStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 7964 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "vertexBindingDivisorCount"
           VkPipelineVertexInputDivisorStateCreateInfoEXT
         where
        type FieldType "vertexBindingDivisorCount"
               VkPipelineVertexInputDivisorStateCreateInfoEXT
             = Word32
        type FieldOptional "vertexBindingDivisorCount"
               VkPipelineVertexInputDivisorStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "vertexBindingDivisorCount"
               VkPipelineVertexInputDivisorStateCreateInfoEXT
             =
             (16)
{-# LINE 7979 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "vertexBindingDivisorCount"
               VkPipelineVertexInputDivisorStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 7989 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "vertexBindingDivisorCount"
           VkPipelineVertexInputDivisorStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 7998 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 8002 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "vertexBindingDivisorCount"
           VkPipelineVertexInputDivisorStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 8010 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pVertexBindingDivisors"
           VkPipelineVertexInputDivisorStateCreateInfoEXT
         where
        type FieldType "pVertexBindingDivisors"
               VkPipelineVertexInputDivisorStateCreateInfoEXT
             = Ptr VkVertexInputBindingDivisorDescriptionEXT
        type FieldOptional "pVertexBindingDivisors"
               VkPipelineVertexInputDivisorStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pVertexBindingDivisors"
               VkPipelineVertexInputDivisorStateCreateInfoEXT
             =
             (24)
{-# LINE 8025 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pVertexBindingDivisors"
               VkPipelineVertexInputDivisorStateCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 8035 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pVertexBindingDivisors"
           VkPipelineVertexInputDivisorStateCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 8044 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 8048 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pVertexBindingDivisors"
           VkPipelineVertexInputDivisorStateCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 8056 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineVertexInputDivisorStateCreateInfoEXT where
        showsPrec d x
          = showString "VkPipelineVertexInputDivisorStateCreateInfoEXT {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "vertexBindingDivisorCount = " .
                            showsPrec d (getField @"vertexBindingDivisorCount" x) .
                              showString ", " .
                                showString "pVertexBindingDivisors = " .
                                  showsPrec d (getField @"pVertexBindingDivisors" x) . showChar '}'

-- | > typedef struct VkPipelineVertexInputStateCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkPipelineVertexInputStateCreateFlags    flags;
--   >     uint32_t               vertexBindingDescriptionCount;
--   >     const VkVertexInputBindingDescription* pVertexBindingDescriptions;
--   >     uint32_t               vertexAttributeDescriptionCount;
--   >     const VkVertexInputAttributeDescription* pVertexAttributeDescriptions;
--   > } VkPipelineVertexInputStateCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineVertexInputStateCreateInfo VkPipelineVertexInputStateCreateInfo registry at www.khronos.org>
data VkPipelineVertexInputStateCreateInfo = VkPipelineVertexInputStateCreateInfo# Addr#
                                                                                  ByteArray#

instance Eq VkPipelineVertexInputStateCreateInfo where
        (VkPipelineVertexInputStateCreateInfo# a _) ==
          x@(VkPipelineVertexInputStateCreateInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineVertexInputStateCreateInfo where
        (VkPipelineVertexInputStateCreateInfo# a _) `compare`
          x@(VkPipelineVertexInputStateCreateInfo# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineVertexInputStateCreateInfo where
        sizeOf ~_
          = (48)
{-# LINE 8103 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 8107 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkPipelineVertexInputStateCreateInfo
         where
        unsafeAddr (VkPipelineVertexInputStateCreateInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineVertexInputStateCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineVertexInputStateCreateInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineVertexInputStateCreateInfo where
        type StructFields VkPipelineVertexInputStateCreateInfo =
             '["sType", "pNext", "flags", "vertexBindingDescriptionCount", -- ' closing tick for hsc2hs
               "pVertexBindingDescriptions", "vertexAttributeDescriptionCount",
               "pVertexAttributeDescriptions"]
        type CUnionType VkPipelineVertexInputStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineVertexInputStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineVertexInputStateCreateInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineVertexInputStateCreateInfo where
        type FieldType "sType" VkPipelineVertexInputStateCreateInfo =
             VkStructureType
        type FieldOptional "sType" VkPipelineVertexInputStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkPipelineVertexInputStateCreateInfo =
             (0)
{-# LINE 8148 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType" VkPipelineVertexInputStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 8157 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineVertexInputStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 8164 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 8168 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineVertexInputStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 8174 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineVertexInputStateCreateInfo where
        type FieldType "pNext" VkPipelineVertexInputStateCreateInfo =
             Ptr Void
        type FieldOptional "pNext" VkPipelineVertexInputStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkPipelineVertexInputStateCreateInfo =
             (8)
{-# LINE 8183 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext" VkPipelineVertexInputStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 8192 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineVertexInputStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 8199 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 8203 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineVertexInputStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 8209 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkPipelineVertexInputStateCreateInfo where
        type FieldType "flags" VkPipelineVertexInputStateCreateInfo =
             VkPipelineVertexInputStateCreateFlags
        type FieldOptional "flags" VkPipelineVertexInputStateCreateInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkPipelineVertexInputStateCreateInfo =
             (16)
{-# LINE 8218 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags" VkPipelineVertexInputStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 8227 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkPipelineVertexInputStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 8234 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 8238 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkPipelineVertexInputStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 8244 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "vertexBindingDescriptionCount"
           VkPipelineVertexInputStateCreateInfo
         where
        type FieldType "vertexBindingDescriptionCount"
               VkPipelineVertexInputStateCreateInfo
             = Word32
        type FieldOptional "vertexBindingDescriptionCount"
               VkPipelineVertexInputStateCreateInfo
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "vertexBindingDescriptionCount"
               VkPipelineVertexInputStateCreateInfo
             =
             (20)
{-# LINE 8259 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "vertexBindingDescriptionCount"
               VkPipelineVertexInputStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 8269 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "vertexBindingDescriptionCount"
           VkPipelineVertexInputStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 8278 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 8282 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "vertexBindingDescriptionCount"
           VkPipelineVertexInputStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 8290 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pVertexBindingDescriptions"
           VkPipelineVertexInputStateCreateInfo
         where
        type FieldType "pVertexBindingDescriptions"
               VkPipelineVertexInputStateCreateInfo
             = Ptr VkVertexInputBindingDescription
        type FieldOptional "pVertexBindingDescriptions"
               VkPipelineVertexInputStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pVertexBindingDescriptions"
               VkPipelineVertexInputStateCreateInfo
             =
             (24)
{-# LINE 8305 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pVertexBindingDescriptions"
               VkPipelineVertexInputStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 8315 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pVertexBindingDescriptions"
           VkPipelineVertexInputStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 8324 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 8328 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pVertexBindingDescriptions"
           VkPipelineVertexInputStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 8336 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "vertexAttributeDescriptionCount"
           VkPipelineVertexInputStateCreateInfo
         where
        type FieldType "vertexAttributeDescriptionCount"
               VkPipelineVertexInputStateCreateInfo
             = Word32
        type FieldOptional "vertexAttributeDescriptionCount"
               VkPipelineVertexInputStateCreateInfo
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "vertexAttributeDescriptionCount"
               VkPipelineVertexInputStateCreateInfo
             =
             (32)
{-# LINE 8351 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "vertexAttributeDescriptionCount"
               VkPipelineVertexInputStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 8361 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "vertexAttributeDescriptionCount"
           VkPipelineVertexInputStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 8370 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 8374 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "vertexAttributeDescriptionCount"
           VkPipelineVertexInputStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 8382 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pVertexAttributeDescriptions"
           VkPipelineVertexInputStateCreateInfo
         where
        type FieldType "pVertexAttributeDescriptions"
               VkPipelineVertexInputStateCreateInfo
             = Ptr VkVertexInputAttributeDescription
        type FieldOptional "pVertexAttributeDescriptions"
               VkPipelineVertexInputStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pVertexAttributeDescriptions"
               VkPipelineVertexInputStateCreateInfo
             =
             (40)
{-# LINE 8397 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pVertexAttributeDescriptions"
               VkPipelineVertexInputStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (40)
{-# LINE 8407 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pVertexAttributeDescriptions"
           VkPipelineVertexInputStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 8416 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (40)
{-# LINE 8420 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pVertexAttributeDescriptions"
           VkPipelineVertexInputStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 8428 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineVertexInputStateCreateInfo where
        showsPrec d x
          = showString "VkPipelineVertexInputStateCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "vertexBindingDescriptionCount = " .
                                  showsPrec d (getField @"vertexBindingDescriptionCount" x) .
                                    showString ", " .
                                      showString "pVertexBindingDescriptions = " .
                                        showsPrec d (getField @"pVertexBindingDescriptions" x) .
                                          showString ", " .
                                            showString "vertexAttributeDescriptionCount = " .
                                              showsPrec d
                                                (getField @"vertexAttributeDescriptionCount" x)
                                                .
                                                showString ", " .
                                                  showString "pVertexAttributeDescriptions = " .
                                                    showsPrec d
                                                      (getField @"pVertexAttributeDescriptions" x)
                                                      . showChar '}'

-- | > typedef struct VkPipelineViewportStateCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkPipelineViewportStateCreateFlags    flags;
--   >     uint32_t               viewportCount;
--   >     const VkViewport*      pViewports;
--   >     uint32_t               scissorCount;
--   >     const VkRect2D*        pScissors;
--   > } VkPipelineViewportStateCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineViewportStateCreateInfo VkPipelineViewportStateCreateInfo registry at www.khronos.org>
data VkPipelineViewportStateCreateInfo = VkPipelineViewportStateCreateInfo# Addr#
                                                                            ByteArray#

instance Eq VkPipelineViewportStateCreateInfo where
        (VkPipelineViewportStateCreateInfo# a _) ==
          x@(VkPipelineViewportStateCreateInfo# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineViewportStateCreateInfo where
        (VkPipelineViewportStateCreateInfo# a _) `compare`
          x@(VkPipelineViewportStateCreateInfo# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineViewportStateCreateInfo where
        sizeOf ~_ = (48)
{-# LINE 8487 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 8491 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkPipelineViewportStateCreateInfo where
        unsafeAddr (VkPipelineViewportStateCreateInfo# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineViewportStateCreateInfo# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineViewportStateCreateInfo#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineViewportStateCreateInfo where
        type StructFields VkPipelineViewportStateCreateInfo =
             '["sType", "pNext", "flags", "viewportCount", "pViewports", -- ' closing tick for hsc2hs
               "scissorCount", "pScissors"]
        type CUnionType VkPipelineViewportStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineViewportStateCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineViewportStateCreateInfo = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineViewportStateCreateInfo where
        type FieldType "sType" VkPipelineViewportStateCreateInfo =
             VkStructureType
        type FieldOptional "sType" VkPipelineViewportStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkPipelineViewportStateCreateInfo =
             (0)
{-# LINE 8530 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType" VkPipelineViewportStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 8539 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineViewportStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 8546 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 8550 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineViewportStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 8556 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineViewportStateCreateInfo where
        type FieldType "pNext" VkPipelineViewportStateCreateInfo = Ptr Void
        type FieldOptional "pNext" VkPipelineViewportStateCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkPipelineViewportStateCreateInfo =
             (8)
{-# LINE 8564 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext" VkPipelineViewportStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 8573 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineViewportStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 8580 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 8584 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineViewportStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 8590 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkPipelineViewportStateCreateInfo where
        type FieldType "flags" VkPipelineViewportStateCreateInfo =
             VkPipelineViewportStateCreateFlags
        type FieldOptional "flags" VkPipelineViewportStateCreateInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkPipelineViewportStateCreateInfo =
             (16)
{-# LINE 8599 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags" VkPipelineViewportStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 8608 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkPipelineViewportStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 8615 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 8619 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkPipelineViewportStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 8625 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "viewportCount" VkPipelineViewportStateCreateInfo where
        type FieldType "viewportCount" VkPipelineViewportStateCreateInfo =
             Word32
        type FieldOptional "viewportCount"
               VkPipelineViewportStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "viewportCount" VkPipelineViewportStateCreateInfo
             =
             (20)
{-# LINE 8636 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "viewportCount" VkPipelineViewportStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 8645 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "viewportCount" VkPipelineViewportStateCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 8653 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 8657 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "viewportCount" VkPipelineViewportStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 8664 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pViewports" VkPipelineViewportStateCreateInfo where
        type FieldType "pViewports" VkPipelineViewportStateCreateInfo =
             Ptr VkViewport
        type FieldOptional "pViewports" VkPipelineViewportStateCreateInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "pViewports" VkPipelineViewportStateCreateInfo =
             (24)
{-# LINE 8673 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pViewports" VkPipelineViewportStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 8682 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pViewports" VkPipelineViewportStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 8689 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 8693 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pViewports" VkPipelineViewportStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 8699 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "scissorCount" VkPipelineViewportStateCreateInfo where
        type FieldType "scissorCount" VkPipelineViewportStateCreateInfo =
             Word32
        type FieldOptional "scissorCount" VkPipelineViewportStateCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "scissorCount" VkPipelineViewportStateCreateInfo =
             (32)
{-# LINE 8708 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "scissorCount" VkPipelineViewportStateCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 8717 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "scissorCount" VkPipelineViewportStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 8724 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 8728 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "scissorCount" VkPipelineViewportStateCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 8735 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pScissors" VkPipelineViewportStateCreateInfo where
        type FieldType "pScissors" VkPipelineViewportStateCreateInfo =
             Ptr VkRect2D
        type FieldOptional "pScissors" VkPipelineViewportStateCreateInfo =
             'True -- ' closing tick for hsc2hs
        type FieldOffset "pScissors" VkPipelineViewportStateCreateInfo =
             (40)
{-# LINE 8744 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pScissors" VkPipelineViewportStateCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (40)
{-# LINE 8753 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pScissors" VkPipelineViewportStateCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 8760 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (40)
{-# LINE 8764 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pScissors" VkPipelineViewportStateCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 8770 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineViewportStateCreateInfo where
        showsPrec d x
          = showString "VkPipelineViewportStateCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "viewportCount = " .
                                  showsPrec d (getField @"viewportCount" x) .
                                    showString ", " .
                                      showString "pViewports = " .
                                        showsPrec d (getField @"pViewports" x) .
                                          showString ", " .
                                            showString "scissorCount = " .
                                              showsPrec d (getField @"scissorCount" x) .
                                                showString ", " .
                                                  showString "pScissors = " .
                                                    showsPrec d (getField @"pScissors" x) .
                                                      showChar '}'

-- | > typedef struct VkPipelineViewportSwizzleStateCreateInfoNV {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkPipelineViewportSwizzleStateCreateFlagsNV    flags;
--   >     uint32_t               viewportCount;
--   >     const VkViewportSwizzleNV*      pViewportSwizzles;
--   > } VkPipelineViewportSwizzleStateCreateInfoNV;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineViewportSwizzleStateCreateInfoNV VkPipelineViewportSwizzleStateCreateInfoNV registry at www.khronos.org>
data VkPipelineViewportSwizzleStateCreateInfoNV = VkPipelineViewportSwizzleStateCreateInfoNV# Addr#
                                                                                              ByteArray#

instance Eq VkPipelineViewportSwizzleStateCreateInfoNV where
        (VkPipelineViewportSwizzleStateCreateInfoNV# a _) ==
          x@(VkPipelineViewportSwizzleStateCreateInfoNV# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineViewportSwizzleStateCreateInfoNV where
        (VkPipelineViewportSwizzleStateCreateInfoNV# a _) `compare`
          x@(VkPipelineViewportSwizzleStateCreateInfoNV# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineViewportSwizzleStateCreateInfoNV where
        sizeOf ~_
          = (32)
{-# LINE 8825 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 8829 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim
           VkPipelineViewportSwizzleStateCreateInfoNV
         where
        unsafeAddr (VkPipelineViewportSwizzleStateCreateInfoNV# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineViewportSwizzleStateCreateInfoNV# _ b)
          = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineViewportSwizzleStateCreateInfoNV#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineViewportSwizzleStateCreateInfoNV
         where
        type StructFields VkPipelineViewportSwizzleStateCreateInfoNV =
             '["sType", "pNext", "flags", "viewportCount", "pViewportSwizzles"] -- ' closing tick for hsc2hs
        type CUnionType VkPipelineViewportSwizzleStateCreateInfoNV = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineViewportSwizzleStateCreateInfoNV =
             'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineViewportSwizzleStateCreateInfoNV =
             '[VkPipelineViewportStateCreateInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineViewportSwizzleStateCreateInfoNV where
        type FieldType "sType" VkPipelineViewportSwizzleStateCreateInfoNV =
             VkStructureType
        type FieldOptional "sType"
               VkPipelineViewportSwizzleStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkPipelineViewportSwizzleStateCreateInfoNV
             =
             (0)
{-# LINE 8875 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType"
               VkPipelineViewportSwizzleStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 8885 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineViewportSwizzleStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 8893 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 8897 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineViewportSwizzleStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 8904 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineViewportSwizzleStateCreateInfoNV where
        type FieldType "pNext" VkPipelineViewportSwizzleStateCreateInfoNV =
             Ptr Void
        type FieldOptional "pNext"
               VkPipelineViewportSwizzleStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkPipelineViewportSwizzleStateCreateInfoNV
             =
             (8)
{-# LINE 8915 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext"
               VkPipelineViewportSwizzleStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 8925 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineViewportSwizzleStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 8933 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 8937 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineViewportSwizzleStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 8944 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkPipelineViewportSwizzleStateCreateInfoNV where
        type FieldType "flags" VkPipelineViewportSwizzleStateCreateInfoNV =
             VkPipelineViewportSwizzleStateCreateFlagsNV
        type FieldOptional "flags"
               VkPipelineViewportSwizzleStateCreateInfoNV
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkPipelineViewportSwizzleStateCreateInfoNV
             =
             (16)
{-# LINE 8955 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "flags"
               VkPipelineViewportSwizzleStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 8965 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkPipelineViewportSwizzleStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 8973 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 8977 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkPipelineViewportSwizzleStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 8984 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "viewportCount" VkPipelineViewportSwizzleStateCreateInfoNV
         where
        type FieldType "viewportCount"
               VkPipelineViewportSwizzleStateCreateInfoNV
             = Word32
        type FieldOptional "viewportCount"
               VkPipelineViewportSwizzleStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "viewportCount"
               VkPipelineViewportSwizzleStateCreateInfoNV
             =
             (20)
{-# LINE 8998 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "viewportCount"
               VkPipelineViewportSwizzleStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 9008 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "viewportCount"
           VkPipelineViewportSwizzleStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 9017 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 9021 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "viewportCount"
           VkPipelineViewportSwizzleStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 9029 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pViewportSwizzles"
           VkPipelineViewportSwizzleStateCreateInfoNV
         where
        type FieldType "pViewportSwizzles"
               VkPipelineViewportSwizzleStateCreateInfoNV
             = Ptr VkViewportSwizzleNV
        type FieldOptional "pViewportSwizzles"
               VkPipelineViewportSwizzleStateCreateInfoNV
             = 'True -- ' closing tick for hsc2hs
        type FieldOffset "pViewportSwizzles"
               VkPipelineViewportSwizzleStateCreateInfoNV
             =
             (24)
{-# LINE 9044 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pViewportSwizzles"
               VkPipelineViewportSwizzleStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = True

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 9054 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pViewportSwizzles"
           VkPipelineViewportSwizzleStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 9063 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 9067 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pViewportSwizzles"
           VkPipelineViewportSwizzleStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 9075 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineViewportSwizzleStateCreateInfoNV where
        showsPrec d x
          = showString "VkPipelineViewportSwizzleStateCreateInfoNV {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "flags = " .
                            showsPrec d (getField @"flags" x) .
                              showString ", " .
                                showString "viewportCount = " .
                                  showsPrec d (getField @"viewportCount" x) .
                                    showString ", " .
                                      showString "pViewportSwizzles = " .
                                        showsPrec d (getField @"pViewportSwizzles" x) . showChar '}'

-- | > typedef struct VkPipelineViewportWScalingStateCreateInfoNV {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkBool32               viewportWScalingEnable;
--   >     uint32_t               viewportCount;
--   >     const VkViewportWScalingNV*      pViewportWScalings;
--   > } VkPipelineViewportWScalingStateCreateInfoNV;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineViewportWScalingStateCreateInfoNV VkPipelineViewportWScalingStateCreateInfoNV registry at www.khronos.org>
data VkPipelineViewportWScalingStateCreateInfoNV = VkPipelineViewportWScalingStateCreateInfoNV# Addr#
                                                                                                ByteArray#

instance Eq VkPipelineViewportWScalingStateCreateInfoNV where
        (VkPipelineViewportWScalingStateCreateInfoNV# a _) ==
          x@(VkPipelineViewportWScalingStateCreateInfoNV# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkPipelineViewportWScalingStateCreateInfoNV where
        (VkPipelineViewportWScalingStateCreateInfoNV# a _) `compare`
          x@(VkPipelineViewportWScalingStateCreateInfoNV# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkPipelineViewportWScalingStateCreateInfoNV where
        sizeOf ~_
          = (32)
{-# LINE 9123 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 9127 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim
           VkPipelineViewportWScalingStateCreateInfoNV
         where
        unsafeAddr (VkPipelineViewportWScalingStateCreateInfoNV# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkPipelineViewportWScalingStateCreateInfoNV# _ b)
          = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkPipelineViewportWScalingStateCreateInfoNV#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkPipelineViewportWScalingStateCreateInfoNV
         where
        type StructFields VkPipelineViewportWScalingStateCreateInfoNV =
             '["sType", "pNext", "viewportWScalingEnable", "viewportCount", -- ' closing tick for hsc2hs
               "pViewportWScalings"]
        type CUnionType VkPipelineViewportWScalingStateCreateInfoNV =
             'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkPipelineViewportWScalingStateCreateInfoNV =
             'False -- ' closing tick for hsc2hs
        type StructExtends VkPipelineViewportWScalingStateCreateInfoNV =
             '[VkPipelineViewportStateCreateInfo] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkPipelineViewportWScalingStateCreateInfoNV where
        type FieldType "sType" VkPipelineViewportWScalingStateCreateInfoNV
             = VkStructureType
        type FieldOptional "sType"
               VkPipelineViewportWScalingStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType"
               VkPipelineViewportWScalingStateCreateInfoNV
             =
             (0)
{-# LINE 9176 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "sType"
               VkPipelineViewportWScalingStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 9186 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkPipelineViewportWScalingStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 9194 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 9198 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkPipelineViewportWScalingStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 9205 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkPipelineViewportWScalingStateCreateInfoNV where
        type FieldType "pNext" VkPipelineViewportWScalingStateCreateInfoNV
             = Ptr Void
        type FieldOptional "pNext"
               VkPipelineViewportWScalingStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext"
               VkPipelineViewportWScalingStateCreateInfoNV
             =
             (8)
{-# LINE 9217 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pNext"
               VkPipelineViewportWScalingStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 9227 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkPipelineViewportWScalingStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 9235 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 9239 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkPipelineViewportWScalingStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 9246 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "viewportWScalingEnable"
           VkPipelineViewportWScalingStateCreateInfoNV
         where
        type FieldType "viewportWScalingEnable"
               VkPipelineViewportWScalingStateCreateInfoNV
             = VkBool32
        type FieldOptional "viewportWScalingEnable"
               VkPipelineViewportWScalingStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "viewportWScalingEnable"
               VkPipelineViewportWScalingStateCreateInfoNV
             =
             (16)
{-# LINE 9261 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "viewportWScalingEnable"
               VkPipelineViewportWScalingStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 9271 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "viewportWScalingEnable"
           VkPipelineViewportWScalingStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 9280 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 9284 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "viewportWScalingEnable"
           VkPipelineViewportWScalingStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 9292 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "viewportCount"
           VkPipelineViewportWScalingStateCreateInfoNV
         where
        type FieldType "viewportCount"
               VkPipelineViewportWScalingStateCreateInfoNV
             = Word32
        type FieldOptional "viewportCount"
               VkPipelineViewportWScalingStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "viewportCount"
               VkPipelineViewportWScalingStateCreateInfoNV
             =
             (20)
{-# LINE 9307 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "viewportCount"
               VkPipelineViewportWScalingStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (20)
{-# LINE 9317 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "viewportCount"
           VkPipelineViewportWScalingStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 9326 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (20)
{-# LINE 9330 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "viewportCount"
           VkPipelineViewportWScalingStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 9338 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pViewportWScalings"
           VkPipelineViewportWScalingStateCreateInfoNV
         where
        type FieldType "pViewportWScalings"
               VkPipelineViewportWScalingStateCreateInfoNV
             = Ptr VkViewportWScalingNV
        type FieldOptional "pViewportWScalings"
               VkPipelineViewportWScalingStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pViewportWScalings"
               VkPipelineViewportWScalingStateCreateInfoNV
             =
             (24)
{-# LINE 9353 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}
        type FieldIsArray "pViewportWScalings"
               VkPipelineViewportWScalingStateCreateInfoNV
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 9363 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pViewportWScalings"
           VkPipelineViewportWScalingStateCreateInfoNV
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 9372 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 9376 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pViewportWScalings"
           VkPipelineViewportWScalingStateCreateInfoNV
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 9384 "src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc" #-}

instance Show VkPipelineViewportWScalingStateCreateInfoNV where
        showsPrec d x
          = showString "VkPipelineViewportWScalingStateCreateInfoNV {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "viewportWScalingEnable = " .
                            showsPrec d (getField @"viewportWScalingEnable" x) .
                              showString ", " .
                                showString "viewportCount = " .
                                  showsPrec d (getField @"viewportCount" x) .
                                    showString ", " .
                                      showString "pViewportWScalings = " .
                                        showsPrec d (getField @"pViewportWScalings" x) .
                                          showChar '}'