{-# language CPP #-}
-- | = Name
--
-- VK_KHR_maintenance10 - device extension
--
-- = VK_KHR_maintenance10
--
-- [__Name String__]
--     @VK_KHR_maintenance10@
--
-- [__Extension Type__]
--     Device extension
--
-- [__Registered Extension Number__]
--     631
--
-- [__Revision__]
--     1
--
-- [__Ratification Status__]
--     Ratified
--
-- [__Extension and Version Dependencies__]
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
--     or
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
--
-- [__API Interactions__]
--
--     -   Interacts with VK_VERSION_1_3
--
--     -   Interacts with VK_VERSION_1_4
--
--     -   Interacts with VK_KHR_copy_commands2
--
--     -   Interacts with VK_KHR_dynamic_rendering
--
--     -   Interacts with VK_KHR_dynamic_rendering_local_read
--
--     -   Interacts with VK_KHR_format_feature_flags2
--
-- [__Contact__]
--
--     -   Mike Blumenkrantz
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance10] @zmike%0A*Here describe the issue or question you have about the VK_KHR_maintenance10 extension* >
--
-- [__Extension Proposal__]
--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_maintenance10.adoc VK_KHR_maintenance10>
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2025-05-13
--
-- [__Interactions and External Dependencies__]
--
--     -   This extension interacts with @VK_KHR_format_feature_flags2@
--
--     -   This extension interacts with @VK_EXT_extended_dynamic_state3@
--
--     -   This extension interacts with
--         @VK_KHR_dynamic_rendering_local_read@
--
--     -   This extension interacts with @VK_KHR_depth_stencil_resolve@
--
-- [__Contributors__]
--
--     -   Mike Blumenkrantz, Valve
--
--     -   Piers Daniell, NVIDIA
--
--     -   Hans-Kristian Arntzen, Valve
--
-- == Description
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>
-- adds a collection of minor features, none of which would warrant an
-- entire extension of their own.
--
-- The new features are as follows:
--
-- -   New image format feature bits that indicate support for copying
--     depth or stencil aspects using non-graphics queue families
--
-- -   If
--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
--     is called with @pSampleMask@ set to @NULL@, it is treated as if the
--     mask has all bits set to @1@.
--
-- -   Add vkCmdEndRendering2KHR as an extensible version of
--     vkCmdEndRendering
--
-- -   Add input attachment information to dynamic rendering
--
-- -   Require that vertex inputs follow sRGB encoding when those formats
--     are used, instead of being underspecified.
--
-- -   Add a query to determine if sRGB images are resolved in nonlinear or
--     linear space by default
--
-- -   Add an optional feature to allow applications to override the
--     default sRGB resolve behavior
--
-- -   Add resolve mode and depth-stencil resolve support to
--     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdResolveImage2'
--     to bring it in-line with render pass attachment resolves
--
-- == New Commands
--
-- -   'cmdEndRendering2KHR'
--
-- == New Structures
--
-- -   'RenderingEndInfoKHR'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--     'Vulkan.Core10.Device.DeviceCreateInfo':
--
--     -   'PhysicalDeviceMaintenance10FeaturesKHR'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
--
--     -   'PhysicalDeviceMaintenance10PropertiesKHR'
--
-- -   Extending
--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo':
--
--     -   'RenderingAttachmentFlagsInfoKHR'
--
-- -   Extending
--     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ResolveImageInfo2':
--
--     -   'ResolveImageModeInfoKHR'
--
-- == New Enums
--
-- -   'RenderingAttachmentFlagBitsKHR'
--
-- -   'ResolveImageFlagBitsKHR'
--
-- == New Bitmasks
--
-- -   'RenderingAttachmentFlagsKHR'
--
-- -   'ResolveImageFlagsKHR'
--
-- == New Enum Constants
--
-- -   'KHR_MAINTENANCE_10_EXTENSION_NAME'
--
-- -   'KHR_MAINTENANCE_10_SPEC_VERSION'
--
-- -   Extending
--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.AttachmentDescriptionFlagBits':
--
--     -   'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
--
--     -   'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_END_INFO_KHR'
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4 Vulkan Version 1.4>
-- or
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>
-- and
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
-- or
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
-- is supported:
--
-- -   Extending 'RenderingAttachmentFlagBitsKHR':
--
--     -   'RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
--
-- -   Extending 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits':
--
--     -   'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_format_feature_flags2 VK_KHR_format_feature_flags2>
-- or
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
-- is supported:
--
-- -   Extending
--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
--
--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR'
--
--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR'
--
--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR'
--
--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
-- or
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>
-- is supported:
--
-- -   Extending 'ResolveImageFlagBitsKHR':
--
--     -   'RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
--
--     -   'RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
--
-- If
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
-- or
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>
-- is supported:
--
-- -   Extending 'RenderingAttachmentFlagBitsKHR':
--
--     -   'RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
--
--     -   'RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
--
-- == Issues
--
-- None.
--
-- == Version History
--
-- -   Revision 1, 2025-05-13 (Mike Blumenkrantz)
--
--     -   Initial revision
--
-- == See Also
--
-- No cross-references are available
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance10 Vulkan Specification>.
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module Vulkan.Extensions.VK_KHR_maintenance10  ( cmdEndRendering2KHR
                                               , PhysicalDeviceMaintenance10PropertiesKHR(..)
                                               , PhysicalDeviceMaintenance10FeaturesKHR(..)
                                               , RenderingEndInfoKHR(..)
                                               , RenderingAttachmentFlagsInfoKHR(..)
                                               , ResolveImageModeInfoKHR(..)
                                               , RenderingAttachmentFlagsKHR
                                               , RenderingAttachmentFlagBitsKHR( RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR
                                                                               , RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR
                                                                               , RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR
                                                                               , ..
                                                                               )
                                               , ResolveImageFlagsKHR
                                               , ResolveImageFlagBitsKHR( RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR
                                                                        , RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR
                                                                        , ..
                                                                        )
                                               , KHR_MAINTENANCE_10_SPEC_VERSION
                                               , pattern KHR_MAINTENANCE_10_SPEC_VERSION
                                               , KHR_MAINTENANCE_10_EXTENSION_NAME
                                               , pattern KHR_MAINTENANCE_10_EXTENSION_NAME
                                               ) where

import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Data.Typeable (eqT)
import Foreign.Marshal.Alloc (allocaBytes)
import GHC.IO (throwIO)
import GHC.Ptr (castPtr)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showString)
import Numeric (showHex)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
import Control.Monad.IO.Class (MonadIO)
import Data.String (IsString)
import Data.Type.Equality ((:~:)(Refl))
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import GHC.IO.Exception (IOErrorType(..))
import GHC.IO.Exception (IOException(..))
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.Core10.FundamentalTypes (boolToBool32)
import Vulkan.CStruct.Extends (forgetExtensions)
import Vulkan.NamedType ((:::))
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.CStruct.Extends (Chain)
import Vulkan.Core10.Handles (CommandBuffer)
import Vulkan.Core10.Handles (CommandBuffer(..))
import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
import Vulkan.Core10.Handles (CommandBuffer_T)
import Vulkan.Dynamic (DeviceCmds(pVkCmdEndRendering2KHR))
import Vulkan.CStruct.Extends (Extends)
import Vulkan.CStruct.Extends (Extendss)
import Vulkan.CStruct.Extends (Extensible(..))
import Vulkan.Core10.FundamentalTypes (Flags)
import Vulkan.CStruct.Extends (PeekChain)
import Vulkan.CStruct.Extends (PeekChain(..))
import Vulkan.CStruct.Extends (PokeChain)
import Vulkan.CStruct.Extends (PokeChain(..))
import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map_offset (RenderPassFragmentDensityMapOffsetEndInfoEXT)
import Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits)
import Vulkan.CStruct.Extends (SomeStruct)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_END_INFO_KHR))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
  unsafe
#endif
  "dynamic" mkVkCmdEndRendering2KHR
  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingEndInfoKHR) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingEndInfoKHR) -> IO ()

-- | vkCmdEndRendering2KHR - End a dynamic render pass instance
--
-- = Description
--
-- If the value of @pRenderingInfo->flags@ used to begin this render pass
-- instance included
-- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_SUSPENDING_BIT', then
-- this render pass is suspended and will be resumed later in
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#synchronization-submission-order submission order>.
--
-- There is no implicit ordering between separate render passes, even in
-- the same command buffer, and even when the attachments match. Some
-- applications rely on the continuation of
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-order rasterization order>
-- between multiple render passes with attachments defined in the same way,
-- in order to perform non-rendering operations (such as copies or compute
-- operations) between draw calls, but this has never been required by the
-- specification. There is also no explicit barrier currently in the API
-- that provides the guarantee that applications rely on without additional
-- performance penalties.
--
-- New applications should avoid relying on this ordering until an
-- appropriate barrier is added to the API.
--
-- Implementations where applications are performing this splitting are
-- encouraged to continue supporting this guarantee until a suitable
-- barrier is added to the API.
--
-- Existing applications relying on this ordering should expect that it
-- will continue working on platforms where it currently does. Once a new
-- extension adds support for a new barrier, developers are encouraged to
-- adapt their applications to use this when available.
--
-- == Valid Usage
--
-- -   #VUID-vkCmdEndRendering2KHR-None-10610# The current render pass
--     instance /must/ have been begun with
--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
--
-- -   #VUID-vkCmdEndRendering2KHR-commandBuffer-10611# The current render
--     pass instance /must/ have been begun in @commandBuffer@
--
-- -   #VUID-vkCmdEndRendering2KHR-None-10612# This command /must/ not be
--     recorded when transform feedback is active
--
-- -   #VUID-vkCmdEndRendering2KHR-None-10613# If
--     'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery'* was called
--     within the render pass, the corresponding
--     'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery'* /must/ have been
--     called subsequently within the same subpass
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-vkCmdEndRendering2KHR-commandBuffer-parameter# @commandBuffer@
--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
--
-- -   #VUID-vkCmdEndRendering2KHR-pRenderingEndInfo-parameter# If
--     @pRenderingEndInfo@ is not @NULL@, @pRenderingEndInfo@ /must/ be a
--     valid pointer to a valid 'RenderingEndInfoKHR' structure
--
-- -   #VUID-vkCmdEndRendering2KHR-commandBuffer-recording# @commandBuffer@
--     /must/ be in the
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
--
-- -   #VUID-vkCmdEndRendering2KHR-commandBuffer-cmdpool# The
--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
--     allocated from /must/ support
--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' operations
--
-- -   #VUID-vkCmdEndRendering2KHR-renderpass# This command /must/ only be
--     called inside of a render pass instance
--
-- -   #VUID-vkCmdEndRendering2KHR-suspended# This command /must/ not be
--     called between suspended render pass instances
--
-- -   #VUID-vkCmdEndRendering2KHR-videocoding# This command /must/ only be
--     called outside of a video coding scope
--
-- == Host Synchronization
--
-- -   Host access to @commandBuffer@ /must/ be externally synchronized
--
-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
--     @commandBuffer@ was allocated from /must/ be externally synchronized
--
-- == Command Properties
--
-- \'
--
-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
-- | Primary                                                                                                                    | Inside                                                                                                                 | Outside                                                                                                                     | VK_QUEUE_GRAPHICS_BIT                                                                                                 | Action                                                                                                                                 |
-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             |                                                                                                                       | State                                                                                                                                  |
-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
--
-- == Conditional Rendering
--
-- vkCmdEndRendering2KHR is not affected by
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-conditional-rendering conditional rendering>
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map_offset VK_EXT_fragment_density_map_offset>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>,
-- 'Vulkan.Core10.Handles.CommandBuffer', 'RenderingEndInfoKHR'
cmdEndRendering2KHR :: forall a io
                     . (Extendss RenderingEndInfoKHR a, PokeChain a, MonadIO io)
                    => -- | @commandBuffer@ is the command buffer in which to record the command.
                       CommandBuffer
                    -> -- | @pRenderingEndInfo@ is @NULL@ or a pointer to a 'RenderingEndInfoKHR'
                       -- structure containing information about how the render pass will be
                       -- ended.
                       ("renderingEndInfo" ::: Maybe (RenderingEndInfoKHR a))
                    -> io ()
