1e5c31af7Sopenharmony_ci// Copyright 2016-2021 The Khronos Group, Inc.
2e5c31af7Sopenharmony_ci//
3e5c31af7Sopenharmony_ci// SPDX-License-Identifier: CC-BY-4.0
4e5c31af7Sopenharmony_ci
5e5c31af7Sopenharmony_ciinclude::{generated}/meta/{refprefix}VK_KHR_maintenance1.txt[]
6e5c31af7Sopenharmony_ci
7e5c31af7Sopenharmony_ci=== Other Extension Metadata
8e5c31af7Sopenharmony_ci
9e5c31af7Sopenharmony_ci*Last Modified Date*::
10e5c31af7Sopenharmony_ci    2018-03-13
11e5c31af7Sopenharmony_ci*Interactions and External Dependencies*::
12e5c31af7Sopenharmony_ci  - Promoted to Vulkan 1.1 Core
13e5c31af7Sopenharmony_ci*Contributors*::
14e5c31af7Sopenharmony_ci  - Dan Ginsburg, Valve
15e5c31af7Sopenharmony_ci  - Daniel Koch, NVIDIA
16e5c31af7Sopenharmony_ci  - Daniel Rakos, AMD
17e5c31af7Sopenharmony_ci  - Jan-Harald Fredriksen, ARM
18e5c31af7Sopenharmony_ci  - Jason Ekstrand, Intel
19e5c31af7Sopenharmony_ci  - Jeff Bolz, NVIDIA
20e5c31af7Sopenharmony_ci  - Jesse Hall, Google
21e5c31af7Sopenharmony_ci  - John Kessenich, Google
22e5c31af7Sopenharmony_ci  - Michael Worcester, Imagination Technologies
23e5c31af7Sopenharmony_ci  - Neil Henning, Codeplay Software Ltd.
24e5c31af7Sopenharmony_ci  - Piers Daniell, NVIDIA
25e5c31af7Sopenharmony_ci  - Slawomir Grajewski, Intel
26e5c31af7Sopenharmony_ci  - Tobias Hector, Imagination Technologies
27e5c31af7Sopenharmony_ci  - Tom Olson, ARM
28e5c31af7Sopenharmony_ci
29e5c31af7Sopenharmony_ci=== Description
30e5c31af7Sopenharmony_ci
31e5c31af7Sopenharmony_ci`VK_KHR_maintenance1` adds a collection of minor features that were
32e5c31af7Sopenharmony_ciintentionally left out or overlooked from the original Vulkan 1.0 release.
33e5c31af7Sopenharmony_ci
34e5c31af7Sopenharmony_ciThe new features are as follows:
35e5c31af7Sopenharmony_ci
36e5c31af7Sopenharmony_ci  * Allow 2D and 2D array image views to be created from 3D images, which
37e5c31af7Sopenharmony_ci    can then be used as color framebuffer attachments.
38e5c31af7Sopenharmony_ci    This allows applications to render to slices of a 3D image.
39e5c31af7Sopenharmony_ci  * Support flink:vkCmdCopyImage between 2D array layers and 3D slices.
40e5c31af7Sopenharmony_ci    This extension allows copying from layers of a 2D array image to slices
41e5c31af7Sopenharmony_ci    of a 3D image and vice versa.
42e5c31af7Sopenharmony_ci  * Allow negative height to be specified in the
43e5c31af7Sopenharmony_ci    slink:VkViewport::pname:height field to perform y-inversion of the
44e5c31af7Sopenharmony_ci    clip-space to framebuffer-space transform.
45e5c31af7Sopenharmony_ci    This allows apps to avoid having to use `gl_Position.y = -gl_Position.y`
46e5c31af7Sopenharmony_ci    in shaders also targeting other APIs.
47e5c31af7Sopenharmony_ci  * Allow implementations to express support for doing just transfers and
48e5c31af7Sopenharmony_ci    clears of image formats that they otherwise support no other format
49e5c31af7Sopenharmony_ci    features for.
50e5c31af7Sopenharmony_ci    This is done by adding new format feature flags
51e5c31af7Sopenharmony_ci    ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR and
52e5c31af7Sopenharmony_ci    ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR.
53e5c31af7Sopenharmony_ci  * Support flink:vkCmdFillBuffer on transfer-only queues.
54e5c31af7Sopenharmony_ci    Previously flink:vkCmdFillBuffer was defined to only work on command
55e5c31af7Sopenharmony_ci    buffers allocated from command pools which support graphics or compute
56e5c31af7Sopenharmony_ci    queues.
57e5c31af7Sopenharmony_ci    It is now allowed on queues that just support transfer operations.
58e5c31af7Sopenharmony_ci  * Fix the inconsistency of how error conditions are returned between the
59e5c31af7Sopenharmony_ci    flink:vkCreateGraphicsPipelines and flink:vkCreateComputePipelines
60e5c31af7Sopenharmony_ci    functions and the flink:vkAllocateDescriptorSets and
61e5c31af7Sopenharmony_ci    flink:vkAllocateCommandBuffers functions.
62e5c31af7Sopenharmony_ci  * Add new ename:VK_ERROR_OUT_OF_POOL_MEMORY_KHR error so implementations
63e5c31af7Sopenharmony_ci    can give a more precise reason for flink:vkAllocateDescriptorSets
64e5c31af7Sopenharmony_ci    failures.
65e5c31af7Sopenharmony_ci  * Add a new command flink:vkTrimCommandPoolKHR which gives the
66e5c31af7Sopenharmony_ci    implementation an opportunity to release any unused command pool memory
67e5c31af7Sopenharmony_ci    back to the system.
68e5c31af7Sopenharmony_ci
69e5c31af7Sopenharmony_ci=== Promotion to Vulkan 1.1
70e5c31af7Sopenharmony_ci
71e5c31af7Sopenharmony_ciAll functionality in this extension is included in core Vulkan 1.1, with the
72e5c31af7Sopenharmony_ciKHR suffix omitted.
73e5c31af7Sopenharmony_ciThe original type, enum and command names are still available as aliases of
74e5c31af7Sopenharmony_cithe core functionality.
75e5c31af7Sopenharmony_ci
76e5c31af7Sopenharmony_ciinclude::{generated}/interfaces/VK_KHR_maintenance1.txt[]
77e5c31af7Sopenharmony_ci
78e5c31af7Sopenharmony_ci=== Issues
79e5c31af7Sopenharmony_ci
80e5c31af7Sopenharmony_ci  . Are viewports with zero height allowed?
81e5c31af7Sopenharmony_ci+
82e5c31af7Sopenharmony_ci*RESOLVED*: Yes, although they have low utility.
83e5c31af7Sopenharmony_ci
84e5c31af7Sopenharmony_ci=== Version History
85e5c31af7Sopenharmony_ci
86e5c31af7Sopenharmony_ci * Revision 1, 2016-10-26 (Piers Daniell)
87e5c31af7Sopenharmony_ci   - Internal revisions
88e5c31af7Sopenharmony_ci * Revision 2, 2018-03-13 (Jon Leech)
89e5c31af7Sopenharmony_ci   - Add issue for zero-height viewports
90