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 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
165 NativeViewGLSurfaceEGL::NativeViewGLSurfaceEGL(bool software, | 165 NativeViewGLSurfaceEGL::NativeViewGLSurfaceEGL(bool software, |
166 gfx::AcceleratedWidget window) | 166 gfx::AcceleratedWidget window) |
167 : window_(window), | 167 : window_(window), |
168 surface_(NULL), | 168 surface_(NULL), |
169 supports_post_sub_buffer_(false), | 169 supports_post_sub_buffer_(false), |
170 config_(NULL) { | 170 config_(NULL) { |
171 software_ = software; | 171 software_ = software; |
172 } | 172 } |
173 | 173 |
174 bool NativeViewGLSurfaceEGL::Initialize() { | 174 bool NativeViewGLSurfaceEGL::Initialize() { |
175 #if defined(OS_ANDROID) | |
176 NOTREACHED(); | |
177 return false; | |
178 #else | |
179 DCHECK(!surface_); | 175 DCHECK(!surface_); |
180 | 176 |
181 if (!GetDisplay()) { | 177 if (!GetDisplay()) { |
182 LOG(ERROR) << "Trying to create surface with invalid display."; | 178 LOG(ERROR) << "Trying to create surface with invalid display."; |
183 return false; | 179 return false; |
184 } | 180 } |
185 | 181 |
186 static const EGLint egl_window_attributes_sub_buffer[] = { | 182 static const EGLint egl_window_attributes_sub_buffer[] = { |
183 #if defined(EGL_NV_post_sub_buffer) | |
no sievers
2012/07/20 20:31:59
Is this good?
This is not defined in the Android S
piman
2012/07/20 20:44:08
bleh... we have 3 sets of includes: the ones in th
no sievers
2012/07/20 21:11:06
Word. Especially, since this file is explicit abou
| |
187 EGL_POST_SUB_BUFFER_SUPPORTED_NV, EGL_TRUE, | 184 EGL_POST_SUB_BUFFER_SUPPORTED_NV, EGL_TRUE, |
185 #endif | |
188 EGL_NONE | 186 EGL_NONE |
189 }; | 187 }; |
190 | 188 |
191 // Create a surface for the native window. | 189 // Create a surface for the native window. |
192 surface_ = eglCreateWindowSurface(GetDisplay(), | 190 surface_ = eglCreateWindowSurface(GetDisplay(), |
193 GetConfig(), | 191 GetConfig(), |
194 window_, | 192 window_, |
195 gfx::g_EGL_NV_post_sub_buffer ? | 193 gfx::g_EGL_NV_post_sub_buffer ? |
196 egl_window_attributes_sub_buffer : | 194 egl_window_attributes_sub_buffer : |
197 NULL); | 195 NULL); |
198 | 196 |
199 if (!surface_) { | 197 if (!surface_) { |
200 LOG(ERROR) << "eglCreateWindowSurface failed with error " | 198 LOG(ERROR) << "eglCreateWindowSurface failed with error " |
201 << GetLastEGLErrorString(); | 199 << GetLastEGLErrorString(); |
202 Destroy(); | 200 Destroy(); |
203 return false; | 201 return false; |
204 } | 202 } |
205 | 203 |
204 #if defined(EGL_NV_post_sub_buffer) | |
206 EGLint surfaceVal; | 205 EGLint surfaceVal; |
207 EGLBoolean retVal = eglQuerySurface(GetDisplay(), | 206 EGLBoolean retVal = eglQuerySurface(GetDisplay(), |
208 surface_, | 207 surface_, |
209 EGL_POST_SUB_BUFFER_SUPPORTED_NV, | 208 EGL_POST_SUB_BUFFER_SUPPORTED_NV, |
210 &surfaceVal); | 209 &surfaceVal); |
211 supports_post_sub_buffer_ = (surfaceVal && retVal) == EGL_TRUE; | 210 supports_post_sub_buffer_ = (surfaceVal && retVal) == EGL_TRUE; |
211 #endif | |
212 | 212 |
213 return true; | 213 return true; |
214 #endif | |
215 } | 214 } |
216 | 215 |
217 void NativeViewGLSurfaceEGL::Destroy() { | 216 void NativeViewGLSurfaceEGL::Destroy() { |
218 if (surface_) { | 217 if (surface_) { |
219 if (!eglDestroySurface(GetDisplay(), surface_)) { | 218 if (!eglDestroySurface(GetDisplay(), surface_)) { |
220 LOG(ERROR) << "eglDestroySurface failed with error " | 219 LOG(ERROR) << "eglDestroySurface failed with error " |
221 << GetLastEGLErrorString(); | 220 << GetLastEGLErrorString(); |
222 } | 221 } |
223 surface_ = NULL; | 222 surface_ = NULL; |
224 } | 223 } |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
477 | 476 |
478 return handle; | 477 return handle; |
479 #endif | 478 #endif |
480 } | 479 } |
481 | 480 |
482 PbufferGLSurfaceEGL::~PbufferGLSurfaceEGL() { | 481 PbufferGLSurfaceEGL::~PbufferGLSurfaceEGL() { |
483 Destroy(); | 482 Destroy(); |
484 } | 483 } |
485 | 484 |
486 } // namespace gfx | 485 } // namespace gfx |
OLD | NEW |