The Vulkan API Specification and related tools
Go to file
Jon Leech b557dd2167 Change log for December 16, 2018 Vulkan 1.1.96 spec update:
* Update release number to 96.

Public Issues:

  * Fix typo in `vk.xml` for `structextends` attribute of
    slink:VkPhysicalDeviceShadingRateImagePropertiesNV (public PR 870).
  * Fix links in optimized PDF output (public PR 879).

Internal Issues:

  * Add a link to GitHub contributors in the <<credits, Other Credits>>
    section (internal issue 808).
  * Clarify the behavior of command aliases described in the <<versions,Core
    Revisions>> and <<initialization-functionpointers, Command Function
    Pointers>> sections and the registry schema document with respect to
    whether they are or are not the same entry point, and what the behaviour
    of the ftext:vkGet*ProcAddr commands is for each alias (internal issue
    1462).
  * Update slink:VkPipelineShaderStageCreateInfo valid usage statements for
    writing to code:Layer and code:viewportIndex to apply to any vertex
    processing stage (internal issue 1475).
  * Make sparse image creation optional for Y'C~B~C~R~ formats in the
    <<features-required-format-support, Required Format Support>> section
    and the <<features-formats-requiring-sampler-ycbcr-conversion, Formats
    requiring sampler Y'C~B~C~R~ conversion for
    ename:VK_IMAGE_ASPECT_COLOR_BIT image views>> table (internal issue
    1476).
  * Modify the valid usage statement for
    flink:vkCmdDrawIndirectByteCountEXT::pname:vertexStride to use the
    pname:maxTransformFeedbackBufferDataStride limit rather than the
    pname:maxVertexInputBindingStride limit, which is a better match for
    transform feedback related operations (internal issue 1487).
  * Changed all members of slink:VkPhysicalDevicePCIBusInfoPropertiesEXT to
    have the `uint32_t` type. This is an imcompatible change to an EXT
    that's very recently released; although this is against usual Vulkan WG
    policy, we discussed and consider this an acceptable risk, but have
    polled the mesa-dev list in case there are use cases we missed (internal
    issue 1492).
  * Set spec vetsion to 1 for `VK_GOOGLE_hlsl_functionality1` and
    `VK_GOOGLE_decorate_string` in `vk.xml` (internal MR 2948).
  * Remove redundant valid usage statement `VkImageCreateInfo-pNext-02395`
    (internal MR 2950).
  * Add `check_spec_links.py` script, use it in Gitlab CI, and fix many
    minor markup issues discovered by the script (internal MR 2955).
  * Update `BUILD.md` to the current Ruby version (2.5.3), and make some
    corresponding updates to per-platform build instructions (internal MR
    2956).
  * Fix binding numbers and other details in
    flink:vkUpdateDescriptorSetWithTemplate.txt example code blocks
    (internal MR 2960).
  * Remove some nautovalidity="true" in `vk.xml` for NV extensions where
    it's clearly wrong (internal MR 2970).
