{-# language CPP #-}
-- No documentation found for Chapter "ImageLayout"
module Vulkan.Core10.Enums.ImageLayout  (ImageLayout( IMAGE_LAYOUT_UNDEFINED
                                                    , IMAGE_LAYOUT_GENERAL
                                                    , IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
                                                    , IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
                                                    , IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
                                                    , IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
                                                    , IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
                                                    , IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
                                                    , IMAGE_LAYOUT_PREINITIALIZED
                                                    , IMAGE_LAYOUT_ZERO_INITIALIZED_EXT
                                                    , IMAGE_LAYOUT_TENSOR_ALIASING_ARM
                                                    , IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
                                                    , IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR
                                                    , IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT
                                                    , IMAGE_LAYOUT_SHARED_PRESENT_KHR
                                                    , IMAGE_LAYOUT_PRESENT_SRC_KHR
                                                    , IMAGE_LAYOUT_RENDERING_LOCAL_READ
                                                    , IMAGE_LAYOUT_ATTACHMENT_OPTIMAL
                                                    , IMAGE_LAYOUT_READ_ONLY_OPTIMAL
                                                    , IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
                                                    , IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
                                                    , IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
                                                    , IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
                                                    , IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
                                                    , IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
                                                    , ..
                                                    )) where

import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import GHC.Show (showsPrec)
import Vulkan.Zero (Zero)
import Foreign.Storable (Storable)
import Data.Int (Int32)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))

