GLSL: don't emit structs w/runtime-sized arrays.

In GLSL, runtime-sized arrays are only valid in interface blocks, not
in structs. The existing code was attempting to avoid emitting structs
containing runtime-sized arrays but was confused by type aliases in
the AST resulting in arrays being missed.

The fix is to do the work on the semantic types instead, where type
aliases have been resolved.

Bug: tint:1339
Change-Id: I8c305ee9bddd75f975dd13f1d19d623d71410693
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/82360
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
This commit is contained in:
Stephen White
2022-03-02 14:09:22 +00:00
committed by Tint LUCI CQ
parent 93f686617e
commit 66abf3ed14
50 changed files with 10 additions and 635 deletions

View File

@@ -1,13 +1,6 @@
SKIP: FAILED
#version 310 es
precision mediump float;
struct S {
uint first;
uint rtarr[];
};
layout(binding = 0, std430) buffer S_1 {
uint first;
uint rtarr[];
@@ -25,10 +18,3 @@ void main() {
tint_symbol();
return;
}
Error parsing GLSL shader:
ERROR: 0:6: '' : array size required
ERROR: 0:7: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.