Update UnusedResources lint suppressions.
[chromium-blink-merge.git] / ui / gl / gl_egl_api_implementation.cc
blob792fdc5e714d9b7edeaaefbd3b9fe87944b67eb4
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ui/gl/gl_egl_api_implementation.h"
7 #include "base/command_line.h"
8 #include "base/strings/string_split.h"
9 #include "base/strings/string_util.h"
10 #include "ui/gl/gl_context.h"
11 #include "ui/gl/gl_implementation.h"
13 namespace {
14 std::string FilterExtensionList(
15 const char* extensions,
16 const std::vector<std::string>& disabled_extensions) {
17 if (extensions == NULL)
18 return "";
19 std::vector<std::string> extension_vec;
20 base::SplitString(extensions, ' ', &extension_vec);
21 extension_vec.erase(std::remove_if(
22 extension_vec.begin(), extension_vec.end(),
23 [&disabled_extensions](const std::string& ext) {
24 return std::find(disabled_extensions.begin(), disabled_extensions.end(),
25 ext) != disabled_extensions.end();
26 }), extension_vec.end());
27 return JoinString(extension_vec, " ");
31 namespace gfx {
33 RealEGLApi* g_real_egl;
35 void InitializeStaticGLBindingsEGL() {
36 g_driver_egl.InitializeStaticBindings();
37 if (!g_real_egl) {
38 g_real_egl = new RealEGLApi();
40 g_real_egl->Initialize(&g_driver_egl);
41 g_current_egl_context = g_real_egl;
42 g_driver_egl.InitializeExtensionBindings();
45 void InitializeDebugGLBindingsEGL() {
46 g_driver_egl.InitializeDebugBindings();
49 void ClearGLBindingsEGL() {
50 if (g_real_egl) {
51 delete g_real_egl;
52 g_real_egl = NULL;
54 g_current_egl_context = NULL;
55 g_driver_egl.ClearBindings();
58 EGLApi::EGLApi() {
61 EGLApi::~EGLApi() {
64 EGLApiBase::EGLApiBase()
65 : driver_(NULL) {
68 EGLApiBase::~EGLApiBase() {
71 void EGLApiBase::InitializeBase(DriverEGL* driver) {
72 driver_ = driver;
75 RealEGLApi::RealEGLApi() {
78 RealEGLApi::~RealEGLApi() {
81 void RealEGLApi::Initialize(DriverEGL* driver) {
82 InitializeWithCommandLine(driver, base::CommandLine::ForCurrentProcess());
85 void RealEGLApi::InitializeWithCommandLine(DriverEGL* driver,
86 base::CommandLine* command_line) {
87 DCHECK(command_line);
88 InitializeBase(driver);
90 const std::string disabled_extensions = command_line->GetSwitchValueASCII(
91 switches::kDisableGLExtensions);
92 disabled_exts_.clear();
93 filtered_exts_.clear();
94 if (!disabled_extensions.empty()) {
95 Tokenize(disabled_extensions, ", ;", &disabled_exts_);
99 const char* RealEGLApi::eglQueryStringFn(EGLDisplay dpy, EGLint name) {
100 if (name == EGL_EXTENSIONS) {
101 auto it = filtered_exts_.find(dpy);
102 if (it == filtered_exts_.end()) {
103 it = filtered_exts_.insert(std::make_pair(
104 dpy, FilterExtensionList(EGLApiBase::eglQueryStringFn(dpy, name),
105 disabled_exts_))).first;
107 return (*it).second.c_str();
109 return EGLApiBase::eglQueryStringFn(dpy, name);
112 TraceEGLApi::~TraceEGLApi() {
115 bool GetGLWindowSystemBindingInfoEGL(GLWindowSystemBindingInfo* info) {
116 EGLDisplay display = eglGetCurrentDisplay();
117 const char* vendor = eglQueryString(display, EGL_VENDOR);
118 const char* version = eglQueryString(display, EGL_VERSION);
119 const char* extensions = eglQueryString(display, EGL_EXTENSIONS);
120 *info = GLWindowSystemBindingInfo();
121 if (vendor)
122 info->vendor = vendor;
123 if (version)
124 info->version = version;
125 if (extensions)
126 info->extensions = extensions;
127 return true;
130 } // namespace gfx