{-# 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
                                                                , ..
                                                                )) 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.Core10.Pass.SubpassDescription',
-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2',
-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',
-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline',
-- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdBindPipelineShaderGroupNV',
-- 'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR'
newtype PipelineBindPoint = PipelineBindPoint Int32
  deriving newtype (PipelineBindPoint -> PipelineBindPoint -> Bool
(PipelineBindPoint -> PipelineBindPoint -> Bool)
-> (PipelineBindPoint -> PipelineBindPoint -> Bool)
-> Eq PipelineBindPoint
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
Eq PipelineBindPoint
-> (PipelineBindPoint -> PipelineBindPoint -> Ordering)
-> (PipelineBindPoint -> PipelineBindPoint -> Bool)
-> (PipelineBindPoint -> PipelineBindPoint -> Bool)
-> (PipelineBindPoint -> PipelineBindPoint -> Bool)
-> (PipelineBindPoint -> PipelineBindPoint -> Bool)
-> (PipelineBindPoint -> PipelineBindPoint -> PipelineBindPoint)
-> (PipelineBindPoint -> PipelineBindPoint -> PipelineBindPoint)
-> Ord 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
$cp1Ord :: Eq PipelineBindPoint
Ord, Ptr b -> Int -> IO PipelineBindPoint
Ptr b -> Int -> PipelineBindPoint -> IO ()
Ptr PipelineBindPoint -> IO PipelineBindPoint
Ptr PipelineBindPoint -> Int -> IO PipelineBindPoint
Ptr PipelineBindPoint -> Int -> PipelineBindPoint -> IO ()
Ptr PipelineBindPoint -> PipelineBindPoint -> IO ()
PipelineBindPoint -> Int
(PipelineBindPoint -> Int)
-> (PipelineBindPoint -> Int)
-> (Ptr PipelineBindPoint -> Int -> IO PipelineBindPoint)
-> (Ptr PipelineBindPoint -> Int -> PipelineBindPoint -> IO ())
-> (forall b. Ptr b -> Int -> IO PipelineBindPoint)
-> (forall b. Ptr b -> Int -> PipelineBindPoint -> IO ())
-> (Ptr PipelineBindPoint -> IO PipelineBindPoint)
-> (Ptr PipelineBindPoint -> PipelineBindPoint -> IO ())
-> Storable PipelineBindPoint
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 :: Ptr b -> Int -> PipelineBindPoint -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> PipelineBindPoint -> IO ()
peekByteOff :: 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
PipelineBindPoint -> Zero 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 -> (Void# -> r) -> (Void# -> 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 -> (Void# -> r) -> (Void# -> 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 -> (Void# -> r) -> (Void# -> 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 -> (Void# -> r) -> (Void# -> r) -> r
PIPELINE_BIND_POINT_RAY_TRACING_KHR        = PipelineBindPoint 1000165000
{-# complete PIPELINE_BIND_POINT_GRAPHICS,
             PIPELINE_BIND_POINT_COMPUTE,
             PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI,
             PIPELINE_BIND_POINT_RAY_TRACING_KHR :: 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")
  ]

instance Show PipelineBindPoint where
  showsPrec :: Int -> PipelineBindPoint -> ShowS
showsPrec = String
-> [(PipelineBindPoint, String)]
-> String
-> (PipelineBindPoint -> Int32)
-> (Int32 -> ShowS)
-> Int
-> PipelineBindPoint
-> ShowS
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)
                            (Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
11)

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