{-# language CPP #-}
-- No documentation found for Chapter "ImageCreateFlagBits"
module Vulkan.Core10.Enums.ImageCreateFlagBits  ( ImageCreateFlags
                                                , ImageCreateFlagBits( IMAGE_CREATE_SPARSE_BINDING_BIT
                                                                     , IMAGE_CREATE_SPARSE_RESIDENCY_BIT
                                                                     , IMAGE_CREATE_SPARSE_ALIASED_BIT
                                                                     , IMAGE_CREATE_MUTABLE_FORMAT_BIT
                                                                     , IMAGE_CREATE_CUBE_COMPATIBLE_BIT
                                                                     , IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM
                                                                     , IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT
                                                                     , IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT
                                                                     , IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
                                                                     , IMAGE_CREATE_SUBSAMPLED_BIT_EXT
                                                                     , IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
                                                                     , IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
                                                                     , IMAGE_CREATE_DISJOINT_BIT
                                                                     , IMAGE_CREATE_PROTECTED_BIT
                                                                     , IMAGE_CREATE_EXTENDED_USAGE_BIT
                                                                     , IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
                                                                     , IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
                                                                     , IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
                                                                     , IMAGE_CREATE_ALIAS_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 ImageCreateFlags = ImageCreateFlagBits

-- | VkImageCreateFlagBits - Bitmask specifying additional parameters of an
-- image
--
-- = Description
--
-- See
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>
-- and
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-physicalfeatures Sparse Physical Device Features>
-- for more details.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
-- 'ImageCreateFlags'
newtype ImageCreateFlagBits = ImageCreateFlagBits Flags
  deriving newtype (ImageCreateFlagBits -> ImageCreateFlagBits -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ImageCreateFlagBits -> ImageCreateFlagBits -> Bool
$c/= :: ImageCreateFlagBits -> ImageCreateFlagBits -> Bool
== :: ImageCreateFlagBits -> ImageCreateFlagBits -> Bool
$c== :: ImageCreateFlagBits -> ImageCreateFlagBits -> Bool
Eq, Eq ImageCreateFlagBits
ImageCreateFlagBits -> ImageCreateFlagBits -> Bool
ImageCreateFlagBits -> ImageCreateFlagBits -> Ordering
ImageCreateFlagBits -> ImageCreateFlagBits -> ImageCreateFlagBits
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 :: ImageCreateFlagBits -> ImageCreateFlagBits -> ImageCreateFlagBits
$cmin :: ImageCreateFlagBits -> ImageCreateFlagBits -> ImageCreateFlagBits
max :: ImageCreateFlagBits -> ImageCreateFlagBits -> ImageCreateFlagBits
$cmax :: ImageCreateFlagBits -> ImageCreateFlagBits -> ImageCreateFlagBits
>= :: ImageCreateFlagBits -> ImageCreateFlagBits -> Bool
$c>= :: ImageCreateFlagBits -> ImageCreateFlagBits -> Bool
> :: ImageCreateFlagBits -> ImageCreateFlagBits -> Bool
$c> :: ImageCreateFlagBits -> ImageCreateFlagBits -> Bool
<= :: ImageCreateFlagBits -> ImageCreateFlagBits -> Bool
$c<= :: ImageCreateFlagBits -> ImageCreateFlagBits -> Bool
< :: ImageCreateFlagBits -> ImageCreateFlagBits -> Bool
$c< :: ImageCreateFlagBits -> ImageCreateFlagBits -> Bool
compare :: ImageCreateFlagBits -> ImageCreateFlagBits -> Ordering
$ccompare :: ImageCreateFlagBits -> ImageCreateFlagBits -> Ordering
Ord, Ptr ImageCreateFlagBits -> IO ImageCreateFlagBits
Ptr ImageCreateFlagBits -> Int -> IO ImageCreateFlagBits
Ptr ImageCreateFlagBits -> Int -> ImageCreateFlagBits -> IO ()
Ptr ImageCreateFlagBits -> ImageCreateFlagBits -> IO ()
ImageCreateFlagBits -> Int
forall b. Ptr b -> Int -> IO ImageCreateFlagBits
forall b. Ptr b -> Int -> ImageCreateFlagBits -> 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 ImageCreateFlagBits -> ImageCreateFlagBits -> IO ()
$cpoke :: Ptr ImageCreateFlagBits -> ImageCreateFlagBits -> IO ()
peek :: Ptr ImageCreateFlagBits -> IO ImageCreateFlagBits
$cpeek :: Ptr ImageCreateFlagBits -> IO ImageCreateFlagBits
pokeByteOff :: forall b. Ptr b -> Int -> ImageCreateFlagBits -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> ImageCreateFlagBits -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO ImageCreateFlagBits
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ImageCreateFlagBits
pokeElemOff :: Ptr ImageCreateFlagBits -> Int -> ImageCreateFlagBits -> IO ()
$cpokeElemOff :: Ptr ImageCreateFlagBits -> Int -> ImageCreateFlagBits -> IO ()
peekElemOff :: Ptr ImageCreateFlagBits -> Int -> IO ImageCreateFlagBits
$cpeekElemOff :: Ptr ImageCreateFlagBits -> Int -> IO ImageCreateFlagBits
alignment :: ImageCreateFlagBits -> Int
$calignment :: ImageCreateFlagBits -> Int
sizeOf :: ImageCreateFlagBits -> Int
$csizeOf :: ImageCreateFlagBits -> Int
Storable, ImageCreateFlagBits
forall a. a -> Zero a
zero :: ImageCreateFlagBits
$czero :: ImageCreateFlagBits
Zero, Eq ImageCreateFlagBits
ImageCreateFlagBits
Int -> ImageCreateFlagBits
ImageCreateFlagBits -> Bool
ImageCreateFlagBits -> Int
ImageCreateFlagBits -> Maybe Int
ImageCreateFlagBits -> ImageCreateFlagBits
ImageCreateFlagBits -> Int -> Bool
ImageCreateFlagBits -> Int -> ImageCreateFlagBits
ImageCreateFlagBits -> ImageCreateFlagBits -> ImageCreateFlagBits
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 :: ImageCreateFlagBits -> Int
$cpopCount :: ImageCreateFlagBits -> Int
rotateR :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
$crotateR :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
rotateL :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
$crotateL :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
unsafeShiftR :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
$cunsafeShiftR :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
shiftR :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
$cshiftR :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
unsafeShiftL :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
$cunsafeShiftL :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
shiftL :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
$cshiftL :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
isSigned :: ImageCreateFlagBits -> Bool
$cisSigned :: ImageCreateFlagBits -> Bool
bitSize :: ImageCreateFlagBits -> Int
$cbitSize :: ImageCreateFlagBits -> Int
bitSizeMaybe :: ImageCreateFlagBits -> Maybe Int
$cbitSizeMaybe :: ImageCreateFlagBits -> Maybe Int
testBit :: ImageCreateFlagBits -> Int -> Bool
$ctestBit :: ImageCreateFlagBits -> Int -> Bool
complementBit :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
$ccomplementBit :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
clearBit :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
$cclearBit :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
setBit :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
$csetBit :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
bit :: Int -> ImageCreateFlagBits
$cbit :: Int -> ImageCreateFlagBits
zeroBits :: ImageCreateFlagBits
$czeroBits :: ImageCreateFlagBits
rotate :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
$crotate :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
shift :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
$cshift :: ImageCreateFlagBits -> Int -> ImageCreateFlagBits
complement :: ImageCreateFlagBits -> ImageCreateFlagBits
$ccomplement :: ImageCreateFlagBits -> ImageCreateFlagBits
xor :: ImageCreateFlagBits -> ImageCreateFlagBits -> ImageCreateFlagBits
$cxor :: ImageCreateFlagBits -> ImageCreateFlagBits -> ImageCreateFlagBits
.|. :: ImageCreateFlagBits -> ImageCreateFlagBits -> ImageCreateFlagBits
$c.|. :: ImageCreateFlagBits -> ImageCreateFlagBits -> ImageCreateFlagBits
.&. :: ImageCreateFlagBits -> ImageCreateFlagBits -> ImageCreateFlagBits
$c.&. :: ImageCreateFlagBits -> ImageCreateFlagBits -> ImageCreateFlagBits
Bits, Bits ImageCreateFlagBits
ImageCreateFlagBits -> Int
forall b.
Bits b -> (b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
countTrailingZeros :: ImageCreateFlagBits -> Int
$ccountTrailingZeros :: ImageCreateFlagBits -> Int
countLeadingZeros :: ImageCreateFlagBits -> Int
$ccountLeadingZeros :: ImageCreateFlagBits -> Int
finiteBitSize :: ImageCreateFlagBits -> Int
$cfiniteBitSize :: ImageCreateFlagBits -> Int
FiniteBits)

-- | 'IMAGE_CREATE_SPARSE_BINDING_BIT' specifies that the image will be
-- backed using sparse memory binding.
pattern $bIMAGE_CREATE_SPARSE_BINDING_BIT :: ImageCreateFlagBits
$mIMAGE_CREATE_SPARSE_BINDING_BIT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_SPARSE_BINDING_BIT = ImageCreateFlagBits 0x00000001

-- | 'IMAGE_CREATE_SPARSE_RESIDENCY_BIT' specifies that the image /can/ be
-- partially backed using sparse memory binding. Images created with this
-- flag /must/ also be created with the 'IMAGE_CREATE_SPARSE_BINDING_BIT'
-- flag.
pattern $bIMAGE_CREATE_SPARSE_RESIDENCY_BIT :: ImageCreateFlagBits
$mIMAGE_CREATE_SPARSE_RESIDENCY_BIT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_SPARSE_RESIDENCY_BIT = ImageCreateFlagBits 0x00000002

-- | 'IMAGE_CREATE_SPARSE_ALIASED_BIT' specifies that the image will be
-- backed using sparse memory binding with memory ranges that might also
-- simultaneously be backing another image (or another portion of the same
-- image). Images created with this flag /must/ also be created with the
-- 'IMAGE_CREATE_SPARSE_BINDING_BIT' flag.
pattern $bIMAGE_CREATE_SPARSE_ALIASED_BIT :: ImageCreateFlagBits
$mIMAGE_CREATE_SPARSE_ALIASED_BIT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_SPARSE_ALIASED_BIT = ImageCreateFlagBits 0x00000004

-- | 'IMAGE_CREATE_MUTABLE_FORMAT_BIT' specifies that the image /can/ be used
-- to create a 'Vulkan.Core10.Handles.ImageView' with a different format
-- from the image. For
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
-- formats, 'IMAGE_CREATE_MUTABLE_FORMAT_BIT' specifies that a
-- 'Vulkan.Core10.Handles.ImageView' can be created of a /plane/ of the
-- image.
pattern $bIMAGE_CREATE_MUTABLE_FORMAT_BIT :: ImageCreateFlagBits
$mIMAGE_CREATE_MUTABLE_FORMAT_BIT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_MUTABLE_FORMAT_BIT = ImageCreateFlagBits 0x00000008

-- | 'IMAGE_CREATE_CUBE_COMPATIBLE_BIT' specifies that the image /can/ be
-- used to create a 'Vulkan.Core10.Handles.ImageView' of type
-- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE' or
-- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'.
pattern $bIMAGE_CREATE_CUBE_COMPATIBLE_BIT :: ImageCreateFlagBits
$mIMAGE_CREATE_CUBE_COMPATIBLE_BIT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_CUBE_COMPATIBLE_BIT = ImageCreateFlagBits 0x00000010

-- | 'IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM' specifies that an
-- image /can/ be used in a render pass with non-zero
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapoffsets fragment density map offsets>.
-- In a render pass with non-zero offsets, fragment density map
-- attachments, input attachments, color attachments, depth\/stencil
-- attachment, resolve attachments, and preserve attachments /must/ be
-- created with 'IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM'.
pattern $bIMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM :: ImageCreateFlagBits
$mIMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = ImageCreateFlagBits 0x00008000

-- | 'IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT' specifies that the image /can/
-- be used to create a 'Vulkan.Core10.Handles.ImageView' of type
-- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'.
pattern $bIMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT :: ImageCreateFlagBits
$mIMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = ImageCreateFlagBits 0x00020000

-- | 'IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT' specifies
-- that an image /can/ be used with
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#multisampled-render-to-single-sampled multisampled rendering as a single-sampled framebuffer attachment>
pattern $bIMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT :: ImageCreateFlagBits
$mIMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = ImageCreateFlagBits 0x00040000

-- | 'IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT' specifies that
-- the image /can/ be used with descriptor buffers when capturing and
-- replaying (e.g. for trace capture and replay), see
-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
-- for more detail.
pattern $bIMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT :: ImageCreateFlagBits
$mIMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = ImageCreateFlagBits 0x00010000

-- | 'IMAGE_CREATE_SUBSAMPLED_BIT_EXT' specifies that an image /can/ be in a
-- subsampled format which /may/ be more optimal when written as an
-- attachment by a render pass that has a fragment density map attachment.
-- Accessing a subsampled image has additional considerations:
--
-- -   Image data read as an image sampler will have undefined values if
--     the sampler was not created with @flags@ containing
--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT'
--     or was not sampled through the use of a combined image sampler with
--     an immutable sampler in
--     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'.
--
-- -   Image data read with an input attachment will have undefined values
--     if the contents were not written as an attachment in an earlier
--     subpass of the same render pass.
--
-- -   Image data read as an image sampler in the fragment shader will be
--     additionally be read by the device during
--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT'
--     if
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subsampledCoarseReconstructionEarlyAccess ::subsampledCoarseReconstructionEarlyAccess>
--     is 'Vulkan.Core10.FundamentalTypes.TRUE' and the sampler was created
--     with @flags@ containing
--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT'.
--
-- -   Image data read with load operations are resampled to the fragment
--     density of the render pass if
--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subsampledLoads ::subsampledLoads>
--     is 'Vulkan.Core10.FundamentalTypes.TRUE'. Otherwise, values of image
--     data are undefined.
--
-- -   Image contents outside of the render area take on undefined values
--     if the image is stored as a render pass attachment.
pattern $bIMAGE_CREATE_SUBSAMPLED_BIT_EXT :: ImageCreateFlagBits
$mIMAGE_CREATE_SUBSAMPLED_BIT_EXT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_SUBSAMPLED_BIT_EXT = ImageCreateFlagBits 0x00004000

-- | 'IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' specifies that
-- an image with a depth or depth\/stencil format /can/ be used with custom
-- sample locations when used as a depth\/stencil attachment.
pattern $bIMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT :: ImageCreateFlagBits
$mIMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = ImageCreateFlagBits 0x00001000

-- | 'IMAGE_CREATE_CORNER_SAMPLED_BIT_NV' specifies that the image is a
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-images-corner-sampled corner-sampled image>.
pattern $bIMAGE_CREATE_CORNER_SAMPLED_BIT_NV :: ImageCreateFlagBits
$mIMAGE_CREATE_CORNER_SAMPLED_BIT_NV :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = ImageCreateFlagBits 0x00002000

-- | 'IMAGE_CREATE_DISJOINT_BIT' specifies that an image with a
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
-- /must/ have each plane separately bound to memory, rather than having a
-- single memory binding for the whole image; the presence of this bit
-- distinguishes a /disjoint image/ from an image without this bit set.
pattern $bIMAGE_CREATE_DISJOINT_BIT :: ImageCreateFlagBits
$mIMAGE_CREATE_DISJOINT_BIT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_DISJOINT_BIT = ImageCreateFlagBits 0x00000200

-- | 'IMAGE_CREATE_PROTECTED_BIT' specifies that the image is a protected
-- image.
pattern $bIMAGE_CREATE_PROTECTED_BIT :: ImageCreateFlagBits
$mIMAGE_CREATE_PROTECTED_BIT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_PROTECTED_BIT = ImageCreateFlagBits 0x00000800

-- | 'IMAGE_CREATE_EXTENDED_USAGE_BIT' specifies that the image /can/ be
-- created with usage flags that are not supported for the format the image
-- is created with but are supported for at least one format a
-- 'Vulkan.Core10.Handles.ImageView' created from the image /can/ have.
pattern $bIMAGE_CREATE_EXTENDED_USAGE_BIT :: ImageCreateFlagBits
$mIMAGE_CREATE_EXTENDED_USAGE_BIT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_EXTENDED_USAGE_BIT = ImageCreateFlagBits 0x00000100

-- | 'IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT' specifies that the image
-- having a compressed format /can/ be used to create a
-- 'Vulkan.Core10.Handles.ImageView' with an uncompressed format where each
-- texel in the image view corresponds to a compressed texel block of the
-- image.
pattern $bIMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT :: ImageCreateFlagBits
$mIMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = ImageCreateFlagBits 0x00000080

-- | 'IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT' specifies that the image /can/ be
-- used to create a 'Vulkan.Core10.Handles.ImageView' of type
-- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or
-- 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'.
pattern $bIMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT :: ImageCreateFlagBits
$mIMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = ImageCreateFlagBits 0x00000020

-- | 'IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT' specifies that the image
-- /can/ be used with a non-zero value of the
-- @splitInstanceBindRegionCount@ member of a
-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo'
-- structure passed into
-- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindImageMemory2'. This
-- flag also has the effect of making the image use the standard sparse
-- image block dimensions.
pattern $bIMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT :: ImageCreateFlagBits
$mIMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = ImageCreateFlagBits 0x00000040

-- | 'IMAGE_CREATE_ALIAS_BIT' specifies that two images created with the same
-- creation parameters and aliased to the same memory /can/ interpret the
-- contents of the memory consistently with each other, subject to the
-- rules described in the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
-- section. This flag further specifies that each plane of a /disjoint/
-- image /can/ share an in-memory non-linear representation with
-- single-plane images, and that a single-plane image /can/ share an
-- in-memory non-linear representation with a plane of a multi-planar
-- disjoint image, according to the rules in
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatible-planes>.
-- If the @pNext@ chain includes a
-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'
-- or
-- 'Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV'
-- structure whose @handleTypes@ member is not @0@, it is as if
-- 'IMAGE_CREATE_ALIAS_BIT' is set.
pattern $bIMAGE_CREATE_ALIAS_BIT :: ImageCreateFlagBits
$mIMAGE_CREATE_ALIAS_BIT :: forall {r}.
ImageCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
IMAGE_CREATE_ALIAS_BIT = ImageCreateFlagBits 0x00000400

conNameImageCreateFlagBits :: String
conNameImageCreateFlagBits :: String
conNameImageCreateFlagBits = String
"ImageCreateFlagBits"

enumPrefixImageCreateFlagBits :: String
enumPrefixImageCreateFlagBits :: String
enumPrefixImageCreateFlagBits = String
"IMAGE_CREATE_"

showTableImageCreateFlagBits :: [(ImageCreateFlagBits, String)]
showTableImageCreateFlagBits :: [(ImageCreateFlagBits, String)]
showTableImageCreateFlagBits =
  [
    ( ImageCreateFlagBits
IMAGE_CREATE_SPARSE_BINDING_BIT
    , String
"SPARSE_BINDING_BIT"
    )
  ,
    ( ImageCreateFlagBits
IMAGE_CREATE_SPARSE_RESIDENCY_BIT
    , String
"SPARSE_RESIDENCY_BIT"
    )
  ,
    ( ImageCreateFlagBits
IMAGE_CREATE_SPARSE_ALIASED_BIT
    , String
"SPARSE_ALIASED_BIT"
    )
  ,
    ( ImageCreateFlagBits
IMAGE_CREATE_MUTABLE_FORMAT_BIT
    , String
"MUTABLE_FORMAT_BIT"
    )
  ,
    ( ImageCreateFlagBits
IMAGE_CREATE_CUBE_COMPATIBLE_BIT
    , String
"CUBE_COMPATIBLE_BIT"
    )
  ,
    ( ImageCreateFlagBits
IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM
    , String
"FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM"
    )
  ,
    ( ImageCreateFlagBits
IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT
    , String
"2D_VIEW_COMPATIBLE_BIT_EXT"
    )
  ,
    ( ImageCreateFlagBits
IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT
    , String
"MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT"
    )
  ,
    ( ImageCreateFlagBits
IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
    , String
"DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"
    )
  ,
    ( ImageCreateFlagBits
IMAGE_CREATE_SUBSAMPLED_BIT_EXT
    , String
"SUBSAMPLED_BIT_EXT"
    )
  ,
    ( ImageCreateFlagBits
IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
    , String
"SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"
    )
  ,
    ( ImageCreateFlagBits
IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
    , String
"CORNER_SAMPLED_BIT_NV"
    )
  , (ImageCreateFlagBits
IMAGE_CREATE_DISJOINT_BIT, String
"DISJOINT_BIT")
  , (ImageCreateFlagBits
IMAGE_CREATE_PROTECTED_BIT, String
"PROTECTED_BIT")
  ,
    ( ImageCreateFlagBits
IMAGE_CREATE_EXTENDED_USAGE_BIT
    , String
"EXTENDED_USAGE_BIT"
    )
  ,
    ( ImageCreateFlagBits
IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
    , String
"BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"
    )
  ,
    ( ImageCreateFlagBits
IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
    , String
"2D_ARRAY_COMPATIBLE_BIT"
    )
  ,
    ( ImageCreateFlagBits
IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
    , String
"SPLIT_INSTANCE_BIND_REGIONS_BIT"
    )
  , (ImageCreateFlagBits
IMAGE_CREATE_ALIAS_BIT, String
"ALIAS_BIT")
  ]

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

instance Read ImageCreateFlagBits where
  readPrec :: ReadPrec ImageCreateFlagBits
readPrec =
    forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixImageCreateFlagBits
      [(ImageCreateFlagBits, String)]
showTableImageCreateFlagBits
      String
conNameImageCreateFlagBits
      Flags -> ImageCreateFlagBits
ImageCreateFlagBits