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
12namespace sh
13{
14
15class 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