{-# language CPP #-}
-- No documentation found for Chapter "PipelineBindPoint"
module Vulkan.Core10.Enums.PipelineBindPoint  (PipelineBindPoint( PIPELINE_BIND_POINT_GRAPHICS
                                                                , PIPELINE_BIND_POINT_COMPUTE
                                                                , PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI
                                                                , PIPELINE_BIND_POINT_RAY_TRACING_KHR
                                                                , PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX
                                                                , ..
                                                                )) where

import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import GHC.Show (showsPrec)
import Vulkan.Zero (Zero)
import Foreign.Storable (Storable)
import Data.Int (Int32)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))

-- | VkPipelineBindPoint - Specify the bind point of a pipeline object to a
-- command buffer
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
-- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo',
-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',
-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsMemoryRequirementsInfoNV',
-- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutCreateInfoNV',
-- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.PipelineIndirectDeviceAddressInfoNV',
-- 'Vulkan.Core10.Pass.SubpassDescription',
-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2',
-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBufferEmbeddedSamplersEXT',
-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',
-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline',
-- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdBindPipelineShaderGroupNV',
-- 'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR',
-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
-- 'Vulkan.Extensions.VK_NV_device_generated_commands_compute.cmdUpdatePipelineIndirectBufferNV'
newtype PipelineBindPoint = PipelineBindPoint Int32
  deriving newtype (PipelineBindPoint -> PipelineBindPoint -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PipelineBindPoint -> PipelineBindPoint -> Bool
$c/= :: PipelineBindPoint -> PipelineBindPoint -> Bool
== :: PipelineBindPoint -> PipelineBindPoint -> Bool
$c== :: PipelineBindPoint -> PipelineBindPoint -> Bool
Eq, Eq PipelineBindPoint
PipelineBindPoint -> PipelineBindPoint -> Bool
PipelineBindPoint -> PipelineBindPoint -> Ordering
PipelineBindPoint -> PipelineBindPoint -> PipelineBindPoint
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 :: PipelineBindPoint -> PipelineBindPoint -> PipelineBindPoint
$cmin :: PipelineBindPoint -> PipelineBindPoint -> PipelineBindPoint
max :: PipelineBindPoint -> PipelineBindPoint -> PipelineBindPoint
$cmax :: PipelineBindPoint -> PipelineBindPoint -> PipelineBindPoint
>= :: PipelineBindPoint -> PipelineBindPoint -> Bool
$c>= :: PipelineBindPoint -> PipelineBindPoint -> Bool
> :: PipelineBindPoint -> PipelineBindPoint -> Bool
$c> :: PipelineBindPoint -> PipelineBindPoint -> Bool
<= :: PipelineBindPoint -> PipelineBindPoint -> Bool
$c<= :: PipelineBindPoint -> PipelineBindPoint -> Bool
< :: PipelineBindPoint -> PipelineBindPoint -> Bool
$c< :: PipelineBindPoint -> PipelineBindPoint -> Bool
compare :: PipelineBindPoint -> PipelineBindPoint -> Ordering
$ccompare :: PipelineBindPoint -> PipelineBindPoint -> Ordering
Ord, Ptr PipelineBindPoint -> IO PipelineBindPoint
Ptr PipelineBindPoint -> Int -> IO PipelineBindPoint
Ptr PipelineBindPoint -> Int -> PipelineBindPoint -> IO ()
Ptr PipelineBindPoint -> PipelineBindPoint -> IO ()
PipelineBindPoint -> Int
forall b. Ptr b -> Int -> IO PipelineBindPoint
forall b. Ptr b -> Int -> PipelineBindPoint -> 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 PipelineBindPoint -> PipelineBindPoint -> IO ()
$cpoke :: Ptr PipelineBindPoint -> PipelineBindPoint -> IO ()
peek :: Ptr PipelineBindPoint -> IO PipelineBindPoint
$cpeek :: Ptr PipelineBindPoint -> IO PipelineBindPoint
pokeByteOff :: forall b. Ptr b -> Int -> PipelineBindPoint -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> PipelineBindPoint -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO PipelineBindPoint
$cpeekByteOff :: forall b. Ptr b -> Int -> IO PipelineBindPoint
pokeElemOff :: Ptr PipelineBindPoint -> Int -> PipelineBindPoint -> IO ()
$cpokeElemOff :: Ptr PipelineBindPoint -> Int -> PipelineBindPoint -> IO ()
peekElemOff :: Ptr PipelineBindPoint -> Int -> IO PipelineBindPoint
$cpeekElemOff :: Ptr PipelineBindPoint -> Int -> IO PipelineBindPoint
alignment :: PipelineBindPoint -> Int
$calignment :: PipelineBindPoint -> Int
sizeOf :: PipelineBindPoint -> Int
$csizeOf :: PipelineBindPoint -> Int
Storable, PipelineBindPoint
forall a. a -> Zero a
zero :: PipelineBindPoint
$czero :: PipelineBindPoint
Zero)

