{-# language CPP #-}
-- No documentation found for Chapter "PipelineStageFlagBits"
module Vulkan.Core10.Enums.PipelineStageFlagBits  ( PipelineStageFlags
                                                  , PipelineStageFlagBits( PIPELINE_STAGE_TOP_OF_PIPE_BIT
                                                                         , PIPELINE_STAGE_DRAW_INDIRECT_BIT
                                                                         , PIPELINE_STAGE_VERTEX_INPUT_BIT
                                                                         , PIPELINE_STAGE_VERTEX_SHADER_BIT
                                                                         , PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
                                                                         , PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
                                                                         , PIPELINE_STAGE_GEOMETRY_SHADER_BIT
                                                                         , PIPELINE_STAGE_FRAGMENT_SHADER_BIT
                                                                         , PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
                                                                         , PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT
                                                                         , PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
                                                                         , PIPELINE_STAGE_COMPUTE_SHADER_BIT
                                                                         , PIPELINE_STAGE_TRANSFER_BIT
                                                                         , PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
                                                                         , PIPELINE_STAGE_HOST_BIT
                                                                         , PIPELINE_STAGE_ALL_GRAPHICS_BIT
                                                                         , PIPELINE_STAGE_ALL_COMMANDS_BIT
                                                                         , PIPELINE_STAGE_MESH_SHADER_BIT_EXT
                                                                         , PIPELINE_STAGE_TASK_SHADER_BIT_EXT
                                                                         , PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV
                                                                         , PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
                                                                         , PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
                                                                         , PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR
                                                                         , PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
                                                                         , PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
                                                                         , PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
                                                                         , PIPELINE_STAGE_NONE
                                                                         , ..
                                                                         )
                                                  ) where

import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import GHC.Show (showString)
import Numeric (showHex)
import Vulkan.Zero (Zero)
import Foreign.Storable (Storable)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Vulkan.Core10.FundamentalTypes (Flags)
type PipelineStageFlags = PipelineStageFlagBits

-- | VkPipelineStageFlagBits - Bitmask specifying pipeline stages
--
-- = Description
--
-- These values all have the same meaning as the equivalently named values
-- for 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2'.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
-- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.CheckpointDataNV',
-- 'PipelineStageFlags',
-- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',
-- 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp'
newtype PipelineStageFlagBits = PipelineStageFlagBits Flags
  deriving newtype (PipelineStageFlagBits -> PipelineStageFlagBits -> Bool
(PipelineStageFlagBits -> PipelineStageFlagBits -> Bool)
-> (PipelineStageFlagBits -> PipelineStageFlagBits -> Bool)
-> Eq PipelineStageFlagBits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PipelineStageFlagBits -> PipelineStageFlagBits -> Bool
== :: PipelineStageFlagBits -> PipelineStageFlagBits -> Bool
$c/= :: PipelineStageFlagBits -> PipelineStageFlagBits -> Bool
/= :: PipelineStageFlagBits -> PipelineStageFlagBits -> Bool
Eq, Eq PipelineStageFlagBits
Eq PipelineStageFlagBits =>
(PipelineStageFlagBits -> PipelineStageFlagBits -> Ordering)
-> (PipelineStageFlagBits -> PipelineStageFlagBits -> Bool)
-> (PipelineStageFlagBits -> PipelineStageFlagBits -> Bool)
-> (PipelineStageFlagBits -> PipelineStageFlagBits -> Bool)
-> (PipelineStageFlagBits -> PipelineStageFlagBits -> Bool)
-> (PipelineStageFlagBits
    -> PipelineStageFlagBits -> PipelineStageFlagBits)
-> (PipelineStageFlagBits
    -> PipelineStageFlagBits -> PipelineStageFlagBits)
-> Ord PipelineStageFlagBits
PipelineStageFlagBits -> PipelineStageFlagBits -> Bool
PipelineStageFlagBits -> PipelineStageFlagBits -> Ordering
PipelineStageFlagBits
-> PipelineStageFlagBits -> PipelineStageFlagBits
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
$ccompare :: PipelineStageFlagBits -> PipelineStageFlagBits -> Ordering
compare :: PipelineStageFlagBits -> PipelineStageFlagBits -> Ordering
$c< :: PipelineStageFlagBits -> PipelineStageFlagBits -> Bool
< :: PipelineStageFlagBits -> PipelineStageFlagBits -> Bool
$c<= :: PipelineStageFlagBits -> PipelineStageFlagBits -> Bool
<= :: PipelineStageFlagBits -> PipelineStageFlagBits -> Bool
$c> :: PipelineStageFlagBits -> PipelineStageFlagBits -> Bool
> :: PipelineStageFlagBits -> PipelineStageFlagBits -> Bool
$c>= :: PipelineStageFlagBits -> PipelineStageFlagBits -> Bool
>= :: PipelineStageFlagBits -> PipelineStageFlagBits -> Bool
$cmax :: PipelineStageFlagBits
-> PipelineStageFlagBits -> PipelineStageFlagBits
max :: PipelineStageFlagBits
-> PipelineStageFlagBits -> PipelineStageFlagBits
$cmin :: PipelineStageFlagBits
-> PipelineStageFlagBits -> PipelineStageFlagBits
min :: PipelineStageFlagBits
-> PipelineStageFlagBits -> PipelineStageFlagBits
Ord, Ptr PipelineStageFlagBits -> IO PipelineStageFlagBits
Ptr PipelineStageFlagBits -> Int -> IO PipelineStageFlagBits
Ptr PipelineStageFlagBits -> Int -> PipelineStageFlagBits -> IO ()
Ptr PipelineStageFlagBits -> PipelineStageFlagBits -> IO ()
PipelineStageFlagBits -> Int
(PipelineStageFlagBits -> Int)
-> (PipelineStageFlagBits -> Int)
-> (Ptr PipelineStageFlagBits -> Int -> IO PipelineStageFlagBits)
-> (Ptr PipelineStageFlagBits
    -> Int -> PipelineStageFlagBits -> IO ())
-> (forall b. Ptr b -> Int -> IO PipelineStageFlagBits)
-> (forall b. Ptr b -> Int -> PipelineStageFlagBits -> IO ())
-> (Ptr PipelineStageFlagBits -> IO PipelineStageFlagBits)
-> (Ptr PipelineStageFlagBits -> PipelineStageFlagBits -> IO ())
-> Storable PipelineStageFlagBits
forall b. Ptr b -> Int -> IO PipelineStageFlagBits
forall b. Ptr b -> Int -> PipelineStageFlagBits -> 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
$csizeOf :: PipelineStageFlagBits -> Int
sizeOf :: PipelineStageFlagBits -> Int
$calignment :: PipelineStageFlagBits -> Int
alignment :: PipelineStageFlagBits -> Int
$cpeekElemOff :: Ptr PipelineStageFlagBits -> Int -> IO PipelineStageFlagBits
peekElemOff :: Ptr PipelineStageFlagBits -> Int -> IO PipelineStageFlagBits
$cpokeElemOff :: Ptr PipelineStageFlagBits -> Int -> PipelineStageFlagBits -> IO ()
pokeElemOff :: Ptr PipelineStageFlagBits -> Int -> PipelineStageFlagBits -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO PipelineStageFlagBits
peekByteOff :: forall b. Ptr b -> Int -> IO PipelineStageFlagBits
$cpokeByteOff :: forall b. Ptr b -> Int -> PipelineStageFlagBits -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> PipelineStageFlagBits -> IO ()
$cpeek :: Ptr PipelineStageFlagBits -> IO PipelineStageFlagBits
peek :: Ptr PipelineStageFlagBits -> IO PipelineStageFlagBits
$cpoke :: Ptr PipelineStageFlagBits -> PipelineStageFlagBits -> IO ()
poke :: Ptr PipelineStageFlagBits -> PipelineStageFlagBits -> IO ()
Storable, PipelineStageFlagBits
PipelineStageFlagBits -> Zero PipelineStageFlagBits
forall a. a -> Zero a
$czero :: PipelineStageFlagBits
zero :: PipelineStageFlagBits
Zero, Eq PipelineStageFlagBits
PipelineStageFlagBits
Eq PipelineStageFlagBits =>
(PipelineStageFlagBits
 -> PipelineStageFlagBits -> PipelineStageFlagBits)
-> (PipelineStageFlagBits
    -> PipelineStageFlagBits -> PipelineStageFlagBits)
-> (PipelineStageFlagBits
    -> PipelineStageFlagBits -> PipelineStageFlagBits)
-> (PipelineStageFlagBits -> PipelineStageFlagBits)
-> (PipelineStageFlagBits -> Int -> PipelineStageFlagBits)
-> (PipelineStageFlagBits -> Int -> PipelineStageFlagBits)
-> PipelineStageFlagBits
-> (Int -> PipelineStageFlagBits)
-> (PipelineStageFlagBits -> Int -> PipelineStageFlagBits)
-> (PipelineStageFlagBits -> Int -> PipelineStageFlagBits)
-> (PipelineStageFlagBits -> Int -> PipelineStageFlagBits)
-> (PipelineStageFlagBits -> Int -> Bool)
-> (PipelineStageFlagBits -> Maybe Int)
-> (PipelineStageFlagBits -> Int)
-> (PipelineStageFlagBits -> Bool)
-> (PipelineStageFlagBits -> Int -> PipelineStageFlagBits)
-> (PipelineStageFlagBits -> Int -> PipelineStageFlagBits)
-> (PipelineStageFlagBits -> Int -> PipelineStageFlagBits)
-> (PipelineStageFlagBits -> Int -> PipelineStageFlagBits)
-> (PipelineStageFlagBits -> Int -> PipelineStageFlagBits)
-> (PipelineStageFlagBits -> Int -> PipelineStageFlagBits)
-> (PipelineStageFlagBits -> Int)
-> Bits PipelineStageFlagBits
Int -> PipelineStageFlagBits
PipelineStageFlagBits -> Bool
PipelineStageFlagBits -> Int
PipelineStageFlagBits -> Maybe Int
PipelineStageFlagBits -> PipelineStageFlagBits
PipelineStageFlagBits -> Int -> Bool
PipelineStageFlagBits -> Int -> PipelineStageFlagBits
PipelineStageFlagBits
-> PipelineStageFlagBits -> PipelineStageFlagBits
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
$c.&. :: PipelineStageFlagBits
-> PipelineStageFlagBits -> PipelineStageFlagBits
.&. :: PipelineStageFlagBits
-> PipelineStageFlagBits -> PipelineStageFlagBits
$c.|. :: PipelineStageFlagBits
-> PipelineStageFlagBits -> PipelineStageFlagBits
.|. :: PipelineStageFlagBits
-> PipelineStageFlagBits -> PipelineStageFlagBits
$cxor :: PipelineStageFlagBits
-> PipelineStageFlagBits -> PipelineStageFlagBits
xor :: PipelineStageFlagBits
-> PipelineStageFlagBits -> PipelineStageFlagBits
$ccomplement :: PipelineStageFlagBits -> PipelineStageFlagBits
complement :: PipelineStageFlagBits -> PipelineStageFlagBits
$cshift :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
shift :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
$crotate :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
rotate :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
$czeroBits :: PipelineStageFlagBits
zeroBits :: PipelineStageFlagBits
$cbit :: Int -> PipelineStageFlagBits
bit :: Int -> PipelineStageFlagBits
$csetBit :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
setBit :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
$cclearBit :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
clearBit :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
$ccomplementBit :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
complementBit :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
$ctestBit :: PipelineStageFlagBits -> Int -> Bool
testBit :: PipelineStageFlagBits -> Int -> Bool
$cbitSizeMaybe :: PipelineStageFlagBits -> Maybe Int
bitSizeMaybe :: PipelineStageFlagBits -> Maybe Int
$cbitSize :: PipelineStageFlagBits -> Int
bitSize :: PipelineStageFlagBits -> Int
$cisSigned :: PipelineStageFlagBits -> Bool
isSigned :: PipelineStageFlagBits -> Bool
$cshiftL :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
shiftL :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
$cunsafeShiftL :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
unsafeShiftL :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
$cshiftR :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
shiftR :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
$cunsafeShiftR :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
unsafeShiftR :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
$crotateL :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
rotateL :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
$crotateR :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
rotateR :: PipelineStageFlagBits -> Int -> PipelineStageFlagBits
$cpopCount :: PipelineStageFlagBits -> Int
popCount :: PipelineStageFlagBits -> Int
Bits, Bits PipelineStageFlagBits
Bits PipelineStageFlagBits =>
(PipelineStageFlagBits -> Int)
-> (PipelineStageFlagBits -> Int)
-> (PipelineStageFlagBits -> Int)
-> FiniteBits PipelineStageFlagBits
PipelineStageFlagBits -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: PipelineStageFlagBits -> Int
finiteBitSize :: PipelineStageFlagBits -> Int
$ccountLeadingZeros :: PipelineStageFlagBits -> Int
countLeadingZeros :: PipelineStageFlagBits -> Int
$ccountTrailingZeros :: PipelineStageFlagBits -> Int
countTrailingZeros :: PipelineStageFlagBits -> Int
FiniteBits)

-- | 'PIPELINE_STAGE_TOP_OF_PIPE_BIT' is equivalent to
-- 'PIPELINE_STAGE_ALL_COMMANDS_BIT' with
-- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlags' set to @0@ when
-- specified in the second synchronization scope, but specifies no stage of
-- execution when specified in the first scope.
pattern $bPIPELINE_STAGE_TOP_OF_PIPE_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_TOP_OF_PIPE_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_TOP_OF_PIPE_BIT = PipelineStageFlagBits 0x00000001

-- | 'PIPELINE_STAGE_DRAW_INDIRECT_BIT' specifies the stage of the pipeline
-- where @VkDrawIndirect*@ \/ @VkDispatchIndirect*@ \/
-- @VkTraceRaysIndirect*@ data structures are consumed. This stage also
-- includes reading commands written by
-- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdExecuteGeneratedCommandsNV'.
pattern $bPIPELINE_STAGE_DRAW_INDIRECT_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_DRAW_INDIRECT_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_DRAW_INDIRECT_BIT = PipelineStageFlagBits 0x00000002

-- | 'PIPELINE_STAGE_VERTEX_INPUT_BIT' specifies the stage of the pipeline
-- where vertex and index buffers are consumed.
pattern $bPIPELINE_STAGE_VERTEX_INPUT_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_VERTEX_INPUT_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_VERTEX_INPUT_BIT = PipelineStageFlagBits 0x00000004

-- | 'PIPELINE_STAGE_VERTEX_SHADER_BIT' specifies the vertex shader stage.
pattern $bPIPELINE_STAGE_VERTEX_SHADER_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_VERTEX_SHADER_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_VERTEX_SHADER_BIT = PipelineStageFlagBits 0x00000008

-- | 'PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT' specifies the
-- tessellation control shader stage.
pattern $bPIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = PipelineStageFlagBits 0x00000010

-- | 'PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT' specifies the
-- tessellation evaluation shader stage.
pattern $bPIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = PipelineStageFlagBits 0x00000020

-- | 'PIPELINE_STAGE_GEOMETRY_SHADER_BIT' specifies the geometry shader
-- stage.
pattern $bPIPELINE_STAGE_GEOMETRY_SHADER_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_GEOMETRY_SHADER_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_GEOMETRY_SHADER_BIT = PipelineStageFlagBits 0x00000040

-- | 'PIPELINE_STAGE_FRAGMENT_SHADER_BIT' specifies the fragment shader
-- stage.
pattern $bPIPELINE_STAGE_FRAGMENT_SHADER_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_FRAGMENT_SHADER_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_FRAGMENT_SHADER_BIT = PipelineStageFlagBits 0x00000080

-- | 'PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT' specifies the stage of the
-- pipeline where early fragment tests (depth and stencil tests before
-- fragment shading) are performed. This stage also includes
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations render pass load operations>
-- for framebuffer attachments with a depth\/stencil format.
pattern $bPIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = PipelineStageFlagBits 0x00000100

-- | 'PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT' specifies the stage of the
-- pipeline where late fragment tests (depth and stencil tests after
-- fragment shading) are performed. This stage also includes
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations render pass store operations>
-- for framebuffer attachments with a depth\/stencil format.
pattern $bPIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = PipelineStageFlagBits 0x00000200

-- | 'PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT' specifies the stage of the
-- pipeline after blending where the final color values are output from the
-- pipeline. This stage includes
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blending blending>,
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-logicop logic operations>,
-- render pass
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-operations load>
-- and
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-store-operations store>
-- operations for color attachments,
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-resolve-operations render pass multisample resolve operations>,
-- and 'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'.
pattern $bPIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = PipelineStageFlagBits 0x00000400

-- | 'PIPELINE_STAGE_COMPUTE_SHADER_BIT' specifies the execution of a compute
-- shader.
pattern $bPIPELINE_STAGE_COMPUTE_SHADER_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_COMPUTE_SHADER_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_COMPUTE_SHADER_BIT = PipelineStageFlagBits 0x00000800

-- | #synchronization-pipeline-stages-transfer# 'PIPELINE_STAGE_TRANSFER_BIT'
-- specifies the following commands:
--
-- -   All
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>,
--     including
--     'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults'
--
-- -   'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2'
--     and 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage'
--
-- -   'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdResolveImage2'
--     and 'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage'
--
-- -   All
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear commands>,
--     with the exception of
--     'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'
pattern $bPIPELINE_STAGE_TRANSFER_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_TRANSFER_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_TRANSFER_BIT = PipelineStageFlagBits 0x00001000

-- | 'PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT' is equivalent to
-- 'PIPELINE_STAGE_ALL_COMMANDS_BIT' with
-- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlags' set to @0@ when
-- specified in the first synchronization scope, but specifies no stage of
-- execution when specified in the second scope.
pattern $bPIPELINE_STAGE_BOTTOM_OF_PIPE_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_BOTTOM_OF_PIPE_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = PipelineStageFlagBits 0x00002000

-- | 'PIPELINE_STAGE_HOST_BIT' specifies a pseudo-stage indicating execution
-- on the host of reads\/writes of device memory. This stage is not invoked
-- by any commands recorded in a command buffer.
pattern $bPIPELINE_STAGE_HOST_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_HOST_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_HOST_BIT = PipelineStageFlagBits 0x00004000

-- | 'PIPELINE_STAGE_ALL_GRAPHICS_BIT' specifies the execution of all
-- graphics pipeline stages, and is equivalent to the logical OR of:
--
-- -   'PIPELINE_STAGE_DRAW_INDIRECT_BIT'
--
-- -   'PIPELINE_STAGE_TASK_SHADER_BIT_EXT'
--
-- -   'PIPELINE_STAGE_MESH_SHADER_BIT_EXT'
--
-- -   'PIPELINE_STAGE_VERTEX_INPUT_BIT'
--
-- -   'PIPELINE_STAGE_VERTEX_SHADER_BIT'
--
-- -   'PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
--
-- -   'PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
--
-- -   'PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
--
-- -   'PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
--
-- -   'PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'
--
-- -   'PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'
--
-- -   'PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
--
-- -   'PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
--
-- -   'PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
--
-- -   'PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
--
-- -   'PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
pattern $bPIPELINE_STAGE_ALL_GRAPHICS_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_ALL_GRAPHICS_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_ALL_GRAPHICS_BIT = PipelineStageFlagBits 0x00008000

-- | 'PIPELINE_STAGE_ALL_COMMANDS_BIT' specifies all operations performed by
-- all commands supported on the queue it is used with.
pattern $bPIPELINE_STAGE_ALL_COMMANDS_BIT :: PipelineStageFlagBits
$mPIPELINE_STAGE_ALL_COMMANDS_BIT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_ALL_COMMANDS_BIT = PipelineStageFlagBits 0x00010000

-- | 'PIPELINE_STAGE_MESH_SHADER_BIT_EXT' specifies the mesh shader stage.
pattern $bPIPELINE_STAGE_MESH_SHADER_BIT_EXT :: PipelineStageFlagBits
$mPIPELINE_STAGE_MESH_SHADER_BIT_EXT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_MESH_SHADER_BIT_EXT = PipelineStageFlagBits 0x00100000

-- | 'PIPELINE_STAGE_TASK_SHADER_BIT_EXT' specifies the task shader stage.
pattern $bPIPELINE_STAGE_TASK_SHADER_BIT_EXT :: PipelineStageFlagBits
$mPIPELINE_STAGE_TASK_SHADER_BIT_EXT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_TASK_SHADER_BIT_EXT = PipelineStageFlagBits 0x00080000

-- | 'PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV' specifies the stage of the
-- pipeline where device-side preprocessing for generated commands via
-- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'
-- is handled.
pattern $bPIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV :: PipelineStageFlagBits
$mPIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = PipelineStageFlagBits 0x00020000

-- | 'PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies the
-- stage of the pipeline where the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
-- or
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>
-- is read to determine the fragment shading rate for portions of a
-- rasterized primitive.
pattern $bPIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR :: PipelineStageFlagBits
$mPIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PipelineStageFlagBits 0x00400000

-- | 'PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT' specifies the stage of
-- the pipeline where the fragment density map is read to
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fragmentdensitymapops generate the fragment areas>.
pattern $bPIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT :: PipelineStageFlagBits
$mPIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = PipelineStageFlagBits 0x00800000

-- | 'PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' specifies the execution of
-- the ray tracing shader stages, via
-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV' ,
-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysKHR', or
-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysIndirectKHR'
pattern $bPIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR :: PipelineStageFlagBits
$mPIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = PipelineStageFlagBits 0x00200000

-- | 'PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' specifies the
-- execution of
-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV',
-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV'
-- ,
-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresKHR',
-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresIndirectKHR',
-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyAccelerationStructureKHR',
-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyAccelerationStructureToMemoryKHR',
-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyMemoryToAccelerationStructureKHR',
-- and
-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR'.
pattern $bPIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR :: PipelineStageFlagBits
$mPIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = PipelineStageFlagBits 0x02000000

-- | 'PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT' specifies the stage of
-- the pipeline where the predicate of conditional rendering is consumed.
pattern $bPIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT :: PipelineStageFlagBits
$mPIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = PipelineStageFlagBits 0x00040000

-- | 'PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT' specifies the stage of the
-- pipeline where vertex attribute output values are written to the
-- transform feedback buffers.
pattern $bPIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT :: PipelineStageFlagBits
$mPIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = PipelineStageFlagBits 0x01000000

-- | 'PIPELINE_STAGE_NONE' specifies no stages of execution.
pattern $bPIPELINE_STAGE_NONE :: PipelineStageFlagBits
$mPIPELINE_STAGE_NONE :: forall {r}.
PipelineStageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_STAGE_NONE = PipelineStageFlagBits 0x00000000

conNamePipelineStageFlagBits :: String
conNamePipelineStageFlagBits :: String
conNamePipelineStageFlagBits = String
"PipelineStageFlagBits"

enumPrefixPipelineStageFlagBits :: String
enumPrefixPipelineStageFlagBits :: String
enumPrefixPipelineStageFlagBits = String
"PIPELINE_STAGE_"

showTablePipelineStageFlagBits :: [(PipelineStageFlagBits, String)]
showTablePipelineStageFlagBits :: [(PipelineStageFlagBits, String)]
showTablePipelineStageFlagBits =
  [
    ( PipelineStageFlagBits
PIPELINE_STAGE_TOP_OF_PIPE_BIT
    , String
"TOP_OF_PIPE_BIT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_DRAW_INDIRECT_BIT
    , String
"DRAW_INDIRECT_BIT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_VERTEX_INPUT_BIT
    , String
"VERTEX_INPUT_BIT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_VERTEX_SHADER_BIT
    , String
"VERTEX_SHADER_BIT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
    , String
"TESSELLATION_CONTROL_SHADER_BIT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
    , String
"TESSELLATION_EVALUATION_SHADER_BIT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_GEOMETRY_SHADER_BIT
    , String
"GEOMETRY_SHADER_BIT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_FRAGMENT_SHADER_BIT
    , String
"FRAGMENT_SHADER_BIT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
    , String
"EARLY_FRAGMENT_TESTS_BIT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT
    , String
"LATE_FRAGMENT_TESTS_BIT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
    , String
"COLOR_ATTACHMENT_OUTPUT_BIT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_COMPUTE_SHADER_BIT
    , String
"COMPUTE_SHADER_BIT"
    )
  , (PipelineStageFlagBits
PIPELINE_STAGE_TRANSFER_BIT, String
"TRANSFER_BIT")
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
    , String
"BOTTOM_OF_PIPE_BIT"
    )
  , (PipelineStageFlagBits
PIPELINE_STAGE_HOST_BIT, String
"HOST_BIT")
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_ALL_GRAPHICS_BIT
    , String
"ALL_GRAPHICS_BIT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_ALL_COMMANDS_BIT
    , String
"ALL_COMMANDS_BIT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_MESH_SHADER_BIT_EXT
    , String
"MESH_SHADER_BIT_EXT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_TASK_SHADER_BIT_EXT
    , String
"TASK_SHADER_BIT_EXT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV
    , String
"COMMAND_PREPROCESS_BIT_NV"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
    , String
"FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
    , String
"FRAGMENT_DENSITY_PROCESS_BIT_EXT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR
    , String
"RAY_TRACING_SHADER_BIT_KHR"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
    , String
"ACCELERATION_STRUCTURE_BUILD_BIT_KHR"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
    , String
"CONDITIONAL_RENDERING_BIT_EXT"
    )
  ,
    ( PipelineStageFlagBits
PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
    , String
"TRANSFORM_FEEDBACK_BIT_EXT"
    )
  , (PipelineStageFlagBits
PIPELINE_STAGE_NONE, String
"NONE")
  ]

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

instance Read PipelineStageFlagBits where
  readPrec :: ReadPrec PipelineStageFlagBits
readPrec =
    String
-> [(PipelineStageFlagBits, String)]
-> String
-> (Flags -> PipelineStageFlagBits)
-> ReadPrec PipelineStageFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixPipelineStageFlagBits
      [(PipelineStageFlagBits, String)]
showTablePipelineStageFlagBits
      String
conNamePipelineStageFlagBits
      Flags -> PipelineStageFlagBits
PipelineStageFlagBits