| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/base_paths.h" | 5 #include "base/base_paths.h" |
| 6 #include "base/file_path.h" | 6 #include "base/file_path.h" |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/threading/thread_restrictions.h" | 8 #include "base/threading/thread_restrictions.h" |
| 9 #include "base/mac/foundation_util.h" | 9 #include "base/mac/foundation_util.h" |
| 10 #include "base/native_library.h" | 10 #include "base/native_library.h" |
| 11 #include "base/path_service.h" | 11 #include "base/path_service.h" |
| 12 #include "ui/gfx/gl/gl_bindings.h" | 12 #include "ui/gfx/gl/gl_bindings.h" |
| 13 #include "ui/gfx/gl/gl_implementation.h" | 13 #include "ui/gfx/gl/gl_implementation.h" |
| 14 | 14 |
| 15 namespace gfx { | 15 namespace gfx { |
| 16 namespace { | 16 namespace { |
| 17 const char kOpenGLFrameworkPath[] = | 17 const char kOpenGLFrameworkPath[] = |
| 18 "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL"; | 18 "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL"; |
| 19 } // namespace anonymous | 19 } // namespace anonymous |
| 20 | 20 |
| 21 void GetAllowedGLImplementations(std::vector<GLImplementation>* impls) { | 21 void GetAllowedGLImplementations(std::vector<GLImplementation>* impls) { |
| 22 impls->push_back(kGLImplementationDesktopGL); | 22 impls->push_back(kGLImplementationDesktopGL); |
| 23 impls->push_back(kGLImplementationAppleGL); |
| 23 impls->push_back(kGLImplementationOSMesaGL); | 24 impls->push_back(kGLImplementationOSMesaGL); |
| 24 } | 25 } |
| 25 | 26 |
| 26 bool InitializeGLBindings(GLImplementation implementation) { | 27 bool InitializeGLBindings(GLImplementation implementation) { |
| 27 // Prevent reinitialization with a different implementation. Once the gpu | 28 // Prevent reinitialization with a different implementation. Once the gpu |
| 28 // unit tests have initialized with kGLImplementationMock, we don't want to | 29 // unit tests have initialized with kGLImplementationMock, we don't want to |
| 29 // later switch to another GL implementation. | 30 // later switch to another GL implementation. |
| 30 if (GetGLImplementation() != kGLImplementationNone) | 31 if (GetGLImplementation() != kGLImplementationNone) |
| 31 return true; | 32 return true; |
| 32 | 33 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 } | 68 } |
| 68 | 69 |
| 69 SetGLGetProcAddressProc(get_proc_address); | 70 SetGLGetProcAddressProc(get_proc_address); |
| 70 AddGLNativeLibrary(library); | 71 AddGLNativeLibrary(library); |
| 71 SetGLImplementation(kGLImplementationOSMesaGL); | 72 SetGLImplementation(kGLImplementationOSMesaGL); |
| 72 | 73 |
| 73 InitializeGLBindingsGL(); | 74 InitializeGLBindingsGL(); |
| 74 InitializeGLBindingsOSMESA(); | 75 InitializeGLBindingsOSMESA(); |
| 75 break; | 76 break; |
| 76 } | 77 } |
| 77 case kGLImplementationDesktopGL: { | 78 case kGLImplementationDesktopGL: |
| 79 case kGLImplementationAppleGL: { |
| 78 base::NativeLibrary library = base::LoadNativeLibrary( | 80 base::NativeLibrary library = base::LoadNativeLibrary( |
| 79 FilePath(kOpenGLFrameworkPath), NULL); | 81 FilePath(kOpenGLFrameworkPath), NULL); |
| 80 if (!library) { | 82 if (!library) { |
| 81 LOG(ERROR) << "OpenGL framework not found"; | 83 LOG(ERROR) << "OpenGL framework not found"; |
| 82 return false; | 84 return false; |
| 83 } | 85 } |
| 84 | 86 |
| 85 AddGLNativeLibrary(library); | 87 AddGLNativeLibrary(library); |
| 86 SetGLImplementation(kGLImplementationDesktopGL); | 88 SetGLImplementation(implementation); |
| 87 | 89 |
| 88 InitializeGLBindingsGL(); | 90 InitializeGLBindingsGL(); |
| 89 break; | 91 break; |
| 90 } | 92 } |
| 91 case kGLImplementationMockGL: { | 93 case kGLImplementationMockGL: { |
| 92 SetGLGetProcAddressProc(GetMockGLProcAddress); | 94 SetGLGetProcAddressProc(GetMockGLProcAddress); |
| 93 SetGLImplementation(kGLImplementationMockGL); | 95 SetGLImplementation(kGLImplementationMockGL); |
| 94 InitializeGLBindingsGL(); | 96 InitializeGLBindingsGL(); |
| 95 break; | 97 break; |
| 96 } | 98 } |
| 97 default: | 99 default: |
| 98 return false; | 100 return false; |
| 99 } | 101 } |
| 100 | 102 |
| 101 return true; | 103 return true; |
| 102 } | 104 } |
| 103 | 105 |
| 104 bool InitializeGLExtensionBindings(GLImplementation implementation, | 106 bool InitializeGLExtensionBindings(GLImplementation implementation, |
| 105 GLContext* context) { | 107 GLContext* context) { |
| 106 switch (implementation) { | 108 switch (implementation) { |
| 107 case kGLImplementationOSMesaGL: | 109 case kGLImplementationOSMesaGL: |
| 108 InitializeGLExtensionBindingsGL(context); | 110 InitializeGLExtensionBindingsGL(context); |
| 109 InitializeGLExtensionBindingsOSMESA(context); | 111 InitializeGLExtensionBindingsOSMESA(context); |
| 110 break; | 112 break; |
| 111 case kGLImplementationDesktopGL: | 113 case kGLImplementationDesktopGL: |
| 114 case kGLImplementationAppleGL: |
| 112 InitializeGLExtensionBindingsGL(context); | 115 InitializeGLExtensionBindingsGL(context); |
| 113 break; | 116 break; |
| 114 case kGLImplementationMockGL: | 117 case kGLImplementationMockGL: |
| 115 InitializeGLExtensionBindingsGL(context); | 118 InitializeGLExtensionBindingsGL(context); |
| 116 break; | 119 break; |
| 117 default: | 120 default: |
| 118 return false; | 121 return false; |
| 119 } | 122 } |
| 120 | 123 |
| 121 return true; | 124 return true; |
| 122 } | 125 } |
| 123 | 126 |
| 124 void InitializeDebugGLBindings() { | 127 void InitializeDebugGLBindings() { |
| 125 InitializeDebugGLBindingsGL(); | 128 InitializeDebugGLBindingsGL(); |
| 126 InitializeDebugGLBindingsOSMESA(); | 129 InitializeDebugGLBindingsOSMESA(); |
| 127 } | 130 } |
| 128 | 131 |
| 129 void ClearGLBindings() { | 132 void ClearGLBindings() { |
| 130 ClearGLBindingsGL(); | 133 ClearGLBindingsGL(); |
| 131 ClearGLBindingsOSMESA(); | 134 ClearGLBindingsOSMESA(); |
| 132 SetGLImplementation(kGLImplementationNone); | 135 SetGLImplementation(kGLImplementationNone); |
| 133 | 136 |
| 134 UnloadGLNativeLibraries(); | 137 UnloadGLNativeLibraries(); |
| 135 } | 138 } |
| 136 | 139 |
| 137 } // namespace gfx | 140 } // namespace gfx |
| OLD | NEW |