{-# language CPP #-}
-- | = Name
--
-- VK_EXT_conservative_rasterization - device extension
--
-- == VK_EXT_conservative_rasterization
--
-- [__Name String__]
--     @VK_EXT_conservative_rasterization@
--
-- [__Extension Type__]
--     Device extension
--
-- [__Registered Extension Number__]
--     102
--
-- [__Revision__]
--     1
--
-- [__Extension and Version Dependencies__]
--
--     -   Requires support for Vulkan 1.0
--
--     -   Requires @VK_KHR_get_physical_device_properties2@ to be enabled
--         for any device-level functionality
--
-- [__Contact__]
--
--     -   Piers Daniell
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_conservative_rasterization] @pdaniell-nv%0A*Here describe the issue or question you have about the VK_EXT_conservative_rasterization extension* >
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2020-06-09
--
-- [__Interactions and External Dependencies__]
--
--     -   This extension requires
--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_fragment_fully_covered.html SPV_EXT_fragment_fully_covered>
--         if the
--         'PhysicalDeviceConservativeRasterizationPropertiesEXT'::@fullyCoveredFragmentShaderInputVariable@
--         feature is used.
--
--     -   This extension requires
--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_post_depth_coverage.html SPV_KHR_post_depth_coverage>if
--         the
--         'PhysicalDeviceConservativeRasterizationPropertiesEXT'::@conservativeRasterizationPostDepthCoverage@
--         feature is used.
--
--     -   This extension provides API support for
--         <https://registry.khronos.org/OpenGL/extensions/NV/NV_conservative_raster_underestimation.txt GL_NV_conservative_raster_underestimation>
--         if the
--         'PhysicalDeviceConservativeRasterizationPropertiesEXT'::@fullyCoveredFragmentShaderInputVariable@
--         feature is used.
--
-- [__Contributors__]
--
--     -   Daniel Koch, NVIDIA
--
--     -   Daniel Rakos, AMD
--
--     -   Jeff Bolz, NVIDIA
--
--     -   Slawomir Grajewski, Intel
--
--     -   Stu Smith, Imagination Technologies
--
-- == Description
--
-- This extension adds a new rasterization mode called conservative
-- rasterization. There are two modes of conservative rasterization;
-- overestimation and underestimation.
--
-- When overestimation is enabled, if any part of the primitive, including
-- its edges, covers any part of the rectangular pixel area, including its
-- sides, then a fragment is generated with all coverage samples turned on.
-- This extension allows for some variation in implementations by
-- accounting for differences in overestimation, where the generating
-- primitive size is increased at each of its edges by some sub-pixel
-- amount to further increase conservative pixel coverage. Implementations
-- can allow the application to specify an extra overestimation beyond the
-- base overestimation the implementation already does. It also allows
-- implementations to either cull degenerate primitives or rasterize them.
--
-- When underestimation is enabled, fragments are only generated if the
-- rectangular pixel area is fully covered by the generating primitive. If
-- supported by the implementation, when a pixel rectangle is fully covered
-- the fragment shader input variable builtin called FullyCoveredEXT is set
-- to true. The shader variable works in either overestimation or
-- underestimation mode.
--
-- Implementations can process degenerate triangles and lines by either
-- discarding them or generating conservative fragments for them.
-- Degenerate triangles are those that end up with zero area after the
-- rasterizer quantizes them to the fixed-point pixel grid. Degenerate
-- lines are those with zero length after quantization.
--
-- == New Structures
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
--
--     -   'PhysicalDeviceConservativeRasterizationPropertiesEXT'
--
-- -   Extending
--     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
--
--     -   'PipelineRasterizationConservativeStateCreateInfoEXT'
--
-- == New Enums
--
-- -   'ConservativeRasterizationModeEXT'
--
-- == New Bitmasks
--
-- -   'PipelineRasterizationConservativeStateCreateFlagsEXT'
--
-- == New Enum Constants
--
-- -   'EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME'
--
-- -   'EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT'
--
-- == Version History
--
-- -   Revision 1.1, 2020-09-06 (Piers Daniell)
--
--     -   Add missing SPIR-V and GLSL dependencies.
--
-- -   Revision 1, 2017-08-28 (Piers Daniell)
--
--     -   Internal revisions
--
-- == See Also
--
-- 'ConservativeRasterizationModeEXT',
-- 'PhysicalDeviceConservativeRasterizationPropertiesEXT',
-- 'PipelineRasterizationConservativeStateCreateFlagsEXT',
-- 'PipelineRasterizationConservativeStateCreateInfoEXT'
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_conservative_rasterization Vulkan Specification>
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module Vulkan.Extensions.VK_EXT_conservative_rasterization  ( PhysicalDeviceConservativeRasterizationPropertiesEXT(..)
                                                            , PipelineRasterizationConservativeStateCreateInfoEXT(..)
                                                            , PipelineRasterizationConservativeStateCreateFlagsEXT(..)
                                                            , ConservativeRasterizationModeEXT( CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
                                                                                              , CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT
                                                                                              , CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT
                                                                                              , ..
                                                                                              )
                                                            , EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION
                                                            , pattern EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION
                                                            , EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME
                                                            , pattern EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME
                                                            ) where

