Skip to content

PENGUINLIONG/spq-rs

Repository files navigation

spq

spq is a family of crates to help you process SPIR-V binary and assembly for Vulkan.

Note: This project prefix spirq- of several sub-crates has been replaced with spq- in the v1.2.0 release.

Crate Purpose
spq-core Crate Common structures and routines for SPIR-V IR analysis.
spq-spvasm Crate SPIR-V assembler and disassembler.

Commandline (CLI) tools are also provided for general use.

Crate Purpose
spq-dis Crate SPIR-V disassembler frontend. Drop-in replacement of spirv-dis.
spq-as Crate SPIR-V assembler frontend. Drop-in replacement of spirv-as.

What's different from other crates?

A lot of my works stand in an overlapping field of compilers and graphics systems, so I often have to work with weird or even corrupted SPIR-V binaries. Obviously, existing tools like rspirv is not designed for this. I then decided to develop my own toolkit, which is now the spq family.

Compared with spq, rspirv has more strict requirements on SPIR-V physical layout, which makes it impossible to process bad test cases for other projects. SPIRV-Tools provides Khronos' official assembler and disassembler, while it's hard to be integrated to other Rust projects.

On the other hand, the tools in spq are more tolerant of the input quality. They don't check the semantics strictly to the spec. They won't stop processing unless there is a fatal structural problem making the input totally indecipherable. As a result, you might have to be familiar with the SPIR-V specification so that it serves you well, if you are developing other tools based on spq.

License

This project is licensed under either of

at your option.

About

No description, website, or topics provided.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published