Skip to content

Commit

Permalink
Bump version to spirq v1.3
Browse files Browse the repository at this point in the history
  • Loading branch information
PENGUINLIONG committed Mar 13, 2024
1 parent 0065972 commit b5b8e7e
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 11 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Change Log

## v1.1.2

- Fixed compatibility with `spirv` v0.3. (#130)
- Properly support mesh shader reflection. (#127)
- From this version SPIR-Q is renamed to spirq (all lower case).

## v1.1.1

- Better readme.
Expand Down
4 changes: 2 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# SPIR-Q
# spirq

[![Crate](https://img.shields.io/crates/v/spirq)](https://crates.io/crates/spirq)
[![Documentation](https://docs.rs/spirq/badge.svg)](https://docs.rs/spirq)

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

| Crate | Purpose |
|-|-|
Expand All @@ -21,11 +21,11 @@ Commandline (CLI) tools are also provided for general use.

## 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` and `spirv-reflect` are not designed for this. I then decided to develop my own toolkit, which is now the SPIR-Q family.
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` and `spirv-reflect` are not designed for this. I then decided to develop my own toolkit, which is now the spirq family.

Compared with SPIR-Q, `rspirv` has more strict requirements on SPIR-V physical layout, which makes it impossible to process bad test cases for other projects. `spirv-reflect` is a broadly used reflection tool and it's a wrapper crate of Khronos' official [SPIRV-Reflect](https://github.com/KhronosGroup/SPIRV-Reflect) tool. `SPIRV-Reflect`, however, was developed in pretty early days and it has some legacy bad designs (like a limit of 16 descriptors). [SPIRV-Tools](https://github.com/KhronosGroup/SPIRV-Reflect) provides Khronos' official assembler and disassembler, while it's hard to be integrated to other Rust projects.
Compared with spirq, `rspirv` has more strict requirements on SPIR-V physical layout, which makes it impossible to process bad test cases for other projects. `spirv-reflect` is a broadly used reflection tool and it's a wrapper crate of Khronos' official [SPIRV-Reflect](https://github.com/KhronosGroup/SPIRV-Reflect) tool. `SPIRV-Reflect`, however, was developed in pretty early days and it has some legacy bad designs (like a limit of 16 descriptors). [SPIRV-Tools](https://github.com/KhronosGroup/SPIRV-Reflect) provides Khronos' official assembler and disassembler, while it's hard to be integrated to other Rust projects.

On the other hand, the tools in SPIR-Q 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 SPIR-Q.
On the other hand, the tools in spirq 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 spirq.

## License

Expand Down
4 changes: 2 additions & 2 deletions shader-reflect/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "shader-reflect"
version = "0.2.5"
version = "0.2.6"
authors = ["PENGUINLIONG <[email protected]>"]
edition = "2018"
license = "MIT OR Apache-2.0"
Expand All @@ -18,7 +18,7 @@ maintenance = { status = "actively-developed" }
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
spirq = { version = "1.1.2", path = "../spirq" }
spirq = { version = "1.1.3", path = "../spirq" }
clap = { version = "4.0.6", features = ["derive"] }
serde = "1.0"
serde_json = { version = "1.0", features = ["preserve_order"] }
Expand Down
2 changes: 1 addition & 1 deletion spirq-spvasm/src/generated/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ mod print_operand;

pub use decorate_parameter_enum_type::decorate_parameter_enum_type;
pub use enum_from_str::enum_from_str;
pub use enum_to_str::enum_to_str;
//pub use enum_to_str::enum_to_str;
pub use op_from_str::op_from_str;
pub use op_has_result_id::op_has_result_id;
pub use op_has_result_type_id::op_has_result_type_id;
Expand Down
2 changes: 1 addition & 1 deletion spirq/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "spirq"
version = "1.1.2"
version = "1.1.3"
authors = ["PENGUINLIONG <[email protected]>"]
edition = "2018"
license = "MIT OR Apache-2.0"
Expand Down

0 comments on commit b5b8e7e

Please sign in to comment.