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

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

{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MagicHash             #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeApplications      #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Sampler
       (VkSamplerCreateInfo(..), VkSamplerReductionModeCreateInfoEXT(..),
        VkSamplerYcbcrConversionCreateInfo(..),
        VkSamplerYcbcrConversionCreateInfoKHR,
        VkSamplerYcbcrConversionImageFormatProperties(..),
        VkSamplerYcbcrConversionImageFormatPropertiesKHR,
        VkSamplerYcbcrConversionInfo(..), VkSamplerYcbcrConversionInfoKHR)
       where
import           Foreign.Storable                              (Storable (..))
import           GHC.Base                                      (Addr#,
                                                                ByteArray#,
                                                                byteArrayContents#,
                                                                plusAddr#)
import           Graphics.Vulkan.Marshal
import           Graphics.Vulkan.Marshal.Internal
import           Graphics.Vulkan.Types.BaseTypes               (VkBool32)
import           Graphics.Vulkan.Types.Bitmasks                (VkSamplerCreateFlags)
import           Graphics.Vulkan.Types.Enum.BorderColor        (VkBorderColor)
import           Graphics.Vulkan.Types.Enum.ChromaLocation     (VkChromaLocation)
import           Graphics.Vulkan.Types.Enum.CompareOp          (VkCompareOp)
import           Graphics.Vulkan.Types.Enum.Filter             (VkFilter)
import           Graphics.Vulkan.Types.Enum.Format             (VkFormat)
import           Graphics.Vulkan.Types.Enum.Sampler            (VkSamplerAddressMode,
                                                                VkSamplerMipmapMode,
                                                                VkSamplerReductionModeEXT,
                                                                VkSamplerYcbcrModelConversion,
                                                                VkSamplerYcbcrRange)
import           Graphics.Vulkan.Types.Enum.StructureType      (VkStructureType)
import           Graphics.Vulkan.Types.Handles                 (VkSamplerYcbcrConversion)
import           Graphics.Vulkan.Types.Struct.ComponentMapping (VkComponentMapping)
import           Graphics.Vulkan.Types.Struct.Image            (VkImageFormatProperties2,
                                                                VkImageViewCreateInfo)
import           System.IO.Unsafe                              (unsafeDupablePerformIO)

-- | > typedef struct VkSamplerCreateInfo {
--   >     VkStructureType sType;
--   >     const void*            pNext;
--   >     VkSamplerCreateFlags   flags;
--   >     VkFilter               magFilter;
--   >     VkFilter               minFilter;
--   >     VkSamplerMipmapMode    mipmapMode;
--   >     VkSamplerAddressMode   addressModeU;
--   >     VkSamplerAddressMode   addressModeV;
--   >     VkSamplerAddressMode   addressModeW;
--   >     float                  mipLodBias;
--   >     VkBool32               anisotropyEnable;
--   >     float                  maxAnisotropy;
--   >     VkBool32               compareEnable;
--   >     VkCompareOp            compareOp;
--   >     float                  minLod;
--   >     float                  maxLod;
--   >     VkBorderColor          borderColor;
--   >     VkBool32               unnormalizedCoordinates;
--   > } VkSamplerCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerCreateInfo VkSamplerCreateInfo registry at www.khronos.org>
data VkSamplerCreateInfo = VkSamplerCreateInfo# Addr# ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

instance Storable VkSamplerCreateInfo where
        sizeOf ~_ = (80)
{-# LINE 82 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkSamplerCreateInfo where
        type StructFields VkSamplerCreateInfo =
             '["sType", "pNext", "flags", "magFilter", "minFilter", -- ' closing tick for hsc2hs
               "mipmapMode", "addressModeU", "addressModeV", "addressModeW",
               "mipLodBias", "anisotropyEnable", "maxAnisotropy", "compareEnable",
               "compareOp", "minLod", "maxLod", "borderColor",
               "unnormalizedCoordinates"]
        type CUnionType VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkSamplerCreateInfo = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = True

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "magFilter" VkSamplerCreateInfo where
        type FieldType "magFilter" VkSamplerCreateInfo = VkFilter
        type FieldOptional "magFilter" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "magFilter" VkSamplerCreateInfo =
             (20)
{-# LINE 216 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "magFilter" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "magFilter" VkSamplerCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 230 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "magFilter" VkSamplerCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 240 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "minFilter" VkSamplerCreateInfo where
        type FieldType "minFilter" VkSamplerCreateInfo = VkFilter
        type FieldOptional "minFilter" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "minFilter" VkSamplerCreateInfo =
             (24)
{-# LINE 247 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "minFilter" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "minFilter" VkSamplerCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 261 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "minFilter" VkSamplerCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 271 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "mipmapMode" VkSamplerCreateInfo where
        type FieldType "mipmapMode" VkSamplerCreateInfo =
             VkSamplerMipmapMode
        type FieldOptional "mipmapMode" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "mipmapMode" VkSamplerCreateInfo =
             (28)
{-# LINE 279 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "mipmapMode" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "mipmapMode" VkSamplerCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (28))
{-# LINE 293 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "mipmapMode" VkSamplerCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (28)
{-# LINE 303 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "addressModeU" VkSamplerCreateInfo where
        type FieldType "addressModeU" VkSamplerCreateInfo =
             VkSamplerAddressMode
        type FieldOptional "addressModeU" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "addressModeU" VkSamplerCreateInfo =
             (32)
{-# LINE 311 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "addressModeU" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "addressModeU" VkSamplerCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 326 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "addressModeU" VkSamplerCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 336 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "addressModeV" VkSamplerCreateInfo where
        type FieldType "addressModeV" VkSamplerCreateInfo =
             VkSamplerAddressMode
        type FieldOptional "addressModeV" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "addressModeV" VkSamplerCreateInfo =
             (36)
{-# LINE 344 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "addressModeV" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "addressModeV" VkSamplerCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (36))
{-# LINE 359 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "addressModeV" VkSamplerCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (36)
{-# LINE 369 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "addressModeW" VkSamplerCreateInfo where
        type FieldType "addressModeW" VkSamplerCreateInfo =
             VkSamplerAddressMode
        type FieldOptional "addressModeW" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "addressModeW" VkSamplerCreateInfo =
             (40)
{-# LINE 377 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "addressModeW" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "addressModeW" VkSamplerCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 392 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "addressModeW" VkSamplerCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 402 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "mipLodBias" VkSamplerCreateInfo where
        type FieldType "mipLodBias" VkSamplerCreateInfo =
             Float
{-# LINE 407 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldOptional "mipLodBias" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "mipLodBias" VkSamplerCreateInfo =
             (44)
{-# LINE 410 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "mipLodBias" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "mipLodBias" VkSamplerCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (44))
{-# LINE 424 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "mipLodBias" VkSamplerCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (44)
{-# LINE 434 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "anisotropyEnable" VkSamplerCreateInfo where
        type FieldType "anisotropyEnable" VkSamplerCreateInfo = VkBool32
        type FieldOptional "anisotropyEnable" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "anisotropyEnable" VkSamplerCreateInfo =
             (48)
{-# LINE 441 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "anisotropyEnable" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "anisotropyEnable" VkSamplerCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 456 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "anisotropyEnable" VkSamplerCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 466 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "maxAnisotropy" VkSamplerCreateInfo where
        type FieldType "maxAnisotropy" VkSamplerCreateInfo =
             Float
{-# LINE 471 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldOptional "maxAnisotropy" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "maxAnisotropy" VkSamplerCreateInfo =
             (52)
{-# LINE 474 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "maxAnisotropy" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxAnisotropy" VkSamplerCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (52))
{-# LINE 489 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxAnisotropy" VkSamplerCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (52)
{-# LINE 499 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "compareEnable" VkSamplerCreateInfo where
        type FieldType "compareEnable" VkSamplerCreateInfo = VkBool32
        type FieldOptional "compareEnable" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "compareEnable" VkSamplerCreateInfo =
             (56)
{-# LINE 506 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "compareEnable" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "compareEnable" VkSamplerCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (56))
{-# LINE 521 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "compareEnable" VkSamplerCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (56)
{-# LINE 531 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "compareOp" VkSamplerCreateInfo where
        type FieldType "compareOp" VkSamplerCreateInfo = VkCompareOp
        type FieldOptional "compareOp" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "compareOp" VkSamplerCreateInfo =
             (60)
{-# LINE 538 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "compareOp" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (60)
{-# LINE 545 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "compareOp" VkSamplerCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (60))
{-# LINE 552 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (60)
{-# LINE 556 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "compareOp" VkSamplerCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (60)
{-# LINE 562 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-} HasField "minLod" VkSamplerCreateInfo
         where
        type FieldType "minLod" VkSamplerCreateInfo =
             Float
{-# LINE 567 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldOptional "minLod" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "minLod" VkSamplerCreateInfo =
             (64)
{-# LINE 570 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "minLod" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "minLod" VkSamplerCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (64))
{-# LINE 584 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "minLod" VkSamplerCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (64)
{-# LINE 594 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-} HasField "maxLod" VkSamplerCreateInfo
         where
        type FieldType "maxLod" VkSamplerCreateInfo =
             Float
{-# LINE 599 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldOptional "maxLod" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "maxLod" VkSamplerCreateInfo =
             (68)
{-# LINE 602 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "maxLod" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "maxLod" VkSamplerCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (68))
{-# LINE 616 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "maxLod" VkSamplerCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (68)
{-# LINE 626 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "borderColor" VkSamplerCreateInfo where
        type FieldType "borderColor" VkSamplerCreateInfo = VkBorderColor
        type FieldOptional "borderColor" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
        type FieldOffset "borderColor" VkSamplerCreateInfo =
             (72)
{-# LINE 633 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "borderColor" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "borderColor" VkSamplerCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (72))
{-# LINE 648 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "borderColor" VkSamplerCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (72)
{-# LINE 658 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "unnormalizedCoordinates" VkSamplerCreateInfo where
        type FieldType "unnormalizedCoordinates" VkSamplerCreateInfo =
             VkBool32
        type FieldOptional "unnormalizedCoordinates" VkSamplerCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "unnormalizedCoordinates" VkSamplerCreateInfo =
             (76)
{-# LINE 667 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "unnormalizedCoordinates" VkSamplerCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (76)
{-# LINE 676 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "unnormalizedCoordinates" VkSamplerCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (76))
{-# LINE 683 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (76)
{-# LINE 687 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "unnormalizedCoordinates" VkSamplerCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (76)
{-# LINE 693 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance Show VkSamplerCreateInfo where
        showsPrec d x
          = showString "VkSamplerCreateInfo {" .
              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 "magFilter = " .
                                  showsPrec d (getField @"magFilter" x) .
                                    showString ", " .
                                      showString "minFilter = " .
                                        showsPrec d (getField @"minFilter" x) .
                                          showString ", " .
                                            showString "mipmapMode = " .
                                              showsPrec d (getField @"mipmapMode" x) .
                                                showString ", " .
                                                  showString "addressModeU = " .
                                                    showsPrec d (getField @"addressModeU" x) .
                                                      showString ", " .
                                                        showString "addressModeV = " .
                                                          showsPrec d (getField @"addressModeV" x) .
                                                            showString ", " .
                                                              showString "addressModeW = " .
                                                                showsPrec d
                                                                  (getField @"addressModeW" x)
                                                                  .
                                                                  showString ", " .
                                                                    showString "mipLodBias = " .
                                                                      showsPrec d
                                                                        (getField @"mipLodBias" x)
                                                                        .
                                                                        showString ", " .
                                                                          showString
                                                                            "anisotropyEnable = "
                                                                            .
                                                                            showsPrec d
                                                                              (getField
                                                                                 @"anisotropyEnable"
                                                                                 x)
                                                                              .
                                                                              showString ", " .
                                                                                showString
                                                                                  "maxAnisotropy = "
                                                                                  .
                                                                                  showsPrec d
                                                                                    (getField
                                                                                       @"maxAnisotropy"
                                                                                       x)
                                                                                    .
                                                                                    showString ", "
                                                                                      .
                                                                                      showString
                                                                                        "compareEnable = "
                                                                                        .
                                                                                        showsPrec d
                                                                                          (getField
                                                                                             @"compareEnable"
                                                                                             x)
                                                                                          .
                                                                                          showString
                                                                                            ", "
                                                                                            .
                                                                                            showString
                                                                                              "compareOp = "
                                                                                              .
                                                                                              showsPrec
                                                                                                d
                                                                                                (getField
                                                                                                   @"compareOp"
                                                                                                   x)
                                                                                                .
                                                                                                showString
                                                                                                  ", "
                                                                                                  .
                                                                                                  showString
                                                                                                    "minLod = "
                                                                                                    .
                                                                                                    showsPrec
                                                                                                      d
                                                                                                      (getField
                                                                                                         @"minLod"
                                                                                                         x)
                                                                                                      .
                                                                                                      showString
                                                                                                        ", "
                                                                                                        .
                                                                                                        showString
                                                                                                          "maxLod = "
                                                                                                          .
                                                                                                          showsPrec
                                                                                                            d
                                                                                                            (getField
                                                                                                               @"maxLod"
                                                                                                               x)
                                                                                                            .
                                                                                                            showString
                                                                                                              ", "
                                                                                                              .
                                                                                                              showString
                                                                                                                "borderColor = "
                                                                                                                .
                                                                                                                showsPrec
                                                                                                                  d
                                                                                                                  (getField
                                                                                                                     @"borderColor"
                                                                                                                     x)
                                                                                                                  .
                                                                                                                  showString
                                                                                                                    ", "
                                                                                                                    .
                                                                                                                    showString
                                                                                                                      "unnormalizedCoordinates = "
                                                                                                                      .
                                                                                                                      showsPrec
                                                                                                                        d
                                                                                                                        (getField
                                                                                                                           @"unnormalizedCoordinates"
                                                                                                                           x)
                                                                                                                        .
                                                                                                                        showChar
                                                                                                                          '}'

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkSamplerReductionModeCreateInfoEXT where
        type StructFields VkSamplerReductionModeCreateInfoEXT =
             '["sType", "pNext", "reductionMode"] -- ' closing tick for hsc2hs
        type CUnionType VkSamplerReductionModeCreateInfoEXT = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkSamplerReductionModeCreateInfoEXT = 'False -- ' closing tick for hsc2hs
        type StructExtends VkSamplerReductionModeCreateInfoEXT =
             '[VkSamplerCreateInfo] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "reductionMode" VkSamplerReductionModeCreateInfoEXT where
        type FieldType "reductionMode" VkSamplerReductionModeCreateInfoEXT
             = VkSamplerReductionModeEXT
        type FieldOptional "reductionMode"
               VkSamplerReductionModeCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "reductionMode"
               VkSamplerReductionModeCreateInfoEXT
             =
             (16)
{-# LINE 964 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "reductionMode"
               VkSamplerReductionModeCreateInfoEXT
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "reductionMode" VkSamplerReductionModeCreateInfoEXT
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 982 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "reductionMode" VkSamplerReductionModeCreateInfoEXT
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 993 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance Show VkSamplerReductionModeCreateInfoEXT where
        showsPrec d x
          = showString "VkSamplerReductionModeCreateInfoEXT {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "reductionMode = " .
                            showsPrec d (getField @"reductionMode" x) . showChar '}'

-- | > typedef struct VkSamplerYcbcrConversionCreateInfo {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkFormat                         format;
--   >     VkSamplerYcbcrModelConversion ycbcrModel;
--   >     VkSamplerYcbcrRange           ycbcrRange;
--   >     VkComponentMapping               components;
--   >     VkChromaLocation              xChromaOffset;
--   >     VkChromaLocation              yChromaOffset;
--   >     VkFilter                         chromaFilter;
--   >     VkBool32                         forceExplicitReconstruction;
--   > } VkSamplerYcbcrConversionCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfo registry at www.khronos.org>
data VkSamplerYcbcrConversionCreateInfo = VkSamplerYcbcrConversionCreateInfo# Addr#
                                                                              ByteArray#

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkSamplerYcbcrConversionCreateInfo where
        type StructFields VkSamplerYcbcrConversionCreateInfo =
             '["sType", "pNext", "format", "ycbcrModel", "ycbcrRange", -- ' closing tick for hsc2hs
               "components", "xChromaOffset", "yChromaOffset", "chromaFilter",
               "forceExplicitReconstruction"]
        type CUnionType VkSamplerYcbcrConversionCreateInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkSamplerYcbcrConversionCreateInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkSamplerYcbcrConversionCreateInfo = '[] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "format" VkSamplerYcbcrConversionCreateInfo where
        type FieldType "format" VkSamplerYcbcrConversionCreateInfo =
             VkFormat
        type FieldOptional "format" VkSamplerYcbcrConversionCreateInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "format" VkSamplerYcbcrConversionCreateInfo =
             (16)
{-# LINE 1153 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "format" VkSamplerYcbcrConversionCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "format" VkSamplerYcbcrConversionCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1169 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "format" VkSamplerYcbcrConversionCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1179 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "ycbcrModel" VkSamplerYcbcrConversionCreateInfo where
        type FieldType "ycbcrModel" VkSamplerYcbcrConversionCreateInfo =
             VkSamplerYcbcrModelConversion
        type FieldOptional "ycbcrModel" VkSamplerYcbcrConversionCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "ycbcrModel" VkSamplerYcbcrConversionCreateInfo =
             (20)
{-# LINE 1188 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "ycbcrModel" VkSamplerYcbcrConversionCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "ycbcrModel" VkSamplerYcbcrConversionCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (20))
{-# LINE 1204 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "ycbcrModel" VkSamplerYcbcrConversionCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (20)
{-# LINE 1214 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "ycbcrRange" VkSamplerYcbcrConversionCreateInfo where
        type FieldType "ycbcrRange" VkSamplerYcbcrConversionCreateInfo =
             VkSamplerYcbcrRange
        type FieldOptional "ycbcrRange" VkSamplerYcbcrConversionCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "ycbcrRange" VkSamplerYcbcrConversionCreateInfo =
             (24)
{-# LINE 1223 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "ycbcrRange" VkSamplerYcbcrConversionCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "ycbcrRange" VkSamplerYcbcrConversionCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 1239 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "ycbcrRange" VkSamplerYcbcrConversionCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 1249 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "components" VkSamplerYcbcrConversionCreateInfo where
        type FieldType "components" VkSamplerYcbcrConversionCreateInfo =
             VkComponentMapping
        type FieldOptional "components" VkSamplerYcbcrConversionCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "components" VkSamplerYcbcrConversionCreateInfo =
             (28)
{-# LINE 1258 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "components" VkSamplerYcbcrConversionCreateInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "components" VkSamplerYcbcrConversionCreateInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (28))
{-# LINE 1274 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "components" VkSamplerYcbcrConversionCreateInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (28)
{-# LINE 1284 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "xChromaOffset" VkSamplerYcbcrConversionCreateInfo where
        type FieldType "xChromaOffset" VkSamplerYcbcrConversionCreateInfo =
             VkChromaLocation
        type FieldOptional "xChromaOffset"
               VkSamplerYcbcrConversionCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "xChromaOffset" VkSamplerYcbcrConversionCreateInfo
             =
             (44)
{-# LINE 1295 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "xChromaOffset"
               VkSamplerYcbcrConversionCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "xChromaOffset" VkSamplerYcbcrConversionCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (44))
{-# LINE 1313 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "xChromaOffset" VkSamplerYcbcrConversionCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (44)
{-# LINE 1324 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "yChromaOffset" VkSamplerYcbcrConversionCreateInfo where
        type FieldType "yChromaOffset" VkSamplerYcbcrConversionCreateInfo =
             VkChromaLocation
        type FieldOptional "yChromaOffset"
               VkSamplerYcbcrConversionCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "yChromaOffset" VkSamplerYcbcrConversionCreateInfo
             =
             (48)
{-# LINE 1335 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "yChromaOffset"
               VkSamplerYcbcrConversionCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "yChromaOffset" VkSamplerYcbcrConversionCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 1353 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "yChromaOffset" VkSamplerYcbcrConversionCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 1364 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "chromaFilter" VkSamplerYcbcrConversionCreateInfo where
        type FieldType "chromaFilter" VkSamplerYcbcrConversionCreateInfo =
             VkFilter
        type FieldOptional "chromaFilter"
               VkSamplerYcbcrConversionCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "chromaFilter" VkSamplerYcbcrConversionCreateInfo
             =
             (52)
{-# LINE 1375 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "chromaFilter" VkSamplerYcbcrConversionCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "chromaFilter" VkSamplerYcbcrConversionCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (52))
{-# LINE 1392 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "chromaFilter" VkSamplerYcbcrConversionCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (52)
{-# LINE 1403 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "forceExplicitReconstruction"
           VkSamplerYcbcrConversionCreateInfo
         where
        type FieldType "forceExplicitReconstruction"
               VkSamplerYcbcrConversionCreateInfo
             = VkBool32
        type FieldOptional "forceExplicitReconstruction"
               VkSamplerYcbcrConversionCreateInfo
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "forceExplicitReconstruction"
               VkSamplerYcbcrConversionCreateInfo
             =
             (56)
{-# LINE 1418 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "forceExplicitReconstruction"
               VkSamplerYcbcrConversionCreateInfo
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "forceExplicitReconstruction"
           VkSamplerYcbcrConversionCreateInfo
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (56))
{-# LINE 1437 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "forceExplicitReconstruction"
           VkSamplerYcbcrConversionCreateInfo
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (56)
{-# LINE 1449 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance Show VkSamplerYcbcrConversionCreateInfo where
        showsPrec d x
          = showString "VkSamplerYcbcrConversionCreateInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "format = " .
                            showsPrec d (getField @"format" x) .
                              showString ", " .
                                showString "ycbcrModel = " .
                                  showsPrec d (getField @"ycbcrModel" x) .
                                    showString ", " .
                                      showString "ycbcrRange = " .
                                        showsPrec d (getField @"ycbcrRange" x) .
                                          showString ", " .
                                            showString "components = " .
                                              showsPrec d (getField @"components" x) .
                                                showString ", " .
                                                  showString "xChromaOffset = " .
                                                    showsPrec d (getField @"xChromaOffset" x) .
                                                      showString ", " .
                                                        showString "yChromaOffset = " .
                                                          showsPrec d (getField @"yChromaOffset" x)
                                                            .
                                                            showString ", " .
                                                              showString "chromaFilter = " .
                                                                showsPrec d
                                                                  (getField @"chromaFilter" x)
                                                                  .
                                                                  showString ", " .
                                                                    showString
                                                                      "forceExplicitReconstruction = "
                                                                      .
                                                                      showsPrec d
                                                                        (getField
                                                                           @"forceExplicitReconstruction"
                                                                           x)
                                                                        . showChar '}'

-- | Alias for `VkSamplerYcbcrConversionCreateInfo`
type VkSamplerYcbcrConversionCreateInfoKHR =
     VkSamplerYcbcrConversionCreateInfo

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal
           VkSamplerYcbcrConversionImageFormatProperties
         where
        type StructFields VkSamplerYcbcrConversionImageFormatProperties =
             '["sType", "pNext", "combinedImageSamplerDescriptorCount"] -- ' closing tick for hsc2hs
        type CUnionType VkSamplerYcbcrConversionImageFormatProperties =
             'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkSamplerYcbcrConversionImageFormatProperties =
             'True -- ' closing tick for hsc2hs
        type StructExtends VkSamplerYcbcrConversionImageFormatProperties =
             '[VkImageFormatProperties2] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "combinedImageSamplerDescriptorCount"
           VkSamplerYcbcrConversionImageFormatProperties
         where
        type FieldType "combinedImageSamplerDescriptorCount"
               VkSamplerYcbcrConversionImageFormatProperties
             = Word32
        type FieldOptional "combinedImageSamplerDescriptorCount"
               VkSamplerYcbcrConversionImageFormatProperties
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "combinedImageSamplerDescriptorCount"
               VkSamplerYcbcrConversionImageFormatProperties
             =
             (16)
{-# LINE 1666 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "combinedImageSamplerDescriptorCount"
               VkSamplerYcbcrConversionImageFormatProperties
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "combinedImageSamplerDescriptorCount"
           VkSamplerYcbcrConversionImageFormatProperties
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1685 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "combinedImageSamplerDescriptorCount"
           VkSamplerYcbcrConversionImageFormatProperties
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1697 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance Show VkSamplerYcbcrConversionImageFormatProperties where
        showsPrec d x
          = showString "VkSamplerYcbcrConversionImageFormatProperties {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "combinedImageSamplerDescriptorCount = " .
                            showsPrec d (getField @"combinedImageSamplerDescriptorCount" x) .
                              showChar '}'

-- | Alias for `VkSamplerYcbcrConversionImageFormatProperties`
type VkSamplerYcbcrConversionImageFormatPropertiesKHR =
     VkSamplerYcbcrConversionImageFormatProperties

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

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

        {-# INLINE (==) #-}

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

        {-# INLINE compare #-}

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

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

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

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

        {-# INLINE poke #-}

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

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

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

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkSamplerYcbcrConversionInfo where
        type StructFields VkSamplerYcbcrConversionInfo =
             '["sType", "pNext", "conversion"] -- ' closing tick for hsc2hs
        type CUnionType VkSamplerYcbcrConversionInfo = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkSamplerYcbcrConversionInfo = 'False -- ' closing tick for hsc2hs
        type StructExtends VkSamplerYcbcrConversionInfo =
             '[VkSamplerCreateInfo, VkImageViewCreateInfo] -- ' closing tick for hsc2hs

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

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

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

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

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

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

instance {-# OVERLAPPING #-}
         HasField "conversion" VkSamplerYcbcrConversionInfo where
        type FieldType "conversion" VkSamplerYcbcrConversionInfo =
             VkSamplerYcbcrConversion
        type FieldOptional "conversion" VkSamplerYcbcrConversionInfo =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "conversion" VkSamplerYcbcrConversionInfo =
             (16)
{-# LINE 1848 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
        type FieldIsArray "conversion" VkSamplerYcbcrConversionInfo =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

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

instance {-# OVERLAPPING #-}
         CanReadField "conversion" VkSamplerYcbcrConversionInfo where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1864 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

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

instance {-# OVERLAPPING #-}
         CanWriteField "conversion" VkSamplerYcbcrConversionInfo where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1874 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}

instance Show VkSamplerYcbcrConversionInfo where
        showsPrec d x
          = showString "VkSamplerYcbcrConversionInfo {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "conversion = " .
                            showsPrec d (getField @"conversion" x) . showChar '}'

-- | Alias for `VkSamplerYcbcrConversionInfo`
type VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo