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