Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(410)

Side by Side Diff: content/renderer/render_widget_fullscreen_pepper.cc

Issue 9340012: Move gpu client files to content_common, in content/common/gpu/client (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove unneeded enums Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/renderer/render_widget_fullscreen_pepper.h" 5 #include "content/renderer/render_widget_fullscreen_pepper.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "content/common/gpu/client/gpu_channel_host.h"
9 #include "content/common/view_messages.h" 10 #include "content/common/view_messages.h"
10 #include "content/renderer/gpu/gpu_channel_host.h"
11 #include "content/renderer/pepper_platform_context_3d_impl.h" 11 #include "content/renderer/pepper_platform_context_3d_impl.h"
12 #include "content/renderer/render_thread_impl.h" 12 #include "content/renderer/render_thread_impl.h"
13 #include "gpu/command_buffer/client/gles2_implementation.h" 13 #include "gpu/command_buffer/client/gles2_implementation.h"
14 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCursorInfo.h" 14 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCursorInfo.h"
15 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSize.h" 15 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSize.h"
16 #include "third_party/WebKit/Source/WebKit/chromium/public/WebWidget.h" 16 #include "third_party/WebKit/Source/WebKit/chromium/public/WebWidget.h"
17 #include "ui/gfx/gl/gpu_preference.h" 17 #include "ui/gfx/gl/gpu_preference.h"
18 #include "webkit/plugins/ppapi/plugin_delegate.h" 18 #include "webkit/plugins/ppapi/plugin_delegate.h"
19 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" 19 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h"
20 20
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 return; 79 return;
80 80
81 WebRect plugin_rect(0, 0, size_.width, size_.height); 81 WebRect plugin_rect(0, 0, size_.width, size_.height);
82 widget_->plugin()->Paint(canvas, plugin_rect, rect); 82 widget_->plugin()->Paint(canvas, plugin_rect, rect);
83 } 83 }
84 84
85 virtual void composite(bool finish) { 85 virtual void composite(bool finish) {
86 if (!widget_->plugin()) 86 if (!widget_->plugin())
87 return; 87 return;
88 88
89 RendererGLContext* context = widget_->context(); 89 ContentGLContext* context = widget_->context();
90 DCHECK(context); 90 DCHECK(context);
91 gpu::gles2::GLES2Implementation* gl = context->GetImplementation(); 91 gpu::gles2::GLES2Implementation* gl = context->GetImplementation();
92 unsigned int texture = widget_->plugin()->GetBackingTextureId(); 92 unsigned int texture = widget_->plugin()->GetBackingTextureId();
93 gl->BindTexture(GL_TEXTURE_2D, texture); 93 gl->BindTexture(GL_TEXTURE_2D, texture);
94 gl->DrawArrays(GL_TRIANGLES, 0, 3); 94 gl->DrawArrays(GL_TRIANGLES, 0, 3);
95 widget_->SwapBuffers(); 95 widget_->SwapBuffers();
96 } 96 }
97 97
98 virtual void themeChanged() { 98 virtual void themeChanged() {
99 NOTIMPLEMENTED(); 99 NOTIMPLEMENTED();
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 (widget_->plugin()->GetBackingTextureId() != 0); 194 (widget_->plugin()->GetBackingTextureId() != 0);
195 } 195 }
196 196
197 private: 197 private:
198 RenderWidgetFullscreenPepper* widget_; 198 RenderWidgetFullscreenPepper* widget_;
199 WebSize size_; 199 WebSize size_;
200 200
201 DISALLOW_COPY_AND_ASSIGN(PepperWidget); 201 DISALLOW_COPY_AND_ASSIGN(PepperWidget);
202 }; 202 };
203 203
204 void DestroyContext(RendererGLContext* context, GLuint program, GLuint buffer) { 204 void DestroyContext(ContentGLContext* context, GLuint program, GLuint buffer) {
205 DCHECK(context); 205 DCHECK(context);
206 gpu::gles2::GLES2Implementation* gl = context->GetImplementation(); 206 gpu::gles2::GLES2Implementation* gl = context->GetImplementation();
207 if (program) 207 if (program)
208 gl->DeleteProgram(program); 208 gl->DeleteProgram(program);
209 if (buffer) 209 if (buffer)
210 gl->DeleteBuffers(1, &buffer); 210 gl->DeleteBuffers(1, &buffer);
211 delete context; 211 delete context;
212 } 212 }
213 213
214 } // anonymous namespace 214 } // anonymous namespace
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 } 337 }
338 338
339 void RenderWidgetFullscreenPepper::CreateContext() { 339 void RenderWidgetFullscreenPepper::CreateContext() {
340 DCHECK(!context_); 340 DCHECK(!context_);
341 RenderThreadImpl* render_thread = RenderThreadImpl::current(); 341 RenderThreadImpl* render_thread = RenderThreadImpl::current();
342 GpuChannelHost* host = render_thread->EstablishGpuChannelSync( 342 GpuChannelHost* host = render_thread->EstablishGpuChannelSync(
343 content::CAUSE_FOR_GPU_LAUNCH_RENDERWIDGETFULLSCREENPEPPER_CREATECONTEXT); 343 content::CAUSE_FOR_GPU_LAUNCH_RENDERWIDGETFULLSCREENPEPPER_CREATECONTEXT);
344 if (!host) 344 if (!host)
345 return; 345 return;
346 const int32 attribs[] = { 346 const int32 attribs[] = {
347 RendererGLContext::ALPHA_SIZE, 8, 347 ContentGLContext::ALPHA_SIZE, 8,
348 RendererGLContext::DEPTH_SIZE, 0, 348 ContentGLContext::DEPTH_SIZE, 0,
349 RendererGLContext::STENCIL_SIZE, 0, 349 ContentGLContext::STENCIL_SIZE, 0,
350 RendererGLContext::SAMPLES, 0, 350 ContentGLContext::SAMPLES, 0,
351 RendererGLContext::SAMPLE_BUFFERS, 0, 351 ContentGLContext::SAMPLE_BUFFERS, 0,
352 RendererGLContext::SHARE_RESOURCES, 0, 352 ContentGLContext::SHARE_RESOURCES, 0,
353 RendererGLContext::BIND_GENERATES_RESOURCES, 1, 353 ContentGLContext::BIND_GENERATES_RESOURCES, 1,
354 RendererGLContext::NONE, 354 ContentGLContext::NONE,
355 }; 355 };
356 context_ = RendererGLContext::CreateViewContext( 356 context_ = ContentGLContext::CreateViewContext(
357 host, 357 host,
358 surface_id(), 358 surface_id(),
359 NULL, 359 NULL,
360 "GL_OES_packed_depth_stencil GL_OES_depth24", 360 "GL_OES_packed_depth_stencil GL_OES_depth24",
361 attribs, 361 attribs,
362 active_url_, 362 active_url_,
363 gfx::PreferIntegratedGpu); 363 gfx::PreferIntegratedGpu);
364 if (!context_) 364 if (!context_)
365 return; 365 return;
366 366
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 didDeactivateCompositor(); 480 didDeactivateCompositor();
481 } 481 }
482 return compositing; 482 return compositing;
483 } 483 }
484 484
485 void RenderWidgetFullscreenPepper::SwapBuffers() { 485 void RenderWidgetFullscreenPepper::SwapBuffers() {
486 DCHECK(context_); 486 DCHECK(context_);
487 OnSwapBuffersPosted(); 487 OnSwapBuffersPosted();
488 context_->SwapBuffers(); 488 context_->SwapBuffers();
489 context_->Echo(base::Bind( 489 context_->Echo(base::Bind(
490 &RenderWidgetFullscreenPepper::OnSwapBuffersCompleteByRendererGLContext, 490 &RenderWidgetFullscreenPepper::OnSwapBuffersCompleteByContentGLContext,
491 weak_ptr_factory_.GetWeakPtr())); 491 weak_ptr_factory_.GetWeakPtr()));
492 492
493 // The compositor isn't actually active in this path, but pretend it is for 493 // The compositor isn't actually active in this path, but pretend it is for
494 // scheduling purposes. 494 // scheduling purposes.
495 didCommitAndDrawCompositorFrame(); 495 didCommitAndDrawCompositorFrame();
496 } 496 }
497 497
498 void RenderWidgetFullscreenPepper::OnLostContext( 498 void RenderWidgetFullscreenPepper::OnLostContext(
499 RendererGLContext::ContextLostReason) { 499 ContentGLContext::ContextLostReason) {
500 if (!context_) 500 if (!context_)
501 return; 501 return;
502 // Destroy the context later, in case we got called from InitContext for 502 // Destroy the context later, in case we got called from InitContext for
503 // example. We still need to reset context_ now so that a new context gets 503 // example. We still need to reset context_ now so that a new context gets
504 // created when the plugin recreates its own. 504 // created when the plugin recreates its own.
505 MessageLoop::current()->PostTask( 505 MessageLoop::current()->PostTask(
506 FROM_HERE, 506 FROM_HERE,
507 base::Bind(&DestroyContext, context_, program_, buffer_)); 507 base::Bind(&DestroyContext, context_, program_, buffer_));
508 context_ = NULL; 508 context_ = NULL;
509 program_ = 0; 509 program_ = 0;
510 buffer_ = 0; 510 buffer_ = 0;
511 OnSwapBuffersAborted(); 511 OnSwapBuffersAborted();
512 CheckCompositing(); 512 CheckCompositing();
513 } 513 }
514 514
515 void RenderWidgetFullscreenPepper::OnSwapBuffersCompleteByRendererGLContext() { 515 void RenderWidgetFullscreenPepper::OnSwapBuffersCompleteByContentGLContext() {
516 OnSwapBuffersComplete(); 516 OnSwapBuffersComplete();
517 } 517 }
518 518
519 RendererGLContext* 519 ContentGLContext*
520 RenderWidgetFullscreenPepper::GetParentContextForPlatformContext3D() { 520 RenderWidgetFullscreenPepper::GetParentContextForPlatformContext3D() {
521 if (!context_) { 521 if (!context_) {
522 CreateContext(); 522 CreateContext();
523 } 523 }
524 if (!context_) 524 if (!context_)
525 return NULL; 525 return NULL;
526 return context_; 526 return context_;
527 } 527 }
OLDNEW
« no previous file with comments | « content/renderer/render_widget_fullscreen_pepper.h ('k') | content/renderer/renderer_webkitplatformsupport_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698