The Vulkan registry contains formatted specifications of the Vulkan API, header files, API reference pages, the reference card, and related documentation. The registry also links to the GitHub repository where the sources for these documents can be found.
Graphics and compute shaders for Vulkan are defined using an intermediate representation called SPIR-V, for which specifications and headers are published in the SPIR-V Registry. There are a variety of compilers and other tools for generating SPIR-V code. We encourage developers to explore related Vulkan material starting at the top-level Vulkan landing page. There is also a link below to an OpenGL Shading Language extension allowing use of SPIR-V shaders.
Index to the Vulkan registry page content:
We currently publish the Vulkan API Specification in PDF and HTML (single-page) forms. There are three different specifications provided: the core Vulkan API; the Vulkan API including the family of Khronos-defined KHR extensions - especially the Window-System Interface extensions used to post images to a display on different platforms and window systems; and the Vulkan API including all registered Khronos, EXT, and vendor extensions.
The Data Format Specification (version 1.2) defines compressed texture formats used by Vulkan, and portions of that specification are incorporated into the Vulkan API Specification by reference.
The Vulkan Documentation: Procedures and Conventions document (formerly the “API Style Guide”) defines mandatory and recommended conventions and best practices used in creating and modifying the API Specification and extensions . Authors wishing to write Vulkan extension specifications or contribute to existing specifications should familiarize themselves with this document and follow its recommendations.
The API Quick Reference is a compact document summarizing the Vulkan API commands, structures, and enumerants.
The InDesign sources for the reference guide are also available, formatted as a .zip file.
The Vulkan API Reference Pages describe how to use individual core API and extension commands. The goal is to define all commands and structures in the core API and extensions, although there may be some omissions. In addition to the formats published here, it is possible to generate other formats from the reference page sources, such as Unix nroff man page sources.
As of the July 15, 2016 update, the reference pages are generated by automatic extraction from the Specification source, and are not checked into GitHub. The set of pages linked above are generated from the core API specification, but sets of pages including arbitrary extensions can be generated in the same fashion as specifications including arbitrary extensions.
The Vulkan-Docs repository contains the Asciidoc source for the Vulkan core API specification, and for registered Vulkan API extensions.
All published extension specifications are included in the 1.0 git branch. Specifications and reference pages can be built with or without different combinations of extensions by appropriate invocation of the Makefile. This is a major difference from versions of the Specification prior to 1.0.24, where each extension existed on its own git branch. The branches still exist for historical purposes but are increasingly out of date.
Registered and published extensions are listed below, grouped by Author/Vendor ID. The links are into the corresponding extension appendices of the Vulkan 1.0 Core API + all published Extensions Specification. This list is driven by the supported tags in src/spec/vk.xml in Vulkan-Docs, and may contain anomalies in the form of links to extensions marked as supported by a vendor, but whose specifications have not yet been merged into the Vulkan-Docs repository.
The Vulkan-Docs repository also contains several extensions to the OpenGL Shading Language:
The purpose of these extensions is to be used with an offline GLSL compiler generating SPIR-V code for use with Vulkan; therefore they do not appear in the OpenGL Extension Registry at this time. The master copy of the extension specifications are located under doc/specs/misc/ in the Vulkan-Docs repository.
Currently, Vulkan-Docs also contains the header files, API Registry, and reference page sources. We hope to soon refactor the repositories to separate these documents from the specifications.
For most developers, the header files provided with a loader and/or driver package, such as the one defined in the loader and validation layers Github repository, are all that's needed.
However, all Vulkan headers provided by Khronos are ultimately obtained from the Vulkan-Docs repository You may clone this repository and copy the headers from src/vulkan/vulkan.h and src/vulkan/vk_platform.h; or, if you need to generate a customized version of the headers, use the API Registry and scripts under src/spec/.
Note: we hope to soon refactor the repositories to separate the headers and reference pages from the specifications.
Vulkan defines an API Registry for the core API and extensions, formally defining command prototypes, structures, enumerants, and many other aspects of the API and extension mechanisms. The Vulkan Registry is used for many more purposes than most other Khronos API registries, and is the basis for generating the header files; Asciidoc include files used in the Specification, and reference pages for interface definitions, parameter and member validity language, and synchronization language; and more.
The Registry is in an XML file called vk.xml and currently located in the Vulkan-Docs repository under src/spec. This directory also includes a formal Relax NG XML schema and scripts used to generate the various outputs.
Documentation of the XML schema is available.
The Vulkan-CTS repository contains the source code for the Vulkan Conformance Tests. Note that while the CTS source code is freely available, you must be a Khronos Adopter and pay the Adopter Fee in order to use the Vulkan trademark for your implementation.
The Vulkan-LoaderAndValidationLayers repository contains source code implementing a loader for hardware drivers, and a variety of validation layers which may be enabled during development. This code is also available as part of prebuilt packages in the LunarG Vulkan SDK.
The Vulkan-Samples repository contains sample code showing use of Vulkan, contributed by various Khronos members and other authors.