{-# language CPP #-}
-- | = Name
--
-- VK_EXT_pipeline_robustness - device extension
--
-- == VK_EXT_pipeline_robustness
--
-- [__Name String__]
--     @VK_EXT_pipeline_robustness@
--
-- [__Extension Type__]
--     Device extension
--
-- [__Registered Extension Number__]
--     69
--
-- [__Revision__]
--     1
--
-- [__Extension and Version Dependencies__]
--
--     -   Requires support for Vulkan 1.0
--
--     -   Requires @VK_KHR_get_physical_device_properties2@ to be enabled
--         for any device-level functionality
--
-- [__Contact__]
--
--     -   Jarred Davies
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2022-07-12
--
-- [__Interactions and External Dependencies__]
--
--     -   Interacts with @VK_EXT_robustness2@
--
--     -   Interacts with @VK_EXT_image_robustness@
--
--     -   Interacts with @VK_KHR_ray_tracing_pipeline@
--
-- [__Contributors__]
--
--     -   Jarred Davies, Imagination Technologies
--
--     -   Alex Walters, Imagination Technologies
--
--     -   Piers Daniell, NVIDIA
--
--     -   Graeme Leese, Broadcom Corporation
--
--     -   Jeff Leger, Qualcomm Technologies, Inc.
--
--     -   Jason Ekstrand, Intel
--
--     -   Lionel Landwerlin, Intel
--
--     -   Shahbaz Youssefi, Google, Inc.
--
-- == Description
--
-- @VK_EXT_pipeline_robustness@ allows users to request robustness on a
-- per-pipeline stage basis.
--
-- As
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
-- and other robustness features may have an adverse effect on performance,
-- this extension is designed to allow users to request robust behavior
-- only where it may be needed.
--
-- == New Structures
--
-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
--     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
--     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',
--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR':
--
--     -   'PipelineRobustnessCreateInfoEXT'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--     'Vulkan.Core10.Device.DeviceCreateInfo':
--
--     -   'PhysicalDevicePipelineRobustnessFeaturesEXT'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
--
--     -   'PhysicalDevicePipelineRobustnessPropertiesEXT'
--
-- == New Enums
--
-- -   'PipelineRobustnessBufferBehaviorEXT'
--
-- -   'PipelineRobustnessImageBehaviorEXT'
--
-- == New Enum Constants
--
-- -   'EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME'
--
-- -   'EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT'
--
-- == Version History
--
-- -   Revision 1, 2022-07-12 (Jarred Davies)
--
--     -   Initial version
--
-- == See Also
--
-- 'PhysicalDevicePipelineRobustnessFeaturesEXT',
-- 'PhysicalDevicePipelineRobustnessPropertiesEXT',
-- 'PipelineRobustnessBufferBehaviorEXT',
-- 'PipelineRobustnessCreateInfoEXT', 'PipelineRobustnessImageBehaviorEXT'
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pipeline_robustness 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_pipeline_robustness  ( PhysicalDevicePipelineRobustnessFeaturesEXT(..)
                                                     , PipelineRobustnessCreateInfoEXT(..)
                                                     , PhysicalDevicePipelineRobustnessPropertiesEXT(..)
                                                     , PipelineRobustnessBufferBehaviorEXT( PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT
                                                                                          , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT
                                                                                          , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
                                                                                          , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
                                                                                          , ..
                                                                                          )
                                                     , PipelineRobustnessImageBehaviorEXT( PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT
                                                                                         , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT
                                                                                         , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT
                                                                                         , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT
                                                                                         , ..
                                                                                         )
                                                     , EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION
                                                     , pattern EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION
                                                     , EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME
                                                     , pattern EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME
                                                     ) where

import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showsPrec)
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.String (IsString)
import Data.Typeable (Typeable)
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.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT))
-- | VkPhysicalDevicePipelineRobustnessFeaturesEXT - Structure describing
-- whether an implementation supports robustness requests on a per-pipeline
-- stage granularity
--
-- = Members
--
-- This structure describes the following feature:
--
-- = Description
--
-- Note
--
-- Enabling
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
-- may, on some platforms, incur a minor performance cost when
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
-- is disabled, even for pipelines which do not make use of any robustness
-- features. If robustness is not needed,
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
-- should not be enabled by an application.
--
-- If the 'PhysicalDevicePipelineRobustnessFeaturesEXT' structure is
-- included in the @pNext@ chain of the
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
-- structure passed to
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
-- it is filled in to indicate whether each corresponding feature is
-- supported. 'PhysicalDevicePipelineRobustnessFeaturesEXT' /can/ also be
-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
-- selectively enable these features.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_robustness VK_EXT_pipeline_robustness>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDevicePipelineRobustnessFeaturesEXT = PhysicalDevicePipelineRobustnessFeaturesEXT
  { -- | #features-pipelineRobustness# @pipelineRobustness@ indicates that
    -- robustness /can/ be requested on a per-pipeline-stage granularity.
    PhysicalDevicePipelineRobustnessFeaturesEXT -> Bool
pipelineRobustness :: Bool }
  deriving (Typeable, PhysicalDevicePipelineRobustnessFeaturesEXT
-> PhysicalDevicePipelineRobustnessFeaturesEXT -> Bool
(PhysicalDevicePipelineRobustnessFeaturesEXT
 -> PhysicalDevicePipelineRobustnessFeaturesEXT -> Bool)
-> (PhysicalDevicePipelineRobustnessFeaturesEXT
    -> PhysicalDevicePipelineRobustnessFeaturesEXT -> Bool)
-> Eq PhysicalDevicePipelineRobustnessFeaturesEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDevicePipelineRobustnessFeaturesEXT
-> PhysicalDevicePipelineRobustnessFeaturesEXT -> Bool
$c/= :: PhysicalDevicePipelineRobustnessFeaturesEXT
-> PhysicalDevicePipelineRobustnessFeaturesEXT -> Bool
== :: PhysicalDevicePipelineRobustnessFeaturesEXT
-> PhysicalDevicePipelineRobustnessFeaturesEXT -> Bool
$c== :: PhysicalDevicePipelineRobustnessFeaturesEXT
-> PhysicalDevicePipelineRobustnessFeaturesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDevicePipelineRobustnessFeaturesEXT)
#endif
deriving instance Show PhysicalDevicePipelineRobustnessFeaturesEXT

instance ToCStruct PhysicalDevicePipelineRobustnessFeaturesEXT where
  withCStruct :: forall b.