2018-12-16 22:22:53 -08:00
.gitlab/issue_templates Change log for November 4, 2018 Vulkan 1.1.91 spec update: 2018-11-03 23:50:13 -07:00
appendices Change log for December 16, 2018 Vulkan 1.1.96 spec update: 2018-12-16 22:22:53 -08:00
chapters Change log for December 16, 2018 Vulkan 1.1.96 spec update: 2018-12-16 22:22:53 -08:00
config Fix links in PDF build (#879) 2018-12-16 20:13:47 -08:00
images Change log for November 12, 2018 Vulkan 1.1.92 spec update: 2018-11-12 04:40:40 -08:00
include/vulkan Change log for December 16, 2018 Vulkan 1.1.96 spec update: 2018-12-16 22:22:53 -08:00
katex Restructure the repository to put the specification Makefile and 2018-04-04 23:08:43 -07:00
man Restructure the repository to put the specification Makefile and 2018-04-04 23:08:43 -07:00
out Change log for March 5, 2018 Vulkan 1.1.72 spec update: 2018-04-05 04:24:56 -07:00
scripts Restructure the repository to put the specification Makefile and 2018-04-04 23:08:43 -07:00
src/ext_loader Change log for May 25, 2018 Vulkan 1.1.76 spec update: 2018-05-25 04:00:32 -07:00
style Change log for December 3, 2018 Vulkan 1.1.95 spec update: 2018-12-03 02:41:34 -08:00
xml Change log for December 16, 2018 Vulkan 1.1.96 spec update: 2018-12-16 22:22:53 -08:00
.gitattributes Restructure the repository to put the specification Makefile and 2018-04-04 23:08:43 -07:00
.gitignore Change log for December 16, 2018 Vulkan 1.1.96 spec update: 2018-12-16 22:22:53 -08:00
.gitlab-ci.yml Change log for December 16, 2018 Vulkan 1.1.96 spec update: 2018-12-16 22:22:53 -08:00
BUILD.adoc Change log for December 16, 2018 Vulkan 1.1.96 spec update: 2018-12-16 22:22:53 -08:00
CODE_OF_CONDUCT.md Add CODE_OF_CONDUCT.md 2018-09-24 10:55:10 -04:00
COPYING.md Merge remote-tracking branch 'upstream/master' into typos 2018-11-04 17:46:20 +01:00
ChangeLog.txt Merge remote-tracking branch 'upstream/master' into typos 2018-11-04 17:46:20 +01:00
Makefile Change log for December 16, 2018 Vulkan 1.1.96 spec update: 2018-12-16 22:22:53 -08:00
README.adoc Update README 2018-10-24 16:26:50 +02:00
checkLinks.py Change log for November 12, 2018 Vulkan 1.1.92 spec update: 2018-11-12 04:40:40 -08:00
copyright-ccby.txt Restructure the repository to put the specification Makefile and 2018-04-04 23:08:43 -07:00
copyright-spec.txt Change log for October 7, 2018 Vulkan 1.1.87 spec update: 2018-10-07 06:10:21 -07:00
fixupRef.py Restructure the repository to put the specification Makefile and 2018-04-04 23:08:43 -07:00
genRef.py Change log for November 18, 2018 Vulkan 1.1.93 spec update: 2018-11-18 02:55:14 -08:00
genRelease Change log for November 18, 2018 Vulkan 1.1.93 spec update: 2018-11-18 02:55:14 -08:00
genspec.py Minor build fixes. 2018-06-18 03:24:40 -07:00
installRelease Restructure the repository to put the specification Makefile and 2018-04-04 23:08:43 -07:00
makeAllExts Change log for November 12, 2018 Vulkan 1.1.92 spec update: 2018-11-12 04:40:40 -08:00
makeExt Restructure the repository to put the specification Makefile and 2018-04-04 23:08:43 -07:00
makeKHR Restructure the repository to put the specification Makefile and 2018-04-04 23:08:43 -07:00
promote.py Fix Makefile PATCHVERSION to 72, and finish cleaning up after the 2018-04-05 05:07:37 -07:00
refDesc.py Fixed typos 2018-11-16 19:42:02 +01:00
refPageNotes.md Restructure the repository to put the specification Makefile and 2018-04-04 23:08:43 -07:00
reflib.py Change log for April 15, 2018 Vulkan 1.1.73 spec update: 2018-04-15 03:32:07 -07:00
reflow.py Fixed typos 2018-11-16 19:42:02 +01:00
reflow_count.py Change log for December 16, 2018 Vulkan 1.1.96 spec update: 2018-12-16 22:22:53 -08:00
registry.txt Change log for December 16, 2018 Vulkan 1.1.96 spec update: 2018-12-16 22:22:53 -08:00
sandboxCopy Change log for March 5, 2018 Vulkan 1.1.72 spec update: 2018-04-05 04:24:56 -07:00
styleguide.txt Change log for December 3, 2018 Vulkan 1.1.95 spec update: 2018-12-03 02:41:34 -08:00
update_valid_usage_ids.sh Fix Makefile PATCHVERSION to 72, and finish cleaning up after the 2018-04-05 05:07:37 -07:00
vkspec.txt Change log for November 25, 2018 Vulkan 1.1.94 spec update: 2018-11-25 23:27:30 -08:00

README.adoc

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

= Vulkan^(R)^ API Documentation Project

This repository contains sources for the formal documentation of the Vulkan
API. This includes:

[options="compact"]
 * the Vulkan API Specification
 * specification of Vulkan Extensions
 * the reference ("`man`") pages
 * the XML API Registry (also mirrored at
   https://github.com/KhronosGroup/Vulkan-Headers)
 * Vulkan header files (also mirrored at
   https://github.com/KhronosGroup/Vulkan-Headers)
 * related tools and scripts.

The authoritative public repository is located at
https://github.com/KhronosGroup/Vulkan-Docs/.
It hosts public Issue tracker, and accepts patches (Pull Requests) from the
general public.

If in doubt where to submit your Issue consult the
https://github.com/KhronosGroup/Vulkan-Ecosystem repo.


== Branch Structure

Everything is now maintained in the `master` branch of the repository.
From this branch it is possible to generate both Vulkan 1.1 and Vulkan 1.0
Specifications, as well as specifications for any set of Extensions.

[NOTE]
====
Old revisions of the repository maintained the Vulkan 1.0 Specification in
the `1.0` branch, and extensions in the `1.0-VK_EXTENSION_NAME`.
These branches are now **obsolete**, and contain only very old versions of
the Specification (and extensions).
====


== Directory Structure

The directory structure is as follows:

```
README.adoc           This file
BUILD.adoc            Documents how to build the specifications, and man pages
COPYING.md            Copyright and licensing information
CODE_OF_CONDUCT.md    Code of Conduct
ChangeLog.txt         Change log summary for each public spec update
Makefile, make*       Makefile and helper build scripts (see BUILD.adoc)
appendices/           Specification appendices
chapters/             Specification chapters
config/               Asciidoctor configuration
images/               Images (figures, diagrams, icons)
include/vulkan/       Vulkan headers, generated from the Registry
man/                  Reference (man) pages for the API; mostly extracted from the spec source
out/                  Default directory for the generated documents
scripts/              Related scripts (but many scripts are still in the root or xml/ directory)
src/ext_loader/       Extension loader library (deprecated)
style/                Sources for "styleguide" (Vulkan Documentation and Extensions: Procedures and Conventions)
xml/                  XML API Registry (vk.xml) and related scripts
registry.txt          Sources for documentation of the vk.xml format
```

This structure was adopted following 1.1.70 spec update.
There may be additional cleanup and simplification in the future.


== 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 (`xml/vk.xml`).
The generated files (with the exception of header files) are not checked
into the repository.
If you change `vk.xml`, you can regenerate the header by going into `xml/`
and running:

    $ make clean install

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