// Copyright 2017-2023 The Khronos Group Inc.
// SPDX-License-Identifier: CC-BY-4.0

ifdef::env-github[]
:note-caption: :information_source:
endif::[]

= Vulkan^(R)^ and Vulkan^(R)^ SC API Documentation Project

For Vulkan^(R)^ API specific documentation see link:READMEVK.adoc[READMEVK.adoc]

For Vulkan^(R)^ SC API specific documentation see link:READMESC.adoc[READMESC.adoc]

== Directory Structure

The directory structure is as follows:

```
README.adoc           This file
READMESC.adoc         Readme for the Vulkan SC specification
READMEVK.adoc         Readme for the Vulkan specification
BUILD.adoc            Documents how to build the specifications and reference pages
CONTRIBUTING.adoc     Requirements for external contributions to the repository
COPYING.adoc          Copyright and licensing information
CODE_OF_CONDUCT.adoc  Code of Conduct
LICENSE.adoc          Summary of licenses used by files in the repository
ChangeLog.adoc        Change log summary for each public Vulkan spec update
ChangeLogSC.adoc      Change log summary for each public Vulkan SC spec update
Makefile, make*       Makefile and helper build scripts (see BUILD.adoc)
appendices/           Specification appendices
chapters/             Specification chapters
proposals/            Design documents for extensions
config/               Asciidoctor configuration, CSS, and index generator
images/               Images (figures, diagrams, icons)
gen/out/              Default directory for the generated documents
scripts/              Helper scripts used in specification, header, and reference page generation
style/                Sources for "styleguide" (Vulkan Documentation and Extensions: Procedures and Conventions)
xml/                  XML API Registry (`vk.xml`) as well as XML for non-Vulkan
                      data structures used with Video extensions (`video.xml`)
registry.adoc         Source for documentation of the XML format
```


== Building the Specification and Reference Pages

The document sources are marked up in Asciidoctor format, and we use
`asciidoctor` and related toolchain components to generate output documents.
See link:BUILD.adoc[BUILD.adoc] for more information on installing the
toolchain and building the Specification.


== Generating Headers and Related Files

See link:xml/README.adoc[xml/README.adoc].

The header files (`include/vulkan/vulkan*.h`) and many parts of the
specification and reference page documents are generated from descriptions
in the XML API Registry (link:xml/vk.xml[`xml/vk.xml`]).
The generated files are not checked into the repository.
If you change `vk.xml`, you can regenerate the headers by going into
`xml/` and running:

    $ make clean install

The other generated files are built as required via dependencies in
the top-level `Makefile`.

