1e5c31af7Sopenharmony_ci// Copyright 2014-2024 The Khronos Group Inc. 2e5c31af7Sopenharmony_ci// 3e5c31af7Sopenharmony_ci// SPDX-License-Identifier: CC-BY-4.0 4e5c31af7Sopenharmony_ci 5e5c31af7Sopenharmony_ci[[introduction]] 6e5c31af7Sopenharmony_ci= Introduction 7e5c31af7Sopenharmony_ci 8e5c31af7Sopenharmony_ciThis document contains required procedures and conventions when writing 9e5c31af7Sopenharmony_cispecifications for new Vulkan APIs, extensions and layers, or related 10e5c31af7Sopenharmony_ciKhronos^{reg}^ documentation such as white papers and tutorials; or 11e5c31af7Sopenharmony_cicontributing to existing Vulkan specifications. 12e5c31af7Sopenharmony_ciThese are collectively referred to as _Vulkan Documentation_ or just 13e5c31af7Sopenharmony_ci_documentation_ below. 14e5c31af7Sopenharmony_ciThe primary focus is the API Specification and API extensions, although all 15e5c31af7Sopenharmony_ciof the markup and most of the writing style is equally applicable to other 16e5c31af7Sopenharmony_cidocumentation. 17e5c31af7Sopenharmony_ci 18e5c31af7Sopenharmony_ciThe primary purpose is to achieve consistency across the API, as well as 19e5c31af7Sopenharmony_ciacross all of our source and output documents. 20e5c31af7Sopenharmony_ciConsistency makes it easier for developers, editors, reviewers, and users of 21e5c31af7Sopenharmony_ciour documentation to understand and modify it. 22e5c31af7Sopenharmony_ci 23e5c31af7Sopenharmony_ciThis document is now formally voted on and approved by the Vulkan Working 24e5c31af7Sopenharmony_ciGroup. 25e5c31af7Sopenharmony_ciThis means that unless explicitly stated otherwise, the procedures and 26e5c31af7Sopenharmony_ciconventions must be followed. 27e5c31af7Sopenharmony_ciIf you have a strong desire to modify the procedures and conventions, such 28e5c31af7Sopenharmony_cichanges must be made through the normal Vulkan Working Group processes. 29e5c31af7Sopenharmony_ci 30e5c31af7Sopenharmony_ci 31e5c31af7Sopenharmony_ci[[introduction-terminology]] 32e5c31af7Sopenharmony_ci== Terminology 33e5c31af7Sopenharmony_ci 34e5c31af7Sopenharmony_ciThe key words *must*, *required*, *should*, *recommend*, *may*, and 35e5c31af7Sopenharmony_ci*optional* in this document are to be interpreted as described in RFC 2119 36e5c31af7Sopenharmony_ciand by the Vulkan Specification in the "`Terminology`" section. 37e5c31af7Sopenharmony_ci 38e5c31af7Sopenharmony_ci 39e5c31af7Sopenharmony_ci[[introduction-structure]] 40e5c31af7Sopenharmony_ci== Document Structure 41e5c31af7Sopenharmony_ci 42e5c31af7Sopenharmony_ciThe style guide is broken into four sections: 43e5c31af7Sopenharmony_ci 44e5c31af7Sopenharmony_ci * <<naming,API Naming Conventions>> - the required rules for choosing 45e5c31af7Sopenharmony_ci names of Vulkan identifiers of all types. 46e5c31af7Sopenharmony_ci * <<extensions,Extensions and Layers>> - the required procedures for 47e5c31af7Sopenharmony_ci creating formal Vulkan extensions and layers. 48e5c31af7Sopenharmony_ci * <<markup,Markup Style>> - the required and recommended markup style for 49e5c31af7Sopenharmony_ci writing asciidoctor and XML source that follows consistent formatting 50e5c31af7Sopenharmony_ci and layout guidelines, tags special terms and phrases for proper 51e5c31af7Sopenharmony_ci processing by the spec generation tools, etc. 52e5c31af7Sopenharmony_ci * <<writing,Writing Style>> - the required and recommended writing style 53e5c31af7Sopenharmony_ci for overall and fine-grained structure and conventions, normative 54e5c31af7Sopenharmony_ci language use, API naming conventions, common words and phrases to use 55e5c31af7Sopenharmony_ci and to avoid, linking and cross-referencing, etc. 56e5c31af7Sopenharmony_ci 57e5c31af7Sopenharmony_ci 58e5c31af7Sopenharmony_ci[[introduction-asciidoc]] 59e5c31af7Sopenharmony_ci== Asciidoctor Markup 60e5c31af7Sopenharmony_ci 61e5c31af7Sopenharmony_ciVulkan Documentation is primarily written in Asciidoctor, a text markup 62e5c31af7Sopenharmony_cilanguage. 63e5c31af7Sopenharmony_ciWe use the command-line asciidoctor client that is actively maintained by 64e5c31af7Sopenharmony_ciasciidoctor, which is documented on its website at https://asciidoctor.org. 65e5c31af7Sopenharmony_ci 66e5c31af7Sopenharmony_ciReferences to the Asciidoctor User Manual are to sections in the document at 67e5c31af7Sopenharmony_cihttps://asciidoctor.org/docs/user-manual/. 68e5c31af7Sopenharmony_ci 69e5c31af7Sopenharmony_ciAsciidoctor is implemented in Ruby (https://www.ruby-lang.org/), which is 70e5c31af7Sopenharmony_ciavailable for Linux, MacOS, and Microsoft Windows. 71e5c31af7Sopenharmony_ci 72e5c31af7Sopenharmony_ci[NOTE] 73e5c31af7Sopenharmony_ci.Note 74e5c31af7Sopenharmony_ci==== 75e5c31af7Sopenharmony_ciThere are other implementations of asciidoctor, such as AsciidoctorJ 76e5c31af7Sopenharmony_ci(https://github.com/asciidoctor/asciidoctorj) and asciidoctor.js 77e5c31af7Sopenharmony_ci(https://github.com/asciidoctor/asciidoctor.js). 78e5c31af7Sopenharmony_ciIn particular, GitHub and GitLab both have preview renderers for .adoc or 79e5c31af7Sopenharmony_ci.asciidoc files in repositories, and live preview extensions exist for 80e5c31af7Sopenharmony_ciChrome and Firefox. 81e5c31af7Sopenharmony_ci 82e5c31af7Sopenharmony_ciHowever, because of the use of custom Ruby macros in the Vulkan 83e5c31af7Sopenharmony_ciSpecification toolchain, and the high complexity of the documents and 84e5c31af7Sopenharmony_citoolchain used to generate it, these web tools cannot currently render the 85e5c31af7Sopenharmony_ciSpecification from source. 86e5c31af7Sopenharmony_ciInstead, we generate HTML and PDF versions of the Specification and publish 87e5c31af7Sopenharmony_cithem on the Khronos website. 88e5c31af7Sopenharmony_ci 89e5c31af7Sopenharmony_ciThe Asciidoctor toolchain and build process are not addressed by this 90e5c31af7Sopenharmony_cidocument, which concentrates solely on source documents. 91e5c31af7Sopenharmony_ci==== 92e5c31af7Sopenharmony_ci 93e5c31af7Sopenharmony_ci 94e5c31af7Sopenharmony_ci[[introduction-normative]] 95e5c31af7Sopenharmony_ci== Normative References 96e5c31af7Sopenharmony_ci 97e5c31af7Sopenharmony_ciNormative references are references to external documents or resources to 98e5c31af7Sopenharmony_ciwhich documentation authors must comply. 99e5c31af7Sopenharmony_ci 100e5c31af7Sopenharmony_ci[[acm-references]] 101e5c31af7Sopenharmony_ciAssociation for Computing Machinery. 102e5c31af7Sopenharmony_ci_Citation Style and Reference Formats_. 103e5c31af7Sopenharmony_ciRetrieved July 27, 2019. 104e5c31af7Sopenharmony_cihttps://www.acm.org/publications/authors/reference-formatting . 105e5c31af7Sopenharmony_ci 106e5c31af7Sopenharmony_ci[[iso-8601]] 107e5c31af7Sopenharmony_ciInternational Organization for Standardization. 108e5c31af7Sopenharmony_ci_Data elements and interchange formats -- Information interchange -- 109e5c31af7Sopenharmony_ciRepresentation of dates and times_ (2004-12-01). 110e5c31af7Sopenharmony_cihttps://www.iso.org/standard/40874.html . 111e5c31af7Sopenharmony_ciAlso see https://www.w3.org/QA/Tips/iso-date for colloquial examples. 112e5c31af7Sopenharmony_ci 113e5c31af7Sopenharmony_ci[[vulkan-docs]] 114e5c31af7Sopenharmony_ciKhronos Vulkan Working Group. 115e5c31af7Sopenharmony_ci`KhronosGroup/Vulkan-Docs` project on GitHub (July 5, 2016). 116e5c31af7Sopenharmony_cihttps://github.com/KhronosGroup/Vulkan-Docs . 117e5c31af7Sopenharmony_ci 118e5c31af7Sopenharmony_ci[[vulkan-registry]] 119e5c31af7Sopenharmony_ciJon Leech. 120e5c31af7Sopenharmony_ci_The Khronos Vulkan API Registry_ (February 26, 2023). 121e5c31af7Sopenharmony_cihttps://registry.khronos.org/vulkan/specs/1.3/registry.html . 122e5c31af7Sopenharmony_ci 123e5c31af7Sopenharmony_ci[[vulkan-spec]] 124e5c31af7Sopenharmony_ciKhronos Vulkan Working Group. 125e5c31af7Sopenharmony_ci_Vulkan 1.3.242 - A Specification_ (February 26, 2023). 126e5c31af7Sopenharmony_cihttps://registry.khronos.org/vulkan/ . 127e5c31af7Sopenharmony_ci 128e5c31af7Sopenharmony_ciVersion 1.3.242 is the latest patch release of the Vulkan API Specification 129e5c31af7Sopenharmony_cias of the time this reference was last updated, but the Specification is 130e5c31af7Sopenharmony_cifrequently updated with minor bugfixes and clarifications. 131e5c31af7Sopenharmony_ciWhen a more recent patch release is made, it becomes the normative reference 132e5c31af7Sopenharmony_cifor the API. 133