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


{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Sampler
       (VkSamplerCreateInfo, VkSamplerReductionModeCreateInfoEXT,
        VkSamplerYcbcrConversionCreateInfo,
        VkSamplerYcbcrConversionCreateInfoKHR,
        VkSamplerYcbcrConversionImageFormatProperties,
        VkSamplerYcbcrConversionImageFormatPropertiesKHR,
        VkSamplerYcbcrConversionInfo, VkSamplerYcbcrConversionInfoKHR)
       where
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)

-- | > 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>
type VkSamplerCreateInfo = VkStruct VkSamplerCreateInfo' -- ' closing tick for hsc2hs

data VkSamplerCreateInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkSamplerCreateInfo where
    type StructRep VkSamplerCreateInfo =
         'StructMeta "VkSamplerCreateInfo" VkSamplerCreateInfo  -- ' closing tick for hsc2hs
                                                               (80)
{-# LINE 66 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
           8
{-# LINE 67 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 69 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 74 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "flags" VkSamplerCreateFlags 'True
                                                            (16)
{-# LINE 79 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "magFilter" VkFilter 'False
                                                     (20)
{-# LINE 84 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "minFilter" VkFilter 'False
                                                     (24)
{-# LINE 89 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "mipmapMode" VkSamplerMipmapMode 'False
                                                                 (28)
{-# LINE 94 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "addressModeU" VkSamplerAddressMode 'False
                                                                    (32)
{-# LINE 99 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "addressModeV" VkSamplerAddressMode 'False
                                                                    (36)
{-# LINE 104 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "addressModeW" VkSamplerAddressMode 'False
                                                                    (40)
{-# LINE 109 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "mipLodBias" ( -- ' closing tick for hsc2hs
                                       Float
{-# LINE 114 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                                       ) 'False -- ' closing tick for hsc2hs
                (44)
{-# LINE 116 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "anisotropyEnable" VkBool32 'False
                                                            (48)
{-# LINE 121 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "maxAnisotropy" ( -- ' closing tick for hsc2hs
                                          Float
{-# LINE 126 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                                          ) 'False -- ' closing tick for hsc2hs
                (52)
{-# LINE 128 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "compareEnable" VkBool32 'False
                                                         (56)
{-# LINE 133 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "compareOp" VkCompareOp 'False
                                                        (60)
{-# LINE 138 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "minLod" ( -- ' closing tick for hsc2hs
                                   Float
{-# LINE 143 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                                   ) 'False  -- ' closing tick for hsc2hs
                                            (64)
{-# LINE 145 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "maxLod" ( -- ' closing tick for hsc2hs
                                   Float
{-# LINE 150 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                                   ) 'False  -- ' closing tick for hsc2hs
                                            (68)
{-# LINE 152 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "borderColor" VkBorderColor 'False
                                                            (72)
{-# LINE 157 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "unnormalizedCoordinates" VkBool32 'False
                                                                   (76)
{-# LINE 162 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | > typedef struct 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>
type VkSamplerReductionModeCreateInfoEXT =
     VkStruct VkSamplerReductionModeCreateInfoEXT' -- ' closing tick for hsc2hs

data VkSamplerReductionModeCreateInfoEXT' -- ' closing tick for hsc2hs

instance VulkanMarshal VkSamplerReductionModeCreateInfoEXT where
    type StructRep VkSamplerReductionModeCreateInfoEXT =
         'StructMeta "VkSamplerReductionModeCreateInfoEXT" -- ' closing tick for hsc2hs
           VkSamplerReductionModeCreateInfoEXT
           (24)
{-# LINE 186 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
           8
{-# LINE 187 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 189 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 194 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "reductionMode" VkSamplerReductionModeEXT 'False
                (16)
{-# LINE 199 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkSamplerCreateInfo] -- ' closing tick for hsc2hs

-- | > 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>
type VkSamplerYcbcrConversionCreateInfo =
     VkStruct VkSamplerYcbcrConversionCreateInfo' -- ' closing tick for hsc2hs

data VkSamplerYcbcrConversionCreateInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkSamplerYcbcrConversionCreateInfo where
    type StructRep VkSamplerYcbcrConversionCreateInfo =
         'StructMeta "VkSamplerYcbcrConversionCreateInfo" -- ' closing tick for hsc2hs
           VkSamplerYcbcrConversionCreateInfo
           (64)
{-# LINE 230 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
           8
{-# LINE 231 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 233 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 238 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "format" VkFormat 'False
                                                  (16)
{-# LINE 243 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "ycbcrModel" VkSamplerYcbcrModelConversion 'False
                (20)
{-# LINE 248 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "ycbcrRange" VkSamplerYcbcrRange 'False
                                                                 (24)
{-# LINE 253 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "components" VkComponentMapping 'False
                                                                (28)
{-# LINE 258 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "xChromaOffset" VkChromaLocation 'False
                                                                 (44)
{-# LINE 263 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "yChromaOffset" VkChromaLocation 'False
                                                                 (48)
{-# LINE 268 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "chromaFilter" VkFilter 'False
                                                        (52)
{-# LINE 273 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "forceExplicitReconstruction" VkBool32 'False
                                                                       (56)
{-# LINE 278 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[] -- ' closing tick for hsc2hs

-- | Alias for `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>
type VkSamplerYcbcrConversionImageFormatProperties =
     VkStruct VkSamplerYcbcrConversionImageFormatProperties' -- ' closing tick for hsc2hs

data VkSamplerYcbcrConversionImageFormatProperties' -- ' closing tick for hsc2hs

instance VulkanMarshal
           VkSamplerYcbcrConversionImageFormatProperties
         where
    type StructRep VkSamplerYcbcrConversionImageFormatProperties =
         'StructMeta "VkSamplerYcbcrConversionImageFormatProperties" -- ' closing tick for hsc2hs
           VkSamplerYcbcrConversionImageFormatProperties
           (24)
{-# LINE 308 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
           8
{-# LINE 309 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 311 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 316 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "combinedImageSamplerDescriptorCount" Word32 'False
                (16)
{-# LINE 321 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'True -- ' closing tick for hsc2hs
           '[VkImageFormatProperties2] -- ' closing tick for hsc2hs

-- | 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>
type VkSamplerYcbcrConversionInfo =
     VkStruct VkSamplerYcbcrConversionInfo' -- ' closing tick for hsc2hs

data VkSamplerYcbcrConversionInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkSamplerYcbcrConversionInfo where
    type StructRep VkSamplerYcbcrConversionInfo =
         'StructMeta "VkSamplerYcbcrConversionInfo" -- ' closing tick for hsc2hs
           VkSamplerYcbcrConversionInfo
           (24)
{-# LINE 349 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
           8
{-# LINE 350 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 352 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False
                                                   (8)
{-# LINE 357 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "conversion" VkSamplerYcbcrConversion 'False
                                                                      (16)
{-# LINE 362 "src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkSamplerCreateInfo, VkImageViewCreateInfo] -- ' closing tick for hsc2hs

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