1 // 2 // Copyright 2002 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 ANGLE_NO_DISCARD bool 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