Khronos Vulkan SC Registry

The Vulkan SC registry contains formatted specifications of the Vulkan SC 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 SC 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.

NOTE: Vulkan SC and Vulkan currently use the same shader toolchains and SPIR-V dialects.

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 SC.

Index to the Vulkan SC Registry page content:

Vulkan SC 1.0 API Specifications

We publish the Vulkan SC API Specification in PDF and HTML forms. The single-file HTML documents is considerably slower to load than the PDF. At present we are not publishing a chunked HTML version of the Specification.

There are several versions of the Vulkan SC 1.0 Specification, as well as related Specifications and collateral material:

  • Vulkan SC 1.0 Core API + all published Extensions (PDF) (Single-file HTML) This Specification includes all registered Vulkan SC extensions which have been incorporated into the Specification Repository, including KHR, EXT, and vendor extensions.
  • Vulkan SC 1.0 Core API (PDF) (Single-file HTML)

Khronos Data Format Specification

The Data Format Specification (version 1.3) defines compressed texture formats used by Vulkan SC, and portions of that specification are incorporated into the Vulkan SC 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 SC extension specifications, or contribute to existing specifications, should familiarize themselves with and adhere to this document.

NOTE: Vulkan SC and Vulkan use the same style guide.

API Reference Pages

The Vulkan SC 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 HTML format published here, it is possible to generate other formats from the reference page sources.

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

Vulkan SC GitHub Repositories

API and Extension Specification Repository

The VulkanSC-Docs repository contains the Asciidoctor source for the Vulkan SC core API specification, and for registered Vulkan SC API extensions. Note: Vulkan SC spec sources are in the sc_main branch, which is the default branch of the repository.

All published extension specifications are included in the sc_main branch. Specifications and reference pages can be built with or without different combinations of extensions by appropriate invocation of the Makefile.

All versions of the Vulkan SC Specification can be generated out of the sc_main branch.

Other branches in the repository are either specific to the Vulkan API, or of historical interest only.

Registered and published extensions are listed below, grouped by Author/Vendor ID. The links are to extension reference pages; these pages are quick to load compared to the full Vulkan SC 1.0 Core API + all published Extensions Specification, and they link back to it if more information or context is needed. The list of links is generated based on the supported tags in xml/vk.xml in the sc_main branch of 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.

VulkanSC-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 sc_main branch of the KhronosGroup/VulkanSC-Headers repository. These headers do not include VulkanHPP-style C++ headers at present, but there is a MISRA C++ friendly vulkan_sc_core.hpp header.

The sc_main branch of VulkanSC-Headers also includes a JSON file containing Valid Usage ID (VUID) tags (and corresponding valid usage statements) extracted from the specification sources. This is used only by the validation layer, at present.

All Vulkan SC headers provided by Khronos are ultimately generated from the sc_main branch of the VulkanSC-Docs repository. If the headers we provide aren't sufficient, you may clone the VulkanSC-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 the sc_main branch of VulkanSC-Headers, vk_platform.h and vulkan_sc.h. These headers are not generated dynamically from the VulkanSC-Docs repository.

API Registry

Vulkan SC 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 SC Registry is used for many more purposes than most other Khronos API registries, and is the basis for generating the header files; Asciidoctor 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 sc_main branch of VulkanSC-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.

NOTE: Vulkan SC and Vulkan use the same registry schema.

Conformance Test Suite Repository

The VK-GL-CTS repository contains the source code for the Vulkan SC 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 SC trademark for your implementation.

Loader and Validation Layers Repositories

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

  • The sc_main branch of the VulkanSC-Headers repository contains a copy of the Vulkan SC XML API Registry and scripts for processing it, taken from the latest public specification update in the VulkanSC-Docs project, and the corresponding generated Vulkan SC API headers.
  • The VulkanSC-Tools repository contains Khronos official Vulkan SC Tools and Utilities.
  • The VulkanSC-ValidationLayers repository contains the Khronos official Vulkan SC validation layers.
  • The VulkanSC-Loader repository contains the Vulkan SC loader.
  • The VulkanSC-pcutil repository contains a Vulkan SC Pipeline Cache Utility library.

Sample Code Repository

Not available yet.

Other Repositories

Other Khronos repositories containing Vulkan SC material include:

  • None yet!

Providing Feedback on the Registry

Khronos welcomes comments and bug reports. To provide feedback on the Vulkan SC registry itself (such as reporting missing content, bad links, etc.), file an issue in the VulkanSC-Registry Github project.

For the Vulkan SC Specification or other documentation and tools, file an Issue on the appropriate GitHub Repository.