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_surface_egl.h" | 5 #include "ui/gl/gl_surface_egl.h" |
6 | 6 |
7 #if defined(OS_ANDROID) | 7 #if defined(OS_ANDROID) |
8 #include <android/native_window_jni.h> | 8 #include <android/native_window_jni.h> |
9 #endif | 9 #endif |
10 | 10 |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 } | 139 } |
140 | 140 |
141 g_egl_extensions = eglQueryString(g_display, EGL_EXTENSIONS); | 141 g_egl_extensions = eglQueryString(g_display, EGL_EXTENSIONS); |
142 g_egl_create_context_robustness_supported = | 142 g_egl_create_context_robustness_supported = |
143 HasEGLExtension("EGL_EXT_create_context_robustness"); | 143 HasEGLExtension("EGL_EXT_create_context_robustness"); |
144 g_egl_sync_control_supported = | 144 g_egl_sync_control_supported = |
145 HasEGLExtension("EGL_CHROMIUM_sync_control"); | 145 HasEGLExtension("EGL_CHROMIUM_sync_control"); |
146 | 146 |
147 initialized = true; | 147 initialized = true; |
148 | 148 |
149 #if defined(USE_X11) || defined(OS_ANDROID) | 149 #if defined(USE_X11) || defined(OS_ANDROID) \ |
| 150 || defined(USE_OZONE) |
150 return true; | 151 return true; |
151 #else | 152 #else |
152 g_software_native_display = EGL_SOFTWARE_DISPLAY_ANGLE; | 153 g_software_native_display = EGL_SOFTWARE_DISPLAY_ANGLE; |
153 #endif | 154 #endif |
154 g_software_display = eglGetDisplay(g_software_native_display); | 155 g_software_display = eglGetDisplay(g_software_native_display); |
155 if (!g_software_display) { | 156 if (!g_software_display) { |
156 return true; | 157 return true; |
157 } | 158 } |
158 | 159 |
159 if (!eglInitialize(g_software_display, NULL, NULL)) { | 160 if (!eglInitialize(g_software_display, NULL, NULL)) { |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 } | 208 } |
208 | 209 |
209 bool GLSurfaceEGL::HasEGLExtension(const char* name) { | 210 bool GLSurfaceEGL::HasEGLExtension(const char* name) { |
210 return ExtensionsContain(GetEGLExtensions(), name); | 211 return ExtensionsContain(GetEGLExtensions(), name); |
211 } | 212 } |
212 | 213 |
213 bool GLSurfaceEGL::IsCreateContextRobustnessSupported() { | 214 bool GLSurfaceEGL::IsCreateContextRobustnessSupported() { |
214 return g_egl_create_context_robustness_supported; | 215 return g_egl_create_context_robustness_supported; |
215 } | 216 } |
216 | 217 |
| 218 bool GLSurfaceEGL::IsSyncControlSupported() { |
| 219 return g_egl_sync_control_supported; |
| 220 } |
| 221 |
217 GLSurfaceEGL::~GLSurfaceEGL() {} | 222 GLSurfaceEGL::~GLSurfaceEGL() {} |
218 | 223 |
219 NativeViewGLSurfaceEGL::NativeViewGLSurfaceEGL(bool software, | 224 NativeViewGLSurfaceEGL::NativeViewGLSurfaceEGL(bool software, |
220 gfx::AcceleratedWidget window) | 225 gfx::AcceleratedWidget window) |
221 : window_(window), | 226 : window_(window), |
222 surface_(NULL), | 227 surface_(NULL), |
223 supports_post_sub_buffer_(false), | 228 supports_post_sub_buffer_(false), |
224 config_(NULL) { | 229 config_(NULL) { |
225 software_ = software; | 230 software_ = software; |
226 #if defined(OS_ANDROID) | 231 #if defined(OS_ANDROID) |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
265 | 270 |
266 EGLint surfaceVal; | 271 EGLint surfaceVal; |
267 EGLBoolean retVal = eglQuerySurface(GetDisplay(), | 272 EGLBoolean retVal = eglQuerySurface(GetDisplay(), |
268 surface_, | 273 surface_, |
269 EGL_POST_SUB_BUFFER_SUPPORTED_NV, | 274 EGL_POST_SUB_BUFFER_SUPPORTED_NV, |
270 &surfaceVal); | 275 &surfaceVal); |
271 supports_post_sub_buffer_ = (surfaceVal && retVal) == EGL_TRUE; | 276 supports_post_sub_buffer_ = (surfaceVal && retVal) == EGL_TRUE; |
272 | 277 |
273 if (g_egl_sync_control_supported) | 278 if (g_egl_sync_control_supported) |
274 vsync_provider_.reset(new EGLSyncControlVSyncProvider(surface_)); | 279 vsync_provider_.reset(new EGLSyncControlVSyncProvider(surface_)); |
| 280 return true; |
| 281 } |
275 | 282 |
276 return true; | 283 bool NativeViewGLSurfaceEGL::Initialize(VSyncProvider* syncProvider) { |
| 284 bool retval = Initialize(); |
| 285 if (retval) |
| 286 vsync_provider_.reset(syncProvider); |
| 287 return retval; |
277 } | 288 } |
278 | 289 |
279 void NativeViewGLSurfaceEGL::Destroy() { | 290 void NativeViewGLSurfaceEGL::Destroy() { |
280 if (surface_) { | 291 if (surface_) { |
281 if (!eglDestroySurface(GetDisplay(), surface_)) { | 292 if (!eglDestroySurface(GetDisplay(), surface_)) { |
282 LOG(ERROR) << "eglDestroySurface failed with error " | 293 LOG(ERROR) << "eglDestroySurface failed with error " |
283 << GetLastEGLErrorString(); | 294 << GetLastEGLErrorString(); |
284 } | 295 } |
285 surface_ = NULL; | 296 surface_ = NULL; |
286 } | 297 } |
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
579 | 590 |
580 return handle; | 591 return handle; |
581 #endif | 592 #endif |
582 } | 593 } |
583 | 594 |
584 PbufferGLSurfaceEGL::~PbufferGLSurfaceEGL() { | 595 PbufferGLSurfaceEGL::~PbufferGLSurfaceEGL() { |
585 Destroy(); | 596 Destroy(); |
586 } | 597 } |
587 | 598 |
588 } // namespace gfx | 599 } // namespace gfx |
OLD | NEW |