Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
SPIR-V 规范允许模块请求将分支展平或使用适当指令的控制装饰展开循环。这对着色器的最终性能配置文件有重大影响。但是,与 HLSL 不同,标准 GLSL 没有办法表达这一点。目的是驱动程序可以为您做出这些决定,尽管可以说只有开发人员才能拥有足够的信息来这样做。
有没有办法指定在使用 glslang 时应该如何从 GLSL 编译控制操作,还是由驱动程序来做出这些决定?我们是否仍然需要手动展开循环以确保它们不会分支?
有没有办法指定在使用 glslang 时如何从 GLSL 编译控制操作
GLSL 中没有明确的方法来请求这些东西。可能有glslangValidator可以控制它的开关,但即便如此,这将是一个全局设置,而不是每个循环设置。
glslangValidator
我们是否仍然需要手动展开循环以确保它们不会分支?
这是“确保他们不会分支”的唯一方法。即使使用 SPIR-V 的展开装饰,这也是一个要求,而不是保证。如果内部 SPIR-V 编译器不想展开该循环,那么无论您告诉它什么,它都不会展开。