Khronos Vulkan Registry

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.

The GLSL Shading Language GitHub repository contains OpenGL Shading Language extensions to be used with an offline GLSL compiler generating SPIR-V code for use with Vulkan. These specifications were previously maintained in the Vulkan-Docs repository and published in the Vulkan Registry.

Index to the Vulkan Registry page content:

Vulkan 1.1 API Specifications

We currently publish the Vulkan API Specification in PDF and HTML forms. There are several versions of the Vulkan 1.1 Specification, as well as related Specifications and collateral material:

Khronos Data Format Specification

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.

Vulkan Documentation and Extensions: Procedures and Conventions

The Vulkan Documentation and Extensions: Procedures and Conventions document (colloquially, the “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 and adhere to this document.

Vulkan 1.1 API Quick Reference

The Vulkan 1.1 API Quick Reference (PDF) is a compact document summarizing the Vulkan 1.1 API commands, structures, and enumerants.

The InDesign sources for the Quick Reference are also available, formatted as a .zip file.

API Reference Pages

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 format published here, it is possible to generate other formats from the reference page sources, such as PDF or Unix nroff man page sources.

Note: As of the 1.1.73 update, we have replaced the 1.0 reference pages with 1.1 reference pages. However, we are no longer publishing the single-file HTML and PDF versions (apispec.html and apispec.pdf), because these documents are even larger than the 1.1 API specifications.

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 1.1 API specification including all extensions, but sets of pages including arbitrary extensions can be generated in the same fashion as generating specifications including arbitrary extensions.

Vulkan 1.0 Material

We still maintain the Vulkan 1.0 Specification and related documents, which include:

  • Vulkan 1.0 Core API (Single-file HTML) (Chunked HTML) (PDF)
  • Vulkan 1.0 Core API + Khronos-defined Extensions (Single-file HTML) (Chunked) (PDF). This Specification includes Khronos-defined KHR extensions such as the Window-System Interface Extensions used to post images to a display on different platforms and window systems.
  • Vulkan 1.0 Core API + all published Extensions (Single-file HTML) (Chunked HTML) (PDF). This Specification includes all registered Vulkan extensions applicable to Vulkan 1.0 which have been incorporated into the Specification Repository, including KHR, EXT, and vendor extensions.

  • (Note: we have resumed posting up-to-date versions of the 1.0+KHR extensions and 1.0+all extensions versions of the Specification, based on Github feedback.
  • The Vulkan 1.0 API Quick Reference is a compact document summarizing the Vulkan 1.0 API commands, structures, and enumerants.

  • The InDesign sources for the 1.0 reference guide are also available, formatted as a .zip file.

Vulkan GitHub Repositories

API and Extension Specification Repository

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 master git branch. Specifications and reference pages can be built with or without different combinations of extensions by appropriate invocation of the Makefile.

The 1.0 branch of the Vulkan-Docs repository is no longer maintained, since both 1.1 and 1.0 Specifications can be generated out of the master branch.

Other branches in the repository are of historical interest only.

Registered and published extensions are listed below, grouped by Author/Vendor ID. The links are into the corresponding extension appendices of the Vulkan 1.1 Core API + all published Extensions Specification. This list is driven by the supported tags in xml/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.

Vulkan-Docs also contains the header files, API Registry, and reference page sources.

Header Files

For most developers, the C 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. We also provide a canonical version of these headers corresponding to spec updates in the KhronosGroup/Vulkan-Headers repository. These headers also include a C++ header generated from the Vulkan-Hpp project.

All Vulkan headers provided by Khronos are ultimately generated from the Vulkan-Docs repository. If the headers in Vulkan-Headers aren't sufficient, you may clone the Vulkan-Docs repository and generate headers yourself, following instructions there. If you need to generate a customized version of the headers, modify the API Registry and scripts under xml/.

Note: there are two static headers included in Vulkan-Docs, vk_platform.h and vulkan.h. These are not a complete set of Vulkan headers, simply the static files that cannot be generated from the API Registry.

API Registry

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 xml/. 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.

Conformance Test Suite Repository

The VK-GL-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.

Loader and Validation Layers Repositories

There are several additional Khronos Github repositories containing Vulkan source code, libraries, and tools:

  • The Vulkan-Headers repository contains a copy of the Vulkan XML API Registry and scripts for processing it, taken from the latest public specification update in the Vulkan-Docs project, and the corresponding generated Vulkan API headers.
  • The Vulkan-Tools repository contains Khronos official Vulkan Tools and Utilities for Windows, Linux, Android, and MacOS.
  • The Vulkan-ValidationLayers repository contains the Khronos official Vulkan validation layers for Windows, Linux, Androis, and MacOS.
  • The Vulkan-Loader repository contains the Vulkan loader that is used for Linux, Windows, MacOS, and iOS.

Sample Code Repository

The Vulkan-Samples repository contains sample code showing use of Vulkan, contributed by various Khronos members and other authors.

Other Repositories

Other Khronos repositories containing Vulkan material include:

  • The Vulkan-Hpp repository contains code used to generate vulkan.hpp, a C++ binding for Vulkan. A version of vulkan.hpp is included in the Vulkan-Headers repository.