You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Yes, that's what should happen in the generated output.
But, naga-oil currently fully relies on naga to do the shader parsing. As in, to parse a module, we roughly do
letmut module_string = String::new();
module_string.push_str(&composed_header);// Can depend on f32
module_string.push_str(&source);// Can alias f32. Breaks the header. :(let module = naga::front::wgsl::parse_str(&module_string);
Eventually, we might need proper support from naga to be able to handle all WGSL constructs. (The hard alternative is rolling our own parser.)
Currently, naga_oil generates headers and uses them to compile modules individually.
However, generating WGSL headers breaks down when they include a predeclared type which gets redefined.
For example, a simple header could be
Then, if we parse code like this, it leads to an issue
I believe that this is very hard to fix under the current model. We currently generate WGSL code for headers, and then pass the whole code to naga.
If WGSL were slightly more expressive, then this would also no longer be an issue. For example gpuweb/gpuweb#4308 would let us fix this.
The text was updated successfully, but these errors were encountered: