0

我正在 Android Studio 中编写 Vulkan 计算着色器并在 Android 手机上启动它。我遇到的问题是下一个 - 我不能使用任何子组操作,比如subgroupAddand 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

安卓解决方案

您可以在 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 回答