{-# language CPP #-}
-- No documentation found for Chapter "BufferUsageFlagBits"
module Vulkan.Core10.Enums.BufferUsageFlagBits  ( BufferUsageFlags
                                                , BufferUsageFlagBits( BUFFER_USAGE_TRANSFER_SRC_BIT
                                                                     , BUFFER_USAGE_TRANSFER_DST_BIT
                                                                     , BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT
                                                                     , BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
                                                                     , BUFFER_USAGE_UNIFORM_BUFFER_BIT
                                                                     , BUFFER_USAGE_STORAGE_BUFFER_BIT
                                                                     , BUFFER_USAGE_INDEX_BUFFER_BIT
                                                                     , BUFFER_USAGE_VERTEX_BUFFER_BIT
                                                                     , BUFFER_USAGE_INDIRECT_BUFFER_BIT
                                                                     , BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
                                                                     , BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR
                                                                     , BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR
                                                                     , BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT
                                                                     , BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
                                                                     , BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT
                                                                     , BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT
                                                                     , ..
                                                                     )
                                                ) where

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

-- | VkBufferUsageFlagBits - Bitmask specifying allowed usage of a buffer
--
-- = See Also
--
-- 'BufferUsageFlags'
newtype BufferUsageFlagBits = BufferUsageFlagBits Flags
  deriving newtype (BufferUsageFlagBits -> BufferUsageFlagBits -> Bool
(BufferUsageFlagBits -> BufferUsageFlagBits -> Bool)
-> (BufferUsageFlagBits -> BufferUsageFlagBits -> Bool)
-> Eq BufferUsageFlagBits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BufferUsageFlagBits -> BufferUsageFlagBits -> Bool
$c/= :: BufferUsageFlagBits -> BufferUsageFlagBits -> Bool
== :: BufferUsageFlagBits -> BufferUsageFlagBits -> Bool
$c== :: BufferUsageFlagBits -> BufferUsageFlagBits -> Bool
Eq, Eq BufferUsageFlagBits
Eq BufferUsageFlagBits =>
(BufferUsageFlagBits -> BufferUsageFlagBits -> Ordering)
-> (BufferUsageFlagBits -> BufferUsageFlagBits -> Bool)
-> (BufferUsageFlagBits -> BufferUsageFlagBits -> Bool)
-> (BufferUsageFlagBits -> BufferUsageFlagBits -> Bool)
-> (BufferUsageFlagBits -> BufferUsageFlagBits -> Bool)
-> (BufferUsageFlagBits
    -> BufferUsageFlagBits -> BufferUsageFlagBits)
-> (BufferUsageFlagBits
    -> BufferUsageFlagBits -> BufferUsageFlagBits)
-> Ord BufferUsageFlagBits
BufferUsageFlagBits -> BufferUsageFlagBits -> Bool
BufferUsageFlagBits -> BufferUsageFlagBits -> Ordering
BufferUsageFlagBits -> BufferUsageFlagBits -> BufferUsageFlagBits
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 :: BufferUsageFlagBits -> BufferUsageFlagBits -> BufferUsageFlagBits
$cmin :: BufferUsageFlagBits -> BufferUsageFlagBits -> BufferUsageFlagBits
max :: BufferUsageFlagBits -> BufferUsageFlagBits -> BufferUsageFlagBits
$cmax :: BufferUsageFlagBits -> BufferUsageFlagBits -> BufferUsageFlagBits
>= :: BufferUsageFlagBits -> BufferUsageFlagBits -> Bool
$c>= :: BufferUsageFlagBits -> BufferUsageFlagBits -> Bool
> :: BufferUsageFlagBits -> BufferUsageFlagBits -> Bool
$c> :: BufferUsageFlagBits -> BufferUsageFlagBits -> Bool
<= :: BufferUsageFlagBits -> BufferUsageFlagBits -> Bool
$c<= :: BufferUsageFlagBits -> BufferUsageFlagBits -> Bool
< :: BufferUsageFlagBits -> BufferUsageFlagBits -> Bool
$c< :: BufferUsageFlagBits -> BufferUsageFlagBits -> Bool
compare :: BufferUsageFlagBits -> BufferUsageFlagBits -> Ordering
$ccompare :: BufferUsageFlagBits -> BufferUsageFlagBits -> Ordering
$cp1Ord :: Eq BufferUsageFlagBits
Ord, Ptr b -> Int -> IO BufferUsageFlagBits
Ptr b -> Int -> BufferUsageFlagBits -> IO ()
Ptr BufferUsageFlagBits -> IO BufferUsageFlagBits
Ptr BufferUsageFlagBits -> Int -> IO BufferUsageFlagBits
Ptr BufferUsageFlagBits -> Int -> BufferUsageFlagBits -> IO ()
Ptr BufferUsageFlagBits -> BufferUsageFlagBits -> IO ()
BufferUsageFlagBits -> Int
(BufferUsageFlagBits -> Int)
-> (BufferUsageFlagBits -> Int)
-> (Ptr BufferUsageFlagBits -> Int -> IO BufferUsageFlagBits)
-> (Ptr BufferUsageFlagBits -> Int -> BufferUsageFlagBits -> IO ())
-> (forall b. Ptr b -> Int -> IO BufferUsageFlagBits)
-> (forall b. Ptr b -> Int -> BufferUsageFlagBits -> IO ())
-> (Ptr BufferUsageFlagBits -> IO BufferUsageFlagBits)
-> (Ptr BufferUsageFlagBits -> BufferUsageFlagBits -> IO ())
-> Storable BufferUsageFlagBits
forall b. Ptr b -> Int -> IO BufferUsageFlagBits
forall b. Ptr b -> Int -> BufferUsageFlagBits -> 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 BufferUsageFlagBits -> BufferUsageFlagBits -> IO ()
$cpoke :: Ptr BufferUsageFlagBits -> BufferUsageFlagBits -> IO ()
peek :: Ptr BufferUsageFlagBits -> IO BufferUsageFlagBits
$cpeek :: Ptr BufferUsageFlagBits -> IO BufferUsageFlagBits
pokeByteOff :: Ptr b -> Int -> BufferUsageFlagBits -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> BufferUsageFlagBits -> IO ()
peekByteOff :: Ptr b -> Int -> IO BufferUsageFlagBits
$cpeekByteOff :: forall b. Ptr b -> Int -> IO BufferUsageFlagBits
pokeElemOff :: Ptr BufferUsageFlagBits -> Int -> BufferUsageFlagBits -> IO ()
$cpokeElemOff :: Ptr BufferUsageFlagBits -> Int -> BufferUsageFlagBits -> IO ()
peekElemOff :: Ptr BufferUsageFlagBits -> Int -> IO BufferUsageFlagBits
$cpeekElemOff :: Ptr BufferUsageFlagBits -> Int -> IO BufferUsageFlagBits
alignment :: BufferUsageFlagBits -> Int
$calignment :: BufferUsageFlagBits -> Int
sizeOf :: BufferUsageFlagBits -> Int
$csizeOf :: BufferUsageFlagBits -> Int
Storable, BufferUsageFlagBits
BufferUsageFlagBits -> Zero BufferUsageFlagBits
forall a. a -> Zero a
zero :: BufferUsageFlagBits
$czero :: BufferUsageFlagBits
Zero, Eq BufferUsageFlagBits
BufferUsageFlagBits
Eq BufferUsageFlagBits =>
(BufferUsageFlagBits -> BufferUsageFlagBits -> BufferUsageFlagBits)
-> (BufferUsageFlagBits
    -> BufferUsageFlagBits -> BufferUsageFlagBits)
-> (BufferUsageFlagBits
    -> BufferUsageFlagBits -> BufferUsageFlagBits)
-> (BufferUsageFlagBits -> BufferUsageFlagBits)
-> (BufferUsageFlagBits -> Int -> BufferUsageFlagBits)
-> (BufferUsageFlagBits -> Int -> BufferUsageFlagBits)
-> BufferUsageFlagBits
-> (Int -> BufferUsageFlagBits)
-> (BufferUsageFlagBits -> Int -> BufferUsageFlagBits)
-> (BufferUsageFlagBits -> Int -> BufferUsageFlagBits)
-> (BufferUsageFlagBits -> Int -> BufferUsageFlagBits)
-> (BufferUsageFlagBits -> Int -> Bool)
-> (BufferUsageFlagBits -> Maybe Int)
-> (BufferUsageFlagBits -> Int)
-> (BufferUsageFlagBits -> Bool)
-> (BufferUsageFlagBits -> Int -> BufferUsageFlagBits)
-> (BufferUsageFlagBits -> Int -> BufferUsageFlagBits)
-> (BufferUsageFlagBits -> Int -> BufferUsageFlagBits)
-> (BufferUsageFlagBits -> Int -> BufferUsageFlagBits)
-> (BufferUsageFlagBits -> Int -> BufferUsageFlagBits)
-> (BufferUsageFlagBits -> Int -> BufferUsageFlagBits)
-> (BufferUsageFlagBits -> Int)
-> Bits BufferUsageFlagBits
Int -> BufferUsageFlagBits
BufferUsageFlagBits -> Bool
BufferUsageFlagBits -> Int
BufferUsageFlagBits -> Maybe Int
BufferUsageFlagBits -> BufferUsageFlagBits
BufferUsageFlagBits -> Int -> Bool
BufferUsageFlagBits -> Int -> BufferUsageFlagBits
BufferUsageFlagBits -> BufferUsageFlagBits -> BufferUsageFlagBits
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
popCount :: BufferUsageFlagBits -> Int
$cpopCount :: BufferUsageFlagBits -> Int
rotateR :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
$crotateR :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
rotateL :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
$crotateL :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
unsafeShiftR :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
$cunsafeShiftR :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
shiftR :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
$cshiftR :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
unsafeShiftL :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
$cunsafeShiftL :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
shiftL :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
$cshiftL :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
isSigned :: BufferUsageFlagBits -> Bool
$cisSigned :: BufferUsageFlagBits -> Bool
bitSize :: BufferUsageFlagBits -> Int
$cbitSize :: BufferUsageFlagBits -> Int
bitSizeMaybe :: BufferUsageFlagBits -> Maybe Int
$cbitSizeMaybe :: BufferUsageFlagBits -> Maybe Int
testBit :: BufferUsageFlagBits -> Int -> Bool
$ctestBit :: BufferUsageFlagBits -> Int -> Bool
complementBit :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
$ccomplementBit :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
clearBit :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
$cclearBit :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
setBit :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
$csetBit :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
bit :: Int -> BufferUsageFlagBits
$cbit :: Int -> BufferUsageFlagBits
zeroBits :: BufferUsageFlagBits
$czeroBits :: BufferUsageFlagBits
rotate :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
$crotate :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
shift :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
$cshift :: BufferUsageFlagBits -> Int -> BufferUsageFlagBits
complement :: BufferUsageFlagBits -> BufferUsageFlagBits
$ccomplement :: BufferUsageFlagBits -> BufferUsageFlagBits
xor :: BufferUsageFlagBits -> BufferUsageFlagBits -> BufferUsageFlagBits
$cxor :: BufferUsageFlagBits -> BufferUsageFlagBits -> BufferUsageFlagBits
.|. :: BufferUsageFlagBits -> BufferUsageFlagBits -> BufferUsageFlagBits
$c.|. :: BufferUsageFlagBits -> BufferUsageFlagBits -> BufferUsageFlagBits
.&. :: BufferUsageFlagBits -> BufferUsageFlagBits -> BufferUsageFlagBits
$c.&. :: BufferUsageFlagBits -> BufferUsageFlagBits -> BufferUsageFlagBits
$cp1Bits :: Eq BufferUsageFlagBits
Bits, Bits BufferUsageFlagBits
Bits BufferUsageFlagBits =>
(BufferUsageFlagBits -> Int)
-> (BufferUsageFlagBits -> Int)
-> (BufferUsageFlagBits -> Int)
-> FiniteBits BufferUsageFlagBits
BufferUsageFlagBits -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
countTrailingZeros :: BufferUsageFlagBits -> Int
$ccountTrailingZeros :: BufferUsageFlagBits -> Int
countLeadingZeros :: BufferUsageFlagBits -> Int
$ccountLeadingZeros :: BufferUsageFlagBits -> Int
finiteBitSize :: BufferUsageFlagBits -> Int
$cfiniteBitSize :: BufferUsageFlagBits -> Int
$cp1FiniteBits :: Bits BufferUsageFlagBits
FiniteBits)

-- | 'BUFFER_USAGE_TRANSFER_SRC_BIT' specifies that the buffer /can/ be used
-- as the source of a /transfer command/ (see the definition of
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer >).
pattern $bBUFFER_USAGE_TRANSFER_SRC_BIT :: BufferUsageFlagBits
$mBUFFER_USAGE_TRANSFER_SRC_BIT :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_TRANSFER_SRC_BIT                          = BufferUsageFlagBits 0x00000001
-- | 'BUFFER_USAGE_TRANSFER_DST_BIT' specifies that the buffer /can/ be used
-- as the destination of a transfer command.
pattern $bBUFFER_USAGE_TRANSFER_DST_BIT :: BufferUsageFlagBits
$mBUFFER_USAGE_TRANSFER_DST_BIT :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_TRANSFER_DST_BIT                          = BufferUsageFlagBits 0x00000002
-- | 'BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT' specifies that the buffer /can/
-- be used to create a 'Vulkan.Core10.Handles.BufferView' suitable for
-- occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot of type
-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'.
pattern $bBUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT :: BufferUsageFlagBits
$mBUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT                  = BufferUsageFlagBits 0x00000004
-- | 'BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT' specifies that the buffer /can/
-- be used to create a 'Vulkan.Core10.Handles.BufferView' suitable for
-- occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot of type
-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'.
pattern $bBUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT :: BufferUsageFlagBits
$mBUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT                  = BufferUsageFlagBits 0x00000008
-- | 'BUFFER_USAGE_UNIFORM_BUFFER_BIT' specifies that the buffer /can/ be
-- used in a 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' suitable
-- for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot either of
-- type 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
-- or
-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'.
pattern $bBUFFER_USAGE_UNIFORM_BUFFER_BIT :: BufferUsageFlagBits
$mBUFFER_USAGE_UNIFORM_BUFFER_BIT :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_UNIFORM_BUFFER_BIT                        = BufferUsageFlagBits 0x00000010
-- | 'BUFFER_USAGE_STORAGE_BUFFER_BIT' specifies that the buffer /can/ be
-- used in a 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' suitable
-- for occupying a 'Vulkan.Core10.Handles.DescriptorSet' slot either of
-- type 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
-- or
-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'.
pattern $bBUFFER_USAGE_STORAGE_BUFFER_BIT :: BufferUsageFlagBits
$mBUFFER_USAGE_STORAGE_BUFFER_BIT :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_STORAGE_BUFFER_BIT                        = BufferUsageFlagBits 0x00000020
-- | 'BUFFER_USAGE_INDEX_BUFFER_BIT' specifies that the buffer is suitable
-- for passing as the @buffer@ parameter to
-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.
pattern $bBUFFER_USAGE_INDEX_BUFFER_BIT :: BufferUsageFlagBits
$mBUFFER_USAGE_INDEX_BUFFER_BIT :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_INDEX_BUFFER_BIT                          = BufferUsageFlagBits 0x00000040
-- | 'BUFFER_USAGE_VERTEX_BUFFER_BIT' specifies that the buffer is suitable
-- for passing as an element of the @pBuffers@ array to
-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers'.
pattern $bBUFFER_USAGE_VERTEX_BUFFER_BIT :: BufferUsageFlagBits
$mBUFFER_USAGE_VERTEX_BUFFER_BIT :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_VERTEX_BUFFER_BIT                         = BufferUsageFlagBits 0x00000080
-- | 'BUFFER_USAGE_INDIRECT_BUFFER_BIT' specifies that the buffer is suitable
-- for passing as the @buffer@ parameter to
-- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',
-- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',
-- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',
-- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',
-- or 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect'. It is also
-- suitable for passing as the @buffer@ member of
-- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV',
-- or @sequencesCountBuffer@ or @sequencesIndexBuffer@ or
-- @preprocessedBuffer@ member of
-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV'
pattern $bBUFFER_USAGE_INDIRECT_BUFFER_BIT :: BufferUsageFlagBits
$mBUFFER_USAGE_INDIRECT_BUFFER_BIT :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_INDIRECT_BUFFER_BIT                       = BufferUsageFlagBits 0x00000100
-- | 'BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR' specifies that the buffer is
-- suitable for use as a
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-binding-table Shader Binding Table>.
pattern $bBUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR :: BufferUsageFlagBits
$mBUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR              = BufferUsageFlagBits 0x00000400
-- | 'BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR' specifies that the
-- buffer is suitable for storage space for a
-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR'.
pattern $bBUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR :: BufferUsageFlagBits
$mBUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR    = BufferUsageFlagBits 0x00100000
-- | 'BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
-- specifies that the buffer is suitable for use as a read-only input to an
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-building acceleration structure build>.
pattern $bBUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR :: BufferUsageFlagBits
$mBUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = BufferUsageFlagBits 0x00080000
-- | 'BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT' specifies that the buffer
-- is suitable for passing as the @buffer@ parameter to
-- 'Vulkan.Extensions.VK_EXT_conditional_rendering.cmdBeginConditionalRenderingEXT'.
pattern $bBUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT :: BufferUsageFlagBits
$mBUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT             = BufferUsageFlagBits 0x00000200
-- | 'BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT' specifies that
-- the buffer is suitable for using as a counter buffer with
-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT'
-- and
-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT'.
pattern $bBUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT :: BufferUsageFlagBits
$mBUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = BufferUsageFlagBits 0x00001000
-- | 'BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT' specifies that the
-- buffer is suitable for using for binding as a transform feedback buffer
-- with
-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT'.
pattern $bBUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT :: BufferUsageFlagBits
$mBUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT         = BufferUsageFlagBits 0x00000800
-- | 'BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT' specifies that the buffer /can/
-- be used to retrieve a buffer device address via
-- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
-- and use that address to access the buffer’s memory from a shader.
pattern $bBUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT :: BufferUsageFlagBits
$mBUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT :: forall r. BufferUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT                 = BufferUsageFlagBits 0x00020000

conNameBufferUsageFlagBits :: String
conNameBufferUsageFlagBits :: String
conNameBufferUsageFlagBits = "BufferUsageFlagBits"

enumPrefixBufferUsageFlagBits :: String
enumPrefixBufferUsageFlagBits :: String
enumPrefixBufferUsageFlagBits = "BUFFER_USAGE_"

showTableBufferUsageFlagBits :: [(BufferUsageFlagBits, String)]
showTableBufferUsageFlagBits :: [(BufferUsageFlagBits, String)]
showTableBufferUsageFlagBits =
  [ (BufferUsageFlagBits
BUFFER_USAGE_TRANSFER_SRC_BIT                      , "TRANSFER_SRC_BIT")
  , (BufferUsageFlagBits
BUFFER_USAGE_TRANSFER_DST_BIT                      , "TRANSFER_DST_BIT")
  , (BufferUsageFlagBits
BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT              , "UNIFORM_TEXEL_BUFFER_BIT")
  , (BufferUsageFlagBits
BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT              , "STORAGE_TEXEL_BUFFER_BIT")
  , (BufferUsageFlagBits
BUFFER_USAGE_UNIFORM_BUFFER_BIT                    , "UNIFORM_BUFFER_BIT")
  , (BufferUsageFlagBits
BUFFER_USAGE_STORAGE_BUFFER_BIT                    , "STORAGE_BUFFER_BIT")
  , (BufferUsageFlagBits
BUFFER_USAGE_INDEX_BUFFER_BIT                      , "INDEX_BUFFER_BIT")
  , (BufferUsageFlagBits
BUFFER_USAGE_VERTEX_BUFFER_BIT                     , "VERTEX_BUFFER_BIT")
  , (BufferUsageFlagBits
BUFFER_USAGE_INDIRECT_BUFFER_BIT                   , "INDIRECT_BUFFER_BIT")
  , (BufferUsageFlagBits
BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR          , "SHADER_BINDING_TABLE_BIT_KHR")
  , (BufferUsageFlagBits
BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR, "ACCELERATION_STRUCTURE_STORAGE_BIT_KHR")
  , ( BufferUsageFlagBits
BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR
    , "ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR"
    )
  , (BufferUsageFlagBits
BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT            , "CONDITIONAL_RENDERING_BIT_EXT")
  , (BufferUsageFlagBits
BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT, "TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT")
  , (BufferUsageFlagBits
BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT        , "TRANSFORM_FEEDBACK_BUFFER_BIT_EXT")
  , (BufferUsageFlagBits
BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT                , "SHADER_DEVICE_ADDRESS_BIT")
  ]

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

instance Read BufferUsageFlagBits where
  readPrec :: ReadPrec BufferUsageFlagBits
readPrec = String
-> [(BufferUsageFlagBits, String)]
-> String
-> (Flags -> BufferUsageFlagBits)
-> ReadPrec BufferUsageFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec String
enumPrefixBufferUsageFlagBits
                          [(BufferUsageFlagBits, String)]
showTableBufferUsageFlagBits
                          String
conNameBufferUsageFlagBits
                          Flags -> BufferUsageFlagBits
BufferUsageFlagBits