import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showString)
import GHC.Show (showsPrec)
import Numeric (showHex)
import Data.Coerce (coerce)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.C.Types (CFloat)
import Foreign.C.Types (CFloat(..))
import Foreign.C.Types (CFloat(CFloat))
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import Data.Int (Int32)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Data.Kind (Type)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.FundamentalTypes (Flags)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT))
-- | VkPhysicalDeviceConservativeRasterizationPropertiesEXT - Structure
-- describing conservative raster properties that can be supported by an
-- implementation
--
-- = Description
--
-- If the 'PhysicalDeviceConservativeRasterizationPropertiesEXT' structure
-- is included in the @pNext@ chain of the
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
-- structure passed to
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
-- it is filled in with each corresponding implementation-dependent
-- property.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conservative_rasterization VK_EXT_conservative_rasterization>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceConservativeRasterizationPropertiesEXT = PhysicalDeviceConservativeRasterizationPropertiesEXT
  { -- | #limits-primitiveOverestimationSize# @primitiveOverestimationSize@ is
    -- the size in pixels the generating primitive is increased at each of its
    -- edges during conservative rasterization overestimation mode. Even with a
    -- size of 0.0, conservative rasterization overestimation rules still apply
    -- and if any part of the pixel rectangle is covered by the generating
    -- primitive, fragments are generated for the entire pixel. However
    -- implementations /may/ make the pixel coverage area even more
    -- conservative by increasing the size of the generating primitive.
    PhysicalDeviceConservativeRasterizationPropertiesEXT -> Float
primitiveOverestimationSize :: Float
  , -- | #limits-maxExtraPrimitiveOverestimationSize#
    -- @maxExtraPrimitiveOverestimationSize@ is the maximum size in pixels of
    -- extra overestimation the implementation supports in the pipeline state.
    -- A value of 0.0 means the implementation does not support any additional
    -- overestimation of the generating primitive during conservative
    -- rasterization. A value above 0.0 allows the application to further
    -- increase the size of the generating primitive during conservative
    -- rasterization overestimation.
    PhysicalDeviceConservativeRasterizationPropertiesEXT -> Float
maxExtraPrimitiveOverestimationSize :: Float
  , -- | #limits-extraPrimitiveOverestimationSizeGranularity#
    -- @extraPrimitiveOverestimationSizeGranularity@ is the granularity of
    -- extra overestimation that can be specified in the pipeline state between
    -- 0.0 and @maxExtraPrimitiveOverestimationSize@ inclusive. A value of 0.0
    -- means the implementation can use the smallest representable non-zero
    -- value in the screen space pixel fixed-point grid.
    PhysicalDeviceConservativeRasterizationPropertiesEXT -> Float
extraPrimitiveOverestimationSizeGranularity :: Float
  , -- | #limits-primitiveUnderestimation# @primitiveUnderestimation@ is
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the
    -- 'CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT' conservative
    -- rasterization mode in addition to
    -- 'CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT'. Otherwise the
    -- implementation only supports
    -- 'CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT'.
    PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
primitiveUnderestimation :: Bool
  , -- | #limits-conservativePointAndLineRasterization#
    -- @conservativePointAndLineRasterization@ is
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports
    -- conservative rasterization of point and line primitives as well as
    -- triangle primitives. Otherwise the implementation only supports triangle
    -- primitives.
    PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
conservativePointAndLineRasterization :: Bool
  , -- | #limits-degenerateTrianglesRasterized# @degenerateTrianglesRasterized@
    -- is 'Vulkan.Core10.FundamentalTypes.FALSE' if the implementation culls
    -- primitives generated from triangles that become zero area after they are
    -- quantized to the fixed-point rasterization pixel grid.
    -- @degenerateTrianglesRasterized@ is 'Vulkan.Core10.FundamentalTypes.TRUE'
    -- if these primitives are not culled and the provoking vertex attributes
    -- and depth value are used for the fragments. The primitive area
    -- calculation is done on the primitive generated from the clipped triangle
    -- if applicable. Zero area primitives are backfacing and the application
    -- /can/ enable backface culling if desired.
    PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
degenerateTrianglesRasterized :: Bool
  , -- | #limits-degenerateLinesRasterized# @degenerateLinesRasterized@ is
    -- 'Vulkan.Core10.FundamentalTypes.FALSE' if the implementation culls lines
    -- that become zero length after they are quantized to the fixed-point
    -- rasterization pixel grid. @degenerateLinesRasterized@ is
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if zero length lines are not
    -- culled and the provoking vertex attributes and depth value are used for
    -- the fragments.
    PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
degenerateLinesRasterized :: Bool
  , -- | #limits-fullyCoveredFragmentShaderInputVariable#
    -- @fullyCoveredFragmentShaderInputVariable@ is
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports the
    -- SPIR-V builtin fragment shader input variable @FullyCoveredEXT@
    -- specifying that conservative rasterization is enabled and the fragment
    -- area is fully covered by the generating primitive.
    PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
fullyCoveredFragmentShaderInputVariable :: Bool
  , -- | #limits-conservativeRasterizationPostDepthCoverage#
    -- @conservativeRasterizationPostDepthCoverage@ is
    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the implementation supports
    -- conservative rasterization with the @PostDepthCoverage@ execution mode
    -- enabled. Otherwise the @PostDepthCoverage@ execution mode /must/ not be
    -- used when conservative rasterization is enabled.
    PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
conservativeRasterizationPostDepthCoverage :: Bool
  }
  deriving (Typeable, PhysicalDeviceConservativeRasterizationPropertiesEXT
-> PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
(PhysicalDeviceConservativeRasterizationPropertiesEXT
 -> PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool)
-> (PhysicalDeviceConservativeRasterizationPropertiesEXT
    -> PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool)
-> Eq PhysicalDeviceConservativeRasterizationPropertiesEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDeviceConservativeRasterizationPropertiesEXT
-> PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
$c/= :: PhysicalDeviceConservativeRasterizationPropertiesEXT
-> PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
== :: PhysicalDeviceConservativeRasterizationPropertiesEXT
-> PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
$c== :: PhysicalDeviceConservativeRasterizationPropertiesEXT
-> PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceConservativeRasterizationPropertiesEXT)
#endif
deriving instance Show PhysicalDeviceConservativeRasterizationPropertiesEXT

instance ToCStruct PhysicalDeviceConservativeRasterizationPropertiesEXT where
  withCStruct :: forall b.
PhysicalDeviceConservativeRasterizationPropertiesEXT
-> (Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
    -> IO b)
-> IO b
withCStruct PhysicalDeviceConservativeRasterizationPropertiesEXT
x Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT -> IO b
f = Int
-> (Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
    -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
56 ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT -> IO b)
 -> IO b)
