Sunday, March 29, 2015


I'm going to play some with SPIR-V, and the first step is to look at existing projects/blogs. Below is what I have found so far. Have I missed anything relevant?


Redefining the shading languages ecosystem with SPIR-V
Great overview of the benefits of SPIR-V, and what problems it does not solve.


Khronos' reference compiler front end for the OpenGL ES and OpenGL shading languages. This can now generate SPIR-V.

LunarGLASS: LunarG's LLVM Adaptation to Shader Compiler Stacks.
It compiles shaders to LLVM IR using the glslang frontend, and it can use the SPIR-V output from glslang, so it seems to contain most code needed to convert SPIR-V to LLVM IR.
Translation from python bytecode to SPIR-V.

This also contains
  • A SPIR-V decoder/encoder (assembler/disassembler)
  • Machine readable specification for SPIR-V in json -format that can be used to drive a decoder/encoder. And the script used to generate it.
SPIR-V generator for .NET IL written in C#.
A SPIR-V encoder/decoder written in Go.
Simple SPIR-V parser written in C.
SPIR-V HTML Specification to JSON converter written in C#.
SPIR-V bytecode emitter written in C#.


  1. There is also the {Zoclee}™ Shade project that is an open source virtual machine for SPIR-V binaries.

  2. SPIR-V assembler/disassembler.