cmdEndRendering2KHR :: forall (a :: [*]) (io :: * -> *).
(Extendss RenderingEndInfoKHR a, PokeChain a, MonadIO io) =>
CommandBuffer
-> ("renderingEndInfo" ::: Maybe (RenderingEndInfoKHR a)) -> io ()
cmdEndRendering2KHR CommandBuffer
commandBuffer "renderingEndInfo" ::: Maybe (RenderingEndInfoKHR a)
renderingEndInfo = IO () -> io ()
forall a. IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> io ())
-> (ContT () IO () -> IO ()) -> ContT () IO () -> io ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT () IO () -> IO ()
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT () IO () -> io ()) -> ContT () IO () -> io ()
forall a b. (a -> b) -> a -> b
$ do
  let vkCmdEndRendering2KHRPtr :: FunPtr
  (Ptr CommandBuffer_T
   -> Ptr (SomeStruct RenderingEndInfoKHR) -> IO ())
vkCmdEndRendering2KHRPtr = DeviceCmds
-> FunPtr
     (Ptr CommandBuffer_T
      -> Ptr (SomeStruct RenderingEndInfoKHR) -> IO ())
pVkCmdEndRendering2KHR (case CommandBuffer
commandBuffer of CommandBuffer{DeviceCmds
deviceCmds :: DeviceCmds
deviceCmds :: CommandBuffer -> DeviceCmds
deviceCmds} -> DeviceCmds
deviceCmds)
  IO () -> ContT () IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT () m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT () IO ()) -> IO () -> ContT () IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
  (Ptr CommandBuffer_T
   -> Ptr (SomeStruct RenderingEndInfoKHR) -> IO ())
vkCmdEndRendering2KHRPtr FunPtr
  (Ptr CommandBuffer_T
   -> Ptr (SomeStruct RenderingEndInfoKHR) -> IO ())
-> FunPtr
     (Ptr CommandBuffer_T
      -> Ptr (SomeStruct RenderingEndInfoKHR) -> IO ())
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
  (Ptr CommandBuffer_T
   -> Ptr (SomeStruct RenderingEndInfoKHR) -> IO ())
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
    IOException -> IO ()
forall e a. (HasCallStack, Exception e) => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument String
"" String
"The function pointer for vkCmdEndRendering2KHR is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
  let vkCmdEndRendering2KHR' :: Ptr CommandBuffer_T
-> Ptr (SomeStruct RenderingEndInfoKHR) -> IO ()
vkCmdEndRendering2KHR' = FunPtr
  (Ptr CommandBuffer_T
   -> Ptr (SomeStruct RenderingEndInfoKHR) -> IO ())
-> Ptr CommandBuffer_T
-> Ptr (SomeStruct RenderingEndInfoKHR)
-> IO ()
mkVkCmdEndRendering2KHR FunPtr
  (Ptr CommandBuffer_T
   -> Ptr (SomeStruct RenderingEndInfoKHR) -> IO ())
vkCmdEndRendering2KHRPtr
  pRenderingEndInfo <- case ("renderingEndInfo" ::: Maybe (RenderingEndInfoKHR a)
renderingEndInfo) of
    "renderingEndInfo" ::: Maybe (RenderingEndInfoKHR a)
Nothing -> Ptr (RenderingEndInfoKHR a)
-> ContT () IO (Ptr (RenderingEndInfoKHR a))
forall a. a -> ContT () IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr (RenderingEndInfoKHR a)
forall a. Ptr a
nullPtr
    Just RenderingEndInfoKHR a
j -> ((Ptr (RenderingEndInfoKHR a) -> IO ()) -> IO ())
-> ContT () IO (Ptr (RenderingEndInfoKHR a))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (RenderingEndInfoKHR a) -> IO ()) -> IO ())
 -> ContT () IO (Ptr (RenderingEndInfoKHR a)))
-> ((Ptr (RenderingEndInfoKHR a) -> IO ()) -> IO ())
-> ContT () IO (Ptr (RenderingEndInfoKHR a))
forall a b. (a -> b) -> a -> b
$ RenderingEndInfoKHR a
-> (Ptr (RenderingEndInfoKHR a) -> IO ()) -> IO ()
forall a b. ToCStruct a => a -> (Ptr a -> IO b) -> IO b
forall b.
RenderingEndInfoKHR a
-> (Ptr (RenderingEndInfoKHR a) -> IO b) -> IO b
withCStruct (RenderingEndInfoKHR a
j)
  lift $ traceAroundEvent "vkCmdEndRendering2KHR" (vkCmdEndRendering2KHR'
                                                     (commandBufferHandle (commandBuffer))
                                                     (forgetExtensions pRenderingEndInfo))
  pure $ ()


-- | VkPhysicalDeviceMaintenance10PropertiesKHR - Structure describing
-- various implementation-defined properties introduced with
-- VK_KHR_maintenance10
--
-- = Description
--
-- Implementations supporting
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance10 maintenance10>
-- /should/ set @resolveSrgbFormatAppliesTransferFunction@ to
-- 'Vulkan.Core10.FundamentalTypes.TRUE'.
--
-- If the 'PhysicalDeviceMaintenance10PropertiesKHR' structure is included
-- in the @pNext@ chain of the
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
-- structure passed to
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
-- it is filled in with each corresponding implementation-dependent
-- property.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceMaintenance10PropertiesKHR = PhysicalDeviceMaintenance10PropertiesKHR
  { -- | #limits-rgba4OpaqueBlackSwizzled# @rgba4OpaqueBlackSwizzled@ indicates
    -- whether correct swizzling is applied to the opaque black border color
    -- when using either the
    -- 'Vulkan.Core10.Enums.Format.FORMAT_B4G4R4A4_UNORM_PACK16' or
    -- 'Vulkan.Core10.Enums.Format.FORMAT_R4G4B4A4_UNORM_PACK16' format. If it
    -- is 'Vulkan.Core10.FundamentalTypes.TRUE', the implementation will
    -- correctly produce an opaque black border color with these formats. If it
    -- is 'Vulkan.Core10.FundamentalTypes.FALSE', the implementation /may/ swap
    -- the first channel with the alpha channel for the border color when
    -- sampling.
    PhysicalDeviceMaintenance10PropertiesKHR -> Bool
rgba4OpaqueBlackSwizzled :: Bool
  , -- | #limits-resolveSrgbFormatAppliesTransferFunction#
    -- @resolveSrgbFormatAppliesTransferFunction@ indicates whether resolving a
    -- multi-sampled sRGB format to single-sampled sRGB by a weighted average
    -- converts the samples to linear before averaging. This applies to both
    -- attachment resolves in a render pass and standalone resolve commands. If
    -- 'Vulkan.Core10.FundamentalTypes.TRUE', implementation always converts to
    -- linear before averaging unless overridden. If
    -- 'Vulkan.Core10.FundamentalTypes.FALSE', implementation never converts to
    -- linear before averaging unless overridden.
    PhysicalDeviceMaintenance10PropertiesKHR -> Bool
resolveSrgbFormatAppliesTransferFunction :: Bool
  , -- | #limits-resolveSrgbFormatSupportsTransferFunctionControl#
    -- @resolveSrgbFormatSupportsTransferFunctionControl@ indicates whether the
    -- implementation supports overriding the default behavior in
    -- @resolveSrgbFormatAppliesTransferFunction@ in render passes and
    -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdResolveImage2'.
    PhysicalDeviceMaintenance10PropertiesKHR -> Bool
resolveSrgbFormatSupportsTransferFunctionControl :: Bool
  }
  deriving (Typeable, PhysicalDeviceMaintenance10PropertiesKHR
-> PhysicalDeviceMaintenance10PropertiesKHR -> Bool
(PhysicalDeviceMaintenance10PropertiesKHR
 -> PhysicalDeviceMaintenance10PropertiesKHR -> Bool)
-> (PhysicalDeviceMaintenance10PropertiesKHR
    -> PhysicalDeviceMaintenance10PropertiesKHR -> Bool)
-> Eq PhysicalDeviceMaintenance10PropertiesKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceMaintenance10PropertiesKHR
-> PhysicalDeviceMaintenance10PropertiesKHR -> Bool
== :: PhysicalDeviceMaintenance10PropertiesKHR
-> PhysicalDeviceMaintenance10PropertiesKHR -> Bool
$c/= :: PhysicalDeviceMaintenance10PropertiesKHR
-> PhysicalDeviceMaintenance10PropertiesKHR -> Bool
/= :: PhysicalDeviceMaintenance10PropertiesKHR
-> PhysicalDeviceMaintenance10PropertiesKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceMaintenance10PropertiesKHR)
#endif
deriving instance Show PhysicalDeviceMaintenance10PropertiesKHR

instance ToCStruct PhysicalDeviceMaintenance10PropertiesKHR where
  withCStruct :: forall b.