-> (Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
    -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p -> Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> PhysicalDeviceConservativeRasterizationPropertiesEXT
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p PhysicalDeviceConservativeRasterizationPropertiesEXT
x (Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT -> IO b
f Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> PhysicalDeviceConservativeRasterizationPropertiesEXT
-> IO b
-> IO b
pokeCStruct Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p PhysicalDeviceConservativeRasterizationPropertiesEXT{Bool
Float
conservativeRasterizationPostDepthCoverage :: Bool
fullyCoveredFragmentShaderInputVariable :: Bool
degenerateLinesRasterized :: Bool
degenerateTrianglesRasterized :: Bool
conservativePointAndLineRasterization :: Bool
primitiveUnderestimation :: Bool
extraPrimitiveOverestimationSizeGranularity :: Float
maxExtraPrimitiveOverestimationSize :: Float
primitiveOverestimationSize :: Float
$sel:conservativeRasterizationPostDepthCoverage:PhysicalDeviceConservativeRasterizationPropertiesEXT :: PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
$sel:fullyCoveredFragmentShaderInputVariable:PhysicalDeviceConservativeRasterizationPropertiesEXT :: PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
$sel:degenerateLinesRasterized:PhysicalDeviceConservativeRasterizationPropertiesEXT :: PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
$sel:degenerateTrianglesRasterized:PhysicalDeviceConservativeRasterizationPropertiesEXT :: PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
$sel:conservativePointAndLineRasterization:PhysicalDeviceConservativeRasterizationPropertiesEXT :: PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
$sel:primitiveUnderestimation:PhysicalDeviceConservativeRasterizationPropertiesEXT :: PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
$sel:extraPrimitiveOverestimationSizeGranularity:PhysicalDeviceConservativeRasterizationPropertiesEXT :: PhysicalDeviceConservativeRasterizationPropertiesEXT -> Float
$sel:maxExtraPrimitiveOverestimationSize:PhysicalDeviceConservativeRasterizationPropertiesEXT :: PhysicalDeviceConservativeRasterizationPropertiesEXT -> Float
$sel:primitiveOverestimationSize:PhysicalDeviceConservativeRasterizationPropertiesEXT :: PhysicalDeviceConservativeRasterizationPropertiesEXT -> Float
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr CFloat -> CFloat -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
primitiveOverestimationSize))
    Ptr CFloat -> CFloat -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
maxExtraPrimitiveOverestimationSize))
    Ptr CFloat -> CFloat -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
extraPrimitiveOverestimationSizeGranularity))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
primitiveUnderestimation))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
conservativePointAndLineRasterization))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
degenerateTrianglesRasterized))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
degenerateLinesRasterized))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
fullyCoveredFragmentShaderInputVariable))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
conservativeRasterizationPostDepthCoverage))
    IO b
f
  cStructSize :: Int
cStructSize = Int
56
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr CFloat -> CFloat -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
forall a. Zero a => a
zero))
    Ptr CFloat -> CFloat -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
forall a. Zero a => a
zero))
    Ptr CFloat -> CFloat -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    IO b
f

instance FromCStruct PhysicalDeviceConservativeRasterizationPropertiesEXT where
  peekCStruct :: Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> IO PhysicalDeviceConservativeRasterizationPropertiesEXT
peekCStruct Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p = do
    CFloat
primitiveOverestimationSize <- forall a. Storable a => Ptr a -> IO a
peek @CFloat ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr CFloat))
    CFloat
maxExtraPrimitiveOverestimationSize <- forall a. Storable a => Ptr a -> IO a
peek @CFloat ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr CFloat))
    CFloat
extraPrimitiveOverestimationSizeGranularity <- forall a. Storable a => Ptr a -> IO a
peek @CFloat ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr CFloat))
    Bool32
primitiveUnderestimation <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr Bool32))
    Bool32
conservativePointAndLineRasterization <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr Bool32))
    Bool32
degenerateTrianglesRasterized <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr Bool32))
    Bool32
degenerateLinesRasterized <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr Bool32))
    Bool32
fullyCoveredFragmentShaderInputVariable <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
44 :: Ptr Bool32))
    Bool32
conservativeRasterizationPostDepthCoverage <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
48 :: Ptr Bool32))
    PhysicalDeviceConservativeRasterizationPropertiesEXT
-> IO PhysicalDeviceConservativeRasterizationPropertiesEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDeviceConservativeRasterizationPropertiesEXT
 -> IO PhysicalDeviceConservativeRasterizationPropertiesEXT)
-> PhysicalDeviceConservativeRasterizationPropertiesEXT
-> IO PhysicalDeviceConservativeRasterizationPropertiesEXT
forall a b. (a -> b) -> a -> b
$ Float
-> Float
-> Float
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> PhysicalDeviceConservativeRasterizationPropertiesEXT
PhysicalDeviceConservativeRasterizationPropertiesEXT
             (forall a b. Coercible a b => a -> b
coerce @CFloat @Float CFloat
primitiveOverestimationSize)
             (forall a b. Coercible a b => a -> b
coerce @CFloat @Float CFloat
maxExtraPrimitiveOverestimationSize)
             (forall a b. Coercible a b => a -> b
coerce @CFloat @Float CFloat
extraPrimitiveOverestimationSizeGranularity)
             (Bool32 -> Bool
bool32ToBool Bool32
primitiveUnderestimation)
             (Bool32 -> Bool
bool32ToBool Bool32
conservativePointAndLineRasterization)
             (Bool32 -> Bool
bool32ToBool Bool32
degenerateTrianglesRasterized)
             (Bool32 -> Bool
bool32ToBool Bool32
degenerateLinesRasterized)
             (Bool32 -> Bool
bool32ToBool Bool32
fullyCoveredFragmentShaderInputVariable)
             (Bool32 -> Bool
bool32ToBool Bool32
conservativeRasterizationPostDepthCoverage)

instance Storable PhysicalDeviceConservativeRasterizationPropertiesEXT where
  sizeOf :: PhysicalDeviceConservativeRasterizationPropertiesEXT -> Int
