Skip to content

Latest commit

 

History

History
33 lines (18 loc) · 2.23 KB

khronos_tooling.md

File metadata and controls

33 lines (18 loc) · 2.23 KB

Khronos Provided Tooling

The two main pieces of tooling Khronos provides for SPIR-V are the SPIRV-Headers and SPIRV-Tools

Both repos have very good documentation in their README files, so the following is a much more brief overview

SPIR-V Headers

This the Khronos Group way of providing a nice to use header file to interface with SPIR-V instead of people trying to generate their own. The SPIRV-Headers repo uses grammar files written in JSON to generate interface files for many languages. If a language you use for tooling is not provided, please bring up as an issue in the SPIRV-Header's repo

A quick example to show how easy it is to use the headers

#include <spirv/unified1/spirv.hpp>

const spv::Op kNop = spv::OpNop;

SPIR-V Tools

The SPIRV-Tools repo contains many utilities such as a validator, optimizer, linker, fuzzer, and more.

All these tools can be built as a standalone binary which is just a small wrapper around the libSPIRV-Tools library. For someone who wants to also leverage SPIRV-Tools, there is a libspriv header file that can be used.

Example: The reference GLSL compiler, glslang, depends on libSPIRV-Tools to provide an option to optimize the out

The main goal behind this repo is to provide a single location for very common tools to prevent people from having to re-write their own. The end user can use these tools either by themselves or incorporate them with their tools. The repo is also Apache License 2.0 and always open for contributions.

SPIR-V Visualizer

The SPIRV-Visualizer is a client side only Javascript tool to visualize a SPIR-V Module binary. Live link

khronos_tooling_visualizer.png