PhysicalDeviceMaintenance10PropertiesKHR
-> (Ptr PhysicalDeviceMaintenance10PropertiesKHR -> IO b) -> IO b
withCStruct PhysicalDeviceMaintenance10PropertiesKHR
x Ptr PhysicalDeviceMaintenance10PropertiesKHR -> IO b
f = Int
-> (Ptr PhysicalDeviceMaintenance10PropertiesKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr PhysicalDeviceMaintenance10PropertiesKHR -> IO b) -> IO b)
-> (Ptr PhysicalDeviceMaintenance10PropertiesKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceMaintenance10PropertiesKHR
p -> Ptr PhysicalDeviceMaintenance10PropertiesKHR
-> PhysicalDeviceMaintenance10PropertiesKHR -> IO b -> IO b
forall b.
Ptr PhysicalDeviceMaintenance10PropertiesKHR
-> PhysicalDeviceMaintenance10PropertiesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMaintenance10PropertiesKHR
p PhysicalDeviceMaintenance10PropertiesKHR
x (Ptr PhysicalDeviceMaintenance10PropertiesKHR -> IO b
f Ptr PhysicalDeviceMaintenance10PropertiesKHR
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceMaintenance10PropertiesKHR
-> PhysicalDeviceMaintenance10PropertiesKHR -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMaintenance10PropertiesKHR
p PhysicalDeviceMaintenance10PropertiesKHR{Bool
rgba4OpaqueBlackSwizzled :: PhysicalDeviceMaintenance10PropertiesKHR -> Bool
resolveSrgbFormatAppliesTransferFunction :: PhysicalDeviceMaintenance10PropertiesKHR -> Bool
resolveSrgbFormatSupportsTransferFunctionControl :: PhysicalDeviceMaintenance10PropertiesKHR -> Bool
rgba4OpaqueBlackSwizzled :: Bool
resolveSrgbFormatAppliesTransferFunction :: Bool
resolveSrgbFormatSupportsTransferFunctionControl :: Bool
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance10PropertiesKHR
p Ptr PhysicalDeviceMaintenance10PropertiesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance10PropertiesKHR
p Ptr PhysicalDeviceMaintenance10PropertiesKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance10PropertiesKHR
p Ptr PhysicalDeviceMaintenance10PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
rgba4OpaqueBlackSwizzled))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance10PropertiesKHR
p Ptr PhysicalDeviceMaintenance10PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
resolveSrgbFormatAppliesTransferFunction))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance10PropertiesKHR
p Ptr PhysicalDeviceMaintenance10PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
resolveSrgbFormatSupportsTransferFunctionControl))
    IO b
f
  cStructSize :: Int
cStructSize = Int
32
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceMaintenance10PropertiesKHR -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceMaintenance10PropertiesKHR
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance10PropertiesKHR
p Ptr PhysicalDeviceMaintenance10PropertiesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance10PropertiesKHR
p Ptr PhysicalDeviceMaintenance10PropertiesKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance10PropertiesKHR
p Ptr PhysicalDeviceMaintenance10PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance10PropertiesKHR
p Ptr PhysicalDeviceMaintenance10PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance10PropertiesKHR
p Ptr PhysicalDeviceMaintenance10PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    IO b
f

instance FromCStruct PhysicalDeviceMaintenance10PropertiesKHR where
  peekCStruct :: Ptr PhysicalDeviceMaintenance10PropertiesKHR
-> IO PhysicalDeviceMaintenance10PropertiesKHR
peekCStruct Ptr PhysicalDeviceMaintenance10PropertiesKHR
p = do
    rgba4OpaqueBlackSwizzled <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceMaintenance10PropertiesKHR
p Ptr PhysicalDeviceMaintenance10PropertiesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    resolveSrgbFormatAppliesTransferFunction <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
    resolveSrgbFormatSupportsTransferFunctionControl <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
    pure $ PhysicalDeviceMaintenance10PropertiesKHR
             (bool32ToBool rgba4OpaqueBlackSwizzled)
             (bool32ToBool resolveSrgbFormatAppliesTransferFunction)
             (bool32ToBool resolveSrgbFormatSupportsTransferFunctionControl)

instance Storable PhysicalDeviceMaintenance10PropertiesKHR where
  sizeOf :: PhysicalDeviceMaintenance10PropertiesKHR -> Int
sizeOf ~PhysicalDeviceMaintenance10PropertiesKHR
_ = Int
32
  alignment :: PhysicalDeviceMaintenance10PropertiesKHR -> Int
alignment ~PhysicalDeviceMaintenance10PropertiesKHR
_ = Int
8
  peek :: Ptr PhysicalDeviceMaintenance10PropertiesKHR
-> IO PhysicalDeviceMaintenance10PropertiesKHR
peek = Ptr PhysicalDeviceMaintenance10PropertiesKHR
-> IO PhysicalDeviceMaintenance10PropertiesKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr PhysicalDeviceMaintenance10PropertiesKHR
-> PhysicalDeviceMaintenance10PropertiesKHR -> IO ()
poke Ptr PhysicalDeviceMaintenance10PropertiesKHR
ptr PhysicalDeviceMaintenance10PropertiesKHR
poked = Ptr PhysicalDeviceMaintenance10PropertiesKHR
-> PhysicalDeviceMaintenance10PropertiesKHR -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceMaintenance10PropertiesKHR
-> PhysicalDeviceMaintenance10PropertiesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMaintenance10PropertiesKHR
ptr PhysicalDeviceMaintenance10PropertiesKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero PhysicalDeviceMaintenance10PropertiesKHR where
  zero :: PhysicalDeviceMaintenance10PropertiesKHR
zero = Bool -> Bool -> Bool -> PhysicalDeviceMaintenance10PropertiesKHR
PhysicalDeviceMaintenance10PropertiesKHR
           Bool
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero
           Bool
forall a. Zero a => a
zero


-- | VkPhysicalDeviceMaintenance10FeaturesKHR - Structure describing whether
-- the implementation supports maintenance10 functionality
--
-- = Members
--
-- This structure describes the following feature:
--
-- = Description
--
-- If the 'PhysicalDeviceMaintenance10FeaturesKHR' structure is included in
-- the @pNext@ chain of the
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
-- structure passed to
-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
-- it is filled in to indicate whether each corresponding feature is
-- supported. If the application wishes to use a
-- 'Vulkan.Core10.Handles.Device' with any features described by
-- 'PhysicalDeviceMaintenance10FeaturesKHR', it /must/ add an instance of
-- the structure, with the desired feature members set to
-- 'Vulkan.Core10.FundamentalTypes.TRUE', to the @pNext@ chain of
-- 'Vulkan.Core10.Device.DeviceCreateInfo' when creating the
-- 'Vulkan.Core10.Handles.Device'.
--
-- == Valid Usage (Implicit)
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data PhysicalDeviceMaintenance10FeaturesKHR = PhysicalDeviceMaintenance10FeaturesKHR
  { -- | #features-maintenance10# @maintenance10@ indicates that the
    -- implementation supports the following:
    --
    -- -   New image format feature bits that indicate support for copying
    --     depth or stencil aspects using non-graphics queue families
    --
    -- -   If
    --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state3.cmdSetSampleMaskEXT'
    --     is called with @pSampleMask@ set to @NULL@, it is treated as if the
    --     mask has all bits set to @1@.
    --
    -- -   Add 'cmdEndRendering2KHR' as an extensible version of
    --     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdEndRendering'
    --
    -- -   Add input attachment information to dynamic rendering
    --
    -- -   Require that vertex inputs follow sRGB encoding when those formats
    --     are used, instead of being underspecified.
    --
    -- -   Add a query to determine if sRGB images are resolved in nonlinear or
    --     linear space by default
    --
    -- -   Add an optional feature to allow applications to override the
    --     default sRGB resolve behavior
    --
    -- -   Add resolve mode and depth-stencil resolve support to
    --     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdResolveImage2'
    --     to bring it in-line with render pass attachment resolves
    PhysicalDeviceMaintenance10FeaturesKHR -> Bool
maintenance10 :: Bool }
  deriving (Typeable, PhysicalDeviceMaintenance10FeaturesKHR
-> PhysicalDeviceMaintenance10FeaturesKHR -> Bool
(PhysicalDeviceMaintenance10FeaturesKHR
 -> PhysicalDeviceMaintenance10FeaturesKHR -> Bool)
-> (PhysicalDeviceMaintenance10FeaturesKHR
    -> PhysicalDeviceMaintenance10FeaturesKHR -> Bool)
-> Eq PhysicalDeviceMaintenance10FeaturesKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PhysicalDeviceMaintenance10FeaturesKHR
-> PhysicalDeviceMaintenance10FeaturesKHR -> Bool
== :: PhysicalDeviceMaintenance10FeaturesKHR
-> PhysicalDeviceMaintenance10FeaturesKHR -> Bool
$c/= :: PhysicalDeviceMaintenance10FeaturesKHR
-> PhysicalDeviceMaintenance10FeaturesKHR -> Bool
/= :: PhysicalDeviceMaintenance10FeaturesKHR
-> PhysicalDeviceMaintenance10FeaturesKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (PhysicalDeviceMaintenance10FeaturesKHR)
#endif
deriving instance Show PhysicalDeviceMaintenance10FeaturesKHR

instance ToCStruct PhysicalDeviceMaintenance10FeaturesKHR where
  withCStruct :: forall b.
PhysicalDeviceMaintenance10FeaturesKHR
-> (Ptr PhysicalDeviceMaintenance10FeaturesKHR -> IO b) -> IO b
withCStruct PhysicalDeviceMaintenance10FeaturesKHR
x Ptr PhysicalDeviceMaintenance10FeaturesKHR -> IO b
f = Int -> (Ptr PhysicalDeviceMaintenance10FeaturesKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr PhysicalDeviceMaintenance10FeaturesKHR -> IO b) -> IO b)
-> (Ptr PhysicalDeviceMaintenance10FeaturesKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr PhysicalDeviceMaintenance10FeaturesKHR
p -> Ptr PhysicalDeviceMaintenance10FeaturesKHR
-> PhysicalDeviceMaintenance10FeaturesKHR -> IO b -> IO b
forall b.
Ptr PhysicalDeviceMaintenance10FeaturesKHR
-> PhysicalDeviceMaintenance10FeaturesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMaintenance10FeaturesKHR
p PhysicalDeviceMaintenance10FeaturesKHR
x (Ptr PhysicalDeviceMaintenance10FeaturesKHR -> IO b
f Ptr PhysicalDeviceMaintenance10FeaturesKHR
p)
  pokeCStruct :: forall b.
Ptr PhysicalDeviceMaintenance10FeaturesKHR
-> PhysicalDeviceMaintenance10FeaturesKHR -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMaintenance10FeaturesKHR
p PhysicalDeviceMaintenance10FeaturesKHR{Bool
maintenance10 :: PhysicalDeviceMaintenance10FeaturesKHR -> Bool
maintenance10 :: Bool
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance10FeaturesKHR
p Ptr PhysicalDeviceMaintenance10FeaturesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance10FeaturesKHR
p Ptr PhysicalDeviceMaintenance10FeaturesKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance10FeaturesKHR
p Ptr PhysicalDeviceMaintenance10FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
maintenance10))
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b.
Ptr PhysicalDeviceMaintenance10FeaturesKHR -> IO b -> IO b
pokeZeroCStruct Ptr PhysicalDeviceMaintenance10FeaturesKHR
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance10FeaturesKHR
p Ptr PhysicalDeviceMaintenance10FeaturesKHR
-> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance10FeaturesKHR
p Ptr PhysicalDeviceMaintenance10FeaturesKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr Bool32 -> Bool32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr PhysicalDeviceMaintenance10FeaturesKHR
p Ptr PhysicalDeviceMaintenance10FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32)) (Bool -> Bool32
boolToBool32 (Bool
forall a. Zero a => a
zero))
    IO b
f

instance FromCStruct PhysicalDeviceMaintenance10FeaturesKHR where
  peekCStruct :: Ptr PhysicalDeviceMaintenance10FeaturesKHR
