| Summary: | Crash in webgl/2.0.y/conformance/glsl/misc/uninitialized-local-global-variables.html ANGLE+METAL | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Kimmo Kinnunen <kkinnunen> | ||||||
| Component: | ANGLE | Assignee: | Kyle Piddington <kpiddington> | ||||||
| Status: | RESOLVED FIXED | ||||||||
| Severity: | Normal | CC: | dino, ews-watchlist, graouts, kbr, kkinnunen, kondapallykalyan, webkit-bug-importer | ||||||
| Priority: | P2 | Keywords: | InRadar | ||||||
| Version: | WebKit Local Build | ||||||||
| Hardware: | Unspecified | ||||||||
| OS: | Unspecified | ||||||||
| See Also: | https://bugs.webkit.org/show_bug.cgi?id=227482 | ||||||||
| Bug Depends on: | |||||||||
| Bug Blocks: | 220076 | ||||||||
| Attachments: |
|
||||||||
|
Description
Kimmo Kinnunen
2021-03-30 04:42:40 PDT
Created attachment 424838 [details]
Patch
Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE Comment on attachment 424838 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=424838&action=review > Source/ThirdParty/ANGLE/ChangeLog:4 > + Correctly handle nameless structs in metal backend This ChangeLog line's in the wrong place. It should be in a new paragraph after the bug ID. Please fix indentation too. > Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorMetalDirect/SeparateCompoundStructDeclarations.cpp:37 > + if (type.isStructSpecifier() && symbolType != SymbolType::Empty) Would it be possible to add a unit test under src/tests/compiler_tests for this change, looking (for example) for the "unnamed" prefix? > Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorMetalDirect/SeparateCompoundStructDeclarations.cpp:43 > + if(structure->symbolType() == SymbolType::Empty && !structure->isVariable()) This seems weird to me. structure is a TStructure - why would its symbolType be empty, and further, why would it ever have Variable SymbolClass? Possible to describe in a comment the layout of the data structures for named vs. unnamed / inline structures? > Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorMetalDirect/SeparateCompoundStructDeclarations.cpp:45 > + const TStructure * structDefn = new TStructure(mSymbolTable, mIdGen.createNewName("unnamed").rawName(), &(structure->fields()) , SymbolType::AngleInternal); Is it guaranteed that this generated name doesn't collide with anything? Does it use a prefix that's reserved, like "_webgl" per https://www.khronos.org/registry/webgl/specs/latest/1.0/#4.3 ? Created attachment 425671 [details]
Patch
Comment on attachment 425671 [details]
Patch
Looks good! r+
Committed r275832 (236402@main): <https://commits.webkit.org/236402@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 425671 [details]. |