PhysicalDevicePipelineRobustnessFeaturesEXT
-> (Ptr PhysicalDevicePipelineRobustnessFeaturesEXT -> IO b)
-> IO b
withCStruct PhysicalDevicePipelineRobustnessFeaturesEXT
x Ptr PhysicalDevicePipelineRobustnessFeaturesEXT -> IO b
f = Int
-> (Ptr PhysicalDevicePipelineRobustnessFeaturesEXT -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDevicePipelineRobustnessFeaturesEXT -> IO b) -> IO b)
-> (Ptr PhysicalDevicePipelineRobustnessFeaturesEXT -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
p -> Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
-> PhysicalDevicePipelineRobustnessFeaturesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
p PhysicalDevicePipelineRobustnessFeaturesEXT
x (Ptr PhysicalDevicePipelineRobustnessFeaturesEXT -> IO b
f Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
p)
  pokeCStruct :: forall b.
Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
-> PhysicalDevicePipelineRobustnessFeaturesEXT -> IO b -> IO b
pokeCStruct Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
p PhysicalDevicePipelineRobustnessFeaturesEXT{Bool
pipelineRobustness :: Bool
$sel:pipelineRobustness:PhysicalDevicePipelineRobustnessFeaturesEXT :: PhysicalDevicePipelineRobustnessFeaturesEXT -> Bool
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
p Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
p Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
p Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
pipelineRobustness))
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr PhysicalDevicePipelineRobustnessFeaturesEXT -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
p Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
p Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
p Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    IO b
f

instance FromCStruct PhysicalDevicePipelineRobustnessFeaturesEXT where
  peekCStruct :: Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
-> IO PhysicalDevicePipelineRobustnessFeaturesEXT
peekCStruct Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
p = do
    Bool32
pipelineRobustness <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
p Ptr PhysicalDevicePipelineRobustnessFeaturesEXT
-> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    PhysicalDevicePipelineRobustnessFeaturesEXT
-> IO PhysicalDevicePipelineRobustnessFeaturesEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDevicePipelineRobustnessFeaturesEXT
 -> IO PhysicalDevicePipelineRobustnessFeaturesEXT)
-> PhysicalDevicePipelineRobustnessFeaturesEXT
-> IO PhysicalDevicePipelineRobustnessFeaturesEXT
forall a b. (a -> b) -> a -> b
$ Bool -> PhysicalDevicePipelineRobustnessFeaturesEXT
PhysicalDevicePipelineRobustnessFeaturesEXT
             (Bool32 -> Bool
bool32ToBool Bool32
pipelineRobustness)

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

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


-- | VkPipelineRobustnessCreateInfoEXT - Structure controlling the robustness
-- of a newly created pipeline shader stage
--
-- = Description
--
-- Resources bound as
-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_EXT' will
-- have the robustness behavior that covers its active descriptor type.
--
-- The scope of the effect of 'PipelineRobustnessCreateInfoEXT' depends on
-- which structure’s @pNext@ chain it is included in.
--
-- -   'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
--     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo':
--     The robustness behavior described by
--     'PipelineRobustnessCreateInfoEXT' applies to all accesses through
--     this pipeline
--
-- -   'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo':
--     The robustness behavior described by
--     'PipelineRobustnessCreateInfoEXT' applies to all accesses emanating
--     from the shader code of this shader stage
--
-- If 'PipelineRobustnessCreateInfoEXT' is specified for both a pipeline
-- and a pipeline stage, the 'PipelineRobustnessCreateInfoEXT' specified
-- for the pipeline stage will take precedence.
--
-- == Valid Usage
--
-- -   #VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06926# If
--     the
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
--     feature is not enabled, @storageBuffers@ /must/ be
--     'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT'
--
-- -   #VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06927# If
--     the
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
--     feature is not enabled, @uniformBuffers@ /must/ be
--     'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT'
--
-- -   #VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06928# If
--     the
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
--     feature is not enabled, @vertexInputs@ /must/ be
--     'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT'
--
-- -   #VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06929# If
--     the
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineRobustness pipelineRobustness>
--     feature is not enabled, @images@ /must/ be
--     'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT'
--
-- -   #VUID-VkPipelineRobustnessCreateInfoEXT-robustImageAccess-06930# If
--     the
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustImageAccess robustImageAccess>
--     feature is not supported, @images@ /must/ not be
--     'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT'
--
-- -   #VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06931#
--     If the
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
--     feature is not supported, @storageBuffers@ /must/ not be
--     'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
--
-- -   #VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06932#
--     If the
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
--     feature is not supported, @uniformBuffers@ /must/ not be
--     'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
--
-- -   #VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06933#
--     If the
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
--     feature is not supported, @vertexInputs@ /must/ not be
--     'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
--
-- -   #VUID-VkPipelineRobustnessCreateInfoEXT-robustImageAccess2-06934# If
--     the
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustImageAccess2 robustImageAccess2>
--     feature is not supported, @images@ /must/ not be
--     'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT'
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-VkPipelineRobustnessCreateInfoEXT-sType-sType# @sType@ /must/
--     be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT'
--
-- -   #VUID-VkPipelineRobustnessCreateInfoEXT-storageBuffers-parameter#
--     @storageBuffers@ /must/ be a valid
--     'PipelineRobustnessBufferBehaviorEXT' value
--
-- -   #VUID-VkPipelineRobustnessCreateInfoEXT-uniformBuffers-parameter#
--     @uniformBuffers@ /must/ be a valid
--     'PipelineRobustnessBufferBehaviorEXT' value
--
-- -   #VUID-VkPipelineRobustnessCreateInfoEXT-vertexInputs-parameter#
--     @vertexInputs@ /must/ be a valid
--     'PipelineRobustnessBufferBehaviorEXT' value
--
-- -   #VUID-VkPipelineRobustnessCreateInfoEXT-images-parameter# @images@
--     /must/ be a valid 'PipelineRobustnessImageBehaviorEXT' value
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_robustness VK_EXT_pipeline_robustness>,
-- 'PipelineRobustnessBufferBehaviorEXT',
-- 'PipelineRobustnessImageBehaviorEXT',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PipelineRobustnessCreateInfoEXT = PipelineRobustnessCreateInfoEXT
  { -- | @storageBuffers@ sets the behaviour of out of bounds accesses made to
    -- resources bound as:
    --
    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
    --
    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
    --
    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
    PipelineRobustnessCreateInfoEXT
-> PipelineRobustnessBufferBehaviorEXT
storageBuffers :: PipelineRobustnessBufferBehaviorEXT
  , -- | @uniformBuffers@ describes the behaviour of out of bounds accesses made
    -- to resources bound as:
    --
    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
    --
    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
    --
    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
    --
    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
    PipelineRobustnessCreateInfoEXT
-> PipelineRobustnessBufferBehaviorEXT
uniformBuffers :: PipelineRobustnessBufferBehaviorEXT
  , -- | @vertexInputs@ describes the behaviour of out of bounds accesses made to
    -- vertex input attributes
    PipelineRobustnessCreateInfoEXT
-> PipelineRobustnessBufferBehaviorEXT
vertexInputs :: PipelineRobustnessBufferBehaviorEXT
  , -- | @images@ describes the behaviour of out of bounds accesses made to
    -- resources bound as:
    --
    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'
    --
    -- -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'
    PipelineRobustnessCreateInfoEXT
-> PipelineRobustnessImageBehaviorEXT
images :: PipelineRobustnessImageBehaviorEXT
  }
  deriving (Typeable, PipelineRobustnessCreateInfoEXT
-> PipelineRobustnessCreateInfoEXT -> Bool
(PipelineRobustnessCreateInfoEXT
 -> PipelineRobustnessCreateInfoEXT -> Bool)
-> (PipelineRobustnessCreateInfoEXT
    -> PipelineRobustnessCreateInfoEXT -> Bool)
-> Eq PipelineRobustnessCreateInfoEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PipelineRobustnessCreateInfoEXT
-> PipelineRobustnessCreateInfoEXT -> Bool
$c/= :: PipelineRobustnessCreateInfoEXT
-> PipelineRobustnessCreateInfoEXT -> Bool
== :: PipelineRobustnessCreateInfoEXT
-> PipelineRobustnessCreateInfoEXT -> Bool
$c== :: PipelineRobustnessCreateInfoEXT
-> PipelineRobustnessCreateInfoEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PipelineRobustnessCreateInfoEXT)
#endif
deriving instance Show PipelineRobustnessCreateInfoEXT

instance ToCStruct PipelineRobustnessCreateInfoEXT where
  withCStruct :: forall b.
PipelineRobustnessCreateInfoEXT
-> (Ptr PipelineRobustnessCreateInfoEXT -> IO b) -> IO b
withCStruct PipelineRobustnessCreateInfoEXT
x Ptr PipelineRobustnessCreateInfoEXT -> IO b
f = Int -> (Ptr PipelineRobustnessCreateInfoEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr PipelineRobustnessCreateInfoEXT -> IO b) -> IO b)
-> (Ptr PipelineRobustnessCreateInfoEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PipelineRobustnessCreateInfoEXT
p -> Ptr PipelineRobustnessCreateInfoEXT
-> PipelineRobustnessCreateInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PipelineRobustnessCreateInfoEXT
p PipelineRobustnessCreateInfoEXT
x (Ptr PipelineRobustnessCreateInfoEXT -> IO b
f Ptr PipelineRobustnessCreateInfoEXT
p)
  pokeCStruct :: forall b.
Ptr PipelineRobustnessCreateInfoEXT
-> PipelineRobustnessCreateInfoEXT -> IO b -> IO b
pokeCStruct Ptr PipelineRobustnessCreateInfoEXT
p PipelineRobustnessCreateInfoEXT{PipelineRobustnessImageBehaviorEXT
PipelineRobustnessBufferBehaviorEXT
images :: PipelineRobustnessImageBehaviorEXT
vertexInputs :: PipelineRobustnessBufferBehaviorEXT
uniformBuffers :: PipelineRobustnessBufferBehaviorEXT
storageBuffers :: PipelineRobustnessBufferBehaviorEXT
$sel:images:PipelineRobustnessCreateInfoEXT :: PipelineRobustnessCreateInfoEXT
-> PipelineRobustnessImageBehaviorEXT
$sel:vertexInputs:PipelineRobustnessCreateInfoEXT :: PipelineRobustnessCreateInfoEXT
-> PipelineRobustnessBufferBehaviorEXT
$sel:uniformBuffers:PipelineRobustnessCreateInfoEXT :: PipelineRobustnessCreateInfoEXT
-> PipelineRobustnessBufferBehaviorEXT
$sel:storageBuffers:PipelineRobustnessCreateInfoEXT :: PipelineRobustnessCreateInfoEXT
-> PipelineRobustnessBufferBehaviorEXT
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRobustnessCreateInfoEXT
p Ptr PipelineRobustnessCreateInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRobustnessCreateInfoEXT
p Ptr PipelineRobustnessCreateInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRobustnessCreateInfoEXT
p Ptr PipelineRobustnessCreateInfoEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (PipelineRobustnessBufferBehaviorEXT
storageBuffers)
    Ptr PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRobustnessCreateInfoEXT
p Ptr PipelineRobustnessCreateInfoEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (PipelineRobustnessBufferBehaviorEXT
uniformBuffers)
    Ptr PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRobustnessCreateInfoEXT
p Ptr PipelineRobustnessCreateInfoEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (PipelineRobustnessBufferBehaviorEXT
vertexInputs)
    Ptr PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRobustnessCreateInfoEXT
p Ptr PipelineRobustnessCreateInfoEXT
-> Int -> Ptr PipelineRobustnessImageBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr PipelineRobustnessImageBehaviorEXT)) (PipelineRobustnessImageBehaviorEXT
images)
    IO b
f
  cStructSize :: Int
cStructSize = Int
32
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr PipelineRobustnessCreateInfoEXT -> IO b -> IO b
pokeZeroCStruct Ptr PipelineRobustnessCreateInfoEXT
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRobustnessCreateInfoEXT
p Ptr PipelineRobustnessCreateInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRobustnessCreateInfoEXT
p Ptr PipelineRobustnessCreateInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRobustnessCreateInfoEXT
p Ptr PipelineRobustnessCreateInfoEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (PipelineRobustnessBufferBehaviorEXT
forall a. Zero a => a
zero)
    Ptr PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRobustnessCreateInfoEXT
p Ptr PipelineRobustnessCreateInfoEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (PipelineRobustnessBufferBehaviorEXT
forall a. Zero a => a
zero)
    Ptr PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRobustnessCreateInfoEXT
p Ptr PipelineRobustnessCreateInfoEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (PipelineRobustnessBufferBehaviorEXT
forall a. Zero a => a
zero)
    Ptr PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PipelineRobustnessCreateInfoEXT
p Ptr PipelineRobustnessCreateInfoEXT
-> Int -> Ptr PipelineRobustnessImageBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr PipelineRobustnessImageBehaviorEXT)) (PipelineRobustnessImageBehaviorEXT
forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct PipelineRobustnessCreateInfoEXT where
  peekCStruct :: Ptr PipelineRobustnessCreateInfoEXT
-> IO PipelineRobustnessCreateInfoEXT
peekCStruct Ptr PipelineRobustnessCreateInfoEXT
p = do
    PipelineRobustnessBufferBehaviorEXT
storageBuffers <- forall a. Storable a => Ptr a -> IO a
peek @PipelineRobustnessBufferBehaviorEXT ((Ptr PipelineRobustnessCreateInfoEXT
p Ptr PipelineRobustnessCreateInfoEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PipelineRobustnessBufferBehaviorEXT))
    PipelineRobustnessBufferBehaviorEXT
uniformBuffers <- forall a. Storable a => Ptr a -> IO a
peek @PipelineRobustnessBufferBehaviorEXT ((Ptr PipelineRobustnessCreateInfoEXT
p Ptr PipelineRobustnessCreateInfoEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr PipelineRobustnessBufferBehaviorEXT))
    PipelineRobustnessBufferBehaviorEXT
vertexInputs <- forall a. Storable a => Ptr a -> IO a
peek @PipelineRobustnessBufferBehaviorEXT ((Ptr PipelineRobustnessCreateInfoEXT
p Ptr PipelineRobustnessCreateInfoEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr PipelineRobustnessBufferBehaviorEXT))
    PipelineRobustnessImageBehaviorEXT
images <- forall a. Storable a => Ptr a -> IO a
peek @PipelineRobustnessImageBehaviorEXT ((Ptr PipelineRobustnessCreateInfoEXT
p Ptr PipelineRobustnessCreateInfoEXT
-> Int -> Ptr PipelineRobustnessImageBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr PipelineRobustnessImageBehaviorEXT))
    PipelineRobustnessCreateInfoEXT
-> IO PipelineRobustnessCreateInfoEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PipelineRobustnessCreateInfoEXT
 -> IO PipelineRobustnessCreateInfoEXT)
-> PipelineRobustnessCreateInfoEXT
-> IO PipelineRobustnessCreateInfoEXT
forall a b. (a -> b) -> a -> b
$ PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessCreateInfoEXT
PipelineRobustnessCreateInfoEXT
             PipelineRobustnessBufferBehaviorEXT
storageBuffers PipelineRobustnessBufferBehaviorEXT
uniformBuffers PipelineRobustnessBufferBehaviorEXT
vertexInputs PipelineRobustnessImageBehaviorEXT
images

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

instance Zero PipelineRobustnessCreateInfoEXT where
  zero :: PipelineRobustnessCreateInfoEXT
zero = PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessCreateInfoEXT
PipelineRobustnessCreateInfoEXT
           PipelineRobustnessBufferBehaviorEXT
forall a. Zero a => a
zero
           PipelineRobustnessBufferBehaviorEXT
forall a. Zero a => a
zero
           PipelineRobustnessBufferBehaviorEXT
forall a. Zero a => a
zero
           PipelineRobustnessImageBehaviorEXT
forall a. Zero a => a
zero


-- | VkPhysicalDevicePipelineRobustnessPropertiesEXT - Structure describing
-- the default robustness behavior of a physical device
--
-- = Description
--
-- Some implementations of Vulkan may be able to guarantee that certain
-- types of accesses are always performed with robustness even when the
-- Vulkan API’s robustness features are not explicitly enabled.
--
-- Even when an implementation reports that accesses to a given resource
-- type are robust by default, it remains invalid to make an out of bounds
-- access without requesting the appropriate robustness feature.
--
-- If the 'PhysicalDevicePipelineRobustnessPropertiesEXT' structure is
-- included in the @pNext@ chain of the
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
-- structure passed to
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
-- it is filled in with each corresponding implementation-dependent
-- property.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_robustness VK_EXT_pipeline_robustness>,
-- 'PipelineRobustnessBufferBehaviorEXT',
-- 'PipelineRobustnessImageBehaviorEXT',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDevicePipelineRobustnessPropertiesEXT = PhysicalDevicePipelineRobustnessPropertiesEXT
  { -- | @defaultRobustnessStorageBuffers@ describes the behaviour of out of
    -- bounds accesses made to storage buffers when no robustness features are
    -- enabled
    PhysicalDevicePipelineRobustnessPropertiesEXT
-> PipelineRobustnessBufferBehaviorEXT
defaultRobustnessStorageBuffers :: PipelineRobustnessBufferBehaviorEXT
  , -- | @defaultRobustnessUniformBuffers@ describes the behaviour of out of
    -- bounds accesses made to uniform buffers when no robustness features are
    -- enabled
    PhysicalDevicePipelineRobustnessPropertiesEXT
-> PipelineRobustnessBufferBehaviorEXT
defaultRobustnessUniformBuffers :: PipelineRobustnessBufferBehaviorEXT
  , -- | @defaultRobustnessVertexInputs@ describes the behaviour of out of bounds
    -- accesses made to vertex input attributes when no robustness features are
    -- enabled
    PhysicalDevicePipelineRobustnessPropertiesEXT
-> PipelineRobustnessBufferBehaviorEXT
defaultRobustnessVertexInputs :: PipelineRobustnessBufferBehaviorEXT
  , -- | @defaultRobustnessImages@ describes the behaviour of out of bounds
    -- accesses made to images when no robustness features are enabled
    PhysicalDevicePipelineRobustnessPropertiesEXT
-> PipelineRobustnessImageBehaviorEXT
defaultRobustnessImages :: PipelineRobustnessImageBehaviorEXT
  }
  deriving (Typeable, PhysicalDevicePipelineRobustnessPropertiesEXT
-> PhysicalDevicePipelineRobustnessPropertiesEXT -> Bool
(PhysicalDevicePipelineRobustnessPropertiesEXT
 -> PhysicalDevicePipelineRobustnessPropertiesEXT -> Bool)
-> (PhysicalDevicePipelineRobustnessPropertiesEXT
    -> PhysicalDevicePipelineRobustnessPropertiesEXT -> Bool)
-> Eq PhysicalDevicePipelineRobustnessPropertiesEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PhysicalDevicePipelineRobustnessPropertiesEXT
-> PhysicalDevicePipelineRobustnessPropertiesEXT -> Bool
$c/= :: PhysicalDevicePipelineRobustnessPropertiesEXT
-> PhysicalDevicePipelineRobustnessPropertiesEXT -> Bool
== :: PhysicalDevicePipelineRobustnessPropertiesEXT
-> PhysicalDevicePipelineRobustnessPropertiesEXT -> Bool
$c== :: PhysicalDevicePipelineRobustnessPropertiesEXT
-> PhysicalDevicePipelineRobustnessPropertiesEXT -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDevicePipelineRobustnessPropertiesEXT)
#endif
deriving instance Show PhysicalDevicePipelineRobustnessPropertiesEXT

instance ToCStruct PhysicalDevicePipelineRobustnessPropertiesEXT where
  withCStruct :: forall b.
PhysicalDevicePipelineRobustnessPropertiesEXT
-> (Ptr PhysicalDevicePipelineRobustnessPropertiesEXT -> IO b)
-> IO b
withCStruct PhysicalDevicePipelineRobustnessPropertiesEXT
x Ptr PhysicalDevicePipelineRobustnessPropertiesEXT -> IO b
f = Int
-> (Ptr PhysicalDevicePipelineRobustnessPropertiesEXT -> IO b)
-> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT -> IO b)
 -> IO b)
