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

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: bad_message, reserve Created 4 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
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_rph_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_(
73 SynchronousCompositorRPHObserver::GetOrCreateFor(process_id_)),
71 sender_(rwhva_->GetRenderWidgetHost()), 74 sender_(rwhva_->GetRenderWidgetHost()),
72 use_in_process_zero_copy_software_draw_(use_in_proc_software_draw), 75 use_in_process_zero_copy_software_draw_(use_in_proc_software_draw),
73 bytes_limit_(0u), 76 bytes_limit_(0u),
74 renderer_param_version_(0u), 77 renderer_param_version_(0u),
75 need_animate_scroll_(false), 78 need_animate_scroll_(false),
76 need_invalidate_count_(0u), 79 need_invalidate_count_(0u),
77 did_activate_pending_tree_count_(0u) { 80 did_activate_pending_tree_count_(0u) {
78 client_->DidInitializeCompositor(this, process_id_, routing_id_); 81 client_->DidInitializeCompositor(this, process_id_, routing_id_);
79 } 82 }
80 83
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 new SyncCompositorMsg_ComputeScroll(routing_id_, animation_time)); 333 new SyncCompositorMsg_ComputeScroll(routing_id_, animation_time));
331 } 334 }
332 335
333 void SynchronousCompositorHost::DidOverscroll( 336 void SynchronousCompositorHost::DidOverscroll(
334 const DidOverscrollParams& over_scroll_params) { 337 const DidOverscrollParams& over_scroll_params) {
335 client_->DidOverscroll(this, over_scroll_params.accumulated_overscroll, 338 client_->DidOverscroll(this, over_scroll_params.accumulated_overscroll,
336 over_scroll_params.latest_overscroll_delta, 339 over_scroll_params.latest_overscroll_delta,
337 over_scroll_params.current_fling_velocity); 340 over_scroll_params.current_fling_velocity);
338 } 341 }
339 342
340 void SynchronousCompositorHost::DidSendBeginFrame() { 343 void SynchronousCompositorHost::DidSendBeginFrame(
341 SyncCompositorCommonRendererParams common_renderer_params; 344 ui::WindowAndroid* window_android) {
342 if (!sender_->Send(new SyncCompositorMsg_SynchronizeRendererState( 345 rph_observer_->SyncStateAfterVSync(window_android, this);
343 routing_id_, &common_renderer_params))) {
344 return;
345 }
346 ProcessCommonParams(common_renderer_params);
347 } 346 }
348 347
349 void SynchronousCompositorHost::OutputSurfaceCreated() { 348 void SynchronousCompositorHost::OutputSurfaceCreated() {
350 // New output surface is not aware of state from Browser side. So need to 349 // New output surface is not aware of state from Browser side. So need to
351 // re-send all browser side state here. 350 // re-send all browser side state here.
352 sender_->Send( 351 sender_->Send(
353 new SyncCompositorMsg_SetMemoryPolicy(routing_id_, bytes_limit_)); 352 new SyncCompositorMsg_SetMemoryPolicy(routing_id_, bytes_limit_));
354 } 353 }
355 354
356 void SynchronousCompositorHost::ProcessCommonParams( 355 void SynchronousCompositorHost::ProcessCommonParams(
(...skipping 24 matching lines...) Expand all
381 if (params.page_scale_factor) { 380 if (params.page_scale_factor) {
382 client_->UpdateRootLayerState( 381 client_->UpdateRootLayerState(
383 this, gfx::ScrollOffsetToVector2dF(params.total_scroll_offset), 382 this, gfx::ScrollOffsetToVector2dF(params.total_scroll_offset),
384 gfx::ScrollOffsetToVector2dF(params.max_scroll_offset), 383 gfx::ScrollOffsetToVector2dF(params.max_scroll_offset),
385 params.scrollable_size, params.page_scale_factor, 384 params.scrollable_size, params.page_scale_factor,
386 params.min_page_scale_factor, params.max_page_scale_factor); 385 params.min_page_scale_factor, params.max_page_scale_factor);
387 } 386 }
388 } 387 }
389 388
390 } // namespace content 389 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698