1// Copyright 2016-2023 The Khronos Group Inc.
2//
3// SPDX-License-Identifier: CC-BY-4.0
4
5include::{generated}/meta/{refprefix}VK_KHR_maintenance4.adoc[]
6
7=== Other Extension Metadata
8
9*Last Modified Date*::
10    2021-10-25
11*Interactions and External Dependencies*::
12  - Promoted to Vulkan 1.3 Core
13  - Requires SPIR-V 1.2 for code:LocalSizeId
14*Contributors*::
15  - Lionel Duc, NVIDIA
16  - Faith Ekstrand, Intel
17  - Spencer Fricke, Samsung
18  - Tobias Hector, AMD
19  - Lionel Landwerlin, Intel
20  - Graeme Leese, Broadcom
21  - Tom Olson, Arm
22  - Stu Smith, AMD
23  - Yiwei Zhang, Google
24
25=== Description
26
27`VK_KHR_maintenance4` adds a collection of minor features, none of which
28would warrant an entire extension of their own.
29
30The new features are as follows:
31
32  * Allow the application to destroy their slink:VkPipelineLayout object
33    immediately after it was used to create another object.
34    It is no longer necessary to keep its handle valid while the created
35    object is in use.
36  * Add a new <<limits-maxBufferSize, pname:maxBufferSize>>
37    implementation-defined limit for the maximum size sname:VkBuffer that
38    can: be created.
39  * Add support for the SPIR-V 1.2 code:LocalSizeId execution mode, which
40    can be used as an alternative to code:LocalSize to specify the local
41    workgroup size with specialization constants.
42  * Add a guarantee that images created with identical creation parameters
43    will always have the same alignment requirements.
44  * Add new flink:vkGetDeviceBufferMemoryRequirementsKHR,
45    flink:vkGetDeviceImageMemoryRequirementsKHR, and
46    flink:vkGetDeviceImageSparseMemoryRequirementsKHR to allow the
47    application to query the image memory requirements without having to
48    create an image object and query it.
49  * Relax the requirement that push constants must be initialized before
50    they are dynamically accessed.
51  * Relax the interface matching rules to allow a larger output vector to
52    match with a smaller input vector, with additional values being
53    discarded.
54  * Add a guarantee for buffer memory requirement that the size memory
55    requirement is never greater than the result of aligning create size
56    with the alignment memory requirement.
57
58include::{generated}/interfaces/VK_KHR_maintenance4.adoc[]
59
60=== Promotion to Vulkan 1.3
61
62Functionality in this extension is included in core Vulkan 1.3, with the KHR
63suffix omitted.
64The original type, enum and command names are still available as aliases of
65the core functionality.
66
67=== Issues
68
69None.
70
71=== Version History
72
73  * Revision 1, 2021-08-18 (Piers Daniell)
74  ** Internal revisions
75  * Revision 2, 2021-10-25 (Yiwei Zhang)
76  ** More guarantees on buffer memory requirements
77