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