1 | // |
2 | // Copyright (c) 2002-2010 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_TRANSLATORGLSL_H_ |
8 | #define COMPILER_TRANSLATOR_TRANSLATORGLSL_H_ |
9 | |
10 | #include "compiler/translator/Compiler.h" |
11 | |
12 | namespace sh |
13 | { |
14 | |
15 | class TranslatorGLSL : public TCompiler |
16 | { |
17 | public: |
18 | TranslatorGLSL(sh::GLenum type, ShShaderSpec spec, ShShaderOutput output); |
19 | |
20 | protected: |
21 | void initBuiltInFunctionEmulator(BuiltInFunctionEmulator *emu, |
22 | ShCompileOptions compileOptions) override; |
23 | |
24 | void translate(TIntermBlock *root, |
25 | ShCompileOptions compileOptions, |
26 | PerformanceDiagnostics *perfDiagnostics) override; |
27 | bool shouldFlattenPragmaStdglInvariantAll() override; |
28 | bool shouldCollectVariables(ShCompileOptions compileOptions) override; |
29 | |
30 | private: |
31 | void writeVersion(TIntermNode *root); |
32 | void writeExtensionBehavior(TIntermNode *root, ShCompileOptions compileOptions); |
33 | void conditionallyOutputInvariantDeclaration(const char *builtinVaryingName); |
34 | }; |
35 | |
36 | } // namespace sh |
37 | |
38 | #endif // COMPILER_TRANSLATOR_TRANSLATORGLSL_H_ |
39 | |