1 // 2 // Copyright 2020 The ANGLE Project Authors. All rights reserved. 3 // Use of this source code is governed by a BSD-style license that can be 4 // found in the LICENSE file. 5 // 6 7 #ifndef COMPILER_TRANSLATOR_TRANSLATORMETALDIRECT_REDUCEINTERFACEBLOCKS_H_ 8 #define COMPILER_TRANSLATOR_TRANSLATORMETALDIRECT_REDUCEINTERFACEBLOCKS_H_ 9 10 #include "common/angleutils.h" 11 #include "compiler/translator/Compiler.h" 12 13 namespace sh 14 { 15 16 // This rewrites interface block declarations only. 17 // 18 // Access of interface blocks is not rewritten (e.g. TOperator::EOpIndexDirectInterfaceBlock). // 19 // XXX: ^ Still true? 20 // 21 // Example: 22 // uniform Foo { int x; }; 23 // Becomes: 24 // uniform int x; 25 // 26 // Example: 27 // uniform Foo { int x; } foo; 28 // Becomes: 29 // struct Foo { int x; }; uniform Foo x; 30 // 31 ANGLE_NO_DISCARD bool ReduceInterfaceBlocks(TCompiler &compiler, TIntermBlock &root, IdGen &idGen); 32 33 } // namespace sh 34 35 #endif // COMPILER_TRANSLATOR_TRANSLATORMETALDIRECT_REDUCEINTERFACEBLOCKS_H_ 36