-> (Ptr PhysicalDevicePipelineRobustnessPropertiesEXT -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p -> Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> PhysicalDevicePipelineRobustnessPropertiesEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p PhysicalDevicePipelineRobustnessPropertiesEXT
x (Ptr PhysicalDevicePipelineRobustnessPropertiesEXT -> IO b
f Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p)
  pokeCStruct :: forall b.
Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> PhysicalDevicePipelineRobustnessPropertiesEXT -> IO b -> IO b
pokeCStruct Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p PhysicalDevicePipelineRobustnessPropertiesEXT{PipelineRobustnessImageBehaviorEXT
PipelineRobustnessBufferBehaviorEXT
defaultRobustnessImages :: PipelineRobustnessImageBehaviorEXT
defaultRobustnessVertexInputs :: PipelineRobustnessBufferBehaviorEXT
defaultRobustnessUniformBuffers :: PipelineRobustnessBufferBehaviorEXT
defaultRobustnessStorageBuffers :: PipelineRobustnessBufferBehaviorEXT
$sel:defaultRobustnessImages:PhysicalDevicePipelineRobustnessPropertiesEXT :: PhysicalDevicePipelineRobustnessPropertiesEXT
-> PipelineRobustnessImageBehaviorEXT
$sel:defaultRobustnessVertexInputs:PhysicalDevicePipelineRobustnessPropertiesEXT :: PhysicalDevicePipelineRobustnessPropertiesEXT
-> PipelineRobustnessBufferBehaviorEXT
$sel:defaultRobustnessUniformBuffers:PhysicalDevicePipelineRobustnessPropertiesEXT :: PhysicalDevicePipelineRobustnessPropertiesEXT
-> PipelineRobustnessBufferBehaviorEXT
$sel:defaultRobustnessStorageBuffers:PhysicalDevicePipelineRobustnessPropertiesEXT :: PhysicalDevicePipelineRobustnessPropertiesEXT
-> PipelineRobustnessBufferBehaviorEXT
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (PipelineRobustnessBufferBehaviorEXT
defaultRobustnessStorageBuffers)
    Ptr PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (PipelineRobustnessBufferBehaviorEXT
defaultRobustnessUniformBuffers)
    Ptr PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (PipelineRobustnessBufferBehaviorEXT
defaultRobustnessVertexInputs)
    Ptr PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> Int -> Ptr PipelineRobustnessImageBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr PipelineRobustnessImageBehaviorEXT)) (PipelineRobustnessImageBehaviorEXT
defaultRobustnessImages)
    IO b
f
  cStructSize :: Int
cStructSize = Int
32
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr PhysicalDevicePipelineRobustnessPropertiesEXT -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (PipelineRobustnessBufferBehaviorEXT
forall a. Zero a => a
zero)
    Ptr PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (PipelineRobustnessBufferBehaviorEXT
forall a. Zero a => a
zero)
    Ptr PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr PipelineRobustnessBufferBehaviorEXT)) (PipelineRobustnessBufferBehaviorEXT
forall a. Zero a => a
zero)
    Ptr PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> Int -> Ptr PipelineRobustnessImageBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr PipelineRobustnessImageBehaviorEXT)) (PipelineRobustnessImageBehaviorEXT
forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct PhysicalDevicePipelineRobustnessPropertiesEXT where
  peekCStruct :: Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> IO PhysicalDevicePipelineRobustnessPropertiesEXT
peekCStruct Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p = do
    PipelineRobustnessBufferBehaviorEXT
defaultRobustnessStorageBuffers <- forall a. Storable a => Ptr a -> IO a
peek @PipelineRobustnessBufferBehaviorEXT ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr PipelineRobustnessBufferBehaviorEXT))
    PipelineRobustnessBufferBehaviorEXT
defaultRobustnessUniformBuffers <- forall a. Storable a => Ptr a -> IO a
peek @PipelineRobustnessBufferBehaviorEXT ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr PipelineRobustnessBufferBehaviorEXT))
    PipelineRobustnessBufferBehaviorEXT
defaultRobustnessVertexInputs <- forall a. Storable a => Ptr a -> IO a
peek @PipelineRobustnessBufferBehaviorEXT ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> Int -> Ptr PipelineRobustnessBufferBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr PipelineRobustnessBufferBehaviorEXT))
    PipelineRobustnessImageBehaviorEXT
defaultRobustnessImages <- forall a. Storable a => Ptr a -> IO a
peek @PipelineRobustnessImageBehaviorEXT ((Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
p Ptr PhysicalDevicePipelineRobustnessPropertiesEXT
-> Int -> Ptr PipelineRobustnessImageBehaviorEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
28 :: Ptr PipelineRobustnessImageBehaviorEXT))
    PhysicalDevicePipelineRobustnessPropertiesEXT
-> IO PhysicalDevicePipelineRobustnessPropertiesEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PhysicalDevicePipelineRobustnessPropertiesEXT
 -> IO PhysicalDevicePipelineRobustnessPropertiesEXT)
-> PhysicalDevicePipelineRobustnessPropertiesEXT
-> IO PhysicalDevicePipelineRobustnessPropertiesEXT
forall a b. (a -> b) -> a -> b
$ PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT
-> PhysicalDevicePipelineRobustnessPropertiesEXT
PhysicalDevicePipelineRobustnessPropertiesEXT
             PipelineRobustnessBufferBehaviorEXT
defaultRobustnessStorageBuffers
             PipelineRobustnessBufferBehaviorEXT
defaultRobustnessUniformBuffers
             PipelineRobustnessBufferBehaviorEXT
defaultRobustnessVertexInputs
             PipelineRobustnessImageBehaviorEXT
defaultRobustnessImages

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

instance Zero PhysicalDevicePipelineRobustnessPropertiesEXT where
  zero :: PhysicalDevicePipelineRobustnessPropertiesEXT
zero = PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT
-> PhysicalDevicePipelineRobustnessPropertiesEXT
PhysicalDevicePipelineRobustnessPropertiesEXT
           PipelineRobustnessBufferBehaviorEXT
forall a. Zero a => a
zero
           PipelineRobustnessBufferBehaviorEXT
forall a. Zero a => a
zero
           PipelineRobustnessBufferBehaviorEXT
forall a. Zero a => a
zero
           PipelineRobustnessImageBehaviorEXT
forall a. Zero a => a
zero