sizeOf ~PhysicalDeviceConservativeRasterizationPropertiesEXT
_ = Int
56
  alignment :: PhysicalDeviceConservativeRasterizationPropertiesEXT -> Int
alignment ~PhysicalDeviceConservativeRasterizationPropertiesEXT
_ = Int
8
  peek :: Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> IO PhysicalDeviceConservativeRasterizationPropertiesEXT
peek = Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> IO PhysicalDeviceConservativeRasterizationPropertiesEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> PhysicalDeviceConservativeRasterizationPropertiesEXT -> IO ()
poke Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
poked = Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> PhysicalDeviceConservativeRasterizationPropertiesEXT
-> IO ()
-> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero PhysicalDeviceConservativeRasterizationPropertiesEXT where
  zero :: PhysicalDeviceConservativeRasterizationPropertiesEXT
zero = Float
-> Float
-> Float
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> Bool
-> PhysicalDeviceConservativeRasterizationPropertiesEXT
PhysicalDeviceConservativeRasterizationPropertiesEXT
           Float
forall a. Zero a => a
zero
           Float
forall a. Zero a => a
zero
           Float
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero


-- | VkPipelineRasterizationConservativeStateCreateInfoEXT - Structure
-- specifying conservative raster state
--
-- = Description
--
-- If this structure is not included in the @pNext@ chain,
-- @conservativeRasterizationMode@ is considered to be
-- 'CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT', and and conservative
-- rasterization is disabled.
--
-- Polygon rasterization /can/ be made conservative by setting
-- @conservativeRasterizationMode@ to
-- 'CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT' or
-- 'CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT' in
-- 'PipelineRasterizationConservativeStateCreateInfoEXT'.
--
-- Note
--
-- If
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-conservativePointAndLineRasterization conservativePointAndLineRasterization>
-- is supported, conservative rasterization can be applied to line and
-- point primitives, otherwise it must be disabled.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conservative_rasterization VK_EXT_conservative_rasterization>,
-- 'ConservativeRasterizationModeEXT',
-- 'PipelineRasterizationConservativeStateCreateFlagsEXT',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PipelineRasterizationConservativeStateCreateInfoEXT = PipelineRasterizationConservativeStateCreateInfoEXT
  { -- | @flags@ is reserved for future use.
    --
    -- #VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-flags-zerobitmask#
    -- @flags@ /must/ be @0@
    PipelineRasterizationConservativeStateCreateInfoEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
flags :: PipelineRasterizationConservativeStateCreateFlagsEXT
  , -- | @conservativeRasterizationMode@ is the conservative rasterization mode
    -- to use.
    --
    -- #VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-conservativeRasterizationMode-parameter#
    -- @conservativeRasterizationMode@ /must/ be a valid
    -- 'ConservativeRasterizationModeEXT' value
    PipelineRasterizationConservativeStateCreateInfoEXT
-> ConservativeRasterizationModeEXT
conservativeRasterizationMode :: ConservativeRasterizationModeEXT
  , -- | @extraPrimitiveOverestimationSize@ is the extra size in pixels to
    -- increase the generating primitive during conservative rasterization at
    -- each of its edges in @X@ and @Y@ equally in screen space beyond the base
    -- overestimation specified in
    -- 'PhysicalDeviceConservativeRasterizationPropertiesEXT'::@primitiveOverestimationSize@.
    -- If @conservativeRasterizationMode@ is not
    -- 'CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT', this value is
    -- ignored.
    --
    -- #VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-extraPrimitiveOverestimationSize-01769#
    -- @extraPrimitiveOverestimationSize@ /must/ be in the range of @0.0@ to
    -- 'PhysicalDeviceConservativeRasterizationPropertiesEXT'::@maxExtraPrimitiveOverestimationSize@
    -- inclusive
    PipelineRasterizationConservativeStateCreateInfoEXT -> Float
extraPrimitiveOverestimationSize :: Float
  }
  deriving (Typeable, PipelineRasterizationConservativeStateCreateInfoEXT
-> PipelineRasterizationConservativeStateCreateInfoEXT -> Bool
(PipelineRasterizationConservativeStateCreateInfoEXT
 -> PipelineRasterizationConservativeStateCreateInfoEXT -> Bool)
-> (PipelineRasterizationConservativeStateCreateInfoEXT
    -> PipelineRasterizationConservativeStateCreateInfoEXT -> Bool)
-> Eq PipelineRasterizationConservativeStateCreateInfoEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PipelineRasterizationConservativeStateCreateInfoEXT
-> PipelineRasterizationConservativeStateCreateInfoEXT -> Bool
$c/= :: PipelineRasterizationConservativeStateCreateInfoEXT
-> PipelineRasterizationConservativeStateCreateInfoEXT -> Bool
== :: PipelineRasterizationConservativeStateCreateInfoEXT
-> PipelineRasterizationConservativeStateCreateInfoEXT -> Bool
$c== :: PipelineRasterizationConservativeStateCreateInfoEXT
-> PipelineRasterizationConservativeStateCreateInfoEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PipelineRasterizationConservativeStateCreateInfoEXT)
#endif
deriving instance Show PipelineRasterizationConservativeStateCreateInfoEXT

instance ToCStruct PipelineRasterizationConservativeStateCreateInfoEXT where
  withCStruct :: forall b.
PipelineRasterizationConservativeStateCreateInfoEXT
-> (Ptr PipelineRasterizationConservativeStateCreateInfoEXT
    -> IO b)
-> IO b
withCStruct PipelineRasterizationConservativeStateCreateInfoEXT
x Ptr PipelineRasterizationConservativeStateCreateInfoEXT -> IO b
f = Int
-> (Ptr PipelineRasterizationConservativeStateCreateInfoEXT
    -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr PipelineRasterizationConservativeStateCreateInfoEXT -> IO b)
 -> IO b)
