0

Android スタジオで Vulkan 計算シェーダーを作成し、Android フォンで起動しています。私が経験している問題は次のとおりです。subgroupAddや などのサブグループ操作を使用できませんsubgroupElect。これらの関数を使用しようとすると、次のようなエラーが発生します。

reduce_vec.comp:35: error: 'subgroup op' : requires SPIR-V 1.3

私は確認しました - 私の Android フォンはサブグループをサポートしており、私のシェーダーはそのような拡張機能を受け入れます:

#extension GL_KHR_shader_subgroup_arithmetic: enable
#extension GL_KHR_shader_subgroup_basic: enable

問題は非常に簡単です。SPIR-V を更新する必要があります。しかし、私の調査によると、Android studio に自動的に付属する SPIR-V は、簡単に更新できるものではありません。

誰かが以前に同様の問題を経験しましたか? あなたの解決策は何ですか?前もって感謝します!

4

1 に答える 1

1

Android ソリューション

Gradle DSL で引数を Android shaderc コンパイラに渡すことができます。

https://developer.android.com/ndk/guides/graphics/shader-compilers

glslcArgs含める必要があります--target-env=vulkan1.1

柔軟なソリューション

ソースから SPIR-V にコンパイルする独自のコンパイル パイプラインを構築し、SPIR-V バイナリ ファイルを直接 Android プロジェクトに含めます。

SPIR-V を生成できる複数の言語のフロントエンドがあります。GLSL 用の Khronos ツールは次のとおりです。

于 2022-02-08T08:38:48.920 に答える