-> IO PhysicalDeviceMaintenance10FeaturesKHR
peekCStruct Ptr PhysicalDeviceMaintenance10FeaturesKHR
p = do
    maintenance10 <- forall a. Storable a => Ptr a -> IO a
peek @Bool32 ((Ptr PhysicalDeviceMaintenance10FeaturesKHR
p Ptr PhysicalDeviceMaintenance10FeaturesKHR -> Int -> Ptr Bool32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Bool32))
    pure $ PhysicalDeviceMaintenance10FeaturesKHR
             (bool32ToBool maintenance10)

instance Storable PhysicalDeviceMaintenance10FeaturesKHR where
  sizeOf :: PhysicalDeviceMaintenance10FeaturesKHR -> Int
sizeOf ~PhysicalDeviceMaintenance10FeaturesKHR
_ = Int
24
  alignment :: PhysicalDeviceMaintenance10FeaturesKHR -> Int
alignment ~PhysicalDeviceMaintenance10FeaturesKHR
_ = Int
8
  peek :: Ptr PhysicalDeviceMaintenance10FeaturesKHR
-> IO PhysicalDeviceMaintenance10FeaturesKHR
peek = Ptr PhysicalDeviceMaintenance10FeaturesKHR
-> IO PhysicalDeviceMaintenance10FeaturesKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr PhysicalDeviceMaintenance10FeaturesKHR
-> PhysicalDeviceMaintenance10FeaturesKHR -> IO ()
poke Ptr PhysicalDeviceMaintenance10FeaturesKHR
ptr PhysicalDeviceMaintenance10FeaturesKHR
poked = Ptr PhysicalDeviceMaintenance10FeaturesKHR
-> PhysicalDeviceMaintenance10FeaturesKHR -> IO () -> IO ()
forall b.
Ptr PhysicalDeviceMaintenance10FeaturesKHR
-> PhysicalDeviceMaintenance10FeaturesKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr PhysicalDeviceMaintenance10FeaturesKHR
ptr PhysicalDeviceMaintenance10FeaturesKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero PhysicalDeviceMaintenance10FeaturesKHR where
  zero :: PhysicalDeviceMaintenance10FeaturesKHR
zero = Bool -> PhysicalDeviceMaintenance10FeaturesKHR
PhysicalDeviceMaintenance10FeaturesKHR
           Bool
forall a. Zero a => a
zero


-- | VkRenderingEndInfoKHR - Structure specifying render pass end information
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-VkRenderingEndInfoKHR-sType-sType# @sType@ /must/ be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_END_INFO_KHR'
--
-- -   #VUID-VkRenderingEndInfoKHR-pNext-pNext# @pNext@ /must/ be @NULL@ or
--     a pointer to a valid instance of
--     'Vulkan.Extensions.VK_EXT_fragment_density_map_offset.RenderPassFragmentDensityMapOffsetEndInfoEXT'
--
-- -   #VUID-VkRenderingEndInfoKHR-sType-unique# The @sType@ value of each
--     structure in the @pNext@ chain /must/ be unique
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map_offset VK_EXT_fragment_density_map_offset>,
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>,
-- 'Vulkan.Core10.Enums.StructureType.StructureType',
-- 'cmdEndRendering2KHR', 'cmdEndRendering2KHR'
data RenderingEndInfoKHR (es :: [Type]) = RenderingEndInfoKHR
  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
    forall (es :: [*]). RenderingEndInfoKHR es -> Chain es
next :: Chain es }
  deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (RenderingEndInfoKHR (es :: [Type]))
#endif
deriving instance Show (Chain es) => Show (RenderingEndInfoKHR es)

instance Extensible RenderingEndInfoKHR where
  extensibleTypeName :: String
extensibleTypeName = String
"RenderingEndInfoKHR"
  setNext :: forall (ds :: [*]) (es :: [*]).
RenderingEndInfoKHR ds -> Chain es -> RenderingEndInfoKHR es
setNext RenderingEndInfoKHR ds
_ Chain es
next' = RenderingEndInfoKHR{next :: Chain es
next = Chain es
next'}
  getNext :: forall (es :: [*]). RenderingEndInfoKHR es -> Chain es
getNext RenderingEndInfoKHR{Chain es
next :: forall (es :: [*]). RenderingEndInfoKHR es -> Chain es
next :: Chain es
..} = Chain es
next
  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderingEndInfoKHR e => b) -> Maybe b
  extends :: forall e b (proxy :: * -> *).
Typeable e =>
proxy e -> (Extends RenderingEndInfoKHR e => b) -> Maybe b
extends proxy e
_ Extends RenderingEndInfoKHR e => b
f
    | Just e :~: RenderPassFragmentDensityMapOffsetEndInfoEXT
Refl <- forall {k} (a :: k) (b :: k).
(Typeable a, Typeable b) =>
Maybe (a :~: b)
forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
eqT @e @RenderPassFragmentDensityMapOffsetEndInfoEXT = b -> Maybe b
forall a. a -> Maybe a
Just b
Extends RenderingEndInfoKHR e => b
f
    | Bool
otherwise = Maybe b
forall a. Maybe a
Nothing

instance ( Extendss RenderingEndInfoKHR es
         , PokeChain es ) => ToCStruct (RenderingEndInfoKHR es) where
  withCStruct :: forall b.
RenderingEndInfoKHR es
-> (Ptr (RenderingEndInfoKHR es) -> IO b) -> IO b
withCStruct RenderingEndInfoKHR es
x Ptr (RenderingEndInfoKHR es) -> IO b
f = Int -> (Ptr (RenderingEndInfoKHR es) -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
16 ((Ptr (RenderingEndInfoKHR es) -> IO b) -> IO b)
-> (Ptr (RenderingEndInfoKHR es) -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr (RenderingEndInfoKHR es)
p -> Ptr (RenderingEndInfoKHR es)
-> RenderingEndInfoKHR es -> IO b -> IO b
forall b.
Ptr (RenderingEndInfoKHR es)
-> RenderingEndInfoKHR es -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr (RenderingEndInfoKHR es)
p RenderingEndInfoKHR es
x (Ptr (RenderingEndInfoKHR es) -> IO b
f Ptr (RenderingEndInfoKHR es)
p)
  pokeCStruct :: forall b.
Ptr (RenderingEndInfoKHR es)
-> RenderingEndInfoKHR es -> IO b -> IO b
pokeCStruct Ptr (RenderingEndInfoKHR es)
p RenderingEndInfoKHR{Chain es
next :: forall (es :: [*]). RenderingEndInfoKHR es -> Chain es
next :: Chain es
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RenderingEndInfoKHR es)
p Ptr (RenderingEndInfoKHR es) -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RENDERING_END_INFO_KHR)
    pNext'' <- (Ptr (Chain es) -> Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> ContT b IO a -> ContT b IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
    -> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ Chain es -> (Ptr (Chain es) -> IO b) -> IO b
forall (es :: [*]) a.
PokeChain es =>
Chain es -> (Ptr (Chain es) -> IO a) -> IO a
forall a. Chain es -> (Ptr (Chain es) -> IO a) -> IO a
withChain (Chain es
next)
    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
    lift $ f
  cStructSize :: Int
cStructSize = Int
16
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr (RenderingEndInfoKHR es) -> IO b -> IO b
pokeZeroCStruct Ptr (RenderingEndInfoKHR es)
p IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
    IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr (RenderingEndInfoKHR es)
p Ptr (RenderingEndInfoKHR es) -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RENDERING_END_INFO_KHR)
    pNext' <- (Ptr (Chain es) -> Ptr ())
-> ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> ContT b IO a -> ContT b IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Ptr (Chain es) -> Ptr ()
forall a b. Ptr a -> Ptr b
castPtr (ContT b IO (Ptr (Chain es)) -> ContT b IO (Ptr ()))
-> (((Ptr (Chain es) -> IO b) -> IO b)
    -> ContT b IO (Ptr (Chain es)))
-> ((Ptr (Chain es) -> IO b) -> IO b)
-> ContT b IO (Ptr ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr (Chain es))
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ()))
-> ((Ptr (Chain es) -> IO b) -> IO b) -> ContT b IO (Ptr ())
forall a b. (a -> b) -> a -> b
$ forall (es :: [*]) a.
PokeChain es =>
(Ptr (Chain es) -> IO a) -> IO a
withZeroChain @es
    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
    lift $ f

instance ( Extendss RenderingEndInfoKHR es
         , PeekChain es ) => FromCStruct (RenderingEndInfoKHR es) where
  peekCStruct :: Ptr (RenderingEndInfoKHR es) -> IO (RenderingEndInfoKHR es)
peekCStruct Ptr (RenderingEndInfoKHR es)
p = do
    pNext <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr ()) ((Ptr (RenderingEndInfoKHR es)
p Ptr (RenderingEndInfoKHR es) -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ())))
    next <- peekChain (castPtr pNext)
    pure $ RenderingEndInfoKHR
             next

instance es ~ '[] => Zero (RenderingEndInfoKHR es) where
  zero :: RenderingEndInfoKHR es
zero = Chain es -> RenderingEndInfoKHR es
forall (es :: [*]). Chain es -> RenderingEndInfoKHR es
RenderingEndInfoKHR
           ()