-- | VkPipelineRobustnessBufferBehaviorEXT - Enum controlling the robustness
-- of buffer accesses in a pipeline stage
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_robustness VK_EXT_pipeline_robustness>,
-- 'PhysicalDevicePipelineRobustnessPropertiesEXT',
-- 'PipelineRobustnessCreateInfoEXT'
newtype PipelineRobustnessBufferBehaviorEXT = PipelineRobustnessBufferBehaviorEXT Int32
  deriving newtype (PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Bool
(PipelineRobustnessBufferBehaviorEXT
 -> PipelineRobustnessBufferBehaviorEXT -> Bool)
-> (PipelineRobustnessBufferBehaviorEXT
    -> PipelineRobustnessBufferBehaviorEXT -> Bool)
-> Eq PipelineRobustnessBufferBehaviorEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Bool
$c/= :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Bool
== :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Bool
$c== :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Bool
Eq, Eq PipelineRobustnessBufferBehaviorEXT
Eq PipelineRobustnessBufferBehaviorEXT
-> (PipelineRobustnessBufferBehaviorEXT
    -> PipelineRobustnessBufferBehaviorEXT -> Ordering)
-> (PipelineRobustnessBufferBehaviorEXT
    -> PipelineRobustnessBufferBehaviorEXT -> Bool)
-> (PipelineRobustnessBufferBehaviorEXT
    -> PipelineRobustnessBufferBehaviorEXT -> Bool)
-> (PipelineRobustnessBufferBehaviorEXT
    -> PipelineRobustnessBufferBehaviorEXT -> Bool)
-> (PipelineRobustnessBufferBehaviorEXT
    -> PipelineRobustnessBufferBehaviorEXT -> Bool)
-> (PipelineRobustnessBufferBehaviorEXT
    -> PipelineRobustnessBufferBehaviorEXT
    -> PipelineRobustnessBufferBehaviorEXT)
-> (PipelineRobustnessBufferBehaviorEXT
    -> PipelineRobustnessBufferBehaviorEXT
    -> PipelineRobustnessBufferBehaviorEXT)
-> Ord PipelineRobustnessBufferBehaviorEXT
PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Bool
PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Ordering
PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
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 :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
$cmin :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
max :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
$cmax :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT
>= :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Bool
$c>= :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Bool
> :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Bool
$c> :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Bool
<= :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Bool
$c<= :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Bool
< :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Bool
$c< :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Bool
compare :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Ordering
$ccompare :: PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> Ordering
Ord, Ptr PipelineRobustnessBufferBehaviorEXT
-> IO PipelineRobustnessBufferBehaviorEXT
Ptr PipelineRobustnessBufferBehaviorEXT
-> Int -> IO PipelineRobustnessBufferBehaviorEXT
Ptr PipelineRobustnessBufferBehaviorEXT
-> Int -> PipelineRobustnessBufferBehaviorEXT -> IO ()
Ptr PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> IO ()
PipelineRobustnessBufferBehaviorEXT -> Int
(PipelineRobustnessBufferBehaviorEXT -> Int)
-> (PipelineRobustnessBufferBehaviorEXT -> Int)
-> (Ptr PipelineRobustnessBufferBehaviorEXT
    -> Int -> IO PipelineRobustnessBufferBehaviorEXT)
-> (Ptr PipelineRobustnessBufferBehaviorEXT
    -> Int -> PipelineRobustnessBufferBehaviorEXT -> IO ())
-> (forall b.
    Ptr b -> Int -> IO PipelineRobustnessBufferBehaviorEXT)
-> (forall b.
    Ptr b -> Int -> PipelineRobustnessBufferBehaviorEXT -> IO ())
-> (Ptr PipelineRobustnessBufferBehaviorEXT
    -> IO PipelineRobustnessBufferBehaviorEXT)
-> (Ptr PipelineRobustnessBufferBehaviorEXT
    -> PipelineRobustnessBufferBehaviorEXT -> IO ())
-> Storable PipelineRobustnessBufferBehaviorEXT
forall b. Ptr b -> Int -> IO PipelineRobustnessBufferBehaviorEXT
forall b.
Ptr b -> Int -> PipelineRobustnessBufferBehaviorEXT -> 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 PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> IO ()
$cpoke :: Ptr PipelineRobustnessBufferBehaviorEXT
-> PipelineRobustnessBufferBehaviorEXT -> IO ()
peek :: Ptr PipelineRobustnessBufferBehaviorEXT
-> IO PipelineRobustnessBufferBehaviorEXT
$cpeek :: Ptr PipelineRobustnessBufferBehaviorEXT
-> IO PipelineRobustnessBufferBehaviorEXT
pokeByteOff :: forall b.
Ptr b -> Int -> PipelineRobustnessBufferBehaviorEXT -> IO ()
$cpokeByteOff :: forall b.
Ptr b -> Int -> PipelineRobustnessBufferBehaviorEXT -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO PipelineRobustnessBufferBehaviorEXT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO PipelineRobustnessBufferBehaviorEXT
pokeElemOff :: Ptr PipelineRobustnessBufferBehaviorEXT
-> Int -> PipelineRobustnessBufferBehaviorEXT -> IO ()
$cpokeElemOff :: Ptr PipelineRobustnessBufferBehaviorEXT
-> Int -> PipelineRobustnessBufferBehaviorEXT -> IO ()
peekElemOff :: Ptr PipelineRobustnessBufferBehaviorEXT
-> Int -> IO PipelineRobustnessBufferBehaviorEXT
$cpeekElemOff :: Ptr PipelineRobustnessBufferBehaviorEXT
-> Int -> IO PipelineRobustnessBufferBehaviorEXT
alignment :: PipelineRobustnessBufferBehaviorEXT -> Int
$calignment :: PipelineRobustnessBufferBehaviorEXT -> Int
sizeOf :: PipelineRobustnessBufferBehaviorEXT -> Int
$csizeOf :: PipelineRobustnessBufferBehaviorEXT -> Int
Storable, PipelineRobustnessBufferBehaviorEXT
PipelineRobustnessBufferBehaviorEXT
-> Zero PipelineRobustnessBufferBehaviorEXT
forall a. a -> Zero a
zero :: PipelineRobustnessBufferBehaviorEXT
$czero :: PipelineRobustnessBufferBehaviorEXT
Zero)

