{-# language CPP #-}
module Vulkan.Core10.Enums.ImageCreateFlagBits  ( 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_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
                                                                     , ..
                                                                     )
                                                , ImageCreateFlags
                                                ) where

import GHC.Read (choose)
import GHC.Read (expectP)
import GHC.Read (parens)
import GHC.Show (showParen)
import GHC.Show (showString)
import Numeric (showHex)
import Text.ParserCombinators.ReadPrec ((+++))
import Text.ParserCombinators.ReadPrec (prec)
import Text.ParserCombinators.ReadPrec (step)
import Data.Bits (Bits)
import Foreign.Storable (Storable)
import GHC.Read (Read(readPrec))
import Text.Read.Lex (Lexeme(Ident))
import Vulkan.Core10.FundamentalTypes (Flags)
import Vulkan.Zero (Zero)
-- | VkImageCreateFlagBits - Bitmask specifying additional parameters of an
-- image
--
-- = Description
--
-- See
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>
-- and
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-physicalfeatures Sparse Physical Device Features>
-- for more details.
--
-- = See Also
--
-- 'ImageCreateFlags'
newtype ImageCreateFlagBits = ImageCreateFlagBits Flags
  deriving newtype (ImageCreateFlagBits -> ImageCreateFlagBits -> Bool
(ImageCreateFlagBits -> ImageCreateFlagBits -> Bool)
-> (ImageCreateFlagBits -> ImageCreateFlagBits -> Bool)
-> Eq ImageCreateFlagBits
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
Eq ImageCreateFlagBits =>
(ImageCreateFlagBits -> ImageCreateFlagBits -> Ordering)
-> (ImageCreateFlagBits -> ImageCreateFlagBits -> Bool)
-> (ImageCreateFlagBits -> ImageCreateFlagBits -> Bool)
-> (ImageCreateFlagBits -> ImageCreateFlagBits -> Bool)
-> (ImageCreateFlagBits -> ImageCreateFlagBits -> Bool)
-> (ImageCreateFlagBits
    -> ImageCreateFlagBits -> ImageCreateFlagBits)
-> (ImageCreateFlagBits
    -> ImageCreateFlagBits -> ImageCreateFlagBits)
-> Ord 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
$cp1Ord :: Eq ImageCreateFlagBits
Ord, Ptr b -> Int -> IO ImageCreateFlagBits
Ptr b -> Int -> ImageCreateFlagBits -> IO ()
Ptr ImageCreateFlagBits -> IO ImageCreateFlagBits
Ptr ImageCreateFlagBits -> Int -> IO ImageCreateFlagBits
Ptr ImageCreateFlagBits -> Int -> ImageCreateFlagBits -> IO ()
Ptr ImageCreateFlagBits -> ImageCreateFlagBits -> IO ()
ImageCreateFlagBits -> Int
(ImageCreateFlagBits -> Int)
-> (ImageCreateFlagBits -> Int)
-> (Ptr ImageCreateFlagBits -> Int -> IO ImageCreateFlagBits)
-> (Ptr ImageCreateFlagBits -> Int -> ImageCreateFlagBits -> IO ())
-> (forall b. Ptr b -> Int -> IO ImageCreateFlagBits)
-> (forall b. Ptr b -> Int -> ImageCreateFlagBits -> IO ())
-> (Ptr ImageCreateFlagBits -> IO ImageCreateFlagBits)
-> (Ptr ImageCreateFlagBits -> ImageCreateFlagBits -> IO ())
-> Storable ImageCreateFlagBits
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 :: Ptr b -> Int -> ImageCreateFlagBits -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> ImageCreateFlagBits -> IO ()
peekByteOff :: 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
ImageCreateFlagBits -> Zero ImageCreateFlagBits
forall a. a -> Zero a
zero :: ImageCreateFlagBits
$czero :: ImageCreateFlagBits
Zero, Eq ImageCreateFlagBits
ImageCreateFlagBits
Eq ImageCreateFlagBits =>
(ImageCreateFlagBits -> ImageCreateFlagBits -> ImageCreateFlagBits)
-> (ImageCreateFlagBits
    -> ImageCreateFlagBits -> ImageCreateFlagBits)
-> (ImageCreateFlagBits
    -> ImageCreateFlagBits -> ImageCreateFlagBits)
-> (ImageCreateFlagBits -> ImageCreateFlagBits)
-> (ImageCreateFlagBits -> Int -> ImageCreateFlagBits)
-> (ImageCreateFlagBits -> Int -> ImageCreateFlagBits)
-> ImageCreateFlagBits
-> (Int -> ImageCreateFlagBits)
-> (ImageCreateFlagBits -> Int -> ImageCreateFlagBits)
-> (ImageCreateFlagBits -> Int -> ImageCreateFlagBits)
-> (ImageCreateFlagBits -> Int -> ImageCreateFlagBits)
-> (ImageCreateFlagBits -> Int -> Bool)
-> (ImageCreateFlagBits -> Maybe Int)
-> (ImageCreateFlagBits -> Int)
-> (ImageCreateFlagBits -> Bool)
-> (ImageCreateFlagBits -> Int -> ImageCreateFlagBits)
-> (ImageCreateFlagBits -> Int -> ImageCreateFlagBits)
-> (ImageCreateFlagBits -> Int -> ImageCreateFlagBits)
-> (ImageCreateFlagBits -> Int -> ImageCreateFlagBits)
-> (ImageCreateFlagBits -> Int -> ImageCreateFlagBits)
-> (ImageCreateFlagBits -> Int -> ImageCreateFlagBits)
-> (ImageCreateFlagBits -> Int)
-> Bits 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
$cp1Bits :: Eq ImageCreateFlagBits
Bits)

