// // Copyright (c) 2015 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // ExtensionGLSL.h: Defines the TExtensionGLSL class that tracks GLSL extension requirements of // shaders. #ifndef COMPILER_TRANSLATOR_EXTENSIONGLSL_H_ #define COMPILER_TRANSLATOR_EXTENSIONGLSL_H_ #include #include #include "compiler/translator/IntermTraverse.h" namespace sh { // Traverses the intermediate tree to determine which GLSL extensions are required // to support the shader. class TExtensionGLSL : public TIntermTraverser { public: TExtensionGLSL(ShShaderOutput output); const std::set &getEnabledExtensions() const; const std::set &getRequiredExtensions() const; bool visitUnary(Visit visit, TIntermUnary *node) override; bool visitAggregate(Visit visit, TIntermAggregate *node) override; private: void checkOperator(TIntermOperator *node); int mTargetVersion; std::set mEnabledExtensions; std::set mRequiredExtensions; }; } // namespace sh #endif // COMPILER_TRANSLATOR_EXTENSIONGLSL_H_