| OLD | NEW |
| 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 "ui/gl/gl_glx_api_implementation.h" | 5 #include "ui/gl/gl_glx_api_implementation.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/strings/string_split.h" | 8 #include "base/strings/string_split.h" |
| 9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
| 10 #include "ui/gl/gl_implementation.h" | 10 #include "ui/gl/gl_implementation.h" |
| 11 | 11 |
| 12 namespace gl { | 12 namespace gl { |
| 13 | 13 |
| 14 RealGLXApi* g_real_glx; | 14 RealGLXApi* g_real_glx; |
| 15 DebugGLXApi* g_debug_glx; |
| 15 | 16 |
| 16 void InitializeStaticGLBindingsGLX() { | 17 void InitializeStaticGLBindingsGLX() { |
| 17 g_driver_glx.InitializeStaticBindings(); | 18 g_driver_glx.InitializeStaticBindings(); |
| 18 if (!g_real_glx) { | 19 if (!g_real_glx) { |
| 19 g_real_glx = new RealGLXApi(); | 20 g_real_glx = new RealGLXApi(); |
| 20 } | 21 } |
| 21 g_real_glx->Initialize(&g_driver_glx); | 22 g_real_glx->Initialize(&g_driver_glx); |
| 22 g_current_glx_context = g_real_glx; | 23 g_current_glx_context = g_real_glx; |
| 23 g_driver_glx.InitializeExtensionBindings(); | 24 g_driver_glx.InitializeExtensionBindings(); |
| 24 } | 25 } |
| 25 | 26 |
| 26 void InitializeDebugGLBindingsGLX() { | 27 void InitializeDebugGLBindingsGLX() { |
| 27 g_driver_glx.InitializeDebugBindings(); | 28 if (!g_debug_glx) { |
| 29 g_debug_glx = new DebugGLXApi(g_real_glx); |
| 30 } |
| 31 g_current_glx_context = g_debug_glx; |
| 28 } | 32 } |
| 29 | 33 |
| 30 void ClearBindingsGLX() { | 34 void ClearBindingsGLX() { |
| 35 if (g_debug_glx) { |
| 36 delete g_debug_glx; |
| 37 g_debug_glx = NULL; |
| 38 } |
| 31 if (g_real_glx) { | 39 if (g_real_glx) { |
| 32 delete g_real_glx; | 40 delete g_real_glx; |
| 33 g_real_glx = NULL; | 41 g_real_glx = NULL; |
| 34 } | 42 } |
| 35 g_current_glx_context = NULL; | 43 g_current_glx_context = NULL; |
| 36 g_driver_glx.ClearBindings(); | 44 g_driver_glx.ClearBindings(); |
| 37 } | 45 } |
| 38 | 46 |
| 39 GLXApi::GLXApi() { | 47 GLXApi::GLXApi() { |
| 40 } | 48 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 return NULL; | 97 return NULL; |
| 90 | 98 |
| 91 const char* str = GLXApiBase::glXQueryExtensionsStringFn(dpy, screen); | 99 const char* str = GLXApiBase::glXQueryExtensionsStringFn(dpy, screen); |
| 92 if (!str) | 100 if (!str) |
| 93 return NULL; | 101 return NULL; |
| 94 | 102 |
| 95 filtered_exts_ = FilterGLExtensionList(str, disabled_exts_); | 103 filtered_exts_ = FilterGLExtensionList(str, disabled_exts_); |
| 96 return filtered_exts_.c_str(); | 104 return filtered_exts_.c_str(); |
| 97 } | 105 } |
| 98 | 106 |
| 107 DebugGLXApi::DebugGLXApi(GLXApi* glx_api) : glx_api_(glx_api) {} |
| 108 DebugGLXApi::~DebugGLXApi() {} |
| 109 |
| 99 TraceGLXApi::~TraceGLXApi() { | 110 TraceGLXApi::~TraceGLXApi() { |
| 100 } | 111 } |
| 101 | 112 |
| 102 bool GetGLWindowSystemBindingInfoGLX(GLWindowSystemBindingInfo* info) { | 113 bool GetGLWindowSystemBindingInfoGLX(GLWindowSystemBindingInfo* info) { |
| 103 Display* display = glXGetCurrentDisplay(); | 114 Display* display = glXGetCurrentDisplay(); |
| 104 const int kDefaultScreen = 0; | 115 const int kDefaultScreen = 0; |
| 105 const char* vendor = | 116 const char* vendor = |
| 106 glXQueryServerString(display, kDefaultScreen, GLX_VENDOR); | 117 glXQueryServerString(display, kDefaultScreen, GLX_VENDOR); |
| 107 const char* version = | 118 const char* version = |
| 108 glXQueryServerString(display, kDefaultScreen, GLX_VERSION); | 119 glXQueryServerString(display, kDefaultScreen, GLX_VERSION); |
| 109 const char* extensions = | 120 const char* extensions = |
| 110 glXQueryServerString(display, kDefaultScreen, GLX_EXTENSIONS); | 121 glXQueryServerString(display, kDefaultScreen, GLX_EXTENSIONS); |
| 111 *info = GLWindowSystemBindingInfo(); | 122 *info = GLWindowSystemBindingInfo(); |
| 112 if (vendor) | 123 if (vendor) |
| 113 info->vendor = vendor; | 124 info->vendor = vendor; |
| 114 if (version) | 125 if (version) |
| 115 info->version = version; | 126 info->version = version; |
| 116 if (extensions) | 127 if (extensions) |
| 117 info->extensions = extensions; | 128 info->extensions = extensions; |
| 118 info->direct_rendering = !!glXIsDirect(display, glXGetCurrentContext()); | 129 info->direct_rendering = !!glXIsDirect(display, glXGetCurrentContext()); |
| 119 return true; | 130 return true; |
| 120 } | 131 } |
| 121 | 132 |
| 122 } // namespace gl | 133 } // namespace gl |
| OLD | NEW |