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_context_egl.h" | 5 #include "ui/gl/gl_context_egl.h" |
6 | 6 |
7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
11 #include "third_party/angle/include/EGL/egl.h" | 11 #include "third_party/angle/include/EGL/egl.h" |
12 #include "ui/gl/egl_util.h" | 12 #include "ui/gl/egl_util.h" |
13 #include "ui/gl/gl_surface.h" | 13 #include "ui/gl/gl_surface.h" |
14 | 14 |
15 // This header must come after the above third-party include, as | 15 // This header must come after the above third-party include, as |
16 // it brings in #defines that cause conflicts. | 16 // it brings in #defines that cause conflicts. |
17 #include "ui/gl/gl_bindings.h" | 17 #include "ui/gl/gl_bindings.h" |
18 | 18 |
19 #if defined(USE_X11) | 19 #if defined(USE_X11) |
20 extern "C" { | 20 extern "C" { |
21 #include <X11/Xlib.h> | 21 #include <X11/Xlib.h> |
22 } | 22 } |
23 #endif | 23 #endif |
24 | 24 |
25 namespace gfx { | 25 namespace gfx { |
26 | 26 |
27 std::string GLContextEGL::GetExtensions() { | |
28 const char* extensions = eglQueryString(display_, | |
29 EGL_EXTENSIONS); | |
30 if (!extensions) | |
31 return GLContext::GetExtensions(); | |
32 | |
33 return GLContext::GetExtensions() + " " + extensions; | |
34 } | |
35 | |
36 GLContextEGL::GLContextEGL(GLShareGroup* share_group) | 27 GLContextEGL::GLContextEGL(GLShareGroup* share_group) |
37 : GLContext(share_group), | 28 : GLContext(share_group), |
38 context_(NULL), | 29 context_(NULL), |
39 display_(NULL), | 30 display_(NULL), |
40 config_(NULL) { | 31 config_(NULL) { |
41 } | 32 } |
42 | 33 |
43 GLContextEGL::~GLContextEGL() { | |
44 Destroy(); | |
45 } | |
46 | |
47 bool GLContextEGL::Initialize( | 34 bool GLContextEGL::Initialize( |
48 GLSurface* compatible_surface, GpuPreference gpu_preference) { | 35 GLSurface* compatible_surface, GpuPreference gpu_preference) { |
49 DCHECK(compatible_surface); | 36 DCHECK(compatible_surface); |
50 DCHECK(!context_); | 37 DCHECK(!context_); |
51 | 38 |
52 static const EGLint kContextAttributes[] = { | 39 static const EGLint kContextAttributes[] = { |
53 EGL_CONTEXT_CLIENT_VERSION, 2, | 40 EGL_CONTEXT_CLIENT_VERSION, 2, |
54 EGL_NONE | 41 EGL_NONE |
55 }; | 42 }; |
56 | 43 |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 } | 137 } |
151 | 138 |
152 void GLContextEGL::SetSwapInterval(int interval) { | 139 void GLContextEGL::SetSwapInterval(int interval) { |
153 DCHECK(IsCurrent(NULL)); | 140 DCHECK(IsCurrent(NULL)); |
154 if (!eglSwapInterval(display_, interval)) { | 141 if (!eglSwapInterval(display_, interval)) { |
155 LOG(ERROR) << "eglSwapInterval failed with error " | 142 LOG(ERROR) << "eglSwapInterval failed with error " |
156 << GetLastEGLErrorString(); | 143 << GetLastEGLErrorString(); |
157 } | 144 } |
158 } | 145 } |
159 | 146 |
| 147 std::string GLContextEGL::GetExtensions() { |
| 148 const char* extensions = eglQueryString(display_, |
| 149 EGL_EXTENSIONS); |
| 150 if (!extensions) |
| 151 return GLContext::GetExtensions(); |
| 152 |
| 153 return GLContext::GetExtensions() + " " + extensions; |
| 154 } |
| 155 |
| 156 GLContextEGL::~GLContextEGL() { |
| 157 Destroy(); |
| 158 } |
| 159 |
160 } // namespace gfx | 160 } // namespace gfx |
OLD | NEW |