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 "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" | 5 #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" |
6 | 6 |
7 #include "third_party/khronos/GLES2/gl2.h" | 7 #include "third_party/khronos/GLES2/gl2.h" |
8 #ifndef GL_GLEXT_PROTOTYPES | 8 #ifndef GL_GLEXT_PROTOTYPES |
9 #define GL_GLEXT_PROTOTYPES 1 | 9 #define GL_GLEXT_PROTOTYPES 1 |
10 #endif | 10 #endif |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 visible_(false), | 126 visible_(false), |
127 free_command_buffer_when_invisible_(false), | 127 free_command_buffer_when_invisible_(false), |
128 host_(NULL), | 128 host_(NULL), |
129 surface_id_(surface_id), | 129 surface_id_(surface_id), |
130 active_url_(active_url), | 130 active_url_(active_url), |
131 swap_client_(swap_client), | 131 swap_client_(swap_client), |
132 context_lost_callback_(0), | 132 context_lost_callback_(0), |
133 context_lost_reason_(GL_NO_ERROR), | 133 context_lost_reason_(GL_NO_ERROR), |
134 error_message_callback_(0), | 134 error_message_callback_(0), |
135 swapbuffers_complete_callback_(0), | 135 swapbuffers_complete_callback_(0), |
| 136 latency_info_callback_(0), |
136 gpu_preference_(gfx::PreferIntegratedGpu), | 137 gpu_preference_(gfx::PreferIntegratedGpu), |
137 cached_width_(0), | 138 cached_width_(0), |
138 cached_height_(0), | 139 cached_height_(0), |
139 bound_fbo_(0), | 140 bound_fbo_(0), |
140 weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), | 141 weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), |
141 initialized_(false), | 142 initialized_(false), |
142 parent_(NULL), | 143 parent_(NULL), |
143 parent_texture_id_(0), | 144 parent_texture_id_(0), |
144 command_buffer_(NULL), | 145 command_buffer_(NULL), |
145 gles2_helper_(NULL), | 146 gles2_helper_(NULL), |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 gl_->EnableFeatureCHROMIUM("webgl_enable_glsl_webgl_validation"); | 229 gl_->EnableFeatureCHROMIUM("webgl_enable_glsl_webgl_validation"); |
229 | 230 |
230 command_buffer_->SetChannelErrorCallback( | 231 command_buffer_->SetChannelErrorCallback( |
231 base::Bind(&WebGraphicsContext3DCommandBufferImpl::OnContextLost, | 232 base::Bind(&WebGraphicsContext3DCommandBufferImpl::OnContextLost, |
232 weak_ptr_factory_.GetWeakPtr())); | 233 weak_ptr_factory_.GetWeakPtr())); |
233 | 234 |
234 command_buffer_->SetOnConsoleMessageCallback( | 235 command_buffer_->SetOnConsoleMessageCallback( |
235 base::Bind(&WebGraphicsContext3DCommandBufferImpl::OnErrorMessage, | 236 base::Bind(&WebGraphicsContext3DCommandBufferImpl::OnErrorMessage, |
236 weak_ptr_factory_.GetWeakPtr())); | 237 weak_ptr_factory_.GetWeakPtr())); |
237 | 238 |
| 239 command_buffer_->SetLatencyInfoCallback( |
| 240 base::Bind(&WebGraphicsContext3DCommandBufferImpl::OnSetLatencyInfo, |
| 241 weak_ptr_factory_.GetWeakPtr())); |
| 242 |
238 client_error_message_callback_.reset( | 243 client_error_message_callback_.reset( |
239 new WebGraphicsContext3DErrorMessageCallback(this)); | 244 new WebGraphicsContext3DErrorMessageCallback(this)); |
240 gl_->SetErrorMessageCallback(client_error_message_callback_.get()); | 245 gl_->SetErrorMessageCallback(client_error_message_callback_.get()); |
241 | 246 |
242 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | 247 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
243 free_command_buffer_when_invisible_ = | 248 free_command_buffer_when_invisible_ = |
244 command_line.HasSwitch(switches::kEnablePruneGpuCommandBuffers); | 249 command_line.HasSwitch(switches::kEnablePruneGpuCommandBuffers); |
245 | 250 |
246 // Set attributes_ from created offscreen context. | 251 // Set attributes_ from created offscreen context. |
247 { | 252 { |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
544 // Same flow control as WebGraphicsContext3DCommandBufferImpl::prepareTexture | 549 // Same flow control as WebGraphicsContext3DCommandBufferImpl::prepareTexture |
545 // (see above). | 550 // (see above). |
546 if (ShouldUseSwapClient()) | 551 if (ShouldUseSwapClient()) |
547 swap_client_->OnViewContextSwapBuffersPosted(); | 552 swap_client_->OnViewContextSwapBuffersPosted(); |
548 gl_->PostSubBufferCHROMIUM(x, y, width, height); | 553 gl_->PostSubBufferCHROMIUM(x, y, width, height); |
549 command_buffer_->Echo(base::Bind( | 554 command_buffer_->Echo(base::Bind( |
550 &WebGraphicsContext3DCommandBufferImpl::OnSwapBuffersComplete, | 555 &WebGraphicsContext3DCommandBufferImpl::OnSwapBuffersComplete, |
551 weak_ptr_factory_.GetWeakPtr())); | 556 weak_ptr_factory_.GetWeakPtr())); |
552 } | 557 } |
553 | 558 |
| 559 void WebGraphicsContext3DCommandBufferImpl::setLatencyInfoCHROMIUM( |
| 560 const WebKit::WebLatencyInfo& latency_info) { |
| 561 command_buffer_->SetLatencyInfo( |
| 562 static_cast<const WebKit::WebLatencyInfoImpl&>(latency_info)); |
| 563 } |
| 564 |
| 565 void WebGraphicsContext3DCommandBufferImpl::setLatencyInfoCallbackCHROMIUM( |
| 566 WebGraphicsContext3D::WebGraphicsLatencyInfoCallbackCHROMIUM* cb) { |
| 567 latency_info_callback_ = cb; |
| 568 } |
| 569 |
| 570 void WebGraphicsContext3DCommandBufferImpl::OnSetLatencyInfo( |
| 571 const WebKit::WebLatencyInfoImpl& latency_info) { |
| 572 if (latency_info_callback_) |
| 573 latency_info_callback_->onReceivedLatencyInfo( |
| 574 static_cast<const WebKit::WebLatencyInfo&>(latency_info)); |
| 575 } |
| 576 |
554 void WebGraphicsContext3DCommandBufferImpl::reshape(int width, int height) { | 577 void WebGraphicsContext3DCommandBufferImpl::reshape(int width, int height) { |
555 cached_width_ = width; | 578 cached_width_ = width; |
556 cached_height_ = height; | 579 cached_height_ = height; |
557 | 580 |
558 gl_->ResizeCHROMIUM(width, height); | 581 gl_->ResizeCHROMIUM(width, height); |
559 } | 582 } |
560 | 583 |
561 #ifdef FLIP_FRAMEBUFFER_VERTICALLY | 584 #ifdef FLIP_FRAMEBUFFER_VERTICALLY |
562 void WebGraphicsContext3DCommandBufferImpl::FlipVertically( | 585 void WebGraphicsContext3DCommandBufferImpl::FlipVertically( |
563 uint8* framebuffer, | 586 uint8* framebuffer, |
(...skipping 1150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1714 | 1737 |
1715 void WebGraphicsContext3DCommandBufferImpl::OnErrorMessage( | 1738 void WebGraphicsContext3DCommandBufferImpl::OnErrorMessage( |
1716 const std::string& message, int id) { | 1739 const std::string& message, int id) { |
1717 if (error_message_callback_) { | 1740 if (error_message_callback_) { |
1718 WebKit::WebString str = WebKit::WebString::fromUTF8(message.c_str()); | 1741 WebKit::WebString str = WebKit::WebString::fromUTF8(message.c_str()); |
1719 error_message_callback_->onErrorMessage(str, id); | 1742 error_message_callback_->onErrorMessage(str, id); |
1720 } | 1743 } |
1721 } | 1744 } |
1722 | 1745 |
1723 } // namespace content | 1746 } // namespace content |
OLD | NEW |