-- | VkImageLayout - Layout of image and image subresources
--
-- = Description
--
-- The type(s) of device access supported by each layout are:
--
-- -   'IMAGE_LAYOUT_UNDEFINED' specifies that the layout is unknown. Image
--     memory /cannot/ be transitioned into this layout. This layout /can/
--     be used as the @initialLayout@ member of
--     'Vulkan.Core10.Image.ImageCreateInfo'. This layout /can/ be used in
--     place of the current image layout in a layout transition, but doing
--     so will cause the contents of the image’s memory to be undefined.
--
-- -   'IMAGE_LAYOUT_PREINITIALIZED' specifies that an image’s memory is in
--     a defined layout and /can/ be populated by data, but that it has not
--     yet been initialized by the driver. Image memory /cannot/ be
--     transitioned into this layout. This layout /can/ be used as the
--     @initialLayout@ member of 'Vulkan.Core10.Image.ImageCreateInfo'.
--     This layout is intended to be used as the initial layout for an
--     image whose contents are written by the host, and hence the data
--     /can/ be written to memory immediately, without first executing a
--     layout transition. Currently, 'IMAGE_LAYOUT_PREINITIALIZED' is only
--     useful with
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#glossary-linear-resource linear>
--     images because there is not a standard layout defined for
--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL' images.
--
-- -   'IMAGE_LAYOUT_GENERAL' supports all types of device access, unless
--     specified otherwise.
--
-- -   'IMAGE_LAYOUT_ZERO_INITIALIZED_EXT' specifies that an image’s memory
--     is in a defined layout and is zeroed, but that it has not yet been
--     initialized by the driver. Image memory /cannot/ be transitioned
--     into this layout. This layout /can/ be used as the @initialLayout@
--     member of 'Vulkan.Core10.Image.ImageCreateInfo'. This layout is
--     intended to be used as the initial layout for an image whose
--     contents are already zeroed, either from being explicitly set to
--     zero by an application or from being allocated with
--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_ZERO_INITIALIZE_BIT_EXT'.
--
-- -   'IMAGE_LAYOUT_ATTACHMENT_OPTIMAL' specifies a layout that /must/
--     only be used with attachment accesses in the graphics pipeline.
--
-- -   'IMAGE_LAYOUT_READ_ONLY_OPTIMAL' specifies a layout allowing read
--     only access as an attachment, or in shaders as a sampled image,
--     combined image\/sampler, or input attachment.
--
-- -   'IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL' /must/ only be used as a
--     color or resolve attachment in a
--     'Vulkan.Core10.Handles.Framebuffer'. This layout is valid only for
--     image subresources of images created with the
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
--     usage flag set.
--
-- -   'IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL' specifies a layout
--     for both the depth and stencil aspects of a depth\/stencil format
--     image allowing read and write access as a depth\/stencil attachment.
--     It is equivalent to 'IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL' and
--     'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'.
--
-- -   'IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL' specifies a layout
--     for both the depth and stencil aspects of a depth\/stencil format
--     image allowing read only access as a depth\/stencil attachment or in
--     shaders as a sampled image, combined image\/sampler, or input
--     attachment. It is equivalent to
--     'IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' and
--     'IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'.
--
-- -   'IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL' specifies
--     a layout for depth\/stencil format images allowing read and write
--     access to the stencil aspect as a stencil attachment, and read only
--     access to the depth aspect as a depth attachment or in shaders as a
--     sampled image, combined image\/sampler, or input attachment. It is
--     equivalent to 'IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' and
--     'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'.
--
-- -   'IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL' specifies
--     a layout for depth\/stencil format images allowing read and write
--     access to the depth aspect as a depth attachment, and read only
--     access to the stencil aspect as a stencil attachment or in shaders
--     as a sampled image, combined image\/sampler, or input attachment. It
--     is equivalent to 'IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL' and
--     'IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'.
--
-- -   'IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL' specifies a layout for the
--     depth aspect of a depth\/stencil format image allowing read and
--     write access as a depth attachment.
--
-- -   'IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' specifies a layout for the
--     depth aspect of a depth\/stencil format image allowing read-only
--     access as a depth attachment or in shaders as a sampled image,
--     combined image\/sampler, or input attachment.
--
-- -   'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL' specifies a layout for the
--     stencil aspect of a depth\/stencil format image allowing read and
--     write access as a stencil attachment.
--
-- -   'IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL' specifies a layout for the
--     stencil aspect of a depth\/stencil format image allowing read-only
--     access as a stencil attachment or in shaders as a sampled image,
--     combined image\/sampler, or input attachment.
--
-- -   'IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL' specifies a layout allowing
--     read-only access in a shader as a sampled image, combined
--     image\/sampler, or input attachment. This layout is valid only for
--     image subresources of images created with the
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
--     usage bits enabled.
--
-- -   'IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL' /must/ only be used as a source
--     image of a transfer command (see the definition of
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-pipeline-stages-transfer >).
--     This layout is valid only for image subresources of images created
--     with the
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
--     usage flag set.
--
-- -   'IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL' /must/ only be used as a
--     destination image of a transfer command. This layout is valid only
--     for image subresources of images created with the
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
--     usage flag set.
--
-- -   'IMAGE_LAYOUT_PRESENT_SRC_KHR' /must/ only be used for presenting a
--     presentable image for display.
--
-- -   'IMAGE_LAYOUT_SHARED_PRESENT_KHR' is valid only for shared
--     presentable images, and /must/ be used for any usage the image
--     supports.
--
-- -   'IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR' /must/
--     only be used 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>.
--     This layout is valid only for image subresources of images created
--     with the
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
--     usage flag set.
--
-- -   'IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT' /must/ only be used
--     as a fragment density map attachment in a
--     'Vulkan.Core10.Handles.RenderPass'. This layout is valid only for
--     image subresources of images created with the
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'
--     usage flag set.
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR>
--     /must/ only 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>.
--     This layout is valid only for image subresources of images created
--     with the
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR>
--     usage flag set.
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR>
--     is reserved for future use.
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR>
--     /must/ only 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>.
--     This layout is valid only for image subresources of images created
--     with the
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR>
--     usage flag set.
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR>
--     is reserved for future use.
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR>
--     /must/ only 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>.
--     This layout is valid only for image subresources of images created
--     with the
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR>
--     usage flag set.
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR>
--     /must/ only 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>.
--     This layout is valid only for image subresources of images created
--     with the
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR>
--     usage flag set.
--
-- -   'IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT' /must/ only be
--     used as either a color attachment or depth\/stencil attachment
--     and\/or read-only access in a shader as a sampled image, combined
--     image\/sampler, or input attachment. This layout is valid only for
--     image subresources of images created with the
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT'
--     usage flag set, and either the
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
--     or
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
--     usage flags set, and either the
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
--     or 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'
--     usage flags set
--
-- -   'IMAGE_LAYOUT_RENDERING_LOCAL_READ' /must/ only be used as either a
--     storage image, or a color or depth\/stencil attachment and an input
--     attachment. This layout is valid only for image subresources of
--     images created with either the
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT'
--     usage flag set, or both the
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
--     and either of the
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
--     or
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
--     usage flags set.
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR>
--     /must/ only be used as a
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#encode-quantization-map quantization map>
--     in a
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#video-encode-operations video encode operation>.
--     This layout is valid only for image subresources of images created
--     with the
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR>
--     or
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageUsageFlagBits VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR>
--     usage flags set.
--
-- -   'IMAGE_LAYOUT_TENSOR_ALIASING_ARM' specifies the layout that an
--     image created with
--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL' /must/ be in,
--     if the
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-unifiedImageLayouts unifiedImageLayouts>
--     feature is disabled, or /may/ be in if it is enabled, for it and a
--     tensor bound to the same aliased range of memory to consistently
--     interpret the data in memory. See
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#resources-memory-aliasing>
--     for a complete set of rules for tensor\/image aliasing. This layout
--     is valid only for image subresources of images created with the
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM'
--     usage flag set.
--
-- The layout of each image subresource is not a state of the image
-- subresource itself, but is rather a property of how the data in memory
-- is organized, and thus for each mechanism of accessing an image in the
-- API the application /must/ specify a parameter or structure member that
-- indicates which image layout the image subresource(s) are considered to
-- be in when the image will be accessed. For transfer commands, this is a
-- parameter to the command (see
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#clears>
-- and
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#copies>).
-- For use as a framebuffer attachment, this is a member in the
-- substructures of the 'Vulkan.Core10.Pass.RenderPassCreateInfo' (see
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass Render Pass>).
-- For use in a descriptor set, this is a member in the
-- 'Vulkan.Core10.DescriptorSet.DescriptorImageInfo' structure (see
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorsets-updates>).
--
-- If the
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-unifiedImageLayouts unifiedImageLayouts>
-- feature is enabled, the 'IMAGE_LAYOUT_GENERAL' image layout /may/ be
-- used in place of the other layouts where allowed with no loss of
-- performance.
--
-- 'IMAGE_LAYOUT_GENERAL' can be a useful catch-all image layout, but there
-- are situations where a dedicated image layout must be used instead. Some
-- examples include:
--
-- -   'IMAGE_LAYOUT_PRESENT_SRC_KHR'
--
-- -   'IMAGE_LAYOUT_SHARED_PRESENT_KHR'
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR>,
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR>,
--     and
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR>
--     without the
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-unifiedImageLayoutsVideo unifiedImageLayoutsVideo>
--     feature
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR>,
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR>,
--     and
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR>
--     without the
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-unifiedImageLayoutsVideo unifiedImageLayoutsVideo>
--     feature
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageLayout VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR>
--     without the
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-unifiedImageLayoutsVideo unifiedImageLayoutsVideo>
--     feature
--
-- While 'IMAGE_LAYOUT_GENERAL' suggests that all types of device access is
-- possible, it does not mean that all patterns of memory accesses are safe
-- in all situations.
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#common-render-pass-data-races Common Render Pass Data Races>
-- outlines some situations where data races are unavoidable. For example,
-- when a subresource is used as both an attachment and a sampled image
-- (i.e., not an input attachment),
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#renderpass-feedbackloop enabling feedback loop>
-- adds extra guarantees which 'IMAGE_LAYOUT_GENERAL' alone does not.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
-- 'Vulkan.Core10.Pass.AttachmentDescription',
-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',
-- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout',
-- 'Vulkan.Core10.Pass.AttachmentReference',
-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2',
-- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout',
-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BlitImageInfo2',
-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyBufferToImageInfo2',
-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyImageInfo2',
-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyImageToBufferInfo2',
-- 'Vulkan.Core14.PromotedStreamingTransfers'.CopyImageToImageInfo',
-- 'Vulkan.Core14.PromotedStreamingTransfers'.CopyImageToMemoryInfo',
-- 'Vulkan.Extensions.VK_KHR_copy_memory_indirect.CopyMemoryToImageIndirectInfoKHR',
-- 'Vulkan.Core14.PromotedStreamingTransfers'.CopyMemoryToImageInfo',
-- 'Vulkan.Core10.DescriptorSet.DescriptorImageInfo',
-- 'Vulkan.Core14.PromotedStreamingTransfers'.HostImageLayoutTransitionInfo',
-- 'Vulkan.Core10.Image.ImageCreateInfo',
-- 'Vulkan.Extensions.VK_EXT_descriptor_heap.ImageDescriptorInfoEXT',
-- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2',
-- 'Vulkan.Core14.PromotedStreamingTransfers'.PhysicalDeviceHostImageCopyProperties',
-- 'Vulkan.Core14.PhysicalDeviceVulkan14Properties',
-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo',
-- 'Vulkan.Extensions.VK_EXT_fragment_density_map.RenderingFragmentDensityMapAttachmentInfoEXT',
-- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.RenderingFragmentShadingRateAttachmentInfoKHR',
-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ResolveImageInfo2',
-- 'Vulkan.Extensions.VK_NV_optical_flow.bindOpticalFlowSessionImageNV',
-- 'Vulkan.Extensions.VK_HUAWEI_invocation_mask.cmdBindInvocationMaskHUAWEI',
-- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdBindShadingRateImageNV',
-- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage',
-- 'Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage',
-- 'Vulkan.Core10.CommandBufferBuilding.cmdClearDepthStencilImage',
-- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',
-- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImage',
-- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer',
-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryToImageIndirectNV',
-- 'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage'
newtype ImageLayout = ImageLayout Int32
  deriving newtype (ImageLayout -> ImageLayout -> Bool
(ImageLayout -> ImageLayout -> Bool)
-> (ImageLayout -> ImageLayout -> Bool) -> Eq ImageLayout
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ImageLayout -> ImageLayout -> Bool
== :: ImageLayout -> ImageLayout -> Bool
$c/= :: ImageLayout -> ImageLayout -> Bool
/= :: ImageLayout -> ImageLayout -> Bool
Eq, Eq ImageLayout
Eq ImageLayout =>
(ImageLayout -> ImageLayout -> Ordering)
-> (ImageLayout -> ImageLayout -> Bool)
-> (ImageLayout -> ImageLayout -> Bool)
-> (ImageLayout -> ImageLayout -> Bool)
-> (ImageLayout -> ImageLayout -> Bool)
-> (ImageLayout -> ImageLayout -> ImageLayout)
-> (ImageLayout -> ImageLayout -> ImageLayout)
-> Ord ImageLayout
ImageLayout -> ImageLayout -> Bool
ImageLayout -> ImageLayout -> Ordering
ImageLayout -> ImageLayout -> ImageLayout
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 :: ImageLayout -> ImageLayout -> Ordering
compare :: ImageLayout -> ImageLayout -> Ordering
$c< :: ImageLayout -> ImageLayout -> Bool
< :: ImageLayout -> ImageLayout -> Bool
$c<= :: ImageLayout -> ImageLayout -> Bool
<= :: ImageLayout -> ImageLayout -> Bool
$c> :: ImageLayout -> ImageLayout -> Bool
> :: ImageLayout -> ImageLayout -> Bool
$c>= :: ImageLayout -> ImageLayout -> Bool
>= :: ImageLayout -> ImageLayout -> Bool
$cmax :: ImageLayout -> ImageLayout -> ImageLayout
max :: ImageLayout -> ImageLayout -> ImageLayout
$cmin :: ImageLayout -> ImageLayout -> ImageLayout
min :: ImageLayout -> ImageLayout -> ImageLayout
Ord, Ptr ImageLayout -> IO ImageLayout
Ptr ImageLayout -> Int -> IO ImageLayout
Ptr ImageLayout -> Int -> ImageLayout -> IO ()
Ptr ImageLayout -> ImageLayout -> IO ()
ImageLayout -> Int
(ImageLayout -> Int)
-> (ImageLayout -> Int)
-> (Ptr ImageLayout -> Int -> IO ImageLayout)
-> (Ptr ImageLayout -> Int -> ImageLayout -> IO ())
-> (forall b. Ptr b -> Int -> IO ImageLayout)
-> (forall b. Ptr b -> Int -> ImageLayout -> IO ())
-> (Ptr ImageLayout -> IO ImageLayout)
-> (Ptr ImageLayout -> ImageLayout -> IO ())
-> Storable ImageLayout
forall b. Ptr b -> Int -> IO ImageLayout
forall b. Ptr b -> Int -> ImageLayout -> 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 :: ImageLayout -> Int
sizeOf :: ImageLayout -> Int
$calignment :: ImageLayout -> Int
alignment :: ImageLayout -> Int
$cpeekElemOff :: Ptr ImageLayout -> Int -> IO ImageLayout
peekElemOff :: Ptr ImageLayout -> Int -> IO ImageLayout
$cpokeElemOff :: Ptr ImageLayout -> Int -> ImageLayout -> IO ()
pokeElemOff :: Ptr ImageLayout -> Int -> ImageLayout -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ImageLayout
peekByteOff :: forall b. Ptr b -> Int -> IO ImageLayout
$cpokeByteOff :: forall b. Ptr b -> Int -> ImageLayout -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> ImageLayout -> IO ()
$cpeek :: Ptr ImageLayout -> IO ImageLayout
peek :: Ptr ImageLayout -> IO ImageLayout
$cpoke :: Ptr ImageLayout -> ImageLayout -> IO ()
poke :: Ptr ImageLayout -> ImageLayout -> IO ()
Storable, ImageLayout
ImageLayout -> Zero ImageLayout
forall a. a -> Zero a
$czero :: ImageLayout
zero :: ImageLayout
Zero)

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_UNDEFINED"
pattern $mIMAGE_LAYOUT_UNDEFINED :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_UNDEFINED :: ImageLayout
IMAGE_LAYOUT_UNDEFINED = ImageLayout 0

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_GENERAL"
pattern $mIMAGE_LAYOUT_GENERAL :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_GENERAL :: ImageLayout
IMAGE_LAYOUT_GENERAL = ImageLayout 1

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL"
pattern $mIMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL :: ImageLayout
IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = ImageLayout 2

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL"
pattern $mIMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL :: ImageLayout
IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = ImageLayout 3

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL"
pattern $mIMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL :: ImageLayout
IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = ImageLayout 4

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL"
pattern $mIMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL :: ImageLayout
IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = ImageLayout 5

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL"
pattern $mIMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL :: ImageLayout
IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = ImageLayout 6

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"
pattern $mIMAGE_LAYOUT_TRANSFER_DST_OPTIMAL :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_TRANSFER_DST_OPTIMAL :: ImageLayout
IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = ImageLayout 7

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_PREINITIALIZED"
pattern $mIMAGE_LAYOUT_PREINITIALIZED :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_PREINITIALIZED :: ImageLayout
IMAGE_LAYOUT_PREINITIALIZED = ImageLayout 8

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT"
pattern $mIMAGE_LAYOUT_ZERO_INITIALIZED_EXT :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_ZERO_INITIALIZED_EXT :: ImageLayout
IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = ImageLayout 1000620000

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM"
pattern $mIMAGE_LAYOUT_TENSOR_ALIASING_ARM :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_TENSOR_ALIASING_ARM :: ImageLayout
IMAGE_LAYOUT_TENSOR_ALIASING_ARM = ImageLayout 1000460000

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT"
pattern $mIMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT :: ImageLayout
IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = ImageLayout 1000339000

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR"
pattern $mIMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR :: ImageLayout
IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = ImageLayout 1000164003

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT"
pattern $mIMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT :: ImageLayout
IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = ImageLayout 1000218000

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR"
pattern $mIMAGE_LAYOUT_SHARED_PRESENT_KHR :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_SHARED_PRESENT_KHR :: ImageLayout
IMAGE_LAYOUT_SHARED_PRESENT_KHR = ImageLayout 1000111000

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR"
pattern $mIMAGE_LAYOUT_PRESENT_SRC_KHR :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_PRESENT_SRC_KHR :: ImageLayout
IMAGE_LAYOUT_PRESENT_SRC_KHR = ImageLayout 1000001002

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ"
pattern $mIMAGE_LAYOUT_RENDERING_LOCAL_READ :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_RENDERING_LOCAL_READ :: ImageLayout
IMAGE_LAYOUT_RENDERING_LOCAL_READ = ImageLayout 1000232000

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL"
pattern $mIMAGE_LAYOUT_ATTACHMENT_OPTIMAL :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_ATTACHMENT_OPTIMAL :: ImageLayout
IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = ImageLayout 1000314001

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL"
pattern $mIMAGE_LAYOUT_READ_ONLY_OPTIMAL :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_READ_ONLY_OPTIMAL :: ImageLayout
IMAGE_LAYOUT_READ_ONLY_OPTIMAL = ImageLayout 1000314000

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL"
pattern $mIMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL :: ImageLayout
IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = ImageLayout 1000241003

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL"
pattern $mIMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL :: ImageLayout
IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = ImageLayout 1000241002

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL"
pattern $mIMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL :: ImageLayout
IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = ImageLayout 1000241001

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL"
pattern $mIMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL :: ImageLayout
IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = ImageLayout 1000241000

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"
pattern $mIMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL :: ImageLayout
IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = ImageLayout 1000117001

-- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"
pattern $mIMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL :: forall {r}. ImageLayout -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL :: ImageLayout
IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = ImageLayout 1000117000

{-# COMPLETE
  IMAGE_LAYOUT_UNDEFINED
  , IMAGE_LAYOUT_GENERAL
  , IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
  , IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
  , IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
  , IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
  , IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
  , IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
  , IMAGE_LAYOUT_PREINITIALIZED
  , IMAGE_LAYOUT_ZERO_INITIALIZED_EXT
  , IMAGE_LAYOUT_TENSOR_ALIASING_ARM
  , IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
  , IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR
  , IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT
  , IMAGE_LAYOUT_SHARED_PRESENT_KHR
  , IMAGE_LAYOUT_PRESENT_SRC_KHR
  , IMAGE_LAYOUT_RENDERING_LOCAL_READ
  , IMAGE_LAYOUT_ATTACHMENT_OPTIMAL
  , IMAGE_LAYOUT_READ_ONLY_OPTIMAL
  , IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
  , IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
  , IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
  , IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
  , IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
  , IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL ::
    ImageLayout
  #-}

conNameImageLayout :: String
conNameImageLayout :: String
conNameImageLayout = String
"ImageLayout"

enumPrefixImageLayout :: String
enumPrefixImageLayout :: String
enumPrefixImageLayout = String
"IMAGE_LAYOUT_"

showTableImageLayout :: [(ImageLayout, String)]
showTableImageLayout :: [(ImageLayout, String)]
showTableImageLayout =
  [ (ImageLayout
IMAGE_LAYOUT_UNDEFINED, String
"UNDEFINED")
  , (ImageLayout
IMAGE_LAYOUT_GENERAL, String
"GENERAL")
  ,
    ( ImageLayout
IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
    , String
"COLOR_ATTACHMENT_OPTIMAL"
    )
  ,
    ( ImageLayout
IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
    , String
"DEPTH_STENCIL_ATTACHMENT_OPTIMAL"
    )
  ,
    ( ImageLayout
IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
    , String
"DEPTH_STENCIL_READ_ONLY_OPTIMAL"
    )
  ,
    ( ImageLayout
IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
    , String
"SHADER_READ_ONLY_OPTIMAL"
    )
  ,
    ( ImageLayout
IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
    , String
"TRANSFER_SRC_OPTIMAL"
    )
  ,
    ( ImageLayout
IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
    , String
"TRANSFER_DST_OPTIMAL"
    )
  , (ImageLayout
IMAGE_LAYOUT_PREINITIALIZED, String
"PREINITIALIZED")
  ,
    ( ImageLayout
IMAGE_LAYOUT_ZERO_INITIALIZED_EXT
    , String
"ZERO_INITIALIZED_EXT"
    )
  ,
    ( ImageLayout
IMAGE_LAYOUT_TENSOR_ALIASING_ARM
    , String
"TENSOR_ALIASING_ARM"
    )
  ,
    ( ImageLayout
IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
    , String
"ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT"
    )
  ,
    ( ImageLayout
IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR
    , String
"FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR"
    )
  ,
    ( ImageLayout
IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT
    , String
"FRAGMENT_DENSITY_MAP_OPTIMAL_EXT"
    )
  , (ImageLayout
IMAGE_LAYOUT_SHARED_PRESENT_KHR, String
"SHARED_PRESENT_KHR")
  , (ImageLayout
IMAGE_LAYOUT_PRESENT_SRC_KHR, String
"PRESENT_SRC_KHR")
  ,
    ( ImageLayout
IMAGE_LAYOUT_RENDERING_LOCAL_READ
    , String
"RENDERING_LOCAL_READ"
    )
  , (ImageLayout
IMAGE_LAYOUT_ATTACHMENT_OPTIMAL, String
"ATTACHMENT_OPTIMAL")
  , (ImageLayout
IMAGE_LAYOUT_READ_ONLY_OPTIMAL, String
"READ_ONLY_OPTIMAL")
  ,
    ( ImageLayout
IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
    , String
"STENCIL_READ_ONLY_OPTIMAL"
    )
  ,
    ( ImageLayout
IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
    , String
"STENCIL_ATTACHMENT_OPTIMAL"
    )
  ,
    ( ImageLayout
IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
    , String
"DEPTH_READ_ONLY_OPTIMAL"
    )
  ,
    ( ImageLayout
IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
    , String
"DEPTH_ATTACHMENT_OPTIMAL"
    )
  ,
    ( ImageLayout
IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
    , String
"DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"
    )
  ,
    ( ImageLayout
IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
    , String
"DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"
    )
  ]

instance Show ImageLayout where
  showsPrec :: Int -> ImageLayout -> ShowS
showsPrec =
    String
-> [(ImageLayout, String)]
-> String
-> (ImageLayout -> Int32)
-> (Int32 -> ShowS)
-> Int
-> ImageLayout
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixImageLayout
      [(ImageLayout, String)]
showTableImageLayout
      String
conNameImageLayout
      (\(ImageLayout Int32
x) -> Int32
x)
      (Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
11)

instance Read ImageLayout where
  readPrec :: ReadPrec ImageLayout
readPrec =
    String
-> [(ImageLayout, String)]
-> String
-> (Int32 -> ImageLayout)
-> ReadPrec ImageLayout
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixImageLayout
      [(ImageLayout, String)]
showTableImageLayout
      String
conNameImageLayout
      Int32 -> ImageLayout
ImageLayout