4

SPIR-V 规范允许模块请求将分支展平或使用适当指令的控制装饰展开循环。这对着色器的最终性能配置文件有重大影响。但是,与 HLSL 不同,标准 GLSL 没有办法表达这一点。目的是驱动程序可以为您做出这些决定,尽管可以说只有开发人员才能拥有足够的信息来这样做。

有没有办法指定在使用 glslang 时应该如何从 GLSL 编译控制操作,还是由驱动程序来做出这些决定?我们是否仍然需要手动展开循环以确保它们不会分支?

4

1 回答 1

3

有没有办法指定在使用 glslang 时如何从 GLSL 编译控制操作

GLSL 中没有明确的方法来请求这些东西。可能有glslangValidator可以控制它的开关,但即便如此,这将是一个全局设置,而不是每个循环设置。

我们是否仍然需要手动展开循环以确保它们不会分支?

这是“确保他们不会分支”的唯一方法。即使使用 SPIR-V 的展开装饰,这也是一个要求,而不是保证。如果内部 SPIR-V 编译器不想展开该循环,那么无论您告诉它什么,它都不会展开。

于 2016-08-24T16:22:09.407 回答