xref: /aosp_15_r20/external/angle/src/compiler/translator/tree_util/RunAtTheBeginningOfShader.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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 // RunAtTheBeginningOfShader.cpp: Add code to be run at the beginning of the shader.
7 // void main() { body }
8 // =>
9 // void main()
10 // {
11 //     codeToRun
12 //     body
13 // }
14 //
15 
16 #include "compiler/translator/tree_util/RunAtTheBeginningOfShader.h"
17 
18 #include "compiler/translator/Compiler.h"
19 #include "compiler/translator/IntermNode.h"
20 #include "compiler/translator/SymbolTable.h"
21 #include "compiler/translator/tree_util/FindMain.h"
22 #include "compiler/translator/tree_util/IntermNode_util.h"
23 #include "compiler/translator/tree_util/IntermTraverse.h"
24 
25 namespace sh
26 {
27 
RunAtTheBeginningOfShader(TCompiler * compiler,TIntermBlock * root,TIntermNode * codeToRun)28 bool RunAtTheBeginningOfShader(TCompiler *compiler, TIntermBlock *root, TIntermNode *codeToRun)
29 {
30     TIntermFunctionDefinition *main = FindMain(root);
31     main->getBody()->insertStatement(0, codeToRun);
32     return compiler->validateAST(root);
33 }
34 
35 }  // namespace sh
36