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