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