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