{-# language CPP #-}
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 Foreign.Marshal.Alloc (allocaBytesAligned)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Read (choose)
import GHC.Read (expectP)
import GHC.Read (parens)
import GHC.Show (showParen)
import GHC.Show (showString)
import GHC.Show (showsPrec)
import Numeric (showHex)
import Text.ParserCombinators.ReadPrec ((+++))
import Text.ParserCombinators.ReadPrec (prec)
import Text.ParserCombinators.ReadPrec (step)
import Data.Bits (Bits)
import Data.String (IsString)
import Data.Typeable (Typeable)
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 Text.Read.Lex (Lexeme(Ident))
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.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
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
--
-- = Members
--
-- The members of the
-- 'PhysicalDeviceConservativeRasterizationPropertiesEXT' structure
-- describe the following implementation-dependent limits:
--
-- = Description
--
-- If the 'PhysicalDeviceConservativeRasterizationPropertiesEXT' structure
-- is included in the @pNext@ chain of
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
-- it is filled with the implementation-dependent limits and properties.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceConservativeRasterizationPropertiesEXT = PhysicalDeviceConservativeRasterizationPropertiesEXT
  { -- | @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
  , -- | @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
  , -- | @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
  , -- | @primitiveUnderestimation@ is 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
  , -- | @conservativePointAndLineRasterization@ is 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
  , -- | @degenerateTrianglesRasterized@ is 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 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
  , -- | @degenerateLinesRasterized@ is false if the implementation culls lines
    -- that become zero length after they are quantized to the fixed-point
    -- rasterization pixel grid. @degenerateLinesRasterized@ is 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
  , -- | @fullyCoveredFragmentShaderInputVariable@ is true if the implementation
    -- supports the SPIR-V builtin fragment shader input variable
    -- @FullyCoveredEXT@ which specifies that conservative rasterization is
    -- enabled and the fragment area is fully covered by the generating
    -- primitive.
    PhysicalDeviceConservativeRasterizationPropertiesEXT -> Bool
fullyCoveredFragmentShaderInputVariable :: Bool
  , -- | @conservativeRasterizationPostDepthCoverage@ is true if the
    -- implementation supports conservative rasterization with the
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoverage PostDepthCoverage>
    -- execution mode enabled. When supported the
    -- 'Vulkan.Core10.FundamentalTypes.SampleMask' built-in input variable will
    -- reflect the coverage after the early per-fragment depth and stencil
    -- tests are applied even when conservative rasterization is enabled.
    -- Otherwise
    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoverage 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 :: PhysicalDeviceConservativeRasterizationPropertiesEXT
-> (Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
    -> IO b)
-> IO b
withCStruct x :: PhysicalDeviceConservativeRasterizationPropertiesEXT
x f :: Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT -> IO b
f = Int
-> Int
-> (Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
    -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 56 8 ((Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT -> IO b)
 -> IO b)
-> (Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
    -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \p :: 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 :: Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> PhysicalDeviceConservativeRasterizationPropertiesEXT
-> IO b
-> IO b
pokeCStruct p :: Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p PhysicalDeviceConservativeRasterizationPropertiesEXT{..} f :: 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` 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` 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` 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` 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` 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` 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` 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` 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` 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` 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` 48 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
conservativeRasterizationPostDepthCoverage))
    IO b
f
  cStructSize :: Int
cStructSize = 56
  cStructAlignment :: Int
cStructAlignment = 8
  pokeZeroCStruct :: Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
-> IO b -> IO b
pokeZeroCStruct p :: Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p f :: 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` 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` 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` 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` 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` 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` 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` 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` 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` 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` 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` 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 p :: Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
p = do
    CFloat
primitiveOverestimationSize <- Ptr CFloat -> IO CFloat
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` 16 :: Ptr CFloat))
    CFloat
maxExtraPrimitiveOverestimationSize <- Ptr CFloat -> IO CFloat
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` 20 :: Ptr CFloat))
    CFloat
extraPrimitiveOverestimationSizeGranularity <- Ptr CFloat -> IO CFloat
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` 24 :: Ptr CFloat))
    Bool32
primitiveUnderestimation <- Ptr Bool32 -> IO Bool32
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` 28 :: Ptr Bool32))
    Bool32
conservativePointAndLineRasterization <- Ptr Bool32 -> IO Bool32
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` 32 :: Ptr Bool32))
    Bool32
degenerateTrianglesRasterized <- Ptr Bool32 -> IO Bool32
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` 36 :: Ptr Bool32))
    Bool32
degenerateLinesRasterized <- Ptr Bool32 -> IO Bool32
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` 40 :: Ptr Bool32))
    Bool32
fullyCoveredFragmentShaderInputVariable <- Ptr Bool32 -> IO Bool32
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` 44 :: Ptr Bool32))
    Bool32
