{-# 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 Vulkan 1.0
--
--     -   Requires @VK_KHR_get_physical_device_properties2@
--
-- [__Contact__]
--
--     -   Piers Daniell
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_conservative_rasterization:%20&body=@pdaniell-nv%20 >
--
-- == 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://www.khronos.org/registry/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://www.khronos.org/registry/vulkan/specs/1.2-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 (allocaBytesAligned)
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
--
-- = 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
  { -- | #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 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 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 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
  , -- | #limits-degenerateLinesRasterized# @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
  , -- | #limits-fullyCoveredFragmentShaderInputVariable#
    -- @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
  , -- | #limits-conservativeRasterizationPostDepthCoverage#
    -- @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 -> Float
forall a b. Coercible a b => a -> b
coerce @CFloat @Float CFloat
primitiveOverestimationSize) (CFloat -> Float
forall a b. Coercible a b => a -> b
coerce @CFloat @Float CFloat
maxExtraPrimitiveOverestimationSize) (CFloat -> Float
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
_ = 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.
    --
    -- #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@.
    --
    -- #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 :: 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 -> Float
forall a b. Coercible a b => a -> b
coerce @CFloat @Float 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, 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
$cp1FiniteBits :: Bits PipelineRasterizationConservativeStateCreateFlagsEXT
FiniteBits)



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

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

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 x :: Flags
x) -> Flags
x)
                            (\x :: Flags
x -> String -> ShowS
showString "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
--
-- '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 #-}

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

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

showTableConservativeRasterizationModeEXT :: [(ConservativeRasterizationModeEXT, String)]
showTableConservativeRasterizationModeEXT :: [(ConservativeRasterizationModeEXT, String)]
showTableConservativeRasterizationModeEXT =
  [ (ConservativeRasterizationModeEXT
CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT     , "DISABLED_EXT")
  , (ConservativeRasterizationModeEXT
CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT , "OVERESTIMATE_EXT")
  , (ConservativeRasterizationModeEXT
CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT, "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 x :: Int32
x) -> Int32
x)
                            (Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 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 :: 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"