-> (Ptr PipelineRasterizationConservativeStateCreateInfoEXT
    -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p -> Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> PipelineRasterizationConservativeStateCreateInfoEXT
-> IO b
-> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p PipelineRasterizationConservativeStateCreateInfoEXT
x (Ptr PipelineRasterizationConservativeStateCreateInfoEXT -> IO b
f Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p)
  pokeCStruct :: forall b.
Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> PipelineRasterizationConservativeStateCreateInfoEXT
-> IO b
-> IO b
pokeCStruct Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p PipelineRasterizationConservativeStateCreateInfoEXT{Float
ConservativeRasterizationModeEXT
PipelineRasterizationConservativeStateCreateFlagsEXT
extraPrimitiveOverestimationSize :: Float
conservativeRasterizationMode :: ConservativeRasterizationModeEXT
flags :: PipelineRasterizationConservativeStateCreateFlagsEXT
$sel:extraPrimitiveOverestimationSize:PipelineRasterizationConservativeStateCreateInfoEXT :: PipelineRasterizationConservativeStateCreateInfoEXT -> Float
$sel:conservativeRasterizationMode:PipelineRasterizationConservativeStateCreateInfoEXT :: PipelineRasterizationConservativeStateCreateInfoEXT
-> ConservativeRasterizationModeEXT
$sel:flags:PipelineRasterizationConservativeStateCreateInfoEXT :: PipelineRasterizationConservativeStateCreateInfoEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> Int -> Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PipelineRasterizationConservativeStateCreateFlagsEXT)) (PipelineRasterizationConservativeStateCreateFlagsEXT
flags)
    Ptr ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> Int -> Ptr ConservativeRasterizationModeEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr ConservativeRasterizationModeEXT)) (ConservativeRasterizationModeEXT
conservativeRasterizationMode)
    Ptr CFloat -> CFloat -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
extraPrimitiveOverestimationSize))
    IO b
f
  cStructSize :: Int
cStructSize = Int
32
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> IO b -> IO b
pokeZeroCStruct Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> Int -> Ptr ConservativeRasterizationModeEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr ConservativeRasterizationModeEXT)) (ConservativeRasterizationModeEXT
forall a. Zero a => a
zero)
    Ptr CFloat -> CFloat -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
forall a. Zero a => a
zero))
    IO b
f

instance FromCStruct PipelineRasterizationConservativeStateCreateInfoEXT where
  peekCStruct :: Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> IO PipelineRasterizationConservativeStateCreateInfoEXT
peekCStruct Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p = do
    PipelineRasterizationConservativeStateCreateFlagsEXT
flags <- forall a. Storable a => Ptr a -> IO a
peek @PipelineRasterizationConservativeStateCreateFlagsEXT ((Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> Int -> Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PipelineRasterizationConservativeStateCreateFlagsEXT))
    ConservativeRasterizationModeEXT
conservativeRasterizationMode <- forall a. Storable a => Ptr a -> IO a
peek @ConservativeRasterizationModeEXT ((Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> Int -> Ptr ConservativeRasterizationModeEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr ConservativeRasterizationModeEXT))
    CFloat
extraPrimitiveOverestimationSize <- forall a. Storable a => Ptr a -> IO a
peek @CFloat ((Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> Int -> Ptr CFloat
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr CFloat))
    PipelineRasterizationConservativeStateCreateInfoEXT
-> IO PipelineRasterizationConservativeStateCreateInfoEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PipelineRasterizationConservativeStateCreateInfoEXT
 -> IO PipelineRasterizationConservativeStateCreateInfoEXT)
-> PipelineRasterizationConservativeStateCreateInfoEXT
-> IO PipelineRasterizationConservativeStateCreateInfoEXT
forall a b. (a -> b) -> a -> b
$ PipelineRasterizationConservativeStateCreateFlagsEXT
-> ConservativeRasterizationModeEXT
-> Float
-> PipelineRasterizationConservativeStateCreateInfoEXT
PipelineRasterizationConservativeStateCreateInfoEXT
             PipelineRasterizationConservativeStateCreateFlagsEXT
flags
             ConservativeRasterizationModeEXT
conservativeRasterizationMode
             (forall a b. Coercible a b => a -> b
coerce @CFloat @Float CFloat
extraPrimitiveOverestimationSize)

instance Storable PipelineRasterizationConservativeStateCreateInfoEXT where
  sizeOf :: PipelineRasterizationConservativeStateCreateInfoEXT -> Int
sizeOf ~PipelineRasterizationConservativeStateCreateInfoEXT
_ = Int
32
  alignment :: PipelineRasterizationConservativeStateCreateInfoEXT -> Int
alignment ~PipelineRasterizationConservativeStateCreateInfoEXT
_ = Int
8
  peek :: Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> IO PipelineRasterizationConservativeStateCreateInfoEXT
