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

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

Issue 1958803003: sync compostor: Return resources async IPC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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"
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 : rwhva_(rwhva), 70 : rwhva_(rwhva),
71 client_(client), 71 client_(client),
72 ui_task_runner_( 72 ui_task_runner_(
73 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)), 73 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)),
74 routing_id_(rwhva_->GetRenderWidgetHost()->GetRoutingID()), 74 routing_id_(rwhva_->GetRenderWidgetHost()->GetRoutingID()),
75 sender_(rwhva_->GetRenderWidgetHost()), 75 sender_(rwhva_->GetRenderWidgetHost()),
76 async_input_(async_input), 76 async_input_(async_input),
77 use_in_process_zero_copy_software_draw_(use_in_proc_software_draw), 77 use_in_process_zero_copy_software_draw_(use_in_proc_software_draw),
78 is_active_(false), 78 is_active_(false),
79 bytes_limit_(0u), 79 bytes_limit_(0u),
80 output_surface_id_from_last_draw_(0u),
81 root_scroll_offset_updated_by_browser_(false), 80 root_scroll_offset_updated_by_browser_(false),
82 renderer_param_version_(0u), 81 renderer_param_version_(0u),
83 need_animate_scroll_(false), 82 need_animate_scroll_(false),
84 need_invalidate_count_(0u), 83 need_invalidate_count_(0u),
85 need_begin_frame_(false), 84 need_begin_frame_(false),
86 did_activate_pending_tree_count_(0u), 85 did_activate_pending_tree_count_(0u),
87 weak_ptr_factory_(this) { 86 weak_ptr_factory_(this) {
88 client_->DidInitializeCompositor(this); 87 client_->DidInitializeCompositor(this);
89 } 88 }
90 89
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 &frame.output_surface_id, frame.frame.get()))) { 127 &frame.output_surface_id, frame.frame.get()))) {
129 return SynchronousCompositor::Frame(); 128 return SynchronousCompositor::Frame();
130 } 129 }
131 ProcessCommonParams(common_renderer_params); 130 ProcessCommonParams(common_renderer_params);
132 if (!frame.frame->delegated_frame_data) { 131 if (!frame.frame->delegated_frame_data) {
133 // This can happen if compositor did not swap in this draw. 132 // This can happen if compositor did not swap in this draw.
134 frame.frame.reset(); 133 frame.frame.reset();
135 } 134 }
136 if (frame.frame) { 135 if (frame.frame) {
137 UpdateFrameMetaData(frame.frame->metadata); 136 UpdateFrameMetaData(frame.frame->metadata);
138 if (output_surface_id_from_last_draw_ != frame.output_surface_id)
139 returned_resources_.clear();
140 output_surface_id_from_last_draw_ = frame.output_surface_id;
141 } 137 }
142 return frame; 138 return frame;
143 } 139 }
144 140
145 void SynchronousCompositorHost::UpdateFrameMetaData( 141 void SynchronousCompositorHost::UpdateFrameMetaData(
146 const cc::CompositorFrameMetadata& frame_metadata) { 142 const cc::CompositorFrameMetadata& frame_metadata) {
147 rwhva_->SynchronousFrameMetadata(frame_metadata); 143 rwhva_->SynchronousFrameMetadata(frame_metadata);
148 } 144 }
149 145
150 namespace { 146 namespace {
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 } 301 }
306 302
307 void SynchronousCompositorHost::SendZeroMemory() { 303 void SynchronousCompositorHost::SendZeroMemory() {
308 // No need to check return value. 304 // No need to check return value.
309 sender_->Send(new SyncCompositorMsg_ZeroSharedMemory(routing_id_)); 305 sender_->Send(new SyncCompositorMsg_ZeroSharedMemory(routing_id_));
310 } 306 }
311 307
312 void SynchronousCompositorHost::ReturnResources( 308 void SynchronousCompositorHost::ReturnResources(
313 uint32_t output_surface_id, 309 uint32_t output_surface_id,
314 const cc::CompositorFrameAck& frame_ack) { 310 const cc::CompositorFrameAck& frame_ack) {
315 // If output_surface_id does not match, then renderer side has switched 311 DCHECK(!frame_ack.resources.empty());
316 // to a new OutputSurface, so dropping resources for old OutputSurface 312 sender_->Send(new SyncCompositorMsg_ReclaimResources(
317 // is allowed. 313 routing_id_, output_surface_id, frame_ack));
318 if (output_surface_id_from_last_draw_ != output_surface_id)
319 return;
320 returned_resources_.insert(returned_resources_.end(),
321 frame_ack.resources.begin(),
322 frame_ack.resources.end());
323 } 314 }
324 315
325 void SynchronousCompositorHost::SetMemoryPolicy(size_t bytes_limit) { 316 void SynchronousCompositorHost::SetMemoryPolicy(size_t bytes_limit) {
326 if (bytes_limit_ == bytes_limit) 317 if (bytes_limit_ == bytes_limit)
327 return; 318 return;
328 bytes_limit_ = bytes_limit; 319 bytes_limit_ = bytes_limit;
329 SendAsyncCompositorStateIfNeeded(); 320 SendAsyncCompositorStateIfNeeded();
330 } 321 }
331 322
332 void SynchronousCompositorHost::DidChangeRootLayerScrollOffset( 323 void SynchronousCompositorHost::DidChangeRootLayerScrollOffset(
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 void SynchronousCompositorHost::OnOverScroll( 422 void SynchronousCompositorHost::OnOverScroll(
432 const SyncCompositorCommonRendererParams& params, 423 const SyncCompositorCommonRendererParams& params,
433 const DidOverscrollParams& over_scroll_params) { 424 const DidOverscrollParams& over_scroll_params) {
434 ProcessCommonParams(params); 425 ProcessCommonParams(params);
435 DidOverscroll(over_scroll_params); 426 DidOverscroll(over_scroll_params);
436 } 427 }
437 428
438 void SynchronousCompositorHost::PopulateCommonParams( 429 void SynchronousCompositorHost::PopulateCommonParams(
439 SyncCompositorCommonBrowserParams* params) { 430 SyncCompositorCommonBrowserParams* params) {
440 DCHECK(params); 431 DCHECK(params);
441 DCHECK(params->ack.resources.empty());
442 params->bytes_limit = bytes_limit_; 432 params->bytes_limit = bytes_limit_;
443 params->output_surface_id_for_returned_resources =
444 output_surface_id_from_last_draw_;
445 params->ack.resources.swap(returned_resources_);
446 if (root_scroll_offset_updated_by_browser_) { 433 if (root_scroll_offset_updated_by_browser_) {
447 params->root_scroll_offset = root_scroll_offset_; 434 params->root_scroll_offset = root_scroll_offset_;
448 params->update_root_scroll_offset = root_scroll_offset_updated_by_browser_; 435 params->update_root_scroll_offset = root_scroll_offset_updated_by_browser_;
449 root_scroll_offset_updated_by_browser_ = false; 436 root_scroll_offset_updated_by_browser_ = false;
450 } 437 }
451 params->begin_frame_source_paused = !is_active_; 438 params->begin_frame_source_paused = !is_active_;
452 439
453 weak_ptr_factory_.InvalidateWeakPtrs(); 440 weak_ptr_factory_.InvalidateWeakPtrs();
454 } 441 }
455 442
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 params.scrollable_size, params.page_scale_factor, 476 params.scrollable_size, params.page_scale_factor,
490 params.min_page_scale_factor, params.max_page_scale_factor); 477 params.min_page_scale_factor, params.max_page_scale_factor);
491 } 478 }
492 } 479 }
493 480
494 void SynchronousCompositorHost::UpdateNeedsBeginFrames() { 481 void SynchronousCompositorHost::UpdateNeedsBeginFrames() {
495 rwhva_->OnSetNeedsBeginFrames(is_active_ && need_begin_frame_); 482 rwhva_->OnSetNeedsBeginFrames(is_active_ && need_begin_frame_);
496 } 483 }
497 484
498 } // namespace content 485 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698