-- | 'PIPELINE_BIND_POINT_GRAPHICS' specifies binding as a graphics pipeline.
pattern $bPIPELINE_BIND_POINT_GRAPHICS :: PipelineBindPoint
$mPIPELINE_BIND_POINT_GRAPHICS :: forall {r}. PipelineBindPoint -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_BIND_POINT_GRAPHICS = PipelineBindPoint 0

-- | 'PIPELINE_BIND_POINT_COMPUTE' specifies binding as a compute pipeline.
pattern $bPIPELINE_BIND_POINT_COMPUTE :: PipelineBindPoint
$mPIPELINE_BIND_POINT_COMPUTE :: forall {r}. PipelineBindPoint -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_BIND_POINT_COMPUTE = PipelineBindPoint 1

-- | 'PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI' specifies binding as a
-- subpass shading pipeline.
pattern $bPIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI :: PipelineBindPoint
$mPIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI :: forall {r}. PipelineBindPoint -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = PipelineBindPoint 1000369003

-- | 'PIPELINE_BIND_POINT_RAY_TRACING_KHR' specifies binding as a ray tracing
-- pipeline.
pattern $bPIPELINE_BIND_POINT_RAY_TRACING_KHR :: PipelineBindPoint
$mPIPELINE_BIND_POINT_RAY_TRACING_KHR :: forall {r}. PipelineBindPoint -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_BIND_POINT_RAY_TRACING_KHR = PipelineBindPoint 1000165000

-- | 'PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX' specifies binding as an
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#executiongraphs execution graph pipeline>.
pattern $bPIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX :: PipelineBindPoint
$mPIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX :: forall {r}. PipelineBindPoint -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX = PipelineBindPoint 1000134000

{-# COMPLETE
  PIPELINE_BIND_POINT_GRAPHICS
  , PIPELINE_BIND_POINT_COMPUTE
  , PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI
  , PIPELINE_BIND_POINT_RAY_TRACING_KHR
  , PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX ::
    PipelineBindPoint
  #-}

conNamePipelineBindPoint :: String
conNamePipelineBindPoint :: String
conNamePipelineBindPoint = String
"PipelineBindPoint"

enumPrefixPipelineBindPoint :: String
enumPrefixPipelineBindPoint :: String
enumPrefixPipelineBindPoint = String
"PIPELINE_BIND_POINT_"

showTablePipelineBindPoint :: [(PipelineBindPoint, String)]
showTablePipelineBindPoint :: [(PipelineBindPoint, String)]
showTablePipelineBindPoint =
  [ (PipelineBindPoint
PIPELINE_BIND_POINT_GRAPHICS, String
"GRAPHICS")
  , (PipelineBindPoint
PIPELINE_BIND_POINT_COMPUTE, String
"COMPUTE")
  ,
    ( PipelineBindPoint
PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI
    , String
"SUBPASS_SHADING_HUAWEI"
    )
  ,
    ( PipelineBindPoint
PIPELINE_BIND_POINT_RAY_TRACING_KHR
    , String
"RAY_TRACING_KHR"
    )
  ,
    ( PipelineBindPoint
PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX
    , String
"EXECUTION_GRAPH_AMDX"
    )
  ]

instance Show PipelineBindPoint where
  showsPrec :: Int -> PipelineBindPoint -> ShowS
showsPrec =
    forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixPipelineBindPoint
      [(PipelineBindPoint, String)]
showTablePipelineBindPoint
      String
conNamePipelineBindPoint
      (\(PipelineBindPoint Int32
x) -> Int32
x)
      (forall a. Show a => Int -> a -> ShowS
showsPrec Int
11)

instance Read PipelineBindPoint where
  readPrec :: ReadPrec PipelineBindPoint
readPrec =
    forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixPipelineBindPoint
      [(PipelineBindPoint, String)]
showTablePipelineBindPoint
      String
conNamePipelineBindPoint
      Int32 -> PipelineBindPoint
PipelineBindPoint