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_GLSL_TRANSLATORGLSL_H_ 8 #define COMPILER_TRANSLATOR_GLSL_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 const ShCompileOptions &compileOptions) override; 23 24 [[nodiscard]] bool translate(TIntermBlock *root, 25 const ShCompileOptions &compileOptions, 26 PerformanceDiagnostics *perfDiagnostics) override; 27 bool shouldFlattenPragmaStdglInvariantAll() override; 28 29 private: 30 void writeVersion(TIntermNode *root); 31 void writeExtensionBehavior(TIntermNode *root, const ShCompileOptions &compileOptions); 32 void conditionallyOutputInvariantDeclaration(const char *builtinVaryingName); 33 }; 34 35 } // namespace sh 36 37 #endif // COMPILER_TRANSLATOR_GLSL_TRANSLATORGLSL_H_ 38