content: {-# language CPP #-}
  -- No documentation found for Chapter "PipelineDepthStencilStateCreateFlagBits"
  module Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits  ( PipelineDepthStencilStateCreateFlags
                                                                      , PipelineDepthStencilStateCreateFlagBits( PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT
                                                                                                               , PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT
                                                                                                               , ..
                                                                                                               )
                                                                      ) 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 PipelineDepthStencilStateCreateFlags = PipelineDepthStencilStateCreateFlagBits
  
  -- | VkPipelineDepthStencilStateCreateFlagBits - Bitmask specifying
  -- additional depth\/stencil state information.
  --
  -- = Description
  --
  -- -   'PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT'
  --     indicates that access to the depth aspects of depth\/stencil and
  --     input attachments will have implicit framebuffer-local memory
  --     dependencies.
  --
  -- -   'PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT'
  --     indicates that access to the stencil aspects of depth\/stencil and
  --     input attachments will have implicit framebuffer-local memory
  --     dependencies.
  --
  -- When
  -- 'PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT'
  -- is included in a pipeline, it forms a framebuffer-local memory
  -- dependency for each fragment generated by draw commands for that
  -- pipeline with the following scopes:
  --
  -- -   The first
  --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
  --     includes
  --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
  --     and
  --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'
  --     pipeline stages executed by all previous fragments (as defined by
  --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-primitive-order primitive order>)
  --     in the corresponding
  --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer regions>
  --     including those generated by the same draw command.
  --
  -- -   The second
  --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
  --     includes
  --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
  --     stage executed by the generated fragment.
  --
  -- -   The first
  --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
  --     includes all writes to the depth aspect of depth\/stencil
  --     attachments.
  --
  -- -   The second
  --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
  --     includes all reads from the depth aspect of input attachments.
  --
  -- When
  -- 'PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT'
  -- is included in a pipeline, it forms a framebuffer-local memory
  -- dependency for each fragment generated by draw commands for that
  -- pipeline with the following scopes:
  --
  -- -   The first
  --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
  --     includes
  --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
  --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'
  --     pipeline stages executed by all previous fragments (as defined by
  --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-primitive-order primitive order>)
  --     in the corresponding
  --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer regions>
  --     including those generated by the same draw command.
  --
  -- -   The second
  --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
  --     includes
  --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
  --     and
  --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'
  --     pipeline stages executed by the generated fragment.
  --
  -- -   The first
  --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
  --     includes all writes to the stencil aspect of depth\/stencil
  --     attachments.
  --
  -- -   The second
  --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
  --     includes all reads from the stencil aspect of input attachments.
  --
  -- = See Also
  --
  -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_rasterization_order_attachment_access VK_EXT_rasterization_order_attachment_access>,
  -- 'PipelineDepthStencilStateCreateFlags'
  newtype PipelineDepthStencilStateCreateFlagBits = PipelineDepthStencilStateCreateFlagBits Flags
    deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
  
  -- No documentation found for Nested "VkPipelineDepthStencilStateCreateFlagBits" "VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT"
  pattern PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = PipelineDepthStencilStateCreateFlagBits 0x00000002
  
  -- No documentation found for Nested "VkPipelineDepthStencilStateCreateFlagBits" "VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT"
  pattern PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = PipelineDepthStencilStateCreateFlagBits 0x00000001
  
  conNamePipelineDepthStencilStateCreateFlagBits :: String
  conNamePipelineDepthStencilStateCreateFlagBits = "PipelineDepthStencilStateCreateFlagBits"
  
  enumPrefixPipelineDepthStencilStateCreateFlagBits :: String
  enumPrefixPipelineDepthStencilStateCreateFlagBits = "PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_"
  
  showTablePipelineDepthStencilStateCreateFlagBits :: [(PipelineDepthStencilStateCreateFlagBits, String)]
  showTablePipelineDepthStencilStateCreateFlagBits =
    [
      ( PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT
      , "STENCIL_ACCESS_BIT_EXT"
      )
    ,
      ( PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT
      , "DEPTH_ACCESS_BIT_EXT"
      )
    ]
  
  instance Show PipelineDepthStencilStateCreateFlagBits where
    showsPrec =
      enumShowsPrec
        enumPrefixPipelineDepthStencilStateCreateFlagBits
        showTablePipelineDepthStencilStateCreateFlagBits
        conNamePipelineDepthStencilStateCreateFlagBits
        (\(PipelineDepthStencilStateCreateFlagBits x) -> x)
        (\x -> showString "0x" . showHex x)
  
  instance Read PipelineDepthStencilStateCreateFlagBits where
    readPrec =
      enumReadPrec
        enumPrefixPipelineDepthStencilStateCreateFlagBits
        showTablePipelineDepthStencilStateCreateFlagBits
        conNamePipelineDepthStencilStateCreateFlagBits
        PipelineDepthStencilStateCreateFlagBits
  