OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #if defined(ENABLE_GPU) | 5 #if defined(ENABLE_GPU) |
6 | 6 |
7 #include "content/renderer/gpu/webgraphicscontext3d_command_buffer_impl.h" | 7 #include "content/renderer/gpu/webgraphicscontext3d_command_buffer_impl.h" |
8 | 8 |
9 #include "gpu/GLES2/gl2.h" | 9 #include "gpu/GLES2/gl2.h" |
10 #ifndef GL_GLEXT_PROTOTYPES | 10 #ifndef GL_GLEXT_PROTOTYPES |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 web_view_(NULL), | 42 web_view_(NULL), |
43 #endif | 43 #endif |
44 #if defined(OS_MACOSX) | 44 #if defined(OS_MACOSX) |
45 plugin_handle_(NULL), | 45 plugin_handle_(NULL), |
46 #endif // defined(OS_MACOSX) | 46 #endif // defined(OS_MACOSX) |
47 context_lost_callback_(0), | 47 context_lost_callback_(0), |
48 context_lost_reason_(GL_NO_ERROR), | 48 context_lost_reason_(GL_NO_ERROR), |
49 swapbuffers_complete_callback_(0), | 49 swapbuffers_complete_callback_(0), |
50 cached_width_(0), | 50 cached_width_(0), |
51 cached_height_(0), | 51 cached_height_(0), |
52 bound_fbo_(0) { | 52 bound_fbo_(0), |
| 53 method_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
53 } | 54 } |
54 | 55 |
55 WebGraphicsContext3DCommandBufferImpl:: | 56 WebGraphicsContext3DCommandBufferImpl:: |
56 ~WebGraphicsContext3DCommandBufferImpl() { | 57 ~WebGraphicsContext3DCommandBufferImpl() { |
57 g_all_shared_contexts.Pointer()->erase(this); | 58 g_all_shared_contexts.Pointer()->erase(this); |
58 delete context_; | 59 delete context_; |
59 } | 60 } |
60 | 61 |
61 // This string should only be passed for WebGL contexts. Nothing ELSE!!! | 62 // This string should only be passed for WebGL contexts. Nothing ELSE!!! |
62 // Compositor contexts, Canvas2D contexts, Pepper Contexts, nor any other use of | 63 // Compositor contexts, Canvas2D contexts, Pepper Contexts, nor any other use of |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 return false; | 131 return false; |
131 web_view_ = web_view; | 132 web_view_ = web_view; |
132 #endif | 133 #endif |
133 context_ = RendererGLContext::CreateViewContext( | 134 context_ = RendererGLContext::CreateViewContext( |
134 host, | 135 host, |
135 renderview->routing_id(), | 136 renderview->routing_id(), |
136 share_group, | 137 share_group, |
137 preferred_extensions, | 138 preferred_extensions, |
138 attribs, | 139 attribs, |
139 active_url); | 140 active_url); |
140 if (context_) { | |
141 context_->SetSwapBuffersCallback( | |
142 NewCallback(this, | |
143 &WebGraphicsContext3DCommandBufferImpl::OnSwapBuffersComplete)); | |
144 } | |
145 } else { | 141 } else { |
146 context_ = RendererGLContext::CreateOffscreenContext( | 142 context_ = RendererGLContext::CreateOffscreenContext( |
147 host, | 143 host, |
148 gfx::Size(1, 1), | 144 gfx::Size(1, 1), |
149 share_group, | 145 share_group, |
150 preferred_extensions, | 146 preferred_extensions, |
151 attribs, | 147 attribs, |
152 active_url); | 148 active_url); |
153 #ifndef WTF_USE_THREADED_COMPOSITING | 149 #ifndef WTF_USE_THREADED_COMPOSITING |
154 web_view_ = NULL; | 150 web_view_ = NULL; |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 void WebGraphicsContext3DCommandBufferImpl::prepareTexture() { | 219 void WebGraphicsContext3DCommandBufferImpl::prepareTexture() { |
224 // Copies the contents of the off-screen render target into the texture | 220 // Copies the contents of the off-screen render target into the texture |
225 // used by the compositor. | 221 // used by the compositor. |
226 #ifndef WTF_USE_THREADED_COMPOSITING | 222 #ifndef WTF_USE_THREADED_COMPOSITING |
227 RenderView* renderview = | 223 RenderView* renderview = |
228 web_view_ ? RenderView::FromWebView(web_view_) : NULL; | 224 web_view_ ? RenderView::FromWebView(web_view_) : NULL; |
229 if (renderview) | 225 if (renderview) |
230 renderview->OnViewContextSwapBuffersPosted(); | 226 renderview->OnViewContextSwapBuffersPosted(); |
231 #endif | 227 #endif |
232 context_->SwapBuffers(); | 228 context_->SwapBuffers(); |
| 229 context_->Echo(method_factory_.NewRunnableMethod( |
| 230 &WebGraphicsContext3DCommandBufferImpl::OnSwapBuffersComplete)); |
233 #if defined(OS_MACOSX) | 231 #if defined(OS_MACOSX) |
234 // It appears that making the compositor's on-screen context current on | 232 // It appears that making the compositor's on-screen context current on |
235 // other platforms implies this flush. TODO(kbr): this means that the | 233 // other platforms implies this flush. TODO(kbr): this means that the |
236 // TOUCH build and, in the future, other platforms might need this. | 234 // TOUCH build and, in the future, other platforms might need this. |
237 gl_->Flush(); | 235 gl_->Flush(); |
238 #endif | 236 #endif |
239 } | 237 } |
240 | 238 |
241 void WebGraphicsContext3DCommandBufferImpl::reshape(int width, int height) { | 239 void WebGraphicsContext3DCommandBufferImpl::reshape(int width, int height) { |
242 cached_width_ = width; | 240 cached_width_ = width; |
(...skipping 823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1066 } | 1064 } |
1067 #ifndef WTF_USE_THREADED_COMPOSITING | 1065 #ifndef WTF_USE_THREADED_COMPOSITING |
1068 RenderView* renderview = | 1066 RenderView* renderview = |
1069 web_view_ ? RenderView::FromWebView(web_view_) : NULL; | 1067 web_view_ ? RenderView::FromWebView(web_view_) : NULL; |
1070 if (renderview) | 1068 if (renderview) |
1071 renderview->OnViewContextSwapBuffersAborted(); | 1069 renderview->OnViewContextSwapBuffersAborted(); |
1072 #endif | 1070 #endif |
1073 } | 1071 } |
1074 | 1072 |
1075 #endif // defined(ENABLE_GPU) | 1073 #endif // defined(ENABLE_GPU) |
OLD | NEW |