peek = Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> IO PipelineRasterizationConservativeStateCreateInfoEXT
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> PipelineRasterizationConservativeStateCreateInfoEXT -> IO ()
poke Ptr PipelineRasterizationConservativeStateCreateInfoEXT
ptr PipelineRasterizationConservativeStateCreateInfoEXT
poked = Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> PipelineRasterizationConservativeStateCreateInfoEXT
-> IO ()
-> IO ()
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelineRasterizationConservativeStateCreateInfoEXT
ptr PipelineRasterizationConservativeStateCreateInfoEXT
poked (() -> IO ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero PipelineRasterizationConservativeStateCreateInfoEXT where
  zero :: PipelineRasterizationConservativeStateCreateInfoEXT
zero = PipelineRasterizationConservativeStateCreateFlagsEXT
-> ConservativeRasterizationModeEXT
-> Float
-> PipelineRasterizationConservativeStateCreateInfoEXT
PipelineRasterizationConservativeStateCreateInfoEXT
           PipelineRasterizationConservativeStateCreateFlagsEXT
forall a. Zero a => a
zero
           ConservativeRasterizationModeEXT
forall a. Zero a => a
zero
           Float
forall a. Zero a => a
zero


-- | VkPipelineRasterizationConservativeStateCreateFlagsEXT - Reserved for
-- future use
--
-- = Description
--
-- 'PipelineRasterizationConservativeStateCreateFlagsEXT' is a bitmask type
-- for setting a mask, but is currently reserved for future use.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conservative_rasterization VK_EXT_conservative_rasterization>,
-- 'PipelineRasterizationConservativeStateCreateInfoEXT'
newtype PipelineRasterizationConservativeStateCreateFlagsEXT = PipelineRasterizationConservativeStateCreateFlagsEXT Flags
  deriving newtype (PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
(PipelineRasterizationConservativeStateCreateFlagsEXT
 -> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool)
-> Eq PipelineRasterizationConservativeStateCreateFlagsEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
$c/= :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
== :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
$c== :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
Eq, Eq PipelineRasterizationConservativeStateCreateFlagsEXT
Eq PipelineRasterizationConservativeStateCreateFlagsEXT
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT
    -> Ordering)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> Ord PipelineRasterizationConservativeStateCreateFlagsEXT
PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Ordering
PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
$cmin :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
max :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
$cmax :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
>= :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
$c>= :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
> :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
$c> :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
<= :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
$c<= :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
< :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
$c< :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
compare :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Ordering
$ccompare :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> Ordering
Ord, Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
-> IO PipelineRasterizationConservativeStateCreateFlagsEXT
Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> IO PipelineRasterizationConservativeStateCreateFlagsEXT
Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> IO ()
Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> IO ()
PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
(PipelineRasterizationConservativeStateCreateFlagsEXT -> Int)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT -> Int)
-> (Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
    -> Int -> IO PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
    -> Int
    -> PipelineRasterizationConservativeStateCreateFlagsEXT
    -> IO ())
-> (forall b.
    Ptr b
    -> Int -> IO PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (forall b.
    Ptr b
    -> Int
    -> PipelineRasterizationConservativeStateCreateFlagsEXT
    -> IO ())
-> (Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
    -> IO PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT -> IO ())
-> Storable PipelineRasterizationConservativeStateCreateFlagsEXT
forall b.
Ptr b
-> Int -> IO PipelineRasterizationConservativeStateCreateFlagsEXT
forall b.
Ptr b
-> Int
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
poke :: Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> IO ()
$cpoke :: Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> IO ()
peek :: Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
-> IO PipelineRasterizationConservativeStateCreateFlagsEXT
$cpeek :: Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
-> IO PipelineRasterizationConservativeStateCreateFlagsEXT
pokeByteOff :: forall b.
Ptr b
-> Int
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> IO ()
$cpokeByteOff :: forall b.
Ptr b
-> Int
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> IO ()
peekByteOff :: forall b.
Ptr b
-> Int -> IO PipelineRasterizationConservativeStateCreateFlagsEXT
$cpeekByteOff :: forall b.
Ptr b
-> Int -> IO PipelineRasterizationConservativeStateCreateFlagsEXT
pokeElemOff :: Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> IO ()
$cpokeElemOff :: Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> IO ()
peekElemOff :: Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> IO PipelineRasterizationConservativeStateCreateFlagsEXT
$cpeekElemOff :: Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> IO PipelineRasterizationConservativeStateCreateFlagsEXT
alignment :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
$calignment :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
sizeOf :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
$csizeOf :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
Storable, PipelineRasterizationConservativeStateCreateFlagsEXT
PipelineRasterizationConservativeStateCreateFlagsEXT
-> Zero PipelineRasterizationConservativeStateCreateFlagsEXT
forall a. a -> Zero a
zero :: PipelineRasterizationConservativeStateCreateFlagsEXT
$czero :: PipelineRasterizationConservativeStateCreateFlagsEXT
Zero, Eq PipelineRasterizationConservativeStateCreateFlagsEXT
PipelineRasterizationConservativeStateCreateFlagsEXT
Eq PipelineRasterizationConservativeStateCreateFlagsEXT
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> (Int -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> Int -> Bool)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> Maybe Int)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT -> Int)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT
    -> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT -> Int)
-> Bits PipelineRasterizationConservativeStateCreateFlagsEXT
Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
PipelineRasterizationConservativeStateCreateFlagsEXT -> Maybe Int
PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
PipelineRasterizationConservativeStateCreateFlagsEXT -> Int -> Bool
PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
forall a.
Eq a
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
popCount :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
$cpopCount :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
rotateR :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
$crotateR :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
rotateL :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
$crotateL :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
unsafeShiftR :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
$cunsafeShiftR :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
shiftR :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
$cshiftR :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
unsafeShiftL :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
$cunsafeShiftL :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
shiftL :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
$cshiftL :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
isSigned :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
$cisSigned :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Bool
bitSize :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
$cbitSize :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
bitSizeMaybe :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Maybe Int
$cbitSizeMaybe :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Maybe Int
testBit :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Int -> Bool
$ctestBit :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Int -> Bool
complementBit :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
$ccomplementBit :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
clearBit :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
$cclearBit :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
setBit :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
$csetBit :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
bit :: Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
$cbit :: Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
zeroBits :: PipelineRasterizationConservativeStateCreateFlagsEXT
$czeroBits :: PipelineRasterizationConservativeStateCreateFlagsEXT
rotate :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
$crotate :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
shift :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
$cshift :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> Int -> PipelineRasterizationConservativeStateCreateFlagsEXT
complement :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
$ccomplement :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
xor :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
$cxor :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
.|. :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
$c.|. :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
.&. :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
$c.&. :: PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
Bits, Bits PipelineRasterizationConservativeStateCreateFlagsEXT
Bits PipelineRasterizationConservativeStateCreateFlagsEXT
-> (PipelineRasterizationConservativeStateCreateFlagsEXT -> Int)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT -> Int)
-> (PipelineRasterizationConservativeStateCreateFlagsEXT -> Int)
-> FiniteBits PipelineRasterizationConservativeStateCreateFlagsEXT
PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
forall b.
Bits b -> (b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
countTrailingZeros :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
$ccountTrailingZeros :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
countLeadingZeros :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
$ccountLeadingZeros :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
finiteBitSize :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
$cfiniteBitSize :: PipelineRasterizationConservativeStateCreateFlagsEXT -> Int
FiniteBits)

