summaryrefslogtreecommitdiff
path: root/tests/rewriter/glslang-bug-988-workaround.slang
AgeCommit message (Collapse)Author
2017-07-23Work around glslang issue 988Tim Foley
The basic bug there is that if you have a member of `struct` type in a `uniform` block and then pass a reference to that member directly to a call: ``` struct Foo { vec4 bar; }; uniform U { Foo foo; }; void main() { doSomething(foo); } ``` then glslang generates invalid SPIR-V which seems to cause an issue for some drivers. This change works around the problem by detecting cases where an argument to a function call is a reference to `uniform` block member (of `struct` type) and then rewrites the code to move that value to a temporary before the call.