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

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

Issue 619843002: cc: Make separate interface for BeginFrame ipc from OutputSurface (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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
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 15 matching lines...) Expand all
26 #include "cc/output/begin_frame_args.h" 26 #include "cc/output/begin_frame_args.h"
27 #include "cc/output/copy_output_request.h" 27 #include "cc/output/copy_output_request.h"
28 #include "cc/output/copy_output_result.h" 28 #include "cc/output/copy_output_result.h"
29 #include "cc/resources/single_release_callback.h" 29 #include "cc/resources/single_release_callback.h"
30 #include "cc/trees/layer_tree_host.h" 30 #include "cc/trees/layer_tree_host.h"
31 #include "content/child/child_gpu_memory_buffer_manager.h" 31 #include "content/child/child_gpu_memory_buffer_manager.h"
32 #include "content/child/child_shared_bitmap_manager.h" 32 #include "content/child/child_shared_bitmap_manager.h"
33 #include "content/common/content_switches_internal.h" 33 #include "content/common/content_switches_internal.h"
34 #include "content/common/gpu/client/context_provider_command_buffer.h" 34 #include "content/common/gpu/client/context_provider_command_buffer.h"
35 #include "content/public/common/content_switches.h" 35 #include "content/public/common/content_switches.h"
36 #include "content/renderer/gpu/compositor_external_begin_frame_source.h"
36 #include "content/renderer/input/input_handler_manager.h" 37 #include "content/renderer/input/input_handler_manager.h"
37 #include "content/renderer/render_thread_impl.h" 38 #include "content/renderer/render_thread_impl.h"
38 #include "gpu/command_buffer/client/gles2_interface.h" 39 #include "gpu/command_buffer/client/gles2_interface.h"
39 #include "third_party/WebKit/public/platform/WebCompositeAndReadbackAsyncCallbac k.h" 40 #include "third_party/WebKit/public/platform/WebCompositeAndReadbackAsyncCallbac k.h"
40 #include "third_party/WebKit/public/platform/WebSelectionBound.h" 41 #include "third_party/WebKit/public/platform/WebSelectionBound.h"
41 #include "third_party/WebKit/public/platform/WebSize.h" 42 #include "third_party/WebKit/public/platform/WebSize.h"
42 #include "third_party/WebKit/public/web/WebKit.h" 43 #include "third_party/WebKit/public/web/WebKit.h"
43 #include "third_party/WebKit/public/web/WebWidget.h" 44 #include "third_party/WebKit/public/web/WebWidget.h"
44 #include "ui/gfx/frame_time.h" 45 #include "ui/gfx/frame_time.h"
45 #include "ui/gl/gl_switches.h" 46 #include "ui/gl/gl_switches.h"
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 cc::GpuMemoryBufferManager* gpu_memory_buffer_manager = NULL; 532 cc::GpuMemoryBufferManager* gpu_memory_buffer_manager = NULL;
532 // render_thread may be NULL in tests. 533 // render_thread may be NULL in tests.
533 if (render_thread) { 534 if (render_thread) {
534 compositor_message_loop_proxy = 535 compositor_message_loop_proxy =
535 render_thread->compositor_message_loop_proxy(); 536 render_thread->compositor_message_loop_proxy();
536 shared_bitmap_manager = render_thread->shared_bitmap_manager(); 537 shared_bitmap_manager = render_thread->shared_bitmap_manager();
537 gpu_memory_buffer_manager = render_thread->gpu_memory_buffer_manager(); 538 gpu_memory_buffer_manager = render_thread->gpu_memory_buffer_manager();
538 main_thread_compositor_task_runner = 539 main_thread_compositor_task_runner =
539 render_thread->main_thread_compositor_task_runner(); 540 render_thread->main_thread_compositor_task_runner();
540 } 541 }
542 scoped_ptr<cc::BeginFrameSource> external_begin_frame_source;
543 #if defined(OS_ANDROID)
544 if (SynchronousCompositorFactory* factory =
545 SynchronousCompositorFactory::GetInstance()) {
546 DCHECK(settings.begin_frame_scheduling_enabled);
547 external_begin_frame_source =
548 factory->GetExternalBeginFrameSource(widget_->routing_id());
549 }
550 #endif
551 if (!external_begin_frame_source.get() &&
552 settings.begin_frame_scheduling_enabled) {
553 external_begin_frame_source.reset(new CompositorExternalBeginFrameSource(
554 widget_->routing_id()));
555 }
541 if (compositor_message_loop_proxy.get()) { 556 if (compositor_message_loop_proxy.get()) {
542 layer_tree_host_ = 557 layer_tree_host_ =
543 cc::LayerTreeHost::CreateThreaded(this, 558 cc::LayerTreeHost::CreateThreaded(this,
544 shared_bitmap_manager, 559 shared_bitmap_manager,
545 gpu_memory_buffer_manager, 560 gpu_memory_buffer_manager,
546 settings, 561 settings,
547 main_thread_compositor_task_runner, 562 main_thread_compositor_task_runner,
548 compositor_message_loop_proxy); 563 compositor_message_loop_proxy,
564 external_begin_frame_source.Pass());
549 } else { 565 } else {
550 layer_tree_host_ = cc::LayerTreeHost::CreateSingleThreaded( 566 layer_tree_host_ = cc::LayerTreeHost::CreateSingleThreaded(
551 this, 567 this,
552 this, 568 this,
553 shared_bitmap_manager, 569 shared_bitmap_manager,
554 gpu_memory_buffer_manager, 570 gpu_memory_buffer_manager,
555 settings, 571 settings,
556 main_thread_compositor_task_runner); 572 main_thread_compositor_task_runner,
573 external_begin_frame_source.Pass());
557 } 574 }
558 DCHECK(layer_tree_host_); 575 DCHECK(layer_tree_host_);
559 } 576 }
560 577
561 void RenderWidgetCompositor::setSurfaceReady() { 578 void RenderWidgetCompositor::setSurfaceReady() {
562 // In tests without a RenderThreadImpl, don't set ready as this kicks 579 // In tests without a RenderThreadImpl, don't set ready as this kicks
563 // off creating output surfaces that the test can't create. 580 // off creating output surfaces that the test can't create.
564 if (RenderThreadImpl::current()) 581 if (RenderThreadImpl::current())
565 layer_tree_host_->SetLayerTreeHostClientReady(); 582 layer_tree_host_->SetLayerTreeHostClientReady();
566 } 583 }
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 widget_->OnSwapBuffersAborted(); 892 widget_->OnSwapBuffersAborted();
876 } 893 }
877 894
878 void RenderWidgetCompositor::RateLimitSharedMainThreadContext() { 895 void RenderWidgetCompositor::RateLimitSharedMainThreadContext() {
879 cc::ContextProvider* provider = 896 cc::ContextProvider* provider =
880 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); 897 RenderThreadImpl::current()->SharedMainThreadContextProvider().get();
881 provider->ContextGL()->RateLimitOffscreenContextCHROMIUM(); 898 provider->ContextGL()->RateLimitOffscreenContextCHROMIUM();
882 } 899 }
883 900
884 } // namespace content 901 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698