conNamePipelineRasterizationConservativeStateCreateFlagsEXT :: String
conNamePipelineRasterizationConservativeStateCreateFlagsEXT :: String
conNamePipelineRasterizationConservativeStateCreateFlagsEXT = String
"PipelineRasterizationConservativeStateCreateFlagsEXT"

enumPrefixPipelineRasterizationConservativeStateCreateFlagsEXT :: String
enumPrefixPipelineRasterizationConservativeStateCreateFlagsEXT :: String
enumPrefixPipelineRasterizationConservativeStateCreateFlagsEXT = String
""

showTablePipelineRasterizationConservativeStateCreateFlagsEXT :: [(PipelineRasterizationConservativeStateCreateFlagsEXT, String)]
showTablePipelineRasterizationConservativeStateCreateFlagsEXT :: [(PipelineRasterizationConservativeStateCreateFlagsEXT, String)]
showTablePipelineRasterizationConservativeStateCreateFlagsEXT = []

instance Show PipelineRasterizationConservativeStateCreateFlagsEXT where
  showsPrec :: Int
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> ShowS
showsPrec =
    String
-> [(PipelineRasterizationConservativeStateCreateFlagsEXT, String)]
-> String
-> (PipelineRasterizationConservativeStateCreateFlagsEXT -> Flags)
-> (Flags -> ShowS)
-> Int
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixPipelineRasterizationConservativeStateCreateFlagsEXT
      [(PipelineRasterizationConservativeStateCreateFlagsEXT, String)]
showTablePipelineRasterizationConservativeStateCreateFlagsEXT
      String
conNamePipelineRasterizationConservativeStateCreateFlagsEXT
      (\(PipelineRasterizationConservativeStateCreateFlagsEXT Flags
x) -> Flags
x)
      (\Flags
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Flags -> ShowS
forall a. (Integral a, Show a) => a -> ShowS
showHex Flags
x)

instance Read PipelineRasterizationConservativeStateCreateFlagsEXT where
  readPrec :: ReadPrec PipelineRasterizationConservativeStateCreateFlagsEXT
readPrec =
    String
-> [(PipelineRasterizationConservativeStateCreateFlagsEXT, String)]
-> String
-> (Flags -> PipelineRasterizationConservativeStateCreateFlagsEXT)
-> ReadPrec PipelineRasterizationConservativeStateCreateFlagsEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixPipelineRasterizationConservativeStateCreateFlagsEXT
      [(PipelineRasterizationConservativeStateCreateFlagsEXT, String)]
showTablePipelineRasterizationConservativeStateCreateFlagsEXT
      String
conNamePipelineRasterizationConservativeStateCreateFlagsEXT
      Flags -> PipelineRasterizationConservativeStateCreateFlagsEXT
PipelineRasterizationConservativeStateCreateFlagsEXT

-- | VkConservativeRasterizationModeEXT - Specify the conservative
-- rasterization mode
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conservative_rasterization VK_EXT_conservative_rasterization>,
-- 'PipelineRasterizationConservativeStateCreateInfoEXT',
-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetConservativeRasterizationModeEXT'
newtype ConservativeRasterizationModeEXT = ConservativeRasterizationModeEXT Int32
  deriving newtype (ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Bool
(ConservativeRasterizationModeEXT
 -> ConservativeRasterizationModeEXT -> Bool)
-> (ConservativeRasterizationModeEXT
    -> ConservativeRasterizationModeEXT -> Bool)
-> Eq ConservativeRasterizationModeEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Bool
$c/= :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Bool
== :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Bool
$c== :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Bool
Eq, Eq ConservativeRasterizationModeEXT
Eq ConservativeRasterizationModeEXT
-> (ConservativeRasterizationModeEXT
    -> ConservativeRasterizationModeEXT -> Ordering)
-> (ConservativeRasterizationModeEXT
    -> ConservativeRasterizationModeEXT -> Bool)
-> (ConservativeRasterizationModeEXT
    -> ConservativeRasterizationModeEXT -> Bool)
-> (ConservativeRasterizationModeEXT
    -> ConservativeRasterizationModeEXT -> Bool)
-> (ConservativeRasterizationModeEXT
    -> ConservativeRasterizationModeEXT -> Bool)
-> (ConservativeRasterizationModeEXT
    -> ConservativeRasterizationModeEXT
    -> ConservativeRasterizationModeEXT)
-> (ConservativeRasterizationModeEXT
    -> ConservativeRasterizationModeEXT
    -> ConservativeRasterizationModeEXT)
-> Ord ConservativeRasterizationModeEXT
ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Bool
ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Ordering
ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT
$cmin :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT
max :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT
$cmax :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT
>= :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Bool
$c>= :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Bool
> :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Bool
$c> :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Bool
<= :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Bool
$c<= :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Bool
< :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Bool
$c< :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Bool
compare :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Ordering
$ccompare :: ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> Ordering
Ord, Ptr ConservativeRasterizationModeEXT
-> IO ConservativeRasterizationModeEXT
Ptr ConservativeRasterizationModeEXT
-> Int -> IO ConservativeRasterizationModeEXT
Ptr ConservativeRasterizationModeEXT
-> Int -> ConservativeRasterizationModeEXT -> IO ()
Ptr ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> IO ()
ConservativeRasterizationModeEXT -> Int
(ConservativeRasterizationModeEXT -> Int)
-> (ConservativeRasterizationModeEXT -> Int)
-> (Ptr ConservativeRasterizationModeEXT
    -> Int -> IO ConservativeRasterizationModeEXT)
-> (Ptr ConservativeRasterizationModeEXT
    -> Int -> ConservativeRasterizationModeEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO ConservativeRasterizationModeEXT)
-> (forall b.
    Ptr b -> Int -> ConservativeRasterizationModeEXT -> IO ())
-> (Ptr ConservativeRasterizationModeEXT
    -> IO ConservativeRasterizationModeEXT)
-> (Ptr ConservativeRasterizationModeEXT
    -> ConservativeRasterizationModeEXT -> IO ())
-> Storable ConservativeRasterizationModeEXT
forall b. Ptr b -> Int -> IO ConservativeRasterizationModeEXT
forall b. Ptr b -> Int -> ConservativeRasterizationModeEXT -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
poke :: Ptr ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> IO ()
$cpoke :: Ptr ConservativeRasterizationModeEXT
-> ConservativeRasterizationModeEXT -> IO ()
peek :: Ptr ConservativeRasterizationModeEXT
-> IO ConservativeRasterizationModeEXT
$cpeek :: Ptr ConservativeRasterizationModeEXT
-> IO ConservativeRasterizationModeEXT
pokeByteOff :: forall b. Ptr b -> Int -> ConservativeRasterizationModeEXT -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> ConservativeRasterizationModeEXT -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO ConservativeRasterizationModeEXT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ConservativeRasterizationModeEXT
pokeElemOff :: Ptr ConservativeRasterizationModeEXT
-> Int -> ConservativeRasterizationModeEXT -> IO ()
$cpokeElemOff :: Ptr ConservativeRasterizationModeEXT
-> Int -> ConservativeRasterizationModeEXT -> IO ()
peekElemOff :: Ptr ConservativeRasterizationModeEXT
-> Int -> IO ConservativeRasterizationModeEXT
$cpeekElemOff :: Ptr ConservativeRasterizationModeEXT
-> Int -> IO ConservativeRasterizationModeEXT
alignment :: ConservativeRasterizationModeEXT -> Int
$calignment :: ConservativeRasterizationModeEXT -> Int
sizeOf :: ConservativeRasterizationModeEXT -> Int
$csizeOf :: ConservativeRasterizationModeEXT -> Int
Storable, ConservativeRasterizationModeEXT
ConservativeRasterizationModeEXT
-> Zero ConservativeRasterizationModeEXT
forall a. a -> Zero a
zero :: ConservativeRasterizationModeEXT
$czero :: ConservativeRasterizationModeEXT
Zero)

