Rspirv: Rust impl of Vulkan/SPIR-V module manipulation APIs and tools


Hello Rustaceans!

Warnings, Rust newbie here. :slight_smile: I have been fascinated by Rust for a while. And it is said that the best way to learn a new programming language is just using it. So I has been spending my spare time on a side project: rspirv. Please just feel free to poke around. Suggestions towards more idiomatic implementations are highly appreciated. :slight_smile:



What is SPIR-V?

SPIR-V is the new common intermediate language for representing graphical shaders and compute kernels for multiple Khronos APIs, such as Vulkan, OpenGL, and OpenCL.

What is this project about?

I intend to write an API for manipulating SPIR-V modules, based on which I can then write an assembler, disassembler (and potentially a HLSL to SPIR-V frontend?). The core is defining a memory representation (MR) to hold SPIR-V in memory and facilitate various transformations/functionalities. (Well, I know this sounds a lot like LLVM IR. And I do intent to write the transformation from and to LLVM IR. :slight_smile: ) Right now the MR of SPIR-V modules and the disassembler is basically done. The rest should come gradually. of the project has more details.

Again please feel free to poke around and suggestions are highly appreciated. Thanks! :slight_smile: