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

Side by Side Diff: content/renderer/gpu/render_widget_compositor.cc

Issue 134623005: Make SingleThreadProxy a SchedulerClient (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Mac browser compositor fixes Created 6 years, 5 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/render_widget_compositor.h" 5 #include "content/renderer/gpu/render_widget_compositor.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <string> 8 #include <string>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 double hide_threshold; 270 double hide_threshold;
271 if (base::StringToDouble(top_threshold_str, &hide_threshold) && 271 if (base::StringToDouble(top_threshold_str, &hide_threshold) &&
272 hide_threshold >= 0.f && hide_threshold <= 1.f) 272 hide_threshold >= 0.f && hide_threshold <= 1.f)
273 settings.top_controls_hide_threshold = hide_threshold; 273 settings.top_controls_hide_threshold = hide_threshold;
274 } 274 }
275 275
276 settings.use_pinch_virtual_viewport = 276 settings.use_pinch_virtual_viewport =
277 cmd->HasSwitch(cc::switches::kEnablePinchVirtualViewport); 277 cmd->HasSwitch(cc::switches::kEnablePinchVirtualViewport);
278 settings.allow_antialiasing &= 278 settings.allow_antialiasing &=
279 !cmd->HasSwitch(cc::switches::kDisableCompositedAntialiasing); 279 !cmd->HasSwitch(cc::switches::kDisableCompositedAntialiasing);
280 settings.single_thread_proxy_scheduler =
281 !cmd->HasSwitch(switches::kDisableSingleThreadProxyScheduler);
280 282
281 // These flags should be mirrored by UI versions in ui/compositor/. 283 // These flags should be mirrored by UI versions in ui/compositor/.
282 settings.initial_debug_state.show_debug_borders = 284 settings.initial_debug_state.show_debug_borders =
283 cmd->HasSwitch(cc::switches::kShowCompositedLayerBorders); 285 cmd->HasSwitch(cc::switches::kShowCompositedLayerBorders);
284 settings.initial_debug_state.show_fps_counter = 286 settings.initial_debug_state.show_fps_counter =
285 cmd->HasSwitch(cc::switches::kShowFPSCounter); 287 cmd->HasSwitch(cc::switches::kShowFPSCounter);
286 settings.initial_debug_state.show_layer_animation_bounds_rects = 288 settings.initial_debug_state.show_layer_animation_bounds_rects =
287 cmd->HasSwitch(cc::switches::kShowLayerAnimationBounds); 289 cmd->HasSwitch(cc::switches::kShowLayerAnimationBounds);
288 settings.initial_debug_state.show_paint_rects = 290 settings.initial_debug_state.show_paint_rects =
289 cmd->HasSwitch(switches::kShowPaintRects); 291 cmd->HasSwitch(switches::kShowPaintRects);
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 #endif 404 #endif
403 405
404 compositor->Initialize(settings); 406 compositor->Initialize(settings);
405 407
406 return compositor.Pass(); 408 return compositor.Pass();
407 } 409 }
408 410
409 RenderWidgetCompositor::RenderWidgetCompositor(RenderWidget* widget, 411 RenderWidgetCompositor::RenderWidgetCompositor(RenderWidget* widget,
410 bool threaded) 412 bool threaded)
411 : threaded_(threaded), 413 : threaded_(threaded),
412 suppress_schedule_composite_(false),
413 widget_(widget) { 414 widget_(widget) {
414 } 415 }
415 416
416 RenderWidgetCompositor::~RenderWidgetCompositor() {} 417 RenderWidgetCompositor::~RenderWidgetCompositor() {}
417 418
418 const base::WeakPtr<cc::InputHandler>& 419 const base::WeakPtr<cc::InputHandler>&
419 RenderWidgetCompositor::GetInputHandler() { 420 RenderWidgetCompositor::GetInputHandler() {
420 return layer_tree_host_->GetInputHandler(); 421 return layer_tree_host_->GetInputHandler();
421 } 422 }
422 423
423 void RenderWidgetCompositor::SetSuppressScheduleComposite(bool suppress) {
424 if (suppress_schedule_composite_ == suppress)
425 return;
426
427 if (suppress)
428 TRACE_EVENT_ASYNC_BEGIN0("gpu",
429 "RenderWidgetCompositor::SetSuppressScheduleComposite", this);
430 else
431 TRACE_EVENT_ASYNC_END0("gpu",
432 "RenderWidgetCompositor::SetSuppressScheduleComposite", this);
433 suppress_schedule_composite_ = suppress;
434 }
435
436 bool RenderWidgetCompositor::BeginMainFrameRequested() const { 424 bool RenderWidgetCompositor::BeginMainFrameRequested() const {
437 return layer_tree_host_->BeginMainFrameRequested(); 425 return layer_tree_host_->BeginMainFrameRequested();
438 } 426 }
439 427
440 void RenderWidgetCompositor::UpdateAnimations(base::TimeTicks time) {
441 layer_tree_host_->UpdateClientAnimations(time);
442 }
443
444 void RenderWidgetCompositor::SetNeedsDisplayOnAllLayers() { 428 void RenderWidgetCompositor::SetNeedsDisplayOnAllLayers() {
445 layer_tree_host_->SetNeedsDisplayOnAllLayers(); 429 layer_tree_host_->SetNeedsDisplayOnAllLayers();
446 } 430 }
447 431
448 void RenderWidgetCompositor::SetRasterizeOnlyVisibleContent() { 432 void RenderWidgetCompositor::SetRasterizeOnlyVisibleContent() {
449 cc::LayerTreeDebugState current = layer_tree_host_->debug_state(); 433 cc::LayerTreeDebugState current = layer_tree_host_->debug_state();
450 current.rasterize_only_visible_content = true; 434 current.rasterize_only_visible_content = true;
451 layer_tree_host_->SetDebugState(current); 435 layer_tree_host_->SetDebugState(current);
452 } 436 }
453 437
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 this, 526 this,
543 this, 527 this,
544 shared_bitmap_manager, 528 shared_bitmap_manager,
545 settings, 529 settings,
546 base::MessageLoopProxy::current()); 530 base::MessageLoopProxy::current());
547 } 531 }
548 DCHECK(layer_tree_host_); 532 DCHECK(layer_tree_host_);
549 } 533 }
550 534
551 void RenderWidgetCompositor::setSurfaceReady() { 535 void RenderWidgetCompositor::setSurfaceReady() {
552 layer_tree_host_->SetLayerTreeHostClientReady(); 536 // In tests without a RenderThreadImpl, don't set ready as this kicks
537 // off creating output surfaces that the test can't create.
538 if (RenderThreadImpl::current())
539 layer_tree_host_->SetLayerTreeHostClientReady();
553 } 540 }
554 541
555 void RenderWidgetCompositor::setRootLayer(const blink::WebLayer& layer) { 542 void RenderWidgetCompositor::setRootLayer(const blink::WebLayer& layer) {
556 layer_tree_host_->SetRootLayer( 543 layer_tree_host_->SetRootLayer(
557 static_cast<const WebLayerImpl*>(&layer)->layer()); 544 static_cast<const WebLayerImpl*>(&layer)->layer());
558 } 545 }
559 546
560 void RenderWidgetCompositor::clearRootLayer() { 547 void RenderWidgetCompositor::clearRootLayer() {
561 layer_tree_host_->SetRootLayer(scoped_refptr<cc::Layer>()); 548 layer_tree_host_->SetRootLayer(scoped_refptr<cc::Layer>());
562 } 549 }
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 } 682 }
696 } 683 }
697 684
698 void RenderWidgetCompositor::compositeAndReadbackAsync( 685 void RenderWidgetCompositor::compositeAndReadbackAsync(
699 blink::WebCompositeAndReadbackAsyncCallback* callback) { 686 blink::WebCompositeAndReadbackAsyncCallback* callback) {
700 DCHECK(layer_tree_host_->root_layer()); 687 DCHECK(layer_tree_host_->root_layer());
701 scoped_ptr<cc::CopyOutputRequest> request = 688 scoped_ptr<cc::CopyOutputRequest> request =
702 cc::CopyOutputRequest::CreateBitmapRequest( 689 cc::CopyOutputRequest::CreateBitmapRequest(
703 base::Bind(&CompositeAndReadbackAsyncCallback, callback)); 690 base::Bind(&CompositeAndReadbackAsyncCallback, callback));
704 layer_tree_host_->root_layer()->RequestCopyOfOutput(request.Pass()); 691 layer_tree_host_->root_layer()->RequestCopyOfOutput(request.Pass());
705 if (!threaded_) { 692
706 widget_->webwidget()->animate(0.0); 693 if (!threaded_ &&
707 widget_->webwidget()->layout(); 694 !layer_tree_host_->settings().single_thread_proxy_scheduler) {
708 layer_tree_host_->Composite(gfx::FrameTime::Now()); 695 layer_tree_host_->Composite(gfx::FrameTime::Now());
709 } 696 }
710 } 697 }
711 698
712 void RenderWidgetCompositor::finishAllRendering() { 699 void RenderWidgetCompositor::finishAllRendering() {
713 layer_tree_host_->FinishAllRendering(); 700 layer_tree_host_->FinishAllRendering();
714 } 701 }
715 702
716 void RenderWidgetCompositor::setDeferCommits(bool defer_commits) { 703 void RenderWidgetCompositor::setDeferCommits(bool defer_commits) {
717 layer_tree_host_->SetDeferCommits(defer_commits); 704 layer_tree_host_->SetDeferCommits(defer_commits);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
793 void RenderWidgetCompositor::DidCommitAndDrawFrame() { 780 void RenderWidgetCompositor::DidCommitAndDrawFrame() {
794 widget_->didCommitAndDrawCompositorFrame(); 781 widget_->didCommitAndDrawCompositorFrame();
795 } 782 }
796 783
797 void RenderWidgetCompositor::DidCompleteSwapBuffers() { 784 void RenderWidgetCompositor::DidCompleteSwapBuffers() {
798 widget_->didCompleteSwapBuffers(); 785 widget_->didCompleteSwapBuffers();
799 if (!threaded_) 786 if (!threaded_)
800 widget_->OnSwapBuffersComplete(); 787 widget_->OnSwapBuffersComplete();
801 } 788 }
802 789
803 void RenderWidgetCompositor::ScheduleComposite() {
804 if (!suppress_schedule_composite_)
805 widget_->scheduleComposite();
806 }
807
808 void RenderWidgetCompositor::ScheduleAnimation() { 790 void RenderWidgetCompositor::ScheduleAnimation() {
809 widget_->scheduleAnimation(); 791 widget_->scheduleAnimation();
810 } 792 }
811 793
812 void RenderWidgetCompositor::DidPostSwapBuffers() { 794 void RenderWidgetCompositor::DidPostSwapBuffers() {
813 widget_->OnSwapBuffersPosted(); 795 widget_->OnSwapBuffersPosted();
814 } 796 }
815 797
816 void RenderWidgetCompositor::DidAbortSwapBuffers() { 798 void RenderWidgetCompositor::DidAbortSwapBuffers() {
817 widget_->OnSwapBuffersAborted(); 799 widget_->OnSwapBuffersAborted();
818 } 800 }
819 801
820 void RenderWidgetCompositor::RateLimitSharedMainThreadContext() { 802 void RenderWidgetCompositor::RateLimitSharedMainThreadContext() {
821 cc::ContextProvider* provider = 803 cc::ContextProvider* provider =
822 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); 804 RenderThreadImpl::current()->SharedMainThreadContextProvider().get();
823 provider->ContextGL()->RateLimitOffscreenContextCHROMIUM(); 805 provider->ContextGL()->RateLimitOffscreenContextCHROMIUM();
824 } 806 }
825 807
826 } // namespace content 808 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698