-- | VkRenderingAttachmentFlagsInfoKHR - Structure specifying flags extending
-- a rendering attachment
--
-- == Valid Usage
--
-- -   #VUID-VkRenderingAttachmentFlagsInfoKHR-flags-11755# @flags@ /must/
--     not include 'RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR'
--     if the
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-dynamicRenderingLocalRead dynamicRenderingLocalRead>
--     feature is not enabled
--
-- -   #VUID-VkRenderingAttachmentFlagsInfoKHR-flags-11756# If @flags@
--     includes
--     'RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR',
--     @flags@ /must/ not include
--     'RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
--
-- -   #VUID-VkRenderingAttachmentFlagsInfoKHR-flags-11757# If @flags@
--     includes
--     'RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR' or
--     'RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR',
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-resolveSrgbFormatSupportsTransferFunctionControl resolveSrgbFormatSupportsTransferFunctionControl>
--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-VkRenderingAttachmentFlagsInfoKHR-sType-sType# @sType@ /must/
--     be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR'
--
-- -   #VUID-VkRenderingAttachmentFlagsInfoKHR-flags-parameter# @flags@
--     /must/ be a valid combination of 'RenderingAttachmentFlagBitsKHR'
--     values
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>,
-- 'RenderingAttachmentFlagsKHR',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data RenderingAttachmentFlagsInfoKHR = RenderingAttachmentFlagsInfoKHR
  { -- | @flags@ is a bitmask of 'RenderingAttachmentFlagsKHR'
    RenderingAttachmentFlagsInfoKHR -> RenderingAttachmentFlagsKHR
flags :: RenderingAttachmentFlagsKHR }
  deriving (Typeable, RenderingAttachmentFlagsInfoKHR
-> RenderingAttachmentFlagsInfoKHR -> Bool
(RenderingAttachmentFlagsInfoKHR
 -> RenderingAttachmentFlagsInfoKHR -> Bool)
-> (RenderingAttachmentFlagsInfoKHR
    -> RenderingAttachmentFlagsInfoKHR -> Bool)
-> Eq RenderingAttachmentFlagsInfoKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: RenderingAttachmentFlagsInfoKHR
-> RenderingAttachmentFlagsInfoKHR -> Bool
== :: RenderingAttachmentFlagsInfoKHR
-> RenderingAttachmentFlagsInfoKHR -> Bool
$c/= :: RenderingAttachmentFlagsInfoKHR
-> RenderingAttachmentFlagsInfoKHR -> Bool
/= :: RenderingAttachmentFlagsInfoKHR
-> RenderingAttachmentFlagsInfoKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (RenderingAttachmentFlagsInfoKHR)
#endif
deriving instance Show RenderingAttachmentFlagsInfoKHR

instance ToCStruct RenderingAttachmentFlagsInfoKHR where
  withCStruct :: forall b.
RenderingAttachmentFlagsInfoKHR
-> (Ptr RenderingAttachmentFlagsInfoKHR -> IO b) -> IO b
withCStruct RenderingAttachmentFlagsInfoKHR
x Ptr RenderingAttachmentFlagsInfoKHR -> IO b
f = Int -> (Ptr RenderingAttachmentFlagsInfoKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
24 ((Ptr RenderingAttachmentFlagsInfoKHR -> IO b) -> IO b)
-> (Ptr RenderingAttachmentFlagsInfoKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr RenderingAttachmentFlagsInfoKHR
p -> Ptr RenderingAttachmentFlagsInfoKHR
-> RenderingAttachmentFlagsInfoKHR -> IO b -> IO b
forall b.
Ptr RenderingAttachmentFlagsInfoKHR
-> RenderingAttachmentFlagsInfoKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr RenderingAttachmentFlagsInfoKHR
p RenderingAttachmentFlagsInfoKHR
x (Ptr RenderingAttachmentFlagsInfoKHR -> IO b
f Ptr RenderingAttachmentFlagsInfoKHR
p)
  pokeCStruct :: forall b.
Ptr RenderingAttachmentFlagsInfoKHR
-> RenderingAttachmentFlagsInfoKHR -> IO b -> IO b
pokeCStruct Ptr RenderingAttachmentFlagsInfoKHR
p RenderingAttachmentFlagsInfoKHR{RenderingAttachmentFlagsKHR
flags :: RenderingAttachmentFlagsInfoKHR -> RenderingAttachmentFlagsKHR
flags :: RenderingAttachmentFlagsKHR
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingAttachmentFlagsInfoKHR
p Ptr RenderingAttachmentFlagsInfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingAttachmentFlagsInfoKHR
p Ptr RenderingAttachmentFlagsInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingAttachmentFlagsInfoKHR
p Ptr RenderingAttachmentFlagsInfoKHR
-> Int -> Ptr RenderingAttachmentFlagsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr RenderingAttachmentFlagsKHR)) (RenderingAttachmentFlagsKHR
flags)
    IO b
f
  cStructSize :: Int
cStructSize = Int
24
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr RenderingAttachmentFlagsInfoKHR -> IO b -> IO b
pokeZeroCStruct Ptr RenderingAttachmentFlagsInfoKHR
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingAttachmentFlagsInfoKHR
p Ptr RenderingAttachmentFlagsInfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr RenderingAttachmentFlagsInfoKHR
p Ptr RenderingAttachmentFlagsInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    IO b
f

instance FromCStruct RenderingAttachmentFlagsInfoKHR where
  peekCStruct :: Ptr RenderingAttachmentFlagsInfoKHR
-> IO RenderingAttachmentFlagsInfoKHR
peekCStruct Ptr RenderingAttachmentFlagsInfoKHR
p = do
    flags <- forall a. Storable a => Ptr a -> IO a
peek @RenderingAttachmentFlagsKHR ((Ptr RenderingAttachmentFlagsInfoKHR
p Ptr RenderingAttachmentFlagsInfoKHR
-> Int -> Ptr RenderingAttachmentFlagsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr RenderingAttachmentFlagsKHR))
    pure $ RenderingAttachmentFlagsInfoKHR
             flags

instance Storable RenderingAttachmentFlagsInfoKHR where
  sizeOf :: RenderingAttachmentFlagsInfoKHR -> Int
sizeOf ~RenderingAttachmentFlagsInfoKHR
_ = Int
24
  alignment :: RenderingAttachmentFlagsInfoKHR -> Int
alignment ~RenderingAttachmentFlagsInfoKHR
_ = Int
8
  peek :: Ptr RenderingAttachmentFlagsInfoKHR
-> IO RenderingAttachmentFlagsInfoKHR
peek = Ptr RenderingAttachmentFlagsInfoKHR
-> IO RenderingAttachmentFlagsInfoKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr RenderingAttachmentFlagsInfoKHR
-> RenderingAttachmentFlagsInfoKHR -> IO ()
poke Ptr RenderingAttachmentFlagsInfoKHR
ptr RenderingAttachmentFlagsInfoKHR
poked = Ptr RenderingAttachmentFlagsInfoKHR
-> RenderingAttachmentFlagsInfoKHR -> IO () -> IO ()
forall b.
Ptr RenderingAttachmentFlagsInfoKHR
-> RenderingAttachmentFlagsInfoKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr RenderingAttachmentFlagsInfoKHR
ptr RenderingAttachmentFlagsInfoKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero RenderingAttachmentFlagsInfoKHR where
  zero :: RenderingAttachmentFlagsInfoKHR
zero = RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsInfoKHR
RenderingAttachmentFlagsInfoKHR
           RenderingAttachmentFlagsKHR
forall a. Zero a => a
zero


-- | VkResolveImageModeInfoKHR - Structure specifying additional control for
-- VkResolveImageInfo2
--
-- == Valid Usage
--
-- -   #VUID-VkResolveImageModeInfoKHR-flags-10995# If @flags@ includes
--     'RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR', @flags@ /must/ not
--     include 'RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
--
-- -   #VUID-VkResolveImageModeInfoKHR-flags-10996# If @flags@ includes
--     'RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR' or
--     'RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR',
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#limits-resolveSrgbFormatSupportsTransferFunctionControl resolveSrgbFormatSupportsTransferFunctionControl>
--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
--
-- -   #VUID-VkResolveImageModeInfoKHR-flags-10997# If @flags@ includes
--     'RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR' or
--     'RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR', @resolveMode@
--     /must/ be equal to
--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_AVERAGE_BIT'
--
-- == Valid Usage (Implicit)
--
-- -   #VUID-VkResolveImageModeInfoKHR-sType-sType# @sType@ /must/ be
--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR'
--
-- -   #VUID-VkResolveImageModeInfoKHR-flags-parameter# @flags@ /must/ be a
--     valid combination of 'ResolveImageFlagBitsKHR' values
--
-- -   #VUID-VkResolveImageModeInfoKHR-resolveMode-parameter# If
--     @resolveMode@ is not @0@, @resolveMode@ /must/ be a valid
--     'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value
--
-- -   #VUID-VkResolveImageModeInfoKHR-stencilResolveMode-parameter# If
--     @stencilResolveMode@ is not @0@, @stencilResolveMode@ /must/ be a
--     valid 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits'
--     value
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>,
-- 'ResolveImageFlagsKHR',
-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits',
-- 'Vulkan.Core10.Enums.StructureType.StructureType'
data ResolveImageModeInfoKHR = ResolveImageModeInfoKHR
  { -- | @flags@ is a bitmask of 'ResolveImageFlagBitsKHR'.
    ResolveImageModeInfoKHR -> ResolveImageFlagsKHR
flags :: ResolveImageFlagsKHR
  , -- | @resolveMode@ is a
    -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value
    -- defining how @srcImage@ will be resolved into @dstImage@ when resolving
    -- non-stencil values.
    ResolveImageModeInfoKHR -> ResolveModeFlagBits
resolveMode :: ResolveModeFlagBits
  , -- | @stencilResolveMode@ is a
    -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value
    -- defining how @srcImage@ will be resolved into @dstImage@ when resolving
    -- stencil values.
    ResolveImageModeInfoKHR -> ResolveModeFlagBits
stencilResolveMode :: ResolveModeFlagBits
  }
  deriving (Typeable, ResolveImageModeInfoKHR -> ResolveImageModeInfoKHR -> Bool
(ResolveImageModeInfoKHR -> ResolveImageModeInfoKHR -> Bool)
-> (ResolveImageModeInfoKHR -> ResolveImageModeInfoKHR -> Bool)
-> Eq ResolveImageModeInfoKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ResolveImageModeInfoKHR -> ResolveImageModeInfoKHR -> Bool
== :: ResolveImageModeInfoKHR -> ResolveImageModeInfoKHR -> Bool
$c/= :: ResolveImageModeInfoKHR -> ResolveImageModeInfoKHR -> Bool
/= :: ResolveImageModeInfoKHR -> ResolveImageModeInfoKHR -> Bool
Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ResolveImageModeInfoKHR)
#endif
deriving instance Show ResolveImageModeInfoKHR

instance ToCStruct ResolveImageModeInfoKHR where
  withCStruct :: forall b.
ResolveImageModeInfoKHR
-> (Ptr ResolveImageModeInfoKHR -> IO b) -> IO b
withCStruct ResolveImageModeInfoKHR
x Ptr ResolveImageModeInfoKHR -> IO b
f = Int -> (Ptr ResolveImageModeInfoKHR -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr ResolveImageModeInfoKHR -> IO b) -> IO b)
-> (Ptr ResolveImageModeInfoKHR -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr ResolveImageModeInfoKHR
p -> Ptr ResolveImageModeInfoKHR
-> ResolveImageModeInfoKHR -> IO b -> IO b
forall b.
Ptr ResolveImageModeInfoKHR
-> ResolveImageModeInfoKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ResolveImageModeInfoKHR
p ResolveImageModeInfoKHR
x (Ptr ResolveImageModeInfoKHR -> IO b
f Ptr ResolveImageModeInfoKHR
p)
  pokeCStruct :: forall b.
Ptr ResolveImageModeInfoKHR
-> ResolveImageModeInfoKHR -> IO b -> IO b
pokeCStruct Ptr ResolveImageModeInfoKHR
p ResolveImageModeInfoKHR{ResolveModeFlagBits
ResolveImageFlagsKHR
flags :: ResolveImageModeInfoKHR -> ResolveImageFlagsKHR
resolveMode :: ResolveImageModeInfoKHR -> ResolveModeFlagBits
stencilResolveMode :: ResolveImageModeInfoKHR -> ResolveModeFlagBits
flags :: ResolveImageFlagsKHR
resolveMode :: ResolveModeFlagBits
stencilResolveMode :: ResolveModeFlagBits
..} IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ResolveImageModeInfoKHR
p Ptr ResolveImageModeInfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ResolveImageModeInfoKHR
p Ptr ResolveImageModeInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    Ptr ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ResolveImageModeInfoKHR
p Ptr ResolveImageModeInfoKHR -> Int -> Ptr ResolveImageFlagsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ResolveImageFlagsKHR)) (ResolveImageFlagsKHR
flags)
    Ptr ResolveModeFlagBits -> ResolveModeFlagBits -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ResolveImageModeInfoKHR
