diff options
Diffstat (limited to 'chromium/ui/gl/gl_implementation_mac.cc')
-rw-r--r-- | chromium/ui/gl/gl_implementation_mac.cc | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/chromium/ui/gl/gl_implementation_mac.cc b/chromium/ui/gl/gl_implementation_mac.cc index 36bb7e37e50..10114061dce 100644 --- a/chromium/ui/gl/gl_implementation_mac.cc +++ b/chromium/ui/gl/gl_implementation_mac.cc @@ -10,6 +10,7 @@ #include "base/path_service.h" #include "base/threading/thread_restrictions.h" #include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_context_stub_with_extensions.h" #include "ui/gl/gl_gl_api_implementation.h" #include "ui/gl/gl_implementation.h" #include "ui/gl/gl_osmesa_api_implementation.h" @@ -26,12 +27,11 @@ void GetAllowedGLImplementations(std::vector<GLImplementation>* impls) { impls->push_back(kGLImplementationOSMesaGL); } -bool InitializeGLBindings(GLImplementation implementation) { +bool InitializeStaticGLBindings(GLImplementation implementation) { // Prevent reinitialization with a different implementation. Once the gpu // unit tests have initialized with kGLImplementationMock, we don't want to // later switch to another GL implementation. - if (GetGLImplementation() != kGLImplementationNone) - return true; + DCHECK_EQ(kGLImplementationNone, GetGLImplementation()); // Allow the main thread or another to initialize these bindings // after instituting restrictions on I/O. Going forward they will @@ -77,8 +77,8 @@ bool InitializeGLBindings(GLImplementation implementation) { AddGLNativeLibrary(library); SetGLImplementation(kGLImplementationOSMesaGL); - InitializeGLBindingsGL(); - InitializeGLBindingsOSMESA(); + InitializeStaticGLBindingsGL(); + InitializeStaticGLBindingsOSMESA(); break; } case kGLImplementationDesktopGL: @@ -93,13 +93,12 @@ bool InitializeGLBindings(GLImplementation implementation) { AddGLNativeLibrary(library); SetGLImplementation(implementation); - InitializeGLBindingsGL(); + InitializeStaticGLBindingsGL(); break; } case kGLImplementationMockGL: { - SetGLGetProcAddressProc(GetMockGLProcAddress); SetGLImplementation(kGLImplementationMockGL); - InitializeGLBindingsGL(); + InitializeStaticGLBindingsGL(); break; } default: @@ -109,19 +108,25 @@ bool InitializeGLBindings(GLImplementation implementation) { return true; } -bool InitializeGLExtensionBindings(GLImplementation implementation, +bool InitializeDynamicGLBindings(GLImplementation implementation, GLContext* context) { switch (implementation) { case kGLImplementationOSMesaGL: - InitializeGLExtensionBindingsGL(context); - InitializeGLExtensionBindingsOSMESA(context); + InitializeDynamicGLBindingsGL(context); + InitializeDynamicGLBindingsOSMESA(context); break; case kGLImplementationDesktopGL: case kGLImplementationAppleGL: - InitializeGLExtensionBindingsGL(context); + InitializeDynamicGLBindingsGL(context); break; case kGLImplementationMockGL: - InitializeGLExtensionBindingsGL(context); + if (!context) { + scoped_refptr<GLContextStubWithExtensions> mock_context( + new GLContextStubWithExtensions()); + mock_context->SetGLVersionString("3.0"); + InitializeDynamicGLBindingsGL(mock_context.get()); + } else + InitializeDynamicGLBindingsGL(context); break; default: return false; |