{-# language CPP #-}
-- No documentation found for Chapter "ImageUsageFlagBits"
module Vulkan.Core10.Enums.ImageUsageFlagBits  ( ImageUsageFlags
                                               , ImageUsageFlagBits( IMAGE_USAGE_TRANSFER_SRC_BIT
                                                                   , IMAGE_USAGE_TRANSFER_DST_BIT
                                                                   , IMAGE_USAGE_SAMPLED_BIT
                                                                   , IMAGE_USAGE_STORAGE_BIT
                                                                   , IMAGE_USAGE_COLOR_ATTACHMENT_BIT
                                                                   , IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
                                                                   , IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
                                                                   , IMAGE_USAGE_INPUT_ATTACHMENT_BIT
                                                                   , IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
                                                                   , IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
                                                                   , ..
                                                                   )
                                               ) 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 ImageUsageFlags = ImageUsageFlagBits

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

-- | 'IMAGE_USAGE_TRANSFER_SRC_BIT' specifies that the image /can/ be used as
-- the source of a transfer command.
pattern $bIMAGE_USAGE_TRANSFER_SRC_BIT :: ImageUsageFlagBits
$mIMAGE_USAGE_TRANSFER_SRC_BIT :: forall r. ImageUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
IMAGE_USAGE_TRANSFER_SRC_BIT             = ImageUsageFlagBits 0x00000001
-- | 'IMAGE_USAGE_TRANSFER_DST_BIT' specifies that the image /can/ be used as
-- the destination of a transfer command.
pattern $bIMAGE_USAGE_TRANSFER_DST_BIT :: ImageUsageFlagBits
$mIMAGE_USAGE_TRANSFER_DST_BIT :: forall r. ImageUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
IMAGE_USAGE_TRANSFER_DST_BIT             = ImageUsageFlagBits 0x00000002
-- | 'IMAGE_USAGE_SAMPLED_BIT' specifies that the image /can/ be used to
-- create a 'Vulkan.Core10.Handles.ImageView' suitable for occupying a
-- 'Vulkan.Core10.Handles.DescriptorSet' slot either of type
-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE' or
-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
-- and be sampled by a shader.
pattern $bIMAGE_USAGE_SAMPLED_BIT :: ImageUsageFlagBits
$mIMAGE_USAGE_SAMPLED_BIT :: forall r. ImageUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
IMAGE_USAGE_SAMPLED_BIT                  = ImageUsageFlagBits 0x00000004
-- | 'IMAGE_USAGE_STORAGE_BIT' specifies that the image /can/ be used to
-- create a 'Vulkan.Core10.Handles.ImageView' suitable for occupying a
-- 'Vulkan.Core10.Handles.DescriptorSet' slot of type
-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'.
pattern $bIMAGE_USAGE_STORAGE_BIT :: ImageUsageFlagBits
$mIMAGE_USAGE_STORAGE_BIT :: forall r. ImageUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
IMAGE_USAGE_STORAGE_BIT                  = ImageUsageFlagBits 0x00000008
-- | 'IMAGE_USAGE_COLOR_ATTACHMENT_BIT' specifies that the image /can/ be
-- used to create a 'Vulkan.Core10.Handles.ImageView' suitable for use as a
-- color or resolve attachment in a 'Vulkan.Core10.Handles.Framebuffer'.
pattern $bIMAGE_USAGE_COLOR_ATTACHMENT_BIT :: ImageUsageFlagBits
$mIMAGE_USAGE_COLOR_ATTACHMENT_BIT :: forall r. ImageUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
IMAGE_USAGE_COLOR_ATTACHMENT_BIT         = ImageUsageFlagBits 0x00000010
-- | 'IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' specifies that the image
-- /can/ be used to create a 'Vulkan.Core10.Handles.ImageView' suitable for
-- use as a depth\/stencil or depth\/stencil resolve attachment in a
-- 'Vulkan.Core10.Handles.Framebuffer'.
pattern $bIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT :: ImageUsageFlagBits
$mIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT :: forall r. ImageUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000020
-- | 'IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT' specifies that the memory bound
-- to this image will have been allocated with the
-- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT'
-- (see
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory>
-- for more detail). This bit /can/ be set for any image that /can/ be used
-- to create a 'Vulkan.Core10.Handles.ImageView' suitable for use as a
-- color, resolve, depth\/stencil, or input attachment.
pattern $bIMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT :: ImageUsageFlagBits
$mIMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT :: forall r. ImageUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT     = ImageUsageFlagBits 0x00000040
-- | 'IMAGE_USAGE_INPUT_ATTACHMENT_BIT' specifies that the image /can/ be
-- used to create a 'Vulkan.Core10.Handles.ImageView' suitable for
-- occupying 'Vulkan.Core10.Handles.DescriptorSet' slot of type
-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT';
-- be read from a shader as an input attachment; and be used as an input
-- attachment in a framebuffer.
pattern $bIMAGE_USAGE_INPUT_ATTACHMENT_BIT :: ImageUsageFlagBits
$mIMAGE_USAGE_INPUT_ATTACHMENT_BIT :: forall r. ImageUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
IMAGE_USAGE_INPUT_ATTACHMENT_BIT         = ImageUsageFlagBits 0x00000080
-- | 'IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that the image
-- /can/ be used to create a 'Vulkan.Core10.Handles.ImageView' suitable for
-- use as a
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops fragment density map image>.
pattern $bIMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT :: ImageUsageFlagBits
$mIMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT :: forall r. ImageUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = ImageUsageFlagBits 0x00000200
-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV"
pattern $bIMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV :: ImageUsageFlagBits
$mIMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV :: forall r. ImageUsageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV    = ImageUsageFlagBits 0x00000100

conNameImageUsageFlagBits :: String
conNameImageUsageFlagBits :: String
conNameImageUsageFlagBits = "ImageUsageFlagBits"

enumPrefixImageUsageFlagBits :: String
enumPrefixImageUsageFlagBits :: String
enumPrefixImageUsageFlagBits = "IMAGE_USAGE_"

showTableImageUsageFlagBits :: [(ImageUsageFlagBits, String)]
showTableImageUsageFlagBits :: [(ImageUsageFlagBits, String)]
showTableImageUsageFlagBits =
  [ (ImageUsageFlagBits
IMAGE_USAGE_TRANSFER_SRC_BIT            , "TRANSFER_SRC_BIT")
  , (ImageUsageFlagBits
IMAGE_USAGE_TRANSFER_DST_BIT            , "TRANSFER_DST_BIT")
  , (ImageUsageFlagBits
IMAGE_USAGE_SAMPLED_BIT                 , "SAMPLED_BIT")
  , (ImageUsageFlagBits
IMAGE_USAGE_STORAGE_BIT                 , "STORAGE_BIT")
  , (ImageUsageFlagBits
IMAGE_USAGE_COLOR_ATTACHMENT_BIT        , "COLOR_ATTACHMENT_BIT")
  , (ImageUsageFlagBits
IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, "DEPTH_STENCIL_ATTACHMENT_BIT")
  , (ImageUsageFlagBits
IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT    , "TRANSIENT_ATTACHMENT_BIT")
  , (ImageUsageFlagBits
IMAGE_USAGE_INPUT_ATTACHMENT_BIT        , "INPUT_ATTACHMENT_BIT")
  , (ImageUsageFlagBits
IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT, "FRAGMENT_DENSITY_MAP_BIT_EXT")
  , (ImageUsageFlagBits
IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV   , "SHADING_RATE_IMAGE_BIT_NV")
  ]

instance Show ImageUsageFlagBits where
  showsPrec :: Int -> ImageUsageFlagBits -> ShowS
showsPrec = String
-> [(ImageUsageFlagBits, String)]
-> String
-> (ImageUsageFlagBits -> Flags)
-> (Flags -> ShowS)
-> Int
-> ImageUsageFlagBits
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec String
enumPrefixImageUsageFlagBits
                            [(ImageUsageFlagBits, String)]
showTableImageUsageFlagBits
                            String
conNameImageUsageFlagBits
                            (\(ImageUsageFlagBits 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 ImageUsageFlagBits where
  readPrec :: ReadPrec ImageUsageFlagBits
readPrec =
    String
-> [(ImageUsageFlagBits, String)]
-> String
-> (Flags -> ImageUsageFlagBits)
-> ReadPrec ImageUsageFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec String
enumPrefixImageUsageFlagBits [(ImageUsageFlagBits, String)]
showTableImageUsageFlagBits String
conNameImageUsageFlagBits Flags -> ImageUsageFlagBits
ImageUsageFlagBits