// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef UI_GL_GL_VERSION_INFO_H_ #define UI_GL_GL_VERSION_INFO_H_ #include #include #include "base/macros.h" #include "build/build_config.h" #include "ui/gl/gl_export.h" namespace gfx { struct GL_EXPORT GLVersionInfo { GLVersionInfo(const char* version_str, const char* renderer_str, const char* extensions_str); GLVersionInfo(const char* version_str, const char* renderer_str, const std::set& exts); bool IsAtLeastGL(unsigned major, unsigned minor) const { return !is_es && (major_version > major || (major_version == major && minor_version >= minor)); } bool IsLowerThanGL(unsigned major, unsigned minor) const { return !is_es && (major_version < major || (major_version == major && minor_version < minor)); } bool IsAtLeastGLES(unsigned major, unsigned minor) const { return is_es && (major_version > major || (major_version == major && minor_version >= minor)); } bool BehavesLikeGLES() const { return is_es || is_desktop_core_profile; } bool IsES3Capable() const { if (IsAtLeastGLES(3, 0) || IsAtLeastGL(4, 2)) return true; #if defined(OS_MACOSX) // TODO(zmo): For experimentation purpose on MacOSX with core profile, // allow 3.2 or plus for now. if (IsAtLeastGL(3, 2)) return true; #endif return false; } static void ParseVersionString(const char* version_str, unsigned* major_version, unsigned* minor_version, bool* is_es, bool* is_es3); bool is_es; bool is_angle; unsigned major_version; unsigned minor_version; bool is_es3; bool is_desktop_core_profile; private: GLVersionInfo(const char* version_str, const char* renderer_str); DISALLOW_COPY_AND_ASSIGN(GLVersionInfo); }; } // namespace gfx #endif // UI_GL_GL_VERSION_INFO_H_