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

Side by Side Diff: ui/gl/init/gl_initializer_win.cc

Issue 2629633003: Refactor GL bindings so there is no global GLApi or DriverGL. (Closed)
Patch Set: rebase Created 3 years, 10 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
« no previous file with comments | « ui/gl/init/gl_initializer_ozone.cc ('k') | ui/gl/init/gl_initializer_x11.cc » ('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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "ui/gl/init/gl_initializer.h" 5 #include "ui/gl/init/gl_initializer.h"
6 6
7 #include <dwmapi.h> 7 #include <dwmapi.h>
8 8
9 #include "base/at_exit.h" 9 #include "base/at_exit.h"
10 #include "base/base_paths.h" 10 #include "base/base_paths.h"
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 } 243 }
244 break; 244 break;
245 case kGLImplementationEGLGLES2: 245 case kGLImplementationEGLGLES2:
246 if (!GLSurfaceEGL::InitializeOneOff(GetDC(nullptr))) { 246 if (!GLSurfaceEGL::InitializeOneOff(GetDC(nullptr))) {
247 LOG(ERROR) << "GLSurfaceEGL::InitializeOneOff failed."; 247 LOG(ERROR) << "GLSurfaceEGL::InitializeOneOff failed.";
248 return false; 248 return false;
249 } 249 }
250 break; 250 break;
251 case kGLImplementationOSMesaGL: 251 case kGLImplementationOSMesaGL:
252 case kGLImplementationMockGL: 252 case kGLImplementationMockGL:
253 case kGLImplementationStubGL:
253 break; 254 break;
254 default: 255 default:
255 NOTREACHED(); 256 NOTREACHED();
256 } 257 }
257 return true; 258 return true;
258 } 259 }
259 260
260 bool InitializeStaticGLBindings(GLImplementation implementation) { 261 bool InitializeStaticGLBindings(GLImplementation implementation) {
261 // Prevent reinitialization with a different implementation. Once the gpu 262 // Prevent reinitialization with a different implementation. Once the gpu
262 // unit tests have initialized with kGLImplementationMock, we don't want to 263 // unit tests have initialized with kGLImplementationMock, we don't want to
263 // later switch to another GL implementation. 264 // later switch to another GL implementation.
264 DCHECK_EQ(kGLImplementationNone, GetGLImplementation()); 265 DCHECK_EQ(kGLImplementationNone, GetGLImplementation());
265 266
266 // Allow the main thread or another to initialize these bindings 267 // Allow the main thread or another to initialize these bindings
267 // after instituting restrictions on I/O. Going forward they will 268 // after instituting restrictions on I/O. Going forward they will
268 // likely be used in the browser process on most platforms. The 269 // likely be used in the browser process on most platforms. The
269 // one-time initialization cost is small, between 2 and 5 ms. 270 // one-time initialization cost is small, between 2 and 5 ms.
270 base::ThreadRestrictions::ScopedAllowIO allow_io; 271 base::ThreadRestrictions::ScopedAllowIO allow_io;
271 272
272 switch (implementation) { 273 switch (implementation) {
273 case kGLImplementationOSMesaGL: 274 case kGLImplementationOSMesaGL:
274 return InitializeStaticOSMesaInternal(); 275 return InitializeStaticOSMesaInternal();
275 case kGLImplementationEGLGLES2: 276 case kGLImplementationEGLGLES2:
276 return InitializeStaticEGLInternal(); 277 return InitializeStaticEGLInternal();
277 case kGLImplementationDesktopGL: 278 case kGLImplementationDesktopGL:
278 return InitializeStaticWGLInternal(); 279 return InitializeStaticWGLInternal();
279 case kGLImplementationMockGL: 280 case kGLImplementationMockGL:
280 SetGLImplementation(kGLImplementationMockGL); 281 case kGLImplementationStubGL:
282 SetGLImplementation(implementation);
281 InitializeStaticGLBindingsGL(); 283 InitializeStaticGLBindingsGL();
282 return true; 284 return true;
283 default: 285 default:
284 NOTREACHED(); 286 NOTREACHED();
285 } 287 }
286 288
287 return false; 289 return false;
288 } 290 }
289 291
290 void InitializeDebugGLBindings() { 292 void InitializeDebugGLBindings() {
291 InitializeDebugGLBindingsEGL(); 293 InitializeDebugGLBindingsEGL();
292 InitializeDebugGLBindingsGL(); 294 InitializeDebugGLBindingsGL();
293 InitializeDebugGLBindingsOSMESA(); 295 InitializeDebugGLBindingsOSMESA();
294 InitializeDebugGLBindingsWGL(); 296 InitializeDebugGLBindingsWGL();
295 } 297 }
296 298
297 void ShutdownGLPlatform() { 299 void ShutdownGLPlatform() {
298 GLSurfaceEGL::ShutdownOneOff(); 300 GLSurfaceEGL::ShutdownOneOff();
299 ClearBindingsEGL(); 301 ClearBindingsEGL();
300 ClearBindingsGL(); 302 ClearBindingsGL();
301 ClearBindingsOSMESA(); 303 ClearBindingsOSMESA();
302 ClearBindingsWGL(); 304 ClearBindingsWGL();
303 } 305 }
304 306
305 } // namespace init 307 } // namespace init
306 } // namespace gl 308 } // namespace gl
OLDNEW
« no previous file with comments | « ui/gl/init/gl_initializer_ozone.cc ('k') | ui/gl/init/gl_initializer_x11.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698