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

Side by Side Diff: content/browser/android/synchronous_compositor_host.cc

Issue 2160743002: sync compositor: Reduce begin frame sync IPC overhead (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: clang format Created 4 years, 4 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/browser/android/synchronous_compositor_host.h" 5 #include "content/browser/android/synchronous_compositor_host.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/memory/shared_memory.h" 12 #include "base/memory/shared_memory.h"
13 #include "base/trace_event/trace_event_argument.h" 13 #include "base/trace_event/trace_event_argument.h"
14 #include "content/browser/android/synchronous_compositor_observer.h"
14 #include "content/browser/renderer_host/render_widget_host_view_android.h" 15 #include "content/browser/renderer_host/render_widget_host_view_android.h"
15 #include "content/browser/web_contents/web_contents_android.h" 16 #include "content/browser/web_contents/web_contents_android.h"
16 #include "content/browser/web_contents/web_contents_impl.h" 17 #include "content/browser/web_contents/web_contents_impl.h"
17 #include "content/common/android/sync_compositor_messages.h" 18 #include "content/common/android/sync_compositor_messages.h"
18 #include "content/common/android/sync_compositor_statics.h" 19 #include "content/common/android/sync_compositor_statics.h"
19 #include "content/public/browser/android/synchronous_compositor_client.h" 20 #include "content/public/browser/android/synchronous_compositor_client.h"
20 #include "content/public/browser/browser_thread.h" 21 #include "content/public/browser/browser_thread.h"
21 #include "content/public/browser/render_view_host.h" 22 #include "content/public/browser/render_view_host.h"
22 #include "content/public/common/content_switches.h" 23 #include "content/public/common/content_switches.h"
23 #include "ipc/ipc_sender.h" 24 #include "ipc/ipc_sender.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 62
62 SynchronousCompositorHost::SynchronousCompositorHost( 63 SynchronousCompositorHost::SynchronousCompositorHost(
63 RenderWidgetHostViewAndroid* rwhva, 64 RenderWidgetHostViewAndroid* rwhva,
64 SynchronousCompositorClient* client, 65 SynchronousCompositorClient* client,
65 bool use_in_proc_software_draw) 66 bool use_in_proc_software_draw)
66 : rwhva_(rwhva), 67 : rwhva_(rwhva),
67 client_(client), 68 client_(client),
68 ui_task_runner_(BrowserThread::GetTaskRunnerForThread(BrowserThread::UI)), 69 ui_task_runner_(BrowserThread::GetTaskRunnerForThread(BrowserThread::UI)),
69 process_id_(rwhva_->GetRenderWidgetHost()->GetProcess()->GetID()), 70 process_id_(rwhva_->GetRenderWidgetHost()->GetProcess()->GetID()),
70 routing_id_(rwhva_->GetRenderWidgetHost()->GetRoutingID()), 71 routing_id_(rwhva_->GetRenderWidgetHost()->GetRoutingID()),
72 rph_observer_(SynchronousCompositorObserver::GetOrCreateFor(process_id_)),
71 sender_(rwhva_->GetRenderWidgetHost()), 73 sender_(rwhva_->GetRenderWidgetHost()),
72 use_in_process_zero_copy_software_draw_(use_in_proc_software_draw), 74 use_in_process_zero_copy_software_draw_(use_in_proc_software_draw),
73 bytes_limit_(0u), 75 bytes_limit_(0u),
74 renderer_param_version_(0u), 76 renderer_param_version_(0u),
75 need_animate_scroll_(false), 77 need_animate_scroll_(false),
76 need_invalidate_count_(0u), 78 need_invalidate_count_(0u),
77 did_activate_pending_tree_count_(0u) { 79 did_activate_pending_tree_count_(0u) {
78 client_->DidInitializeCompositor(this, process_id_, routing_id_); 80 client_->DidInitializeCompositor(this, process_id_, routing_id_);
79 } 81 }
80 82
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 new SyncCompositorMsg_ComputeScroll(routing_id_, animation_time)); 332 new SyncCompositorMsg_ComputeScroll(routing_id_, animation_time));
331 } 333 }
332 334
333 void SynchronousCompositorHost::DidOverscroll( 335 void SynchronousCompositorHost::DidOverscroll(
334 const DidOverscrollParams& over_scroll_params) { 336 const DidOverscrollParams& over_scroll_params) {
335 client_->DidOverscroll(this, over_scroll_params.accumulated_overscroll, 337 client_->DidOverscroll(this, over_scroll_params.accumulated_overscroll,
336 over_scroll_params.latest_overscroll_delta, 338 over_scroll_params.latest_overscroll_delta,
337 over_scroll_params.current_fling_velocity); 339 over_scroll_params.current_fling_velocity);
338 } 340 }
339 341
340 void SynchronousCompositorHost::DidSendBeginFrame() { 342 void SynchronousCompositorHost::DidSendBeginFrame(
341 SyncCompositorCommonRendererParams common_renderer_params; 343 ui::WindowAndroid* window_android) {
342 if (!sender_->Send(new SyncCompositorMsg_SynchronizeRendererState( 344 rph_observer_->SyncStateAfterVSync(window_android, this);
343 routing_id_, &common_renderer_params))) {
344 return;
345 }
346 ProcessCommonParams(common_renderer_params);
347 } 345 }
348 346
349 void SynchronousCompositorHost::OutputSurfaceCreated() { 347 void SynchronousCompositorHost::OutputSurfaceCreated() {
350 // New output surface is not aware of state from Browser side. So need to 348 // New output surface is not aware of state from Browser side. So need to
351 // re-send all browser side state here. 349 // re-send all browser side state here.
352 sender_->Send( 350 sender_->Send(
353 new SyncCompositorMsg_SetMemoryPolicy(routing_id_, bytes_limit_)); 351 new SyncCompositorMsg_SetMemoryPolicy(routing_id_, bytes_limit_));
354 } 352 }
355 353
356 void SynchronousCompositorHost::ProcessCommonParams( 354 void SynchronousCompositorHost::ProcessCommonParams(
(...skipping 24 matching lines...) Expand all
381 if (params.page_scale_factor) { 379 if (params.page_scale_factor) {
382 client_->UpdateRootLayerState( 380 client_->UpdateRootLayerState(
383 this, gfx::ScrollOffsetToVector2dF(params.total_scroll_offset), 381 this, gfx::ScrollOffsetToVector2dF(params.total_scroll_offset),
384 gfx::ScrollOffsetToVector2dF(params.max_scroll_offset), 382 gfx::ScrollOffsetToVector2dF(params.max_scroll_offset),
385 params.scrollable_size, params.page_scale_factor, 383 params.scrollable_size, params.page_scale_factor,
386 params.min_page_scale_factor, params.max_page_scale_factor); 384 params.min_page_scale_factor, params.max_page_scale_factor);
387 } 385 }
388 } 386 }
389 387
390 } // namespace content 388 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/android/synchronous_compositor_host.h ('k') | content/browser/android/synchronous_compositor_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698