-- | 'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT' specifies that
-- this pipeline stage follows the robustness behavior of the logical
-- device that created this pipeline
pattern $bPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT :: PipelineRobustnessBufferBehaviorEXT
$mPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT :: forall {r}.
PipelineRobustnessBufferBehaviorEXT
-> (Void# -> r) -> (Void# -> r) -> r
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = PipelineRobustnessBufferBehaviorEXT 0

-- | 'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT' specifies that buffer
-- accesses by this pipeline stage to the relevant resource types /must/
-- not be out of bounds
pattern $bPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT :: PipelineRobustnessBufferBehaviorEXT
$mPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT :: forall {r}.
PipelineRobustnessBufferBehaviorEXT
-> (Void# -> r) -> (Void# -> r) -> r
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = PipelineRobustnessBufferBehaviorEXT 1

-- | 'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT' specifies
-- that out of bounds accesses by this pipeline stage to the relevant
-- resource types behave as if the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
-- feature is enabled
pattern $bPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT :: PipelineRobustnessBufferBehaviorEXT
$mPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT :: forall {r}.
PipelineRobustnessBufferBehaviorEXT
-> (Void# -> r) -> (Void# -> r) -> r
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = PipelineRobustnessBufferBehaviorEXT 2

-- | 'PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT'
-- specifies that out of bounds accesses by this pipeline stage to the
-- relevant resource types behave as if the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
-- feature is enabled
pattern $bPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT :: PipelineRobustnessBufferBehaviorEXT
$mPIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT :: forall {r}.
PipelineRobustnessBufferBehaviorEXT
-> (Void# -> r) -> (Void# -> r) -> r
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = PipelineRobustnessBufferBehaviorEXT 3

{-# COMPLETE
  PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT
  , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT
  , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
  , PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT ::
    PipelineRobustnessBufferBehaviorEXT
  #-}

conNamePipelineRobustnessBufferBehaviorEXT :: String
conNamePipelineRobustnessBufferBehaviorEXT :: String
conNamePipelineRobustnessBufferBehaviorEXT = String
"PipelineRobustnessBufferBehaviorEXT"

enumPrefixPipelineRobustnessBufferBehaviorEXT :: String
enumPrefixPipelineRobustnessBufferBehaviorEXT :: String
enumPrefixPipelineRobustnessBufferBehaviorEXT = String
"PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_"

showTablePipelineRobustnessBufferBehaviorEXT :: [(PipelineRobustnessBufferBehaviorEXT, String)]
showTablePipelineRobustnessBufferBehaviorEXT :: [(PipelineRobustnessBufferBehaviorEXT, String)]
showTablePipelineRobustnessBufferBehaviorEXT =
  [
    ( PipelineRobustnessBufferBehaviorEXT
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT
    , String
"DEVICE_DEFAULT_EXT"
    )
  ,
    ( PipelineRobustnessBufferBehaviorEXT
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT
    , String
"DISABLED_EXT"
    )
  ,
    ( PipelineRobustnessBufferBehaviorEXT
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
    , String
"ROBUST_BUFFER_ACCESS_EXT"
    )
  ,
    ( PipelineRobustnessBufferBehaviorEXT
PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
    , String
"ROBUST_BUFFER_ACCESS_2_EXT"
    )
  ]

instance Show PipelineRobustnessBufferBehaviorEXT where
  showsPrec :: Int -> PipelineRobustnessBufferBehaviorEXT -> ShowS
showsPrec =
    String
-> [(PipelineRobustnessBufferBehaviorEXT, String)]
-> String
-> (PipelineRobustnessBufferBehaviorEXT -> Int32)
-> (Int32 -> ShowS)
-> Int
-> PipelineRobustnessBufferBehaviorEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixPipelineRobustnessBufferBehaviorEXT
      [(PipelineRobustnessBufferBehaviorEXT, String)]
showTablePipelineRobustnessBufferBehaviorEXT
      String
conNamePipelineRobustnessBufferBehaviorEXT
      (\(PipelineRobustnessBufferBehaviorEXT Int32
x) -> Int32
x)
      (Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
11)

instance Read PipelineRobustnessBufferBehaviorEXT where
  readPrec :: ReadPrec PipelineRobustnessBufferBehaviorEXT
readPrec =
    String
-> [(PipelineRobustnessBufferBehaviorEXT, String)]
-> String
-> (Int32 -> PipelineRobustnessBufferBehaviorEXT)
-> ReadPrec PipelineRobustnessBufferBehaviorEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixPipelineRobustnessBufferBehaviorEXT
      [(PipelineRobustnessBufferBehaviorEXT, String)]
showTablePipelineRobustnessBufferBehaviorEXT
      String
conNamePipelineRobustnessBufferBehaviorEXT
      Int32 -> PipelineRobustnessBufferBehaviorEXT
PipelineRobustnessBufferBehaviorEXT

-- | VkPipelineRobustnessImageBehaviorEXT - Enum controlling the robustness
-- of image accesses in a pipeline stage
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_robustness VK_EXT_pipeline_robustness>,
-- 'PhysicalDevicePipelineRobustnessPropertiesEXT',
-- 'PipelineRobustnessCreateInfoEXT'
newtype PipelineRobustnessImageBehaviorEXT = PipelineRobustnessImageBehaviorEXT Int32
  deriving newtype (PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Bool
(PipelineRobustnessImageBehaviorEXT
 -> PipelineRobustnessImageBehaviorEXT -> Bool)
-> (PipelineRobustnessImageBehaviorEXT
    -> PipelineRobustnessImageBehaviorEXT -> Bool)
-> Eq PipelineRobustnessImageBehaviorEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Bool
$c/= :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Bool
== :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Bool
$c== :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Bool
Eq, Eq PipelineRobustnessImageBehaviorEXT
Eq PipelineRobustnessImageBehaviorEXT
-> (PipelineRobustnessImageBehaviorEXT
    -> PipelineRobustnessImageBehaviorEXT -> Ordering)
-> (PipelineRobustnessImageBehaviorEXT
    -> PipelineRobustnessImageBehaviorEXT -> Bool)
-> (PipelineRobustnessImageBehaviorEXT
    -> PipelineRobustnessImageBehaviorEXT -> Bool)
-> (PipelineRobustnessImageBehaviorEXT
    -> PipelineRobustnessImageBehaviorEXT -> Bool)
-> (PipelineRobustnessImageBehaviorEXT
    -> PipelineRobustnessImageBehaviorEXT -> Bool)
-> (PipelineRobustnessImageBehaviorEXT
    -> PipelineRobustnessImageBehaviorEXT
    -> PipelineRobustnessImageBehaviorEXT)
-> (PipelineRobustnessImageBehaviorEXT
    -> PipelineRobustnessImageBehaviorEXT
    -> PipelineRobustnessImageBehaviorEXT)
-> Ord PipelineRobustnessImageBehaviorEXT
PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Bool
PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Ordering
PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT
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 :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT
$cmin :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT
max :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT
$cmax :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT
>= :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Bool
$c>= :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Bool
> :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Bool
$c> :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Bool
<= :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Bool
$c<= :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Bool
< :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Bool
$c< :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Bool
compare :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Ordering
$ccompare :: PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> Ordering
Ord, Ptr PipelineRobustnessImageBehaviorEXT
-> IO PipelineRobustnessImageBehaviorEXT
Ptr PipelineRobustnessImageBehaviorEXT
-> Int -> IO PipelineRobustnessImageBehaviorEXT
Ptr PipelineRobustnessImageBehaviorEXT
-> Int -> PipelineRobustnessImageBehaviorEXT -> IO ()
Ptr PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> IO ()
PipelineRobustnessImageBehaviorEXT -> Int
(PipelineRobustnessImageBehaviorEXT -> Int)
-> (PipelineRobustnessImageBehaviorEXT -> Int)
-> (Ptr PipelineRobustnessImageBehaviorEXT
    -> Int -> IO PipelineRobustnessImageBehaviorEXT)
-> (Ptr PipelineRobustnessImageBehaviorEXT
    -> Int -> PipelineRobustnessImageBehaviorEXT -> IO ())
-> (forall b.
    Ptr b -> Int -> IO PipelineRobustnessImageBehaviorEXT)
-> (forall b.
    Ptr b -> Int -> PipelineRobustnessImageBehaviorEXT -> IO ())
-> (Ptr PipelineRobustnessImageBehaviorEXT
    -> IO PipelineRobustnessImageBehaviorEXT)
-> (Ptr PipelineRobustnessImageBehaviorEXT
    -> PipelineRobustnessImageBehaviorEXT -> IO ())
-> Storable PipelineRobustnessImageBehaviorEXT
forall b. Ptr b -> Int -> IO PipelineRobustnessImageBehaviorEXT
forall b.
Ptr b -> Int -> PipelineRobustnessImageBehaviorEXT -> 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 PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> IO ()
$cpoke :: Ptr PipelineRobustnessImageBehaviorEXT
-> PipelineRobustnessImageBehaviorEXT -> IO ()
peek :: Ptr PipelineRobustnessImageBehaviorEXT
-> IO PipelineRobustnessImageBehaviorEXT
$cpeek :: Ptr PipelineRobustnessImageBehaviorEXT
-> IO PipelineRobustnessImageBehaviorEXT
pokeByteOff :: forall b.
Ptr b -> Int -> PipelineRobustnessImageBehaviorEXT -> IO ()
$cpokeByteOff :: forall b.
Ptr b -> Int -> PipelineRobustnessImageBehaviorEXT -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO PipelineRobustnessImageBehaviorEXT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO PipelineRobustnessImageBehaviorEXT
pokeElemOff :: Ptr PipelineRobustnessImageBehaviorEXT
-> Int -> PipelineRobustnessImageBehaviorEXT -> IO ()
$cpokeElemOff :: Ptr PipelineRobustnessImageBehaviorEXT
-> Int -> PipelineRobustnessImageBehaviorEXT -> IO ()
peekElemOff :: Ptr PipelineRobustnessImageBehaviorEXT
-> Int -> IO PipelineRobustnessImageBehaviorEXT
$cpeekElemOff :: Ptr PipelineRobustnessImageBehaviorEXT
-> Int -> IO PipelineRobustnessImageBehaviorEXT
alignment :: PipelineRobustnessImageBehaviorEXT -> Int
$calignment :: PipelineRobustnessImageBehaviorEXT -> Int
sizeOf :: PipelineRobustnessImageBehaviorEXT -> Int
$csizeOf :: PipelineRobustnessImageBehaviorEXT -> Int
Storable, PipelineRobustnessImageBehaviorEXT
PipelineRobustnessImageBehaviorEXT
-> Zero PipelineRobustnessImageBehaviorEXT
forall a. a -> Zero a
zero :: PipelineRobustnessImageBehaviorEXT
$czero :: PipelineRobustnessImageBehaviorEXT
Zero)

-- | 'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT' specifies that
-- this pipeline stage follows the robustness behavior of the logical
-- device that created this pipeline
pattern $bPIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT :: PipelineRobustnessImageBehaviorEXT
$mPIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT :: forall {r}.
PipelineRobustnessImageBehaviorEXT
-> (Void# -> r) -> (Void# -> r) -> r
PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = PipelineRobustnessImageBehaviorEXT 0

-- | 'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT' specifies that image
-- accesses by this pipeline stage to the relevant resource types /must/
-- not be out of bounds
pattern $bPIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT :: PipelineRobustnessImageBehaviorEXT
$mPIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT :: forall {r}.
PipelineRobustnessImageBehaviorEXT
-> (Void# -> r) -> (Void# -> r) -> r
PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = PipelineRobustnessImageBehaviorEXT 1

-- | 'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT' specifies
-- that out of bounds accesses by this pipeline stage to images behave as
-- if the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustImageAccess robustImageAccess>
-- feature is enabled
pattern $bPIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT :: PipelineRobustnessImageBehaviorEXT
$mPIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT :: forall {r}.
PipelineRobustnessImageBehaviorEXT
-> (Void# -> r) -> (Void# -> r) -> r
PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = PipelineRobustnessImageBehaviorEXT 2

-- | 'PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT' specifies
-- that out of bounds accesses by this pipeline stage to images behave as
-- if the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustImageAccess2 robustImageAccess2>
-- feature is enabled
pattern $bPIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT :: PipelineRobustnessImageBehaviorEXT
$mPIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT :: forall {r}.
PipelineRobustnessImageBehaviorEXT
-> (Void# -> r) -> (Void# -> r) -> r
PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = PipelineRobustnessImageBehaviorEXT 3

{-# COMPLETE
  PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT
  , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT
  , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT
  , PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT ::
    PipelineRobustnessImageBehaviorEXT
  #-}

conNamePipelineRobustnessImageBehaviorEXT :: String
conNamePipelineRobustnessImageBehaviorEXT :: String
conNamePipelineRobustnessImageBehaviorEXT = String
"PipelineRobustnessImageBehaviorEXT"

enumPrefixPipelineRobustnessImageBehaviorEXT :: String
enumPrefixPipelineRobustnessImageBehaviorEXT :: String
enumPrefixPipelineRobustnessImageBehaviorEXT = String
"PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_"

showTablePipelineRobustnessImageBehaviorEXT :: [(PipelineRobustnessImageBehaviorEXT, String)]
showTablePipelineRobustnessImageBehaviorEXT :: [(PipelineRobustnessImageBehaviorEXT, String)]
showTablePipelineRobustnessImageBehaviorEXT =
  [
    ( PipelineRobustnessImageBehaviorEXT
PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT
    , String
"DEVICE_DEFAULT_EXT"
    )
  ,
    ( PipelineRobustnessImageBehaviorEXT
PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT
    , String
"DISABLED_EXT"
    )
  ,
    ( PipelineRobustnessImageBehaviorEXT
PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT
    , String
"ROBUST_IMAGE_ACCESS_EXT"
    )
  ,
    ( PipelineRobustnessImageBehaviorEXT
PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT
    , String
"ROBUST_IMAGE_ACCESS_2_EXT"
    )
  ]

instance Show PipelineRobustnessImageBehaviorEXT where
  showsPrec :: Int -> PipelineRobustnessImageBehaviorEXT -> ShowS
showsPrec =
    String
-> [(PipelineRobustnessImageBehaviorEXT, String)]
-> String
-> (PipelineRobustnessImageBehaviorEXT -> Int32)
-> (Int32 -> ShowS)
-> Int
-> PipelineRobustnessImageBehaviorEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixPipelineRobustnessImageBehaviorEXT
      [(PipelineRobustnessImageBehaviorEXT, String)]
showTablePipelineRobustnessImageBehaviorEXT
      String
conNamePipelineRobustnessImageBehaviorEXT
      (\(PipelineRobustnessImageBehaviorEXT Int32
x) -> Int32
x)
      (Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
11)

instance Read PipelineRobustnessImageBehaviorEXT where
  readPrec :: ReadPrec PipelineRobustnessImageBehaviorEXT
readPrec =
    String
-> [(PipelineRobustnessImageBehaviorEXT, String)]
-> String
-> (Int32 -> PipelineRobustnessImageBehaviorEXT)
-> ReadPrec PipelineRobustnessImageBehaviorEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixPipelineRobustnessImageBehaviorEXT
      [(PipelineRobustnessImageBehaviorEXT, String)]
showTablePipelineRobustnessImageBehaviorEXT
      String
conNamePipelineRobustnessImageBehaviorEXT
      Int32 -> PipelineRobustnessImageBehaviorEXT
PipelineRobustnessImageBehaviorEXT

type EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION"
pattern EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION :: forall a . Integral a => a
pattern $bEXT_PIPELINE_ROBUSTNESS_SPEC_VERSION :: forall a. Integral a => a
$mEXT_PIPELINE_ROBUSTNESS_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> (Void# -> r) -> (Void# -> r) -> r
EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION = 1


type EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_pipeline_robustness"

-- No documentation found for TopLevel "VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME"
pattern EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bEXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mEXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_pipeline_robustness"