Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(584)

Side by Side Diff: ui/gfx/gl/gl_implementation_linux.cc

Issue 10009024: Remove WAYLAND port (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/gfx/gl/gl_context_linux.cc ('k') | ui/gfx/gl/gl_surface_egl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <vector> 5 #include <vector>
6 6
7 #include "base/base_paths.h" 7 #include "base/base_paths.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 30 matching lines...) Expand all
41 return library; 41 return library;
42 } 42 }
43 43
44 base::NativeLibrary LoadLibrary(const char* filename) { 44 base::NativeLibrary LoadLibrary(const char* filename) {
45 return LoadLibrary(FilePath(filename)); 45 return LoadLibrary(FilePath(filename));
46 } 46 }
47 47
48 } // namespace anonymous 48 } // namespace anonymous
49 49
50 void GetAllowedGLImplementations(std::vector<GLImplementation>* impls) { 50 void GetAllowedGLImplementations(std::vector<GLImplementation>* impls) {
51 #if !defined(USE_WAYLAND)
52 impls->push_back(kGLImplementationDesktopGL); 51 impls->push_back(kGLImplementationDesktopGL);
53 #endif
54 impls->push_back(kGLImplementationEGLGLES2); 52 impls->push_back(kGLImplementationEGLGLES2);
55 #if !defined(USE_WAYLAND)
56 impls->push_back(kGLImplementationOSMesaGL); 53 impls->push_back(kGLImplementationOSMesaGL);
57 #endif
58 } 54 }
59 55
60 bool InitializeGLBindings(GLImplementation implementation) { 56 bool InitializeGLBindings(GLImplementation implementation) {
61 // Prevent reinitialization with a different implementation. Once the gpu 57 // Prevent reinitialization with a different implementation. Once the gpu
62 // unit tests have initialized with kGLImplementationMock, we don't want to 58 // unit tests have initialized with kGLImplementationMock, we don't want to
63 // later switch to another GL implementation. 59 // later switch to another GL implementation.
64 if (GetGLImplementation() != kGLImplementationNone) 60 if (GetGLImplementation() != kGLImplementationNone)
65 return true; 61 return true;
66 62
67 // Allow the main thread or another to initialize these bindings 63 // Allow the main thread or another to initialize these bindings
68 // after instituting restrictions on I/O. Going forward they will 64 // after instituting restrictions on I/O. Going forward they will
69 // likely be used in the browser process on most platforms. The 65 // likely be used in the browser process on most platforms. The
70 // one-time initialization cost is small, between 2 and 5 ms. 66 // one-time initialization cost is small, between 2 and 5 ms.
71 base::ThreadRestrictions::ScopedAllowIO allow_io; 67 base::ThreadRestrictions::ScopedAllowIO allow_io;
72 68
73 switch (implementation) { 69 switch (implementation) {
74 #if !defined(USE_WAYLAND)
75 case kGLImplementationOSMesaGL: { 70 case kGLImplementationOSMesaGL: {
76 FilePath module_path; 71 FilePath module_path;
77 if (!PathService::Get(base::DIR_MODULE, &module_path)) { 72 if (!PathService::Get(base::DIR_MODULE, &module_path)) {
78 LOG(ERROR) << "PathService::Get failed."; 73 LOG(ERROR) << "PathService::Get failed.";
79 return false; 74 return false;
80 } 75 }
81 76
82 base::NativeLibrary library = LoadLibrary( 77 base::NativeLibrary library = LoadLibrary(
83 module_path.Append("libosmesa.so")); 78 module_path.Append("libosmesa.so"));
84 if (!library) 79 if (!library)
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 } 127 }
133 128
134 SetGLGetProcAddressProc(get_proc_address); 129 SetGLGetProcAddressProc(get_proc_address);
135 AddGLNativeLibrary(library); 130 AddGLNativeLibrary(library);
136 SetGLImplementation(kGLImplementationDesktopGL); 131 SetGLImplementation(kGLImplementationDesktopGL);
137 132
138 InitializeGLBindingsGL(); 133 InitializeGLBindingsGL();
139 InitializeGLBindingsGLX(); 134 InitializeGLBindingsGLX();
140 break; 135 break;
141 } 136 }
142 #endif // !defined(USE_WAYLAND)
143 case kGLImplementationEGLGLES2: { 137 case kGLImplementationEGLGLES2: {
144 base::NativeLibrary gles_library = LoadLibrary("libGLESv2.so.2"); 138 base::NativeLibrary gles_library = LoadLibrary("libGLESv2.so.2");
145 if (!gles_library) 139 if (!gles_library)
146 return false; 140 return false;
147 base::NativeLibrary egl_library = LoadLibrary("libEGL.so.1"); 141 base::NativeLibrary egl_library = LoadLibrary("libEGL.so.1");
148 if (!egl_library) { 142 if (!egl_library) {
149 base::UnloadNativeLibrary(gles_library); 143 base::UnloadNativeLibrary(gles_library);
150 return false; 144 return false;
151 } 145 }
152 146
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 return false; 179 return false;
186 } 180 }
187 181
188 182
189 return true; 183 return true;
190 } 184 }
191 185
192 bool InitializeGLExtensionBindings(GLImplementation implementation, 186 bool InitializeGLExtensionBindings(GLImplementation implementation,
193 GLContext* context) { 187 GLContext* context) {
194 switch (implementation) { 188 switch (implementation) {
195 #if !defined(USE_WAYLAND)
196 case kGLImplementationOSMesaGL: 189 case kGLImplementationOSMesaGL:
197 InitializeGLExtensionBindingsGL(context); 190 InitializeGLExtensionBindingsGL(context);
198 InitializeGLExtensionBindingsOSMESA(context); 191 InitializeGLExtensionBindingsOSMESA(context);
199 break; 192 break;
200 case kGLImplementationDesktopGL: 193 case kGLImplementationDesktopGL:
201 InitializeGLExtensionBindingsGL(context); 194 InitializeGLExtensionBindingsGL(context);
202 InitializeGLExtensionBindingsGLX(context); 195 InitializeGLExtensionBindingsGLX(context);
203 break; 196 break;
204 #endif
205 case kGLImplementationEGLGLES2: 197 case kGLImplementationEGLGLES2:
206 InitializeGLExtensionBindingsGL(context); 198 InitializeGLExtensionBindingsGL(context);
207 InitializeGLExtensionBindingsEGL(context); 199 InitializeGLExtensionBindingsEGL(context);
208 break; 200 break;
209 case kGLImplementationMockGL: 201 case kGLImplementationMockGL:
210 InitializeGLExtensionBindingsGL(context); 202 InitializeGLExtensionBindingsGL(context);
211 break; 203 break;
212 default: 204 default:
213 return false; 205 return false;
214 } 206 }
215 207
216 return true; 208 return true;
217 } 209 }
218 210
219 void InitializeDebugGLBindings() { 211 void InitializeDebugGLBindings() {
220 InitializeDebugGLBindingsEGL(); 212 InitializeDebugGLBindingsEGL();
221 InitializeDebugGLBindingsGL(); 213 InitializeDebugGLBindingsGL();
222 #if !defined(USE_WAYLAND)
223 InitializeDebugGLBindingsGLX(); 214 InitializeDebugGLBindingsGLX();
224 InitializeDebugGLBindingsOSMESA(); 215 InitializeDebugGLBindingsOSMESA();
225 #endif
226 } 216 }
227 217
228 void ClearGLBindings() { 218 void ClearGLBindings() {
229 ClearGLBindingsEGL(); 219 ClearGLBindingsEGL();
230 ClearGLBindingsGL(); 220 ClearGLBindingsGL();
231 #if !defined(USE_WAYLAND)
232 ClearGLBindingsGLX(); 221 ClearGLBindingsGLX();
233 ClearGLBindingsOSMESA(); 222 ClearGLBindingsOSMESA();
234 #endif
235 SetGLImplementation(kGLImplementationNone); 223 SetGLImplementation(kGLImplementationNone);
236 224
237 UnloadGLNativeLibraries(); 225 UnloadGLNativeLibraries();
238 } 226 }
239 227
240 } // namespace gfx 228 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/gl/gl_context_linux.cc ('k') | ui/gfx/gl/gl_surface_egl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698