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


{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures
       (VkPhysicalDeviceFeatures) where
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Internal
import Graphics.Vulkan.Types.BaseTypes  (VkBool32)

-- | > typedef struct VkPhysicalDeviceFeatures {
--   >     VkBool32               robustBufferAccess;
--   >     VkBool32               fullDrawIndexUint32;
--   >     VkBool32               imageCubeArray;
--   >     VkBool32               independentBlend;
--   >     VkBool32               geometryShader;
--   >     VkBool32               tessellationShader;
--   >     VkBool32               sampleRateShading;
--   >     VkBool32               dualSrcBlend;
--   >     VkBool32               logicOp;
--   >     VkBool32               multiDrawIndirect;
--   >     VkBool32               drawIndirectFirstInstance;
--   >     VkBool32               depthClamp;
--   >     VkBool32               depthBiasClamp;
--   >     VkBool32               fillModeNonSolid;
--   >     VkBool32               depthBounds;
--   >     VkBool32               wideLines;
--   >     VkBool32               largePoints;
--   >     VkBool32               alphaToOne;
--   >     VkBool32               multiViewport;
--   >     VkBool32               samplerAnisotropy;
--   >     VkBool32               textureCompressionETC2;
--   >     VkBool32               textureCompressionASTC_LDR;
--   >     VkBool32               textureCompressionBC;
--   >     VkBool32               occlusionQueryPrecise;
--   >     VkBool32               pipelineStatisticsQuery;
--   >     VkBool32               vertexPipelineStoresAndAtomics;
--   >     VkBool32               fragmentStoresAndAtomics;
--   >     VkBool32               shaderTessellationAndGeometryPointSize;
--   >     VkBool32               shaderImageGatherExtended;
--   >     VkBool32               shaderStorageImageExtendedFormats;
--   >     VkBool32               shaderStorageImageMultisample;
--   >     VkBool32               shaderStorageImageReadWithoutFormat;
--   >     VkBool32               shaderStorageImageWriteWithoutFormat;
--   >     VkBool32               shaderUniformBufferArrayDynamicIndexing;
--   >     VkBool32               shaderSampledImageArrayDynamicIndexing;
--   >     VkBool32               shaderStorageBufferArrayDynamicIndexing;
--   >     VkBool32               shaderStorageImageArrayDynamicIndexing;
--   >     VkBool32               shaderClipDistance;
--   >     VkBool32               shaderCullDistance;
--   >     VkBool32               shaderFloat64;
--   >     VkBool32               shaderInt64;
--   >     VkBool32               shaderInt16;
--   >     VkBool32               shaderResourceResidency;
--   >     VkBool32               shaderResourceMinLod;
--   >     VkBool32               sparseBinding;
--   >     VkBool32               sparseResidencyBuffer;
--   >     VkBool32               sparseResidencyImage2D;
--   >     VkBool32               sparseResidencyImage3D;
--   >     VkBool32               sparseResidency2Samples;
--   >     VkBool32               sparseResidency4Samples;
--   >     VkBool32               sparseResidency8Samples;
--   >     VkBool32               sparseResidency16Samples;
--   >     VkBool32               sparseResidencyAliased;
--   >     VkBool32               variableMultisampleRate;
--   >     VkBool32               inheritedQueries;
--   > } VkPhysicalDeviceFeatures;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceFeatures VkPhysicalDeviceFeatures registry at www.khronos.org>
type VkPhysicalDeviceFeatures = VkStruct VkPhysicalDeviceFeatures' -- ' closing tick for hsc2hs

data VkPhysicalDeviceFeatures' -- ' closing tick for hsc2hs

instance VulkanMarshal VkPhysicalDeviceFeatures where
    type StructRep VkPhysicalDeviceFeatures =
         'StructMeta "VkPhysicalDeviceFeatures" VkPhysicalDeviceFeatures -- ' closing tick for hsc2hs
           (220)
{-# LINE 81 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
           4
{-# LINE 82 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
           '[('FieldMeta "robustBufferAccess" VkBool32 'False  -- ' closing tick for hsc2hs
                                                              (0)
{-# LINE 84 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "fullDrawIndexUint32" VkBool32 'False 
                                                               (4)
{-# LINE 89 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "imageCubeArray" VkBool32 'False 
                                                          (8)
{-# LINE 94 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "independentBlend" VkBool32 'False 
                                                            (12)
{-# LINE 99 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "geometryShader" VkBool32 'False 
                                                          (16)
{-# LINE 104 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "tessellationShader" VkBool32 'False 
                                                              (20)
{-# LINE 109 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "sampleRateShading" VkBool32 'False 
                                                             (24)
{-# LINE 114 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "dualSrcBlend" VkBool32 'False 
                                                        (28)
{-# LINE 119 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "logicOp" VkBool32 'False 
                                                   (32)
{-# LINE 124 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "multiDrawIndirect" VkBool32 'False 
                                                             (36)
{-# LINE 129 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "drawIndirectFirstInstance" VkBool32 'False 
                                                                     (40)
{-# LINE 134 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "depthClamp" VkBool32 'False 
                                                      (44)
{-# LINE 139 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "depthBiasClamp" VkBool32 'False 
                                                          (48)
{-# LINE 144 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "fillModeNonSolid" VkBool32 'False 
                                                            (52)
{-# LINE 149 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "depthBounds" VkBool32 'False 
                                                       (56)
{-# LINE 154 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "wideLines" VkBool32 'False 
                                                     (60)
{-# LINE 159 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "largePoints" VkBool32 'False 
                                                       (64)
{-# LINE 164 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "alphaToOne" VkBool32 'False 
                                                      (68)
{-# LINE 169 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "multiViewport" VkBool32 'False 
                                                         (72)
{-# LINE 174 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "samplerAnisotropy" VkBool32 'False 
                                                             (76)
{-# LINE 179 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "textureCompressionETC2" VkBool32 'False 
                                                                  (80)
{-# LINE 184 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "textureCompressionASTC_LDR" VkBool32 'False 
                                                                      (84)
{-# LINE 189 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "textureCompressionBC" VkBool32 'False 
                                                                (88)
{-# LINE 194 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "occlusionQueryPrecise" VkBool32 'False 
                                                                 (92)
{-# LINE 199 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pipelineStatisticsQuery" VkBool32 'False 
                                                                   (96)
{-# LINE 204 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "vertexPipelineStoresAndAtomics" VkBool32 'False
                (100)
{-# LINE 209 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "fragmentStoresAndAtomics" VkBool32 'False 
                                                                    (104)
{-# LINE 214 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderTessellationAndGeometryPointSize" VkBool32 -- ' closing tick for hsc2hs
                'False -- ' closing tick for hsc2hs
                (108)
{-# LINE 220 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderImageGatherExtended" VkBool32 'False 
                                                                     (112)
{-# LINE 225 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderStorageImageExtendedFormats" VkBool32 'False
                (116)
{-# LINE 230 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderStorageImageMultisample" VkBool32 'False
                (120)
{-# LINE 235 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderStorageImageReadWithoutFormat" VkBool32 'False
                (124)
{-# LINE 240 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderStorageImageWriteWithoutFormat" VkBool32 'False
                (128)
{-# LINE 245 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderUniformBufferArrayDynamicIndexing" VkBool32 -- ' closing tick for hsc2hs
                'False -- ' closing tick for hsc2hs
                (132)
{-# LINE 251 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderSampledImageArrayDynamicIndexing" VkBool32 -- ' closing tick for hsc2hs
                'False -- ' closing tick for hsc2hs
                (136)
{-# LINE 257 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderStorageBufferArrayDynamicIndexing" VkBool32 -- ' closing tick for hsc2hs
                'False -- ' closing tick for hsc2hs
                (140)
{-# LINE 263 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderStorageImageArrayDynamicIndexing" VkBool32 -- ' closing tick for hsc2hs
                'False -- ' closing tick for hsc2hs
                (144)
{-# LINE 269 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderClipDistance" VkBool32 'False 
                                                              (148)
{-# LINE 274 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderCullDistance" VkBool32 'False 
                                                              (152)
{-# LINE 279 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderFloat64" VkBool32 'False 
                                                         (156)
{-# LINE 284 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderInt64" VkBool32 'False 
                                                       (160)
{-# LINE 289 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderInt16" VkBool32 'False 
                                                       (164)
{-# LINE 294 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderResourceResidency" VkBool32 'False 
                                                                   (168)
{-# LINE 299 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "shaderResourceMinLod" VkBool32 'False 
                                                                (172)
{-# LINE 304 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "sparseBinding" VkBool32 'False 
                                                         (176)
{-# LINE 309 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "sparseResidencyBuffer" VkBool32 'False 
                                                                 (180)
{-# LINE 314 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "sparseResidencyImage2D" VkBool32 'False 
                                                                  (184)
{-# LINE 319 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "sparseResidencyImage3D" VkBool32 'False 
                                                                  (188)
{-# LINE 324 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "sparseResidency2Samples" VkBool32 'False 
                                                                   (192)
{-# LINE 329 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "sparseResidency4Samples" VkBool32 'False 
                                                                   (196)
{-# LINE 334 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "sparseResidency8Samples" VkBool32 'False 
                                                                   (200)
{-# LINE 339 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "sparseResidency16Samples" VkBool32 'False 
                                                                    (204)
{-# LINE 344 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "sparseResidencyAliased" VkBool32 'False 
                                                                  (208)
{-# LINE 349 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "variableMultisampleRate" VkBool32 'False 
                                                                   (212)
{-# LINE 354 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "inheritedQueries" VkBool32 'False 
                                                            (216)
{-# LINE 359 "src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.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