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 |