-- | 'CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT' specifies that
-- conservative rasterization is disabled and rasterization proceeds as
-- normal.
pattern $bCONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT :: ConservativeRasterizationModeEXT
$mCONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT :: forall {r}.
ConservativeRasterizationModeEXT
-> (Void# -> r) -> (Void# -> r) -> r
CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = ConservativeRasterizationModeEXT 0

-- | 'CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT' specifies that
-- conservative rasterization is enabled in overestimation mode.
pattern $bCONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT :: ConservativeRasterizationModeEXT
$mCONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT :: forall {r}.
ConservativeRasterizationModeEXT
-> (Void# -> r) -> (Void# -> r) -> r
CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = ConservativeRasterizationModeEXT 1

-- | 'CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT' specifies that
-- conservative rasterization is enabled in underestimation mode.
pattern $bCONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT :: ConservativeRasterizationModeEXT
$mCONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT :: forall {r}.
ConservativeRasterizationModeEXT
-> (Void# -> r) -> (Void# -> r) -> r
CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = ConservativeRasterizationModeEXT 2

{-# COMPLETE
  CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
  , CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT
  , CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT ::
    ConservativeRasterizationModeEXT
  #-}

conNameConservativeRasterizationModeEXT :: String
conNameConservativeRasterizationModeEXT :: String
conNameConservativeRasterizationModeEXT = String
"ConservativeRasterizationModeEXT"

enumPrefixConservativeRasterizationModeEXT :: String
enumPrefixConservativeRasterizationModeEXT :: String
enumPrefixConservativeRasterizationModeEXT = String
"CONSERVATIVE_RASTERIZATION_MODE_"

showTableConservativeRasterizationModeEXT :: [(ConservativeRasterizationModeEXT, String)]
showTableConservativeRasterizationModeEXT :: [(ConservativeRasterizationModeEXT, String)]
showTableConservativeRasterizationModeEXT =
  [
    ( ConservativeRasterizationModeEXT
CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
    , String
"DISABLED_EXT"
    )
  ,
    ( ConservativeRasterizationModeEXT
CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT
    , String
"OVERESTIMATE_EXT"
    )
  ,
    ( ConservativeRasterizationModeEXT
CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT
    , String
"UNDERESTIMATE_EXT"
    )
  ]

instance Show ConservativeRasterizationModeEXT where
  showsPrec :: Int -> ConservativeRasterizationModeEXT -> ShowS
showsPrec =
    String
-> [(ConservativeRasterizationModeEXT, String)]
-> String
-> (ConservativeRasterizationModeEXT -> Int32)
-> (Int32 -> ShowS)
-> Int
-> ConservativeRasterizationModeEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixConservativeRasterizationModeEXT
      [(ConservativeRasterizationModeEXT, String)]
showTableConservativeRasterizationModeEXT
      String
conNameConservativeRasterizationModeEXT
      (\(ConservativeRasterizationModeEXT Int32
x) -> Int32
x)
      (Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
11)

instance Read ConservativeRasterizationModeEXT where
  readPrec :: ReadPrec ConservativeRasterizationModeEXT
readPrec =
    String
-> [(ConservativeRasterizationModeEXT, String)]
-> String
-> (Int32 -> ConservativeRasterizationModeEXT)
-> ReadPrec ConservativeRasterizationModeEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixConservativeRasterizationModeEXT
      [(ConservativeRasterizationModeEXT, String)]
showTableConservativeRasterizationModeEXT
      String
conNameConservativeRasterizationModeEXT
      Int32 -> ConservativeRasterizationModeEXT
ConservativeRasterizationModeEXT

type EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION"
pattern EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION :: forall a . Integral a => a
pattern $bEXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION :: forall a. Integral a => a
$mEXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> (Void# -> r) -> (Void# -> r) -> r
EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1


type EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization"

-- No documentation found for TopLevel "VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME"
pattern EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bEXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mEXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization"