-
Couldn't load subscription status.
- Fork 1.1k
Open
Labels
area: naga front-endlang: WGSLWebGPU Shading LanguageWebGPU Shading LanguagenagaShader TranslatorShader Translator
Milestone
Description
Because Naga doesn't implement WGSL's template list discovery algorithm, full constant expressions aren't permitted everywhere they ought to be. Or at least, not without parentheses. The following is valid WGSL, but Naga rejects it, even on the const-expressions-2 branch:
$ cat expr-array-length.wgsl
var<workgroup> buffer: array<u32, 1024 * 1024>;
$ naga expr-array-length.wgsl
Finished dev [unoptimized + debuginfo] target(s) in 0.03s
Running `/home/jimb/rust/naga/target/debug/naga expr-array-length.wgsl`
error: expected '>', found '*'
┌─ expr-array-length.wgsl:1:40
│
1 │ var<workgroup> buffer: array<u32, 1024 * 1024>;
│ ^ expected '>'
Could not parse WGSL
$
If we change it as follows, Naga accepts it:
var<workgroup> buffer: array<u32, (1024 * 1024)>;
The problem here is that Naga doesn't yet implement template list discovery, so it can't tell that the > in array<u32, 1024 * 1024> is the closing bracket of a template list, rather than a > operator in an expression.
Metadata
Metadata
Assignees
Labels
area: naga front-endlang: WGSLWebGPU Shading LanguageWebGPU Shading LanguagenagaShader TranslatorShader Translator
Type
Projects
Status
In Progress