| 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 #include "content/renderer/gpu/renderer_gl_context.h" | 5 #include "content/renderer/gpu/renderer_gl_context.h" |
| 6 | 6 |
| 7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
| 8 #include "base/lazy_instance.h" | 8 #include "base/lazy_instance.h" |
| 9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 base::LINKER_INITIALIZED); | 148 base::LINKER_INITIALIZED); |
| 149 | 149 |
| 150 } // namespace anonymous | 150 } // namespace anonymous |
| 151 | 151 |
| 152 RendererGLContext::~RendererGLContext() { | 152 RendererGLContext::~RendererGLContext() { |
| 153 Destroy(); | 153 Destroy(); |
| 154 } | 154 } |
| 155 | 155 |
| 156 RendererGLContext* RendererGLContext::CreateViewContext( | 156 RendererGLContext* RendererGLContext::CreateViewContext( |
| 157 GpuChannelHost* channel, | 157 GpuChannelHost* channel, |
| 158 gfx::PluginWindowHandle render_surface, | |
| 159 int render_view_id, | 158 int render_view_id, |
| 160 const char* allowed_extensions, | 159 const char* allowed_extensions, |
| 161 const int32* attrib_list, | 160 const int32* attrib_list, |
| 162 const GURL& active_url) { | 161 const GURL& active_url) { |
| 163 #if defined(ENABLE_GPU) | 162 #if defined(ENABLE_GPU) |
| 164 scoped_ptr<RendererGLContext> context(new RendererGLContext(channel)); | 163 scoped_ptr<RendererGLContext> context(new RendererGLContext(channel)); |
| 165 if (!context->Initialize( | 164 if (!context->Initialize( |
| 166 true, | 165 true, |
| 167 render_surface, | |
| 168 render_view_id, | 166 render_view_id, |
| 169 gfx::Size(), | 167 gfx::Size(), |
| 170 allowed_extensions, | 168 allowed_extensions, |
| 171 attrib_list, | 169 attrib_list, |
| 172 active_url)) | 170 active_url)) |
| 173 return NULL; | 171 return NULL; |
| 174 | 172 |
| 175 return context.release(); | 173 return context.release(); |
| 176 #else | 174 #else |
| 177 return NULL; | 175 return NULL; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 189 RendererGLContext* RendererGLContext::CreateOffscreenContext( | 187 RendererGLContext* RendererGLContext::CreateOffscreenContext( |
| 190 GpuChannelHost* channel, | 188 GpuChannelHost* channel, |
| 191 const gfx::Size& size, | 189 const gfx::Size& size, |
| 192 const char* allowed_extensions, | 190 const char* allowed_extensions, |
| 193 const int32* attrib_list, | 191 const int32* attrib_list, |
| 194 const GURL& active_url) { | 192 const GURL& active_url) { |
| 195 #if defined(ENABLE_GPU) | 193 #if defined(ENABLE_GPU) |
| 196 scoped_ptr<RendererGLContext> context(new RendererGLContext(channel)); | 194 scoped_ptr<RendererGLContext> context(new RendererGLContext(channel)); |
| 197 if (!context->Initialize( | 195 if (!context->Initialize( |
| 198 false, | 196 false, |
| 199 gfx::kNullPluginWindow, | |
| 200 0, | 197 0, |
| 201 size, | 198 size, |
| 202 allowed_extensions, | 199 allowed_extensions, |
| 203 attrib_list, | 200 attrib_list, |
| 204 active_url)) | 201 active_url)) |
| 205 return NULL; | 202 return NULL; |
| 206 | 203 |
| 207 return context.release(); | 204 return context.release(); |
| 208 #else | 205 #else |
| 209 return NULL; | 206 return NULL; |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 390 command_buffer_(NULL), | 387 command_buffer_(NULL), |
| 391 gles2_helper_(NULL), | 388 gles2_helper_(NULL), |
| 392 transfer_buffer_id_(-1), | 389 transfer_buffer_id_(-1), |
| 393 gles2_implementation_(NULL), | 390 gles2_implementation_(NULL), |
| 394 last_error_(SUCCESS), | 391 last_error_(SUCCESS), |
| 395 frame_number_(0) { | 392 frame_number_(0) { |
| 396 DCHECK(channel); | 393 DCHECK(channel); |
| 397 } | 394 } |
| 398 | 395 |
| 399 bool RendererGLContext::Initialize(bool onscreen, | 396 bool RendererGLContext::Initialize(bool onscreen, |
| 400 gfx::PluginWindowHandle render_surface, | |
| 401 int render_view_id, | 397 int render_view_id, |
| 402 const gfx::Size& size, | 398 const gfx::Size& size, |
| 403 const char* allowed_extensions, | 399 const char* allowed_extensions, |
| 404 const int32* attrib_list, | 400 const int32* attrib_list, |
| 405 const GURL& active_url) { | 401 const GURL& active_url) { |
| 406 DCHECK(size.width() >= 0 && size.height() >= 0); | 402 DCHECK(size.width() >= 0 && size.height() >= 0); |
| 407 TRACE_EVENT2("gpu", "RendererGLContext::Initialize", | 403 TRACE_EVENT2("gpu", "RendererGLContext::Initialize", |
| 408 "on_screen", onscreen, "num_pixels", size.GetArea()); | 404 "on_screen", onscreen, "num_pixels", size.GetArea()); |
| 409 | 405 |
| 410 if (channel_->state() != GpuChannelHost::kConnected) | 406 if (channel_->state() != GpuChannelHost::kConnected) |
| (...skipping 25 matching lines...) Expand all Loading... |
| 436 default: | 432 default: |
| 437 last_error_ = BAD_ATTRIBUTE; | 433 last_error_ = BAD_ATTRIBUTE; |
| 438 attribs.push_back(NONE); | 434 attribs.push_back(NONE); |
| 439 attrib_list = NULL; | 435 attrib_list = NULL; |
| 440 break; | 436 break; |
| 441 } | 437 } |
| 442 } | 438 } |
| 443 | 439 |
| 444 // Create a proxy to a command buffer in the GPU process. | 440 // Create a proxy to a command buffer in the GPU process. |
| 445 if (onscreen) { | 441 if (onscreen) { |
| 446 if (render_surface == gfx::kNullPluginWindow) { | 442 TRACE_EVENT0("gpu", |
| 447 LOG(ERROR) << "Invalid surface handle for onscreen context."; | 443 "RendererGLContext::Initialize::CreateViewCommandBuffer"); |
| 448 command_buffer_ = NULL; | 444 command_buffer_ = channel_->CreateViewCommandBuffer( |
| 449 } else { | 445 render_view_id, |
| 450 TRACE_EVENT0("gpu", | 446 allowed_extensions, |
| 451 "RendererGLContext::Initialize::CreateViewCommandBuffer"); | 447 attribs, |
| 452 command_buffer_ = channel_->CreateViewCommandBuffer( | 448 active_url); |
| 453 render_surface, | |
| 454 render_view_id, | |
| 455 allowed_extensions, | |
| 456 attribs, | |
| 457 active_url); | |
| 458 } | |
| 459 } else { | 449 } else { |
| 460 command_buffer_ = channel_->CreateOffscreenCommandBuffer( | 450 command_buffer_ = channel_->CreateOffscreenCommandBuffer( |
| 461 size, | 451 size, |
| 462 allowed_extensions, | 452 allowed_extensions, |
| 463 attribs, | 453 attribs, |
| 464 active_url); | 454 active_url); |
| 465 } | 455 } |
| 466 if (!command_buffer_) { | 456 if (!command_buffer_) { |
| 467 Destroy(); | 457 Destroy(); |
| 468 return false; | 458 return false; |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 597 | 587 |
| 598 bool RendererGLContext::GetParentToChildLatch(uint32* parent_to_child_latch) { | 588 bool RendererGLContext::GetParentToChildLatch(uint32* parent_to_child_latch) { |
| 599 *parent_to_child_latch = parent_to_child_latch_; | 589 *parent_to_child_latch = parent_to_child_latch_; |
| 600 return true; | 590 return true; |
| 601 } | 591 } |
| 602 | 592 |
| 603 bool RendererGLContext::GetChildToParentLatch(uint32* child_to_parent_latch) { | 593 bool RendererGLContext::GetChildToParentLatch(uint32* child_to_parent_latch) { |
| 604 *child_to_parent_latch = child_to_parent_latch_; | 594 *child_to_parent_latch = child_to_parent_latch_; |
| 605 return true; | 595 return true; |
| 606 } | 596 } |
| OLD | NEW |