p Ptr ResolveImageModeInfoKHR -> Int -> Ptr ResolveModeFlagBits
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr ResolveModeFlagBits)) (ResolveModeFlagBits
resolveMode)
    Ptr ResolveModeFlagBits -> ResolveModeFlagBits -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ResolveImageModeInfoKHR
p Ptr ResolveImageModeInfoKHR -> Int -> Ptr ResolveModeFlagBits
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr ResolveModeFlagBits)) (ResolveModeFlagBits
stencilResolveMode)
    IO b
f
  cStructSize :: Int
cStructSize = Int
32
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr ResolveImageModeInfoKHR -> IO b -> IO b
pokeZeroCStruct Ptr ResolveImageModeInfoKHR
p IO b
f = do
    Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ResolveImageModeInfoKHR
p Ptr ResolveImageModeInfoKHR -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR)
    Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ResolveImageModeInfoKHR
p Ptr ResolveImageModeInfoKHR -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
    IO b
f

instance FromCStruct ResolveImageModeInfoKHR where
  peekCStruct :: Ptr ResolveImageModeInfoKHR -> IO ResolveImageModeInfoKHR
peekCStruct Ptr ResolveImageModeInfoKHR
p = do
    flags <- forall a. Storable a => Ptr a -> IO a
peek @ResolveImageFlagsKHR ((Ptr ResolveImageModeInfoKHR
p Ptr ResolveImageModeInfoKHR -> Int -> Ptr ResolveImageFlagsKHR
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr ResolveImageFlagsKHR))
    resolveMode <- peek @ResolveModeFlagBits ((p `plusPtr` 20 :: Ptr ResolveModeFlagBits))
    stencilResolveMode <- peek @ResolveModeFlagBits ((p `plusPtr` 24 :: Ptr ResolveModeFlagBits))
    pure $ ResolveImageModeInfoKHR
             flags resolveMode stencilResolveMode

instance Storable ResolveImageModeInfoKHR where
  sizeOf :: ResolveImageModeInfoKHR -> Int
sizeOf ~ResolveImageModeInfoKHR
_ = Int
32
  alignment :: ResolveImageModeInfoKHR -> Int
alignment ~ResolveImageModeInfoKHR
_ = Int
8
  peek :: Ptr ResolveImageModeInfoKHR -> IO ResolveImageModeInfoKHR
peek = Ptr ResolveImageModeInfoKHR -> IO ResolveImageModeInfoKHR
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr ResolveImageModeInfoKHR -> ResolveImageModeInfoKHR -> IO ()
poke Ptr ResolveImageModeInfoKHR
ptr ResolveImageModeInfoKHR
poked = Ptr ResolveImageModeInfoKHR
-> ResolveImageModeInfoKHR -> IO () -> IO ()
forall b.
Ptr ResolveImageModeInfoKHR
-> ResolveImageModeInfoKHR -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ResolveImageModeInfoKHR
ptr ResolveImageModeInfoKHR
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

instance Zero ResolveImageModeInfoKHR where
  zero :: ResolveImageModeInfoKHR
zero = ResolveImageFlagsKHR
-> ResolveModeFlagBits
-> ResolveModeFlagBits
-> ResolveImageModeInfoKHR
ResolveImageModeInfoKHR
           ResolveImageFlagsKHR
forall a. Zero a => a
zero
           ResolveModeFlagBits
forall a. Zero a => a
zero
           ResolveModeFlagBits
forall a. Zero a => a
zero


type RenderingAttachmentFlagsKHR = RenderingAttachmentFlagBitsKHR

-- | VkRenderingAttachmentFlagBitsKHR - Bitmask specifying additional
-- properties of a rendering attachment
--
-- = Description
--
-- -   'RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR' specifies
--     that the attachment /can/ be used concurrently as both an input
--     attachment and a write-only attachment during the render pass,
--     creating a feedback loop while processing a fragment, and without a
--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT'
--     barrier separating the write attachment and input attachment usage.
--     Using this flag does not remove the general requirement to use a
--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT'
--     barrier to resolve hazards when two different fragments accesses a
--     particular attachment region, where one of them performs an
--     attachment write, and a subsequent fragment performs an input
--     attachment read. If
--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
--     is specified in the rendering info, this flag /must/ be set for an
--     attachment to be used concurrently as an input attachment and a
--     write attachment in this manner. If
--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
--     is not specified in the rendering info, this flag is implied to be
--     set for any attachment which has a combination of image layouts and
--     image view usage flags which support input attachment usage.
--
-- -   'RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR'
--     specifies that resolve operations happening to an sRGB encoded
--     attachment /must/ not convert samples from nonlinear to linear
--     before averaging.
--
-- -   'RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR'
--     specifies that resolve operations happening to an sRGB encoded
--     attachment /must/ convert samples from nonlinear to linear before
--     averaging.
--
-- 'RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR' is intended to
-- give implementations similar information as a subpass where an
-- attachment could be used as both a color attachment and input
-- attachment. Some implementations require extra work to make this
-- scenario work beyond just considering the image layouts. Implementations
-- which have no such considerations may treat this flag as a noop. The
-- primary use case for this flag is to enable feedback loops inside a
-- single shader.
--
-- Applications are encouraged to use
-- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR'
-- if
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-maintenance10 maintenance10>
-- is available and they use feedback loops with
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>.
-- Feedback loops are still allowed when not using the rendering flag, but
-- the performance implication was an oversight in the original definition
-- of
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering_local_read VK_KHR_dynamic_rendering_local_read>.
--
-- In some scenarios, resolving sRGB in nonlinear space instead of the
-- expected linear space can improve perceptual aliasing at the cost of
-- inaccurate color blending.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>,
-- 'RenderingAttachmentFlagsKHR'
newtype RenderingAttachmentFlagBitsKHR = RenderingAttachmentFlagBitsKHR Flags
  deriving newtype (RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR -> Bool
(RenderingAttachmentFlagsKHR
 -> RenderingAttachmentFlagsKHR -> Bool)
-> (RenderingAttachmentFlagsKHR
    -> RenderingAttachmentFlagsKHR -> Bool)
-> Eq RenderingAttachmentFlagsKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR -> Bool
== :: RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR -> Bool
$c/= :: RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR -> Bool
/= :: RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR -> Bool
Eq, Eq RenderingAttachmentFlagsKHR
Eq RenderingAttachmentFlagsKHR =>
(RenderingAttachmentFlagsKHR
 -> RenderingAttachmentFlagsKHR -> Ordering)
-> (RenderingAttachmentFlagsKHR
    -> RenderingAttachmentFlagsKHR -> Bool)
-> (RenderingAttachmentFlagsKHR
    -> RenderingAttachmentFlagsKHR -> Bool)
-> (RenderingAttachmentFlagsKHR
    -> RenderingAttachmentFlagsKHR -> Bool)
-> (RenderingAttachmentFlagsKHR
    -> RenderingAttachmentFlagsKHR -> Bool)
-> (RenderingAttachmentFlagsKHR
    -> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR)
-> (RenderingAttachmentFlagsKHR
    -> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR)
-> Ord RenderingAttachmentFlagsKHR
RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR -> Bool
RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> Ordering
RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR
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 :: RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> Ordering
compare :: RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> Ordering
$c< :: RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR -> Bool
< :: RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR -> Bool
$c<= :: RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR -> Bool
<= :: RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR -> Bool
$c> :: RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR -> Bool
> :: RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR -> Bool
$c>= :: RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR -> Bool
>= :: RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR -> Bool
$cmax :: RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR
max :: RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR
$cmin :: RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR
min :: RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR
Ord, Ptr RenderingAttachmentFlagsKHR -> IO RenderingAttachmentFlagsKHR
Ptr RenderingAttachmentFlagsKHR
-> Int -> IO RenderingAttachmentFlagsKHR
Ptr RenderingAttachmentFlagsKHR
-> Int -> RenderingAttachmentFlagsKHR -> IO ()
Ptr RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> IO ()
RenderingAttachmentFlagsKHR -> Int
(RenderingAttachmentFlagsKHR -> Int)
-> (RenderingAttachmentFlagsKHR -> Int)
-> (Ptr RenderingAttachmentFlagsKHR
    -> Int -> IO RenderingAttachmentFlagsKHR)
-> (Ptr RenderingAttachmentFlagsKHR
    -> Int -> RenderingAttachmentFlagsKHR -> IO ())
-> (forall b. Ptr b -> Int -> IO RenderingAttachmentFlagsKHR)
-> (forall b. Ptr b -> Int -> RenderingAttachmentFlagsKHR -> IO ())
-> (Ptr RenderingAttachmentFlagsKHR
    -> IO RenderingAttachmentFlagsKHR)
-> (Ptr RenderingAttachmentFlagsKHR
    -> RenderingAttachmentFlagsKHR -> IO ())
-> Storable RenderingAttachmentFlagsKHR
forall b. Ptr b -> Int -> IO RenderingAttachmentFlagsKHR
forall b. Ptr b -> Int -> RenderingAttachmentFlagsKHR -> 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 :: RenderingAttachmentFlagsKHR -> Int
sizeOf :: RenderingAttachmentFlagsKHR -> Int
$calignment :: RenderingAttachmentFlagsKHR -> Int
alignment :: RenderingAttachmentFlagsKHR -> Int
$cpeekElemOff :: Ptr RenderingAttachmentFlagsKHR
-> Int -> IO RenderingAttachmentFlagsKHR
peekElemOff :: Ptr RenderingAttachmentFlagsKHR
-> Int -> IO RenderingAttachmentFlagsKHR
$cpokeElemOff :: Ptr RenderingAttachmentFlagsKHR
-> Int -> RenderingAttachmentFlagsKHR -> IO ()
pokeElemOff :: Ptr RenderingAttachmentFlagsKHR
-> Int -> RenderingAttachmentFlagsKHR -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO RenderingAttachmentFlagsKHR
peekByteOff :: forall b. Ptr b -> Int -> IO RenderingAttachmentFlagsKHR
$cpokeByteOff :: forall b. Ptr b -> Int -> RenderingAttachmentFlagsKHR -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> RenderingAttachmentFlagsKHR -> IO ()
$cpeek :: Ptr RenderingAttachmentFlagsKHR -> IO RenderingAttachmentFlagsKHR
peek :: Ptr RenderingAttachmentFlagsKHR -> IO RenderingAttachmentFlagsKHR
$cpoke :: Ptr RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> IO ()
poke :: Ptr RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> IO ()
Storable, RenderingAttachmentFlagsKHR
RenderingAttachmentFlagsKHR -> Zero RenderingAttachmentFlagsKHR
forall a. a -> Zero a
$czero :: RenderingAttachmentFlagsKHR
zero :: RenderingAttachmentFlagsKHR
Zero, Eq RenderingAttachmentFlagsKHR
RenderingAttachmentFlagsKHR
Eq RenderingAttachmentFlagsKHR =>
(RenderingAttachmentFlagsKHR
 -> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR)
-> (RenderingAttachmentFlagsKHR
    -> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR)
-> (RenderingAttachmentFlagsKHR
    -> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR)
-> (RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR)
-> (RenderingAttachmentFlagsKHR
    -> Int -> RenderingAttachmentFlagsKHR)
-> (RenderingAttachmentFlagsKHR
    -> Int -> RenderingAttachmentFlagsKHR)
-> RenderingAttachmentFlagsKHR
-> (Int -> RenderingAttachmentFlagsKHR)
-> (RenderingAttachmentFlagsKHR
    -> Int -> RenderingAttachmentFlagsKHR)
-> (RenderingAttachmentFlagsKHR
    -> Int -> RenderingAttachmentFlagsKHR)
-> (RenderingAttachmentFlagsKHR
    -> Int -> RenderingAttachmentFlagsKHR)
-> (RenderingAttachmentFlagsKHR -> Int -> Bool)
-> (RenderingAttachmentFlagsKHR -> Maybe Int)
-> (RenderingAttachmentFlagsKHR -> Int)
-> (RenderingAttachmentFlagsKHR -> Bool)
-> (RenderingAttachmentFlagsKHR
    -> Int -> RenderingAttachmentFlagsKHR)
-> (RenderingAttachmentFlagsKHR
    -> Int -> RenderingAttachmentFlagsKHR)
-> (RenderingAttachmentFlagsKHR
    -> Int -> RenderingAttachmentFlagsKHR)
-> (RenderingAttachmentFlagsKHR
    -> Int -> RenderingAttachmentFlagsKHR)
-> (RenderingAttachmentFlagsKHR
    -> Int -> RenderingAttachmentFlagsKHR)
-> (RenderingAttachmentFlagsKHR
    -> Int -> RenderingAttachmentFlagsKHR)
-> (RenderingAttachmentFlagsKHR -> Int)
-> Bits RenderingAttachmentFlagsKHR
Int -> RenderingAttachmentFlagsKHR
RenderingAttachmentFlagsKHR -> Bool
RenderingAttachmentFlagsKHR -> Int
RenderingAttachmentFlagsKHR -> Maybe Int
RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR
RenderingAttachmentFlagsKHR -> Int -> Bool
RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR
.&. :: RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR
$c.|. :: RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR
.|. :: RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR
$cxor :: RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR
xor :: RenderingAttachmentFlagsKHR
-> RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR
$ccomplement :: RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR
complement :: RenderingAttachmentFlagsKHR -> RenderingAttachmentFlagsKHR
$cshift :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
shift :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
$crotate :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
rotate :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
$czeroBits :: RenderingAttachmentFlagsKHR
zeroBits :: RenderingAttachmentFlagsKHR
$cbit :: Int -> RenderingAttachmentFlagsKHR
bit :: Int -> RenderingAttachmentFlagsKHR
$csetBit :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
setBit :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
$cclearBit :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
clearBit :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
$ccomplementBit :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
complementBit :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
$ctestBit :: RenderingAttachmentFlagsKHR -> Int -> Bool
testBit :: RenderingAttachmentFlagsKHR -> Int -> Bool
$cbitSizeMaybe :: RenderingAttachmentFlagsKHR -> Maybe Int
bitSizeMaybe :: RenderingAttachmentFlagsKHR -> Maybe Int
$cbitSize :: RenderingAttachmentFlagsKHR -> Int
bitSize :: RenderingAttachmentFlagsKHR -> Int
$cisSigned :: RenderingAttachmentFlagsKHR -> Bool
isSigned :: RenderingAttachmentFlagsKHR -> Bool
$cshiftL :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
shiftL :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
$cunsafeShiftL :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
unsafeShiftL :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
$cshiftR :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
shiftR :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
$cunsafeShiftR :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
unsafeShiftR :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
$crotateL :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
rotateL :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
$crotateR :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
rotateR :: RenderingAttachmentFlagsKHR -> Int -> RenderingAttachmentFlagsKHR
$cpopCount :: RenderingAttachmentFlagsKHR -> Int
popCount :: RenderingAttachmentFlagsKHR -> Int
Bits, Bits RenderingAttachmentFlagsKHR
Bits RenderingAttachmentFlagsKHR =>
(RenderingAttachmentFlagsKHR -> Int)
-> (RenderingAttachmentFlagsKHR -> Int)
-> (RenderingAttachmentFlagsKHR -> Int)
-> FiniteBits RenderingAttachmentFlagsKHR
RenderingAttachmentFlagsKHR -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: RenderingAttachmentFlagsKHR -> Int
finiteBitSize :: RenderingAttachmentFlagsKHR -> Int
$ccountLeadingZeros :: RenderingAttachmentFlagsKHR -> Int
countLeadingZeros :: RenderingAttachmentFlagsKHR -> Int
$ccountTrailingZeros :: RenderingAttachmentFlagsKHR -> Int
countTrailingZeros :: RenderingAttachmentFlagsKHR -> Int
FiniteBits)