conservativeRasterizationPostDepthCoverage <- Ptr Bool32 -> IO Bool32
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` 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
             ((\(CFloat a :: Float
a) -> Float
a) CFloat
primitiveOverestimationSize) ((\(CFloat a :: Float
a) -> Float
a) CFloat
maxExtraPrimitiveOverestimationSize) ((\(CFloat a :: Float
a) -> Float
a) 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
_ = 56
  alignment :: PhysicalDeviceConservativeRasterizationPropertiesEXT -> Int
alignment ~PhysicalDeviceConservativeRasterizationPropertiesEXT
_ = 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 :: Ptr PhysicalDeviceConservativeRasterizationPropertiesEXT
ptr poked :: 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
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- 'ConservativeRasterizationModeEXT',
-- 'PipelineRasterizationConservativeStateCreateFlagsEXT',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PipelineRasterizationConservativeStateCreateInfoEXT = PipelineRasterizationConservativeStateCreateInfoEXT
  { -- | @flags@ is reserved for future use.
    --
    -- @flags@ /must/ be @0@
    PipelineRasterizationConservativeStateCreateInfoEXT
-> PipelineRasterizationConservativeStateCreateFlagsEXT
flags :: PipelineRasterizationConservativeStateCreateFlagsEXT
  , -- | @conservativeRasterizationMode@ is the conservative rasterization mode
    -- to use.
    --
    -- @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@.
    --
    -- @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 :: PipelineRasterizationConservativeStateCreateInfoEXT
-> (Ptr PipelineRasterizationConservativeStateCreateInfoEXT
    -> IO b)
-> IO b
withCStruct x :: PipelineRasterizationConservativeStateCreateInfoEXT
x f :: Ptr PipelineRasterizationConservativeStateCreateInfoEXT -> IO b
f = Int
-> Int
-> (Ptr PipelineRasterizationConservativeStateCreateInfoEXT
    -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 32 8 ((Ptr PipelineRasterizationConservativeStateCreateInfoEXT -> IO b)
 -> IO b)
-> (Ptr PipelineRasterizationConservativeStateCreateInfoEXT
    -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \p :: 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 :: Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> PipelineRasterizationConservativeStateCreateInfoEXT
-> IO b
-> IO b
pokeCStruct p :: Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p PipelineRasterizationConservativeStateCreateInfoEXT{..} f :: 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` 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` 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` 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` 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` 24 :: Ptr CFloat)) (Float -> CFloat
CFloat (Float
extraPrimitiveOverestimationSize))
    IO b
f
  cStructSize :: Int
cStructSize = 32
  cStructAlignment :: Int
cStructAlignment = 8
  pokeZeroCStruct :: Ptr PipelineRasterizationConservativeStateCreateInfoEXT
-> IO b -> IO b
pokeZeroCStruct p :: Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p f :: 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` 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` 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` 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` 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 p :: Ptr PipelineRasterizationConservativeStateCreateInfoEXT
p = do
    PipelineRasterizationConservativeStateCreateFlagsEXT
flags <- Ptr PipelineRasterizationConservativeStateCreateFlagsEXT
-> IO PipelineRasterizationConservativeStateCreateFlagsEXT
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` 16 :: Ptr PipelineRasterizationConservativeStateCreateFlagsEXT))
    ConservativeRasterizationModeEXT
conservativeRasterizationMode <- Ptr ConservativeRasterizationModeEXT
-> IO ConservativeRasterizationModeEXT
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` 20 :: Ptr ConservativeRasterizationModeEXT))
    CFloat
