{-# 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_TILE_MEMORY_BIT_QCOM
                                                                   , IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM
                                                                   , IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM
                                                                   , IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM
                                                                   , IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI
                                                                   , IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
                                                                   , IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
                                                                   , IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
                                                                   , IMAGE_USAGE_HOST_TRANSFER_BIT
                                                                   , ..
                                                                   )
                                               ) 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 ImageUsageFlags = ImageUsageFlagBits

-- | VkImageUsageFlagBits - Bitmask specifying intended usage of an image
--
-- = Description
--
-- -   'IMAGE_USAGE_TRANSFER_SRC_BIT' specifies that the image /can/ be
--     used as the source of a transfer command.
--
-- -   'IMAGE_USAGE_TRANSFER_DST_BIT' specifies that the image /can/ be
--     used as the destination of a transfer command.
--
-- -   '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.
--
-- -   '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'.
--
-- -   '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'.
--
-- -   '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'.
--
-- -   'IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT' specifies that
--     implementations /may/ support using
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory memory allocations>
--     with the
--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT'
--     to back an image with this usage. 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.
--
-- -   '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.
--
-- -   '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://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragmentdensitymapops fragment density map image>.
--
-- -   'IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies
--     that the image /can/ be used to create a
--     'Vulkan.Core10.Handles.ImageView' suitable for use as a
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
--     or
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-shading-rate-image shading rate image>
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR>
--     specifies that the image /can/ be used as a
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#decode-output-picture decode output picture>
--     in a
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-decode-operations video decode operation>.
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR>
--     is reserved for future use.
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR>
--     specifies that the image /can/ be used as an output
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reconstructed-picture reconstructed picture>
--     or an input
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reference-picture reference picture>
--     in a
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-decode-operations video decode operation>.
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR>
--     is reserved for future use.
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR>
--     specifies that the image /can/ be used as an
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#encode-input-picture encode input picture>
--     in a
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operation>.
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR>
--     specifies that the image /can/ be used as an output
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reconstructed-picture reconstructed picture>
--     or an input
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#reference-picture reference picture>
--     in a
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operation>.
--
-- -   'IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT' specifies that the
--     image /can/ be used as a color or depth\/stencil attachment with
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-feedbackloop feedback loop enabled>.
--
-- -   'IMAGE_USAGE_TILE_MEMORY_BIT_QCOM' specifies that the image /can/ be
--     bound to 'Vulkan.Core10.Handles.DeviceMemory' allocated from a
--     'Vulkan.Core10.DeviceInitialization.MemoryHeap' with the
--     'Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_TILE_MEMORY_BIT_QCOM'
--     property.
--
-- -   'IMAGE_USAGE_HOST_TRANSFER_BIT' specifies that the image /can/ be
--     used with host copy commands and host layout transitions.
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>
--     specifies that the image /can/ be used as a
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#encode-quantization-delta-map quantization delta map>
--     in a
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operation>.
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>
--     specifies that the image /can/ be used as an
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#encode-emphasis-map emphasis map>
--     in a
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operation>.
--
-- -   'Vulkan.Extensions.VK_EXT_host_image_copy.IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
--     specifies that the image /can/ be used with host copy commands and
--     host layout transitions.
--
-- -   'IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM' specifies that the image /can/
--     be transitioned to the
--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TENSOR_ALIASING_ARM'
--     layout. See
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-memory-aliasing>
--     for a complete set of rules for tensor\/image aliasing.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
-- '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
$c== :: ImageUsageFlagBits -> ImageUsageFlagBits -> Bool
== :: ImageUsageFlagBits -> ImageUsageFlagBits -> Bool
$c/= :: ImageUsageFlagBits -> ImageUsageFlagBits -> Bool
/= :: 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
$ccompare :: ImageUsageFlagBits -> ImageUsageFlagBits -> Ordering
compare :: ImageUsageFlagBits -> ImageUsageFlagBits -> Ordering
$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
>= :: ImageUsageFlagBits -> ImageUsageFlagBits -> Bool
$cmax :: ImageUsageFlagBits -> ImageUsageFlagBits -> ImageUsageFlagBits
max :: ImageUsageFlagBits -> ImageUsageFlagBits -> ImageUsageFlagBits
$cmin :: ImageUsageFlagBits -> ImageUsageFlagBits -> ImageUsageFlagBits
min :: ImageUsageFlagBits -> ImageUsageFlagBits -> ImageUsageFlagBits
Ord, 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
$csizeOf :: ImageUsageFlagBits -> Int
sizeOf :: ImageUsageFlagBits -> Int
$calignment :: ImageUsageFlagBits -> Int
alignment :: ImageUsageFlagBits -> Int
$cpeekElemOff :: Ptr ImageUsageFlagBits -> Int -> IO ImageUsageFlagBits
peekElemOff :: Ptr ImageUsageFlagBits -> Int -> IO ImageUsageFlagBits
$cpokeElemOff :: Ptr ImageUsageFlagBits -> Int -> ImageUsageFlagBits -> IO ()
pokeElemOff :: Ptr ImageUsageFlagBits -> Int -> ImageUsageFlagBits -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ImageUsageFlagBits
peekByteOff :: forall b. Ptr b -> Int -> IO ImageUsageFlagBits
$cpokeByteOff :: forall b. Ptr b -> Int -> ImageUsageFlagBits -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> ImageUsageFlagBits -> IO ()
$cpeek :: Ptr ImageUsageFlagBits -> IO ImageUsageFlagBits
peek :: Ptr ImageUsageFlagBits -> IO ImageUsageFlagBits
$cpoke :: Ptr ImageUsageFlagBits -> ImageUsageFlagBits -> IO ()
poke :: Ptr ImageUsageFlagBits -> ImageUsageFlagBits -> IO ()
Storable, ImageUsageFlagBits
ImageUsageFlagBits -> Zero ImageUsageFlagBits
forall a. a -> Zero a
$czero :: ImageUsageFlagBits
zero :: 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
$c.&. :: ImageUsageFlagBits -> ImageUsageFlagBits -> ImageUsageFlagBits
.&. :: ImageUsageFlagBits -> ImageUsageFlagBits -> ImageUsageFlagBits
$c.|. :: ImageUsageFlagBits -> ImageUsageFlagBits -> ImageUsageFlagBits
.|. :: ImageUsageFlagBits -> ImageUsageFlagBits -> ImageUsageFlagBits
$cxor :: ImageUsageFlagBits -> ImageUsageFlagBits -> ImageUsageFlagBits
xor :: ImageUsageFlagBits -> ImageUsageFlagBits -> ImageUsageFlagBits
$ccomplement :: ImageUsageFlagBits -> ImageUsageFlagBits
complement :: ImageUsageFlagBits -> ImageUsageFlagBits
$cshift :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
shift :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
$crotate :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
rotate :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
$czeroBits :: ImageUsageFlagBits
zeroBits :: ImageUsageFlagBits
$cbit :: Int -> ImageUsageFlagBits
bit :: Int -> ImageUsageFlagBits
$csetBit :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
setBit :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
$cclearBit :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
clearBit :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
$ccomplementBit :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
complementBit :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
$ctestBit :: ImageUsageFlagBits -> Int -> Bool
testBit :: ImageUsageFlagBits -> Int -> Bool
$cbitSizeMaybe :: ImageUsageFlagBits -> Maybe Int
bitSizeMaybe :: ImageUsageFlagBits -> Maybe Int
$cbitSize :: ImageUsageFlagBits -> Int
bitSize :: ImageUsageFlagBits -> Int
$cisSigned :: ImageUsageFlagBits -> Bool
isSigned :: ImageUsageFlagBits -> Bool
$cshiftL :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
shiftL :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
$cunsafeShiftL :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
unsafeShiftL :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
$cshiftR :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
shiftR :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
$cunsafeShiftR :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
unsafeShiftR :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
$crotateL :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
rotateL :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
$crotateR :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
rotateR :: ImageUsageFlagBits -> Int -> ImageUsageFlagBits
$cpopCount :: ImageUsageFlagBits -> Int
popCount :: ImageUsageFlagBits -> Int
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
$cfiniteBitSize :: ImageUsageFlagBits -> Int
finiteBitSize :: ImageUsageFlagBits -> Int
$ccountLeadingZeros :: ImageUsageFlagBits -> Int
countLeadingZeros :: ImageUsageFlagBits -> Int
$ccountTrailingZeros :: ImageUsageFlagBits -> Int
countTrailingZeros :: ImageUsageFlagBits -> Int
FiniteBits)

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"
pattern $mIMAGE_USAGE_TRANSFER_SRC_BIT :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_TRANSFER_SRC_BIT :: ImageUsageFlagBits
IMAGE_USAGE_TRANSFER_SRC_BIT = ImageUsageFlagBits 0x00000001

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_TRANSFER_DST_BIT"
pattern $mIMAGE_USAGE_TRANSFER_DST_BIT :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_TRANSFER_DST_BIT :: ImageUsageFlagBits
IMAGE_USAGE_TRANSFER_DST_BIT = ImageUsageFlagBits 0x00000002

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_SAMPLED_BIT"
pattern $mIMAGE_USAGE_SAMPLED_BIT :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_SAMPLED_BIT :: ImageUsageFlagBits
IMAGE_USAGE_SAMPLED_BIT = ImageUsageFlagBits 0x00000004

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_STORAGE_BIT"
pattern $mIMAGE_USAGE_STORAGE_BIT :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_STORAGE_BIT :: ImageUsageFlagBits
IMAGE_USAGE_STORAGE_BIT = ImageUsageFlagBits 0x00000008

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"
pattern $mIMAGE_USAGE_COLOR_ATTACHMENT_BIT :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_COLOR_ATTACHMENT_BIT :: ImageUsageFlagBits
IMAGE_USAGE_COLOR_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000010

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"
pattern $mIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT :: ImageUsageFlagBits
IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000020

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"
pattern $mIMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT :: ImageUsageFlagBits
IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000040

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"
pattern $mIMAGE_USAGE_INPUT_ATTACHMENT_BIT :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_INPUT_ATTACHMENT_BIT :: ImageUsageFlagBits
IMAGE_USAGE_INPUT_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000080

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM"
pattern $mIMAGE_USAGE_TILE_MEMORY_BIT_QCOM :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_TILE_MEMORY_BIT_QCOM :: ImageUsageFlagBits
IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = ImageUsageFlagBits 0x08000000

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM"
pattern $mIMAGE_USAGE_TENSOR_ALIASING_BIT_ARM :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_TENSOR_ALIASING_BIT_ARM :: ImageUsageFlagBits
IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = ImageUsageFlagBits 0x00800000

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM"
pattern $mIMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM :: ImageUsageFlagBits
IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = ImageUsageFlagBits 0x00200000

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM"
pattern $mIMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM :: ImageUsageFlagBits
IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = ImageUsageFlagBits 0x00100000

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI"
pattern $mIMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI :: ImageUsageFlagBits
IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = ImageUsageFlagBits 0x00040000

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
pattern $mIMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT :: ImageUsageFlagBits
IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = ImageUsageFlagBits 0x00080000

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
pattern $mIMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR :: ImageUsageFlagBits
IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = ImageUsageFlagBits 0x00000100

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT"
pattern $mIMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT :: ImageUsageFlagBits
IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = ImageUsageFlagBits 0x00000200

-- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_HOST_TRANSFER_BIT"
pattern $mIMAGE_USAGE_HOST_TRANSFER_BIT :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_HOST_TRANSFER_BIT :: ImageUsageFlagBits
IMAGE_USAGE_HOST_TRANSFER_BIT = ImageUsageFlagBits 0x00400000

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

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

showTableImageUsageFlagBits :: [(ImageUsageFlagBits, String)]
showTableImageUsageFlagBits :: [(ImageUsageFlagBits, String)]
showTableImageUsageFlagBits =
  [
    ( ImageUsageFlagBits
IMAGE_USAGE_TRANSFER_SRC_BIT
    , String
"TRANSFER_SRC_BIT"
    )
  ,
    ( ImageUsageFlagBits
IMAGE_USAGE_TRANSFER_DST_BIT
    , String
"TRANSFER_DST_BIT"
    )
  , (ImageUsageFlagBits
IMAGE_USAGE_SAMPLED_BIT, String
"SAMPLED_BIT")
  , (ImageUsageFlagBits
IMAGE_USAGE_STORAGE_BIT, String
"STORAGE_BIT")
  ,
    ( ImageUsageFlagBits
IMAGE_USAGE_COLOR_ATTACHMENT_BIT
    , String
"COLOR_ATTACHMENT_BIT"
    )
  ,
    ( ImageUsageFlagBits
IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
    , String
"DEPTH_STENCIL_ATTACHMENT_BIT"
    )
  ,
    ( ImageUsageFlagBits
IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
    , String
"TRANSIENT_ATTACHMENT_BIT"
    )
  ,
    ( ImageUsageFlagBits
IMAGE_USAGE_INPUT_ATTACHMENT_BIT
    , String
"INPUT_ATTACHMENT_BIT"
    )
  ,
    ( ImageUsageFlagBits
IMAGE_USAGE_TILE_MEMORY_BIT_QCOM
    , String
"TILE_MEMORY_BIT_QCOM"
    )
  ,
    ( ImageUsageFlagBits
IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM
    , String
"TENSOR_ALIASING_BIT_ARM"
    )
  ,
    ( ImageUsageFlagBits
IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM
    , String
"SAMPLE_BLOCK_MATCH_BIT_QCOM"
    )
  ,
    ( ImageUsageFlagBits
IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM
    , String
"SAMPLE_WEIGHT_BIT_QCOM"
    )
  ,
    ( ImageUsageFlagBits
IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI
    , String
"INVOCATION_MASK_BIT_HUAWEI"
    )
  ,
    ( ImageUsageFlagBits
IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
    , String
"ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"
    )
  ,
    ( ImageUsageFlagBits
IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
    , String
"FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
    )
  ,
    ( ImageUsageFlagBits
IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
    , String
"FRAGMENT_DENSITY_MAP_BIT_EXT"
    )
  ,
    ( ImageUsageFlagBits
IMAGE_USAGE_HOST_TRANSFER_BIT
    , String
"HOST_TRANSFER_BIT"
    )
  ]

instance Show ImageUsageFlagBits where
  showsPrec :: Int -> ImageUsageFlagBits -> ShowS
showsPrec =
    String
-> [(ImageUsageFlagBits, String)]
-> String
-> (ImageUsageFlagBits -> Word32)
-> (Word32 -> 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 Word32
x) -> Word32
x)
      (\Word32
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> ShowS
forall a. Integral a => a -> ShowS
showHex Word32
x)

instance Read ImageUsageFlagBits where
  readPrec :: ReadPrec ImageUsageFlagBits
readPrec =
    String
-> [(ImageUsageFlagBits, String)]
-> String
-> (Word32 -> ImageUsageFlagBits)
-> ReadPrec ImageUsageFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixImageUsageFlagBits
      [(ImageUsageFlagBits, String)]
showTableImageUsageFlagBits
      String
conNameImageUsageFlagBits
      Word32 -> ImageUsageFlagBits
ImageUsageFlagBits