diff options
Diffstat (limited to 'gfx/angle/checkout/src/compiler/translator/tree_util/RunAtTheBeginningOfShader.cpp')
-rw-r--r-- | gfx/angle/checkout/src/compiler/translator/tree_util/RunAtTheBeginningOfShader.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gfx/angle/checkout/src/compiler/translator/tree_util/RunAtTheBeginningOfShader.cpp b/gfx/angle/checkout/src/compiler/translator/tree_util/RunAtTheBeginningOfShader.cpp new file mode 100644 index 0000000000..99be6add13 --- /dev/null +++ b/gfx/angle/checkout/src/compiler/translator/tree_util/RunAtTheBeginningOfShader.cpp @@ -0,0 +1,35 @@ +// +// Copyright 2020 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// RunAtTheBeginningOfShader.cpp: Add code to be run at the beginning of the shader. +// void main() { body } +// => +// void main() +// { +// codeToRun +// body +// } +// + +#include "compiler/translator/tree_util/RunAtTheBeginningOfShader.h" + +#include "compiler/translator/Compiler.h" +#include "compiler/translator/IntermNode.h" +#include "compiler/translator/SymbolTable.h" +#include "compiler/translator/tree_util/FindMain.h" +#include "compiler/translator/tree_util/IntermNode_util.h" +#include "compiler/translator/tree_util/IntermTraverse.h" + +namespace sh +{ + +bool RunAtTheBeginningOfShader(TCompiler *compiler, TIntermBlock *root, TIntermNode *codeToRun) +{ + TIntermFunctionDefinition *main = FindMain(root); + main->getBody()->insertStatement(0, codeToRun); + return compiler->validateAST(root); +} + +} // namespace sh |