xref: /aosp_15_r20/external/angle/src/compiler/translator/glsl/TranslatorGLSL.h (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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