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