1e5c31af7Sopenharmony_ci// Copyright 2021-2024 The Khronos Group Inc.
2e5c31af7Sopenharmony_ci//
3e5c31af7Sopenharmony_ci// SPDX-License-Identifier: CC-BY-4.0
4e5c31af7Sopenharmony_ci
5e5c31af7Sopenharmony_ci= Proposal Template
6e5c31af7Sopenharmony_ci:toc: left
7e5c31af7Sopenharmony_ci:refpage: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/
8e5c31af7Sopenharmony_ci:sectnums:
9e5c31af7Sopenharmony_ci
10e5c31af7Sopenharmony_ci.How to use this document
11e5c31af7Sopenharmony_ci[NOTE]
12e5c31af7Sopenharmony_ci====
13e5c31af7Sopenharmony_ciThis document outlines the expected flow of a proposal - text in the following sections is there as guidance for how to fill out each section.
14e5c31af7Sopenharmony_ciWhen creating a new proposal, text inside these sections (including this note!) should be removed and replaced with actual proposal text.
15e5c31af7Sopenharmony_ci
16e5c31af7Sopenharmony_ciProposal documents are standalone and do not use the attributes and extensions associated with the specification - they should be independently buildable with Asciidoctor, which allows them to be previewed live on GitHub/GitLab.
17e5c31af7Sopenharmony_ci
18e5c31af7Sopenharmony_ciWhen calling out existing API constructs or extensions, the `refpage` attribute should be used to link to the relevant Khronos reference page.
19e5c31af7Sopenharmony_ciFor example - "...used to extend link:{refpage}VkGraphicsPipelineCreateInfo.html[VkGraphicsPipelineCreateInfo]..."
20e5c31af7Sopenharmony_ci====
21e5c31af7Sopenharmony_ci
22e5c31af7Sopenharmony_ciA short summary of this proposal should be written here.
23e5c31af7Sopenharmony_ci
24e5c31af7Sopenharmony_ci== Problem Statement
25e5c31af7Sopenharmony_ci
26e5c31af7Sopenharmony_ciThis section should detail the problem that is being addressed as succinctly as possible.
27e5c31af7Sopenharmony_ciUsually this comes in three parts:
28e5c31af7Sopenharmony_ci
29e5c31af7Sopenharmony_ci . Setting the scene
30e5c31af7Sopenharmony_ci . Bulleted list of problems
31e5c31af7Sopenharmony_ci . (Optional) Describe peripheral issues
32e5c31af7Sopenharmony_ci  a. I.e. things this may enable solutions for, but does not directly address.
33e5c31af7Sopenharmony_ci
34e5c31af7Sopenharmony_ciWriting this section is a good opportunity to make sure you are not overreaching by trying to address too many problems at once.
35e5c31af7Sopenharmony_ci
36e5c31af7Sopenharmony_ci== Solution Space
37e5c31af7Sopenharmony_ci
38e5c31af7Sopenharmony_ciThis section should briefly describe the options that have been considered (this is a good time to reconsider those options too!).
39e5c31af7Sopenharmony_ci
40e5c31af7Sopenharmony_ciStart with a bulleted list of the options, usually no more than a paragraph on each option and what the pros/cons of each are, then some sort of brief reason for picking the proposal you are about to make in section 3.
41e5c31af7Sopenharmony_ci
42e5c31af7Sopenharmony_ci== Proposal
43e5c31af7Sopenharmony_ci
44e5c31af7Sopenharmony_ciThis section should be the most detailed – it should go into enough detail on specific points of the proposal that readers can understand it, but without being overly verbose.
45e5c31af7Sopenharmony_ciTypically, this section will be split into subsections describing different areas of the proposal.
46e5c31af7Sopenharmony_ci
47e5c31af7Sopenharmony_ciThis should only describe the minimum viable proposal; all those extra things that you could put on top that do not necessarily fix the initial problem should move to section 5 (further functionality).
48e5c31af7Sopenharmony_ciThey may make it into the final proposal, but it is important to give others the opportunity to evaluate these independently.
49e5c31af7Sopenharmony_ci
50e5c31af7Sopenharmony_ci== Examples
51e5c31af7Sopenharmony_ci
52e5c31af7Sopenharmony_ciWhere relevant, add one or more examples of how this proposal will be used in practice.
53e5c31af7Sopenharmony_ciSome proposals that have limited external surface area (e.g. add a flag in a function call) may not require this but try to write motivating examples down where possible.
54e5c31af7Sopenharmony_ciThis section is relatively freeform but should remain concise and to the point.
55e5c31af7Sopenharmony_ciExtraneous details in examples should be omitted (e.g. code examples do not need to compile).
56e5c31af7Sopenharmony_ci
57e5c31af7Sopenharmony_ci== Issues
58e5c31af7Sopenharmony_ci
59e5c31af7Sopenharmony_ciThis section describes issues with the existing proposal – including both open issues that you have not addressed, and closed issues that are not self-evident from the proposal description.
60e5c31af7Sopenharmony_ci
61e5c31af7Sopenharmony_ci=== RESOLVED: How are issues written?
62e5c31af7Sopenharmony_ci
63e5c31af7Sopenharmony_ciEach issue should be a separate subsection starting with a question, an indication of the status (UNRESOLVED/PROPOSED/RESOLVED), discussion expanding on the question, and a proposal for resolving it if there is one.
64e5c31af7Sopenharmony_ci
65e5c31af7Sopenharmony_ci== Further Functionality
66e5c31af7Sopenharmony_ci
67e5c31af7Sopenharmony_ciThis section is for anything that could be beneficial in the final solution, but may not be necessary to address the core problem.
68e5c31af7Sopenharmony_ciSubsections here will be like those in section 3 (Proposal) but offer additional background as to what peripheral problem they address, or benefit they provide.
69e5c31af7Sopenharmony_ciWriting this section is a good chance to re-evaluate if anything can or should be moved from section 3 to here, or just outright removed.
70