Sunday, March 29, 2015

SPIR-V

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?

Blogs

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

Software

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

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

https://github.com/cheery/spirthon
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.

https://github.com/Philip-Trettner/SpirvNet
SPIR-V generator for .NET IL written in C#.

https://github.com/jteeuwen/spirv
A SPIR-V encoder/decoder written in Go.

https://github.com/kusma/SPIR-V
Simple SPIR-V parser written in C.

https://github.com/Philip-Trettner/SpirvSpecToJson
SPIR-V HTML Specification to JSON converter written in C#.

https://github.com/GeirGrusom/spirv-emit
SPIR-V bytecode emitter written in C#.

2 comments:

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

    https://github.com/Zoclee/Shade

    ReplyDelete
  2. SPIR-V assembler/disassembler.

    https://github.com/kristerw/spirv-tools

    ReplyDelete