8. io mapping refine & qualifier member check & resolver expand (#2396)
authorChow <laddoc@outlook.com>
Tue, 3 Nov 2020 20:34:19 +0000 (04:34 +0800)
committerGitHub <noreply@github.com>
Tue, 3 Nov 2020 20:34:19 +0000 (13:34 -0700)
commit478b23295244c9f33eb90a47a99fb3b5cc6e0370
tree32161160ec63c725e2e5d2fe7d1fd2a379fcf338
parentd550bebee919179c9e332a0ab28a67f8fe3ca239
8. io mapping refine & qualifier member check & resolver expand (#2396)

* Code refine and adding missing features

1. Add new level for built in symbols.
2. Fix issues for structure members' qualifiers.
3. Global qualifier fix.
4. IO Mapper refine. Add support for checking with mangle names.

* Additional missing features

* Invariant member. (Only check non-interface).

* Split block nesting level and struct nesting level. To fix issues of checking 'invariant' qualifier.

Current grammar would check block/struct member without its parent class's information.
So we split nesting level, and 'invariant' would only be checked within a struct.

* Format anonymous block names. Refine codes for symbols from all kinds of resouces.

* Fix writeonly check.

* Use LValueBase to find operator.

* Fix random null ptr issue.

* invariant check, stage in io mapping, reference parameter should be used and remove wrong codes introduced with ordering vector.

* Remained: to be fixed with double check link.vk.multiblocksValid

* Fix version error.

invariant

* Revert loc modification.
25 files changed:
SPIRV/GlslangToSpv.cpp
Test/baseResults/300layout.vert.out
Test/baseResults/310.frag.out
Test/baseResults/310.vert.out
Test/baseResults/320.vert.out
Test/baseResults/410.geom.out
Test/baseResults/hlsl.structbuffer.append.fn.frag.out
Test/baseResults/hlsl.structbuffer.fn.frag.out
Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out
Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out
Test/baseResults/spv.specConstant.vert.out
glslang/Include/intermediate.h
glslang/MachineIndependent/IntermTraverse.cpp
glslang/MachineIndependent/ParseContextBase.cpp
glslang/MachineIndependent/ParseHelper.cpp
glslang/MachineIndependent/ParseHelper.h
glslang/MachineIndependent/Scan.cpp
glslang/MachineIndependent/SymbolTable.cpp
glslang/MachineIndependent/SymbolTable.h
glslang/MachineIndependent/glslang.m4
glslang/MachineIndependent/glslang.y
glslang/MachineIndependent/glslang_tab.cpp
glslang/MachineIndependent/iomapper.cpp
glslang/MachineIndependent/iomapper.h
glslang/MachineIndependent/reflection.cpp