{-# language CPP #-}
-- | = Name
--
-- VK_KHR_swapchain_mutable_format - device extension
--
-- == VK_KHR_swapchain_mutable_format
--
-- [__Name String__]
--     @VK_KHR_swapchain_mutable_format@
--
-- [__Extension Type__]
--     Device extension
--
-- [__Registered Extension Number__]
--     201
--
-- [__Revision__]
--     1
--
-- [__Extension and Version Dependencies__]
--
--     -   Requires Vulkan 1.0
--
--     -   Requires @VK_KHR_swapchain@
--
--     -   Requires @VK_KHR_maintenance2@
--
--     -   Requires @VK_KHR_image_format_list@
--
-- [__Contact__]
--
--     -   Daniel Rakos
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_swapchain_mutable_format:%20&body=@drakos-arm%20 >
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2018-03-28
--
-- [__IP Status__]
--     No known IP claims.
--
-- [__Contributors__]
--
--     -   Jason Ekstrand, Intel
--
--     -   Jan-Harald Fredriksen, ARM
--
--     -   Jesse Hall, Google
--
--     -   Daniel Rakos, AMD
--
--     -   Ray Smith, ARM
--
-- == Description
--
-- This extension allows processing of swapchain images as different
-- formats to that used by the window system, which is particularly useful
-- for switching between sRGB and linear RGB formats.
--
-- It adds a new swapchain creation flag that enables creating image views
-- from presentable images with a different format than the one used to
-- create the swapchain.
--
-- == New Enum Constants
--
-- -   'KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME'
--
-- -   'KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION'
--
-- -   Extending
--     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateFlagBitsKHR':
--
--     -   'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR'
--
-- == Issues
--
-- 1) Are there any new capabilities needed?
--
-- __RESOLVED__: No. It is expected that all implementations exposing this
-- extension support swapchain image format mutability.
--
-- 2) Do we need a separate @VK_SWAPCHAIN_CREATE_EXTENDED_USAGE_BIT_KHR@?
--
-- __RESOLVED__: No. This extension requires @VK_KHR_maintenance2@ and
-- presentable images of swapchains created with
-- 'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR'
-- are created internally in a way equivalent to specifying both
-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'
-- and
-- 'Vulkan.Extensions.VK_KHR_maintenance2.IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR'.
--
-- 3) Do we need a separate structure to allow specifying an image format
-- list for swapchains?
--
-- __RESOLVED__: No. We simply use the same
-- 'Vulkan.Extensions.VK_KHR_image_format_list.ImageFormatListCreateInfoKHR'
-- structure introduced by @VK_KHR_image_format_list@. The structure is
-- required to be included in the @pNext@ chain of
-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR' for
-- swapchains created with
-- 'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR'.
--
-- == Version History
--
-- -   Revision 1, 2018-03-28 (Daniel Rakos)
--
--     -   Internal revisions.
--
-- = See Also
--
-- No cross-references are available
--
-- = Document Notes
--
-- For more information, see the
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain_mutable_format 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_swapchain_mutable_format  ( KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION
                                                          , pattern KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION
                                                          , KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME
                                                          , pattern KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME
                                                          , SwapchainCreateFlagBitsKHR(..)
                                                          , SwapchainCreateFlagsKHR
                                                          ) where

import Data.String (IsString)
import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagBitsKHR(..))
import Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagsKHR)
type KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION"
pattern KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION :: forall a . Integral a => a
pattern $bKHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION :: a
$mKHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1


type KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format"

-- No documentation found for TopLevel "VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME"
pattern KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bKHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME :: a
$mKHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME :: forall r a.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format"