extraPrimitiveOverestimationSize <- Ptr CFloat -> IO CFloat
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` 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 ((\(CFloat a :: Float
a) -> Float
a) CFloat
extraPrimitiveOverestimationSize)

instance Storable PipelineRasterizationConservativeStateCreateInfoEXT where
  sizeOf :: PipelineRasterizationConservativeStateCreateInfoEXT -> Int
sizeOf ~PipelineRasterizationConservativeStateCreateInfoEXT
_ = 32
  alignment :: PipelineRasterizationConservativeStateCreateInfoEXT -> Int
alignment ~PipelineRasterizationConservativeStateCreateInfoEXT
_ = 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 :: Ptr PipelineRasterizationConservativeStateCreateInfoEXT
ptr poked :: 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
--
-- '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
$cp1Ord :: Eq PipelineRasterizationConservativeStateCreateFlagsEXT
Ord, Ptr b
-> Int -> IO PipelineRasterizationConservativeStateCreateFlagsEXT
Ptr b
-> Int
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> IO ()
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 :: Ptr b
-> Int
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> IO ()
$cpokeByteOff :: forall b.
Ptr b
-> Int
-> PipelineRasterizationConservativeStateCreateFlagsEXT
-> IO ()
peekByteOff :: 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
$cp1Bits :: Eq PipelineRasterizationConservativeStateCreateFlagsEXT
Bits)



instance Show PipelineRasterizationConservativeStateCreateFlagsEXT where
  showsPrec :: Int
-> PipelineRasterizationConservativeStateCreateFlagsEXT -> ShowS
showsPrec p :: Int
p = \case
    PipelineRasterizationConservativeStateCreateFlagsEXT x :: Flags
x -> Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 11) (String -> ShowS
showString "PipelineRasterizationConservativeStateCreateFlagsEXT 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 = ReadPrec PipelineRasterizationConservativeStateCreateFlagsEXT
-> ReadPrec PipelineRasterizationConservativeStateCreateFlagsEXT
forall a. ReadPrec a -> ReadPrec a
parens ([(String,
  ReadPrec PipelineRasterizationConservativeStateCreateFlagsEXT)]
-> ReadPrec PipelineRasterizationConservativeStateCreateFlagsEXT
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose []
                     ReadPrec PipelineRasterizationConservativeStateCreateFlagsEXT
-> ReadPrec PipelineRasterizationConservativeStateCreateFlagsEXT
-> ReadPrec PipelineRasterizationConservativeStateCreateFlagsEXT
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
                     Int
-> ReadPrec PipelineRasterizationConservativeStateCreateFlagsEXT
-> ReadPrec PipelineRasterizationConservativeStateCreateFlagsEXT
forall a. Int -> ReadPrec a -> ReadPrec a
prec 10 (do
                       Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident "PipelineRasterizationConservativeStateCreateFlagsEXT")
                       Flags
v <- ReadPrec Flags -> ReadPrec Flags
forall a. ReadPrec a -> ReadPrec a
step ReadPrec Flags
forall a. Read a => ReadPrec a
readPrec
                       PipelineRasterizationConservativeStateCreateFlagsEXT
-> ReadPrec PipelineRasterizationConservativeStateCreateFlagsEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags -> PipelineRasterizationConservativeStateCreateFlagsEXT
PipelineRasterizationConservativeStateCreateFlagsEXT Flags
v)))


-- | VkConservativeRasterizationModeEXT - Specify the conservative
-- rasterization mode
--
-- = See Also
--
-- 'PipelineRasterizationConservativeStateCreateInfoEXT'
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
$cp1Ord :: Eq ConservativeRasterizationModeEXT
Ord, Ptr b -> Int -> IO ConservativeRasterizationModeEXT
Ptr b -> Int -> ConservativeRasterizationModeEXT -> IO ()
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 :: Ptr b -> Int -> ConservativeRasterizationModeEXT -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> ConservativeRasterizationModeEXT -> IO ()
peekByteOff :: 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 #-}

instance Show ConservativeRasterizationModeEXT where
  showsPrec :: Int -> ConservativeRasterizationModeEXT -> ShowS
showsPrec p :: Int
p = \case
    CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT -> String -> ShowS
showString "CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT"
    CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT -> String -> ShowS
showString "CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT"
    CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT -> String -> ShowS
showString "CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT"
    ConservativeRasterizationModeEXT x :: Int32
x -> Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 11) (String -> ShowS
showString "ConservativeRasterizationModeEXT " ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11 Int32
x)

instance Read ConservativeRasterizationModeEXT where
  readPrec :: ReadPrec ConservativeRasterizationModeEXT
readPrec = ReadPrec ConservativeRasterizationModeEXT
-> ReadPrec ConservativeRasterizationModeEXT
forall a. ReadPrec a -> ReadPrec a
parens ([(String, ReadPrec ConservativeRasterizationModeEXT)]
-> ReadPrec ConservativeRasterizationModeEXT
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose [("CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT", ConservativeRasterizationModeEXT
-> ReadPrec ConservativeRasterizationModeEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure ConservativeRasterizationModeEXT
CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT)
                            , ("CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT", ConservativeRasterizationModeEXT
-> ReadPrec ConservativeRasterizationModeEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure ConservativeRasterizationModeEXT
CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT)
                            , ("CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT", ConservativeRasterizationModeEXT
-> ReadPrec ConservativeRasterizationModeEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure ConservativeRasterizationModeEXT
CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT)]
                     ReadPrec ConservativeRasterizationModeEXT
-> ReadPrec ConservativeRasterizationModeEXT
-> ReadPrec ConservativeRasterizationModeEXT
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
                     Int
-> ReadPrec ConservativeRasterizationModeEXT
-> ReadPrec ConservativeRasterizationModeEXT
forall a. Int -> ReadPrec a -> ReadPrec a
prec 10 (do
                       Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident "ConservativeRasterizationModeEXT")
                       Int32
v <- ReadPrec Int32 -> ReadPrec Int32
forall a. ReadPrec a -> ReadPrec a
step ReadPrec Int32
forall a. Read a => ReadPrec a
readPrec
                       ConservativeRasterizationModeEXT
-> ReadPrec ConservativeRasterizationModeEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Int32 -> ConservativeRasterizationModeEXT
ConservativeRasterizationModeEXT Int32
v)))


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 :: 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 :: 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"