// Copyright 2014-2021 The Khronos Group, Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_KHR_swapchain_mutable_format.txt[]

=== 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.

include::{generated}/interfaces/VK_KHR_swapchain_mutable_format.txt[]

=== 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 etext:VK_SWAPCHAIN_CREATE_EXTENDED_USAGE_BIT_KHR?

*RESOLVED*: No.
This extension requires `VK_KHR_maintenance2` and presentable images of
swapchains created with ename:VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR are
created internally in a way equivalent to specifying both
ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT and
ename:VK_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 slink:VkImageFormatListCreateInfoKHR structure
introduced by `VK_KHR_image_format_list`.
The structure is required to be included in the pname:pNext chain of
slink:VkSwapchainCreateInfoKHR for swapchains created with
ename:VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR.


=== Version History

 * Revision 1, 2018-03-28 (Daniel Rakos)
   - Internal revisions.