-- No documentation found for Nested "VkRenderingAttachmentFlagBitsKHR" "VK_RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR"
pattern $mRENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR :: forall {r}.
RenderingAttachmentFlagsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bRENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR :: RenderingAttachmentFlagsKHR
RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR = RenderingAttachmentFlagBitsKHR 0x00000004

-- No documentation found for Nested "VkRenderingAttachmentFlagBitsKHR" "VK_RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR"
pattern $mRENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR :: forall {r}.
RenderingAttachmentFlagsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bRENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR :: RenderingAttachmentFlagsKHR
RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR = RenderingAttachmentFlagBitsKHR 0x00000002

-- No documentation found for Nested "VkRenderingAttachmentFlagBitsKHR" "VK_RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR"
pattern $mRENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR :: forall {r}.
RenderingAttachmentFlagsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bRENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR :: RenderingAttachmentFlagsKHR
RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR = RenderingAttachmentFlagBitsKHR 0x00000001

conNameRenderingAttachmentFlagBitsKHR :: String
conNameRenderingAttachmentFlagBitsKHR :: String
conNameRenderingAttachmentFlagBitsKHR = String
"RenderingAttachmentFlagBitsKHR"

enumPrefixRenderingAttachmentFlagBitsKHR :: String
enumPrefixRenderingAttachmentFlagBitsKHR :: String
enumPrefixRenderingAttachmentFlagBitsKHR = String
"RENDERING_ATTACHMENT_"

showTableRenderingAttachmentFlagBitsKHR :: [(RenderingAttachmentFlagBitsKHR, String)]
showTableRenderingAttachmentFlagBitsKHR :: [(RenderingAttachmentFlagsKHR, String)]
showTableRenderingAttachmentFlagBitsKHR =
  [
    ( RenderingAttachmentFlagsKHR
RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR
    , String
"RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR"
    )
  ,
    ( RenderingAttachmentFlagsKHR
RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR
    , String
"RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR"
    )
  ,
    ( RenderingAttachmentFlagsKHR
RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR
    , String
"INPUT_ATTACHMENT_FEEDBACK_BIT_KHR"
    )
  ]

instance Show RenderingAttachmentFlagBitsKHR where
  showsPrec :: Int -> RenderingAttachmentFlagsKHR -> ShowS
showsPrec =
    String
-> [(RenderingAttachmentFlagsKHR, String)]
-> String
-> (RenderingAttachmentFlagsKHR -> Word32)
-> (Word32 -> ShowS)
-> Int
-> RenderingAttachmentFlagsKHR
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixRenderingAttachmentFlagBitsKHR
      [(RenderingAttachmentFlagsKHR, String)]
showTableRenderingAttachmentFlagBitsKHR
      String
conNameRenderingAttachmentFlagBitsKHR
      (\(RenderingAttachmentFlagBitsKHR Word32
x) -> Word32
x)
      (\Word32
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> ShowS
forall a. Integral a => a -> ShowS
showHex Word32
x)

instance Read RenderingAttachmentFlagBitsKHR where
  readPrec :: ReadPrec RenderingAttachmentFlagsKHR
readPrec =
    String
-> [(RenderingAttachmentFlagsKHR, String)]
-> String
-> (Word32 -> RenderingAttachmentFlagsKHR)
-> ReadPrec RenderingAttachmentFlagsKHR
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixRenderingAttachmentFlagBitsKHR
      [(RenderingAttachmentFlagsKHR, String)]
showTableRenderingAttachmentFlagBitsKHR
      String
conNameRenderingAttachmentFlagBitsKHR
      Word32 -> RenderingAttachmentFlagsKHR
RenderingAttachmentFlagBitsKHR

type ResolveImageFlagsKHR = ResolveImageFlagBitsKHR

-- | VkResolveImageFlagBitsKHR - Bitmask specifying additional properties of
-- a resolve image operation
--
-- = Description
--
-- -   'RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR' specifies that
--     resolve operations happening to an sRGB encoded image /must/ not
--     convert samples from nonlinear to linear before averaging.
--
-- -   'RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR' specifies that
--     resolve operations happening to an sRGB encoded image /must/ convert
--     samples from nonlinear to linear before averaging.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance10 VK_KHR_maintenance10>,
-- 'ResolveImageFlagsKHR'
newtype ResolveImageFlagBitsKHR = ResolveImageFlagBitsKHR Flags
  deriving newtype (ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool
(ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool)
-> (ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool)
-> Eq ResolveImageFlagsKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool
== :: ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool
$c/= :: ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool
/= :: ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool
Eq, Eq ResolveImageFlagsKHR
Eq ResolveImageFlagsKHR =>
(ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Ordering)
-> (ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool)
-> (ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool)
-> (ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool)
-> (ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool)
-> (ResolveImageFlagsKHR
    -> ResolveImageFlagsKHR -> ResolveImageFlagsKHR)
-> (ResolveImageFlagsKHR
    -> ResolveImageFlagsKHR -> ResolveImageFlagsKHR)
-> Ord ResolveImageFlagsKHR
ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool
ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Ordering
ResolveImageFlagsKHR
-> ResolveImageFlagsKHR -> ResolveImageFlagsKHR
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 :: ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Ordering
compare :: ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Ordering
$c< :: ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool
< :: ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool
$c<= :: ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool
<= :: ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool
$c> :: ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool
> :: ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool
$c>= :: ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool
>= :: ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> Bool
$cmax :: ResolveImageFlagsKHR
-> ResolveImageFlagsKHR -> ResolveImageFlagsKHR
max :: ResolveImageFlagsKHR
-> ResolveImageFlagsKHR -> ResolveImageFlagsKHR
$cmin :: ResolveImageFlagsKHR
-> ResolveImageFlagsKHR -> ResolveImageFlagsKHR
min :: ResolveImageFlagsKHR
-> ResolveImageFlagsKHR -> ResolveImageFlagsKHR
Ord, Ptr ResolveImageFlagsKHR -> IO ResolveImageFlagsKHR
Ptr ResolveImageFlagsKHR -> Int -> IO ResolveImageFlagsKHR
Ptr ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR -> IO ()
Ptr ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> IO ()
ResolveImageFlagsKHR -> Int
(ResolveImageFlagsKHR -> Int)
-> (ResolveImageFlagsKHR -> Int)
-> (Ptr ResolveImageFlagsKHR -> Int -> IO ResolveImageFlagsKHR)
-> (Ptr ResolveImageFlagsKHR
    -> Int -> ResolveImageFlagsKHR -> IO ())
-> (forall b. Ptr b -> Int -> IO ResolveImageFlagsKHR)
-> (forall b. Ptr b -> Int -> ResolveImageFlagsKHR -> IO ())
-> (Ptr ResolveImageFlagsKHR -> IO ResolveImageFlagsKHR)
-> (Ptr ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> IO ())
-> Storable ResolveImageFlagsKHR
forall b. Ptr b -> Int -> IO ResolveImageFlagsKHR
forall b. Ptr b -> Int -> ResolveImageFlagsKHR -> 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 :: ResolveImageFlagsKHR -> Int
sizeOf :: ResolveImageFlagsKHR -> Int
$calignment :: ResolveImageFlagsKHR -> Int
alignment :: ResolveImageFlagsKHR -> Int
$cpeekElemOff :: Ptr ResolveImageFlagsKHR -> Int -> IO ResolveImageFlagsKHR
peekElemOff :: Ptr ResolveImageFlagsKHR -> Int -> IO ResolveImageFlagsKHR
$cpokeElemOff :: Ptr ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR -> IO ()
pokeElemOff :: Ptr ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ResolveImageFlagsKHR
peekByteOff :: forall b. Ptr b -> Int -> IO ResolveImageFlagsKHR
$cpokeByteOff :: forall b. Ptr b -> Int -> ResolveImageFlagsKHR -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> ResolveImageFlagsKHR -> IO ()
$cpeek :: Ptr ResolveImageFlagsKHR -> IO ResolveImageFlagsKHR
peek :: Ptr ResolveImageFlagsKHR -> IO ResolveImageFlagsKHR
$cpoke :: Ptr ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> IO ()
poke :: Ptr ResolveImageFlagsKHR -> ResolveImageFlagsKHR -> IO ()
Storable, ResolveImageFlagsKHR
ResolveImageFlagsKHR -> Zero ResolveImageFlagsKHR
forall a. a -> Zero a
$czero :: ResolveImageFlagsKHR
zero :: ResolveImageFlagsKHR
Zero, Eq ResolveImageFlagsKHR
ResolveImageFlagsKHR
Eq ResolveImageFlagsKHR =>
(ResolveImageFlagsKHR
 -> ResolveImageFlagsKHR -> ResolveImageFlagsKHR)
-> (ResolveImageFlagsKHR
    -> ResolveImageFlagsKHR -> ResolveImageFlagsKHR)
-> (ResolveImageFlagsKHR
    -> ResolveImageFlagsKHR -> ResolveImageFlagsKHR)
-> (ResolveImageFlagsKHR -> ResolveImageFlagsKHR)
-> (ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR)
-> (ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR)
-> ResolveImageFlagsKHR
-> (Int -> ResolveImageFlagsKHR)
-> (ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR)
-> (ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR)
-> (ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR)
-> (ResolveImageFlagsKHR -> Int -> Bool)
-> (ResolveImageFlagsKHR -> Maybe Int)
-> (ResolveImageFlagsKHR -> Int)
-> (ResolveImageFlagsKHR -> Bool)
-> (ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR)
-> (ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR)
-> (ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR)
-> (ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR)
-> (ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR)
-> (ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR)
-> (ResolveImageFlagsKHR -> Int)
-> Bits ResolveImageFlagsKHR
Int -> ResolveImageFlagsKHR
ResolveImageFlagsKHR -> Bool
ResolveImageFlagsKHR -> Int
ResolveImageFlagsKHR -> Maybe Int
ResolveImageFlagsKHR -> ResolveImageFlagsKHR
ResolveImageFlagsKHR -> Int -> Bool
ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
ResolveImageFlagsKHR
-> ResolveImageFlagsKHR -> ResolveImageFlagsKHR
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: ResolveImageFlagsKHR
-> ResolveImageFlagsKHR -> ResolveImageFlagsKHR
.&. :: ResolveImageFlagsKHR
-> ResolveImageFlagsKHR -> ResolveImageFlagsKHR
$c.|. :: ResolveImageFlagsKHR
-> ResolveImageFlagsKHR -> ResolveImageFlagsKHR
.|. :: ResolveImageFlagsKHR
-> ResolveImageFlagsKHR -> ResolveImageFlagsKHR
$cxor :: ResolveImageFlagsKHR
-> ResolveImageFlagsKHR -> ResolveImageFlagsKHR
xor :: ResolveImageFlagsKHR
-> ResolveImageFlagsKHR -> ResolveImageFlagsKHR
$ccomplement :: ResolveImageFlagsKHR -> ResolveImageFlagsKHR
complement :: ResolveImageFlagsKHR -> ResolveImageFlagsKHR
$cshift :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
shift :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
$crotate :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
rotate :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
$czeroBits :: ResolveImageFlagsKHR
zeroBits :: ResolveImageFlagsKHR
$cbit :: Int -> ResolveImageFlagsKHR
bit :: Int -> ResolveImageFlagsKHR
$csetBit :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
setBit :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
$cclearBit :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
clearBit :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
$ccomplementBit :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
complementBit :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
$ctestBit :: ResolveImageFlagsKHR -> Int -> Bool
testBit :: ResolveImageFlagsKHR -> Int -> Bool
$cbitSizeMaybe :: ResolveImageFlagsKHR -> Maybe Int
bitSizeMaybe :: ResolveImageFlagsKHR -> Maybe Int
$cbitSize :: ResolveImageFlagsKHR -> Int
bitSize :: ResolveImageFlagsKHR -> Int
$cisSigned :: ResolveImageFlagsKHR -> Bool
isSigned :: ResolveImageFlagsKHR -> Bool
$cshiftL :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
shiftL :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
$cunsafeShiftL :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
unsafeShiftL :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
$cshiftR :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
shiftR :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
$cunsafeShiftR :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
unsafeShiftR :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
$crotateL :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
rotateL :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
$crotateR :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
rotateR :: ResolveImageFlagsKHR -> Int -> ResolveImageFlagsKHR
$cpopCount :: ResolveImageFlagsKHR -> Int
popCount :: ResolveImageFlagsKHR -> Int
Bits, Bits ResolveImageFlagsKHR
Bits ResolveImageFlagsKHR =>
(ResolveImageFlagsKHR -> Int)
-> (ResolveImageFlagsKHR -> Int)
-> (ResolveImageFlagsKHR -> Int)
-> FiniteBits ResolveImageFlagsKHR
ResolveImageFlagsKHR -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: ResolveImageFlagsKHR -> Int
finiteBitSize :: ResolveImageFlagsKHR -> Int
$ccountLeadingZeros :: ResolveImageFlagsKHR -> Int
countLeadingZeros :: ResolveImageFlagsKHR -> Int
$ccountTrailingZeros :: ResolveImageFlagsKHR -> Int
countTrailingZeros :: ResolveImageFlagsKHR -> Int
FiniteBits)

-- No documentation found for Nested "VkResolveImageFlagBitsKHR" "VK_RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR"
pattern $mRESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR :: forall {r}.
ResolveImageFlagsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bRESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR :: ResolveImageFlagsKHR
RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR = ResolveImageFlagBitsKHR 0x00000002

-- No documentation found for Nested "VkResolveImageFlagBitsKHR" "VK_RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR"
pattern $mRESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR :: forall {r}.
ResolveImageFlagsKHR -> ((# #) -> r) -> ((# #) -> r) -> r
$bRESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR :: ResolveImageFlagsKHR
RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR = ResolveImageFlagBitsKHR 0x00000001

conNameResolveImageFlagBitsKHR :: String
conNameResolveImageFlagBitsKHR :: String
conNameResolveImageFlagBitsKHR = String
"ResolveImageFlagBitsKHR"

enumPrefixResolveImageFlagBitsKHR :: String
enumPrefixResolveImageFlagBitsKHR :: String
enumPrefixResolveImageFlagBitsKHR = String
"RESOLVE_IMAGE_"

showTableResolveImageFlagBitsKHR :: [(ResolveImageFlagBitsKHR, String)]
showTableResolveImageFlagBitsKHR :: [(ResolveImageFlagsKHR, String)]
showTableResolveImageFlagBitsKHR =
  [
    ( ResolveImageFlagsKHR
RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR
    , String
"ENABLE_TRANSFER_FUNCTION_BIT_KHR"
    )
  ,
    ( ResolveImageFlagsKHR
RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR
    , String
"SKIP_TRANSFER_FUNCTION_BIT_KHR"
    )
  ]

instance Show ResolveImageFlagBitsKHR where
  showsPrec :: Int -> ResolveImageFlagsKHR -> ShowS
showsPrec =
    String
-> [(ResolveImageFlagsKHR, String)]
-> String
-> (ResolveImageFlagsKHR -> Word32)
-> (Word32 -> ShowS)
-> Int
-> ResolveImageFlagsKHR
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixResolveImageFlagBitsKHR
      [(ResolveImageFlagsKHR, String)]
showTableResolveImageFlagBitsKHR
      String
conNameResolveImageFlagBitsKHR
      (\(ResolveImageFlagBitsKHR Word32
x) -> Word32
x)
      (\Word32
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> ShowS
forall a. Integral a => a -> ShowS
showHex Word32
x)

instance Read ResolveImageFlagBitsKHR where
  readPrec :: ReadPrec ResolveImageFlagsKHR
readPrec =
    String
-> [(ResolveImageFlagsKHR, String)]
-> String
-> (Word32 -> ResolveImageFlagsKHR)
-> ReadPrec ResolveImageFlagsKHR
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixResolveImageFlagBitsKHR
      [(ResolveImageFlagsKHR, String)]
showTableResolveImageFlagBitsKHR
      String
conNameResolveImageFlagBitsKHR
      Word32 -> ResolveImageFlagsKHR
ResolveImageFlagBitsKHR

type KHR_MAINTENANCE_10_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_KHR_MAINTENANCE_10_SPEC_VERSION"
pattern KHR_MAINTENANCE_10_SPEC_VERSION :: forall a . Integral a => a
pattern $mKHR_MAINTENANCE_10_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_MAINTENANCE_10_SPEC_VERSION :: forall a. Integral a => a
KHR_MAINTENANCE_10_SPEC_VERSION = 1


type KHR_MAINTENANCE_10_EXTENSION_NAME = "VK_KHR_maintenance10"

-- No documentation found for TopLevel "VK_KHR_MAINTENANCE_10_EXTENSION_NAME"
pattern KHR_MAINTENANCE_10_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mKHR_MAINTENANCE_10_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_MAINTENANCE_10_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
KHR_MAINTENANCE_10_EXTENSION_NAME = "VK_KHR_maintenance10"