SPIR-V规范允许模块使用控件装饰请求展平分支或展开循环以获取适当的指令。这对着色器的最终性能配置文件产生了重大影响。但是,与HLSL不同,标准GLSL没有办法表达这一点。目的是驱动程序可以为您做出这些决定,但可以说只有开发人员才能获得足够的信息。
有没有办法指定在使用glslang时如何从GLSL编译控件操作,还是由驱动程序做出这些决定?我们是否还需要手动展开循环以确保它们不会分支?
答案 0 :(得分:2)
有没有办法指定在使用glslang时如何从GLSL编译控件操作
GLSL中没有明确的方法来请求此类事情。可能有glslangValidator
个开关可以控制它,但即便如此,这将是一个全局设置,而不是每个循环设置。
我们是否还需要手动展开循环以确保它们不会分支?
唯一的方式来确保他们不会分支"。即使使用SPIR-V展开装饰,这也是请求,而不是保证。如果内部SPIR-V编译器不想展开该循环,那么无论你告诉它什么,它都不会。