-- | '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 -> (Void# -> r) -> (Void# -> 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 -> (Void# -> r) -> (Void# -> 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 -> (Void# -> r) -> (Void# -> 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://www.khronos.org/registry/vulkan/specs/1.2-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 -> (Void# -> r) -> (Void# -> 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 -> (Void# -> r) -> (Void# -> r) -> r
IMAGE_CREATE_CUBE_COMPATIBLE_BIT = ImageCreateFlagBits 0x00000010
-- | '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 is undefined 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 is undefined 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://www.khronos.org/registry/vulkan/specs/1.2-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://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subsampledloads ::subsampledLoads>
--     is 'Vulkan.Core10.FundamentalTypes.TRUE', otherwise they are
--     undefined.
--
-- -   Image contents outside of the render area become undefined 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 -> (Void# -> r) -> (Void# -> 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 -> (Void# -> r) -> (Void# -> 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://www.khronos.org/registry/vulkan/specs/1.2-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 -> (Void# -> r) -> (Void# -> r) -> r
IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = ImageCreateFlagBits 0x00002000
-- | 'IMAGE_CREATE_DISJOINT_BIT' specifies that an image with a
-- <https://www.khronos.org/registry/vulkan/specs/1.2-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 -> (Void# -> r) -> (Void# -> 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 -> (Void# -> r) -> (Void# -> 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 -> (Void# -> r) -> (Void# -> 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 -> (Void# -> r) -> (Void# -> 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 -> (Void# -> r) -> (Void# -> 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 -> (Void# -> r) -> (Void# -> 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://www.khronos.org/registry/vulkan/specs/1.2-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://www.khronos.org/registry/vulkan/specs/1.2-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 -> (Void# -> r) -> (Void# -> r) -> r
IMAGE_CREATE_ALIAS_BIT = ImageCreateFlagBits 0x00000400

type ImageCreateFlags = ImageCreateFlagBits

instance Show ImageCreateFlagBits where
  showsPrec :: Int -> ImageCreateFlagBits -> ShowS
showsPrec p :: Int
p = \case
    IMAGE_CREATE_SPARSE_BINDING_BIT -> String -> ShowS
showString "IMAGE_CREATE_SPARSE_BINDING_BIT"
    IMAGE_CREATE_SPARSE_RESIDENCY_BIT -> String -> ShowS
showString "IMAGE_CREATE_SPARSE_RESIDENCY_BIT"
    IMAGE_CREATE_SPARSE_ALIASED_BIT -> String -> ShowS
showString "IMAGE_CREATE_SPARSE_ALIASED_BIT"
    IMAGE_CREATE_MUTABLE_FORMAT_BIT -> String -> ShowS
showString "IMAGE_CREATE_MUTABLE_FORMAT_BIT"
    IMAGE_CREATE_CUBE_COMPATIBLE_BIT -> String -> ShowS
showString "IMAGE_CREATE_CUBE_COMPATIBLE_BIT"
    IMAGE_CREATE_SUBSAMPLED_BIT_EXT -> String -> ShowS
showString "IMAGE_CREATE_SUBSAMPLED_BIT_EXT"
    IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT -> String -> ShowS
showString "IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"
    IMAGE_CREATE_CORNER_SAMPLED_BIT_NV -> String -> ShowS
showString "IMAGE_CREATE_CORNER_SAMPLED_BIT_NV"
    IMAGE_CREATE_DISJOINT_BIT -> String -> ShowS
showString "IMAGE_CREATE_DISJOINT_BIT"
    IMAGE_CREATE_PROTECTED_BIT -> String -> ShowS
showString "IMAGE_CREATE_PROTECTED_BIT"
    IMAGE_CREATE_EXTENDED_USAGE_BIT -> String -> ShowS
showString "IMAGE_CREATE_EXTENDED_USAGE_BIT"
    IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT -> String -> ShowS
showString "IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"
    IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT -> String -> ShowS
showString "IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"
    IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT -> String -> ShowS
showString "IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"
    IMAGE_CREATE_ALIAS_BIT -> String -> ShowS
showString "IMAGE_CREATE_ALIAS_BIT"
    ImageCreateFlagBits x :: Flags
x -> Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 11) (String -> ShowS
showString "ImageCreateFlagBits 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 ImageCreateFlagBits where
  readPrec :: ReadPrec ImageCreateFlagBits
readPrec = ReadPrec ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall a. ReadPrec a -> ReadPrec a
parens ([(String, ReadPrec ImageCreateFlagBits)]
-> ReadPrec ImageCreateFlagBits
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose [("IMAGE_CREATE_SPARSE_BINDING_BIT", ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImageCreateFlagBits
IMAGE_CREATE_SPARSE_BINDING_BIT)
                            , ("IMAGE_CREATE_SPARSE_RESIDENCY_BIT", ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImageCreateFlagBits
IMAGE_CREATE_SPARSE_RESIDENCY_BIT)
                            , ("IMAGE_CREATE_SPARSE_ALIASED_BIT", ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImageCreateFlagBits
IMAGE_CREATE_SPARSE_ALIASED_BIT)
                            , ("IMAGE_CREATE_MUTABLE_FORMAT_BIT", ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImageCreateFlagBits
IMAGE_CREATE_MUTABLE_FORMAT_BIT)
                            , ("IMAGE_CREATE_CUBE_COMPATIBLE_BIT", ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImageCreateFlagBits
IMAGE_CREATE_CUBE_COMPATIBLE_BIT)
                            , ("IMAGE_CREATE_SUBSAMPLED_BIT_EXT", ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImageCreateFlagBits
IMAGE_CREATE_SUBSAMPLED_BIT_EXT)
                            , ("IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT", ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImageCreateFlagBits
IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT)
                            , ("IMAGE_CREATE_CORNER_SAMPLED_BIT_NV", ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImageCreateFlagBits
IMAGE_CREATE_CORNER_SAMPLED_BIT_NV)
                            , ("IMAGE_CREATE_DISJOINT_BIT", ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImageCreateFlagBits
IMAGE_CREATE_DISJOINT_BIT)
                            , ("IMAGE_CREATE_PROTECTED_BIT", ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImageCreateFlagBits
IMAGE_CREATE_PROTECTED_BIT)
                            , ("IMAGE_CREATE_EXTENDED_USAGE_BIT", ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImageCreateFlagBits
IMAGE_CREATE_EXTENDED_USAGE_BIT)
                            , ("IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT", ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImageCreateFlagBits
IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT)
                            , ("IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT", ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImageCreateFlagBits
IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT)
                            , ("IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT", ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImageCreateFlagBits
IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT)
                            , ("IMAGE_CREATE_ALIAS_BIT", ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ImageCreateFlagBits
IMAGE_CREATE_ALIAS_BIT)]
                     ReadPrec ImageCreateFlagBits
-> ReadPrec ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
                     Int -> ReadPrec ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall a. Int -> ReadPrec a -> ReadPrec a
prec 10 (do
                       Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident "ImageCreateFlagBits")
                       Flags
v <- ReadPrec Flags -> ReadPrec Flags
forall a. ReadPrec a -> ReadPrec a
step ReadPrec Flags
forall a. Read a => ReadPrec a
readPrec
                       ImageCreateFlagBits -> ReadPrec ImageCreateFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags -> ImageCreateFlagBits
ImageCreateFlagBits Flags
v)))