#spir-v #vulkan #opencl #opengl #light-weight #graphics

app spirq-reflect

轻量级SPIR-V查询工具,用于图形。(命令行界面)

3个不稳定版本

0.1.1 2022年10月1日
0.1.0 2022年10月1日
0.0.1 2022年10月1日

#1082 in 图形API

MIT/Apache

105KB
2.5K SLoC

SPIR-Q 反射工具

Crate

spirq-reflect 是着色器反射库 spirq 的命令行前端。它从SPIR-V着色器二进制文件生成反射JSON。您可以使用以下命令安装 spirq-reflect

cargo install spirq-reflect

用法

运行以下命令以反射SPIR-V二进制文件并生成JSON报告

spirq-reflect assets/spirv-spec.frag.spv

或者以下命令,如果您希望反射所有声明的资源,即使它们在着色器中从未使用。

spirq-reflect assets/spirv-spec.frag.spv --ref-all-rscs

请运行 spirq-reflect -h 以获取所有可用的命令行选项的详细描述。

示例输出

spirv-spec.frag.spv 二进制文件在 spirq 仓库中给出了以下输出

{
  "EntryPoint": "main",
  "ExecutionModel": "Fragment",
  "Variables": {
    "Inputs": [
      {
        "Name": "_42",
        "Location": 2,
        "Component": 0,
        "Type": "vec4<f32>"
      },
      {
        "Name": "_57",
        "Location": 1,
        "Component": 0,
        "Type": "vec4<f32>"
      },
      {
        "Name": "_33",
        "Location": 0,
        "Component": 0,
        "Type": "vec4<f32>"
      }
    ],
    "Outputs": [
      {
        "Name": "_31",
        "Location": 0,
        "Component": 0,
        "Type": "vec4<f32>"
      }
    ],
    "Descriptors": [
      {
        "Name": "_20",
        "Set": 0,
        "Binding": 0,
        "DescriptorType": "UniformBuffer",
        "Type": {
          "Kind": "Struct",
          "Members": [
            {
              "Name": "_18_0",
              "Offset": 0,
              "MemberType": {
                "Kind": "Struct",
                "Members": [
                  {
                    "Name": "_17_0",
                    "Offset": 0,
                    "MemberType": "u32"
                  },
                  {
                    "Name": "_17_1",
                    "Offset": 16,
                    "MemberType": {
                      "Kind": "Array",
                      "ElementType": "vec4<f32>",
                      "Count": 5,
                      "Stride": 16
                    }
                  },
                  {
                    "Name": "_17_2",
                    "Offset": 96,
                    "MemberType": "i32"
                  }
                ]
              }
            },
            {
              "Name": "_18_1",
              "Offset": 112,
              "MemberType": "u32"
            }
          ]
        },
        "Count": 1
      }
    ],
    "PushConstants": [],
    "SpecConstants": []
  }
}

依赖项

~2.7–4MB
~72K SLoC