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

Side by Side Diff: cc/trees/layer_tree_host.cc

Issue 1547893003: WIP - compositor worker mega patch. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 11 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
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_client.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "cc/trees/layer_tree_host.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 } 561 }
562 562
563 bool LayerTreeHost::CommitRequested() const { 563 bool LayerTreeHost::CommitRequested() const {
564 return proxy_->CommitRequested(); 564 return proxy_->CommitRequested();
565 } 565 }
566 566
567 bool LayerTreeHost::BeginMainFrameRequested() const { 567 bool LayerTreeHost::BeginMainFrameRequested() const {
568 return proxy_->BeginMainFrameRequested(); 568 return proxy_->BeginMainFrameRequested();
569 } 569 }
570 570
571
572 void LayerTreeHost::SetNextCommitWaitsForActivation() { 571 void LayerTreeHost::SetNextCommitWaitsForActivation() {
573 proxy_->SetNextCommitWaitsForActivation(); 572 proxy_->SetNextCommitWaitsForActivation();
574 } 573 }
575 574
576 void LayerTreeHost::SetNextCommitForcesRedraw() { 575 void LayerTreeHost::SetNextCommitForcesRedraw() {
577 next_commit_forces_redraw_ = true; 576 next_commit_forces_redraw_ = true;
578 proxy_->SetNeedsUpdateLayers(); 577 proxy_->SetNeedsUpdateLayers();
579 } 578 }
580 579
581 void LayerTreeHost::SetAnimationEvents(scoped_ptr<AnimationEvents> events) { 580 void LayerTreeHost::SetAnimationEvents(scoped_ptr<AnimationEvents> events) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 debug_state_.RecordRenderingStats()); 621 debug_state_.RecordRenderingStats());
623 622
624 SetNeedsCommit(); 623 SetNeedsCommit();
625 } 624 }
626 625
627 void LayerTreeHost::SetHasGpuRasterizationTrigger(bool has_trigger) { 626 void LayerTreeHost::SetHasGpuRasterizationTrigger(bool has_trigger) {
628 if (has_trigger == has_gpu_rasterization_trigger_) 627 if (has_trigger == has_gpu_rasterization_trigger_)
629 return; 628 return;
630 629
631 has_gpu_rasterization_trigger_ = has_trigger; 630 has_gpu_rasterization_trigger_ = has_trigger;
632 TRACE_EVENT_INSTANT1("cc", 631 TRACE_EVENT_INSTANT1("cc", "LayerTreeHost::SetHasGpuRasterizationTrigger",
633 "LayerTreeHost::SetHasGpuRasterizationTrigger", 632 TRACE_EVENT_SCOPE_THREAD, "has_trigger",
634 TRACE_EVENT_SCOPE_THREAD,
635 "has_trigger",
636 has_gpu_rasterization_trigger_); 633 has_gpu_rasterization_trigger_);
637 } 634 }
638 635
639 void LayerTreeHost::SetViewportSize(const gfx::Size& device_viewport_size) { 636 void LayerTreeHost::SetViewportSize(const gfx::Size& device_viewport_size) {
640 if (device_viewport_size == device_viewport_size_) 637 if (device_viewport_size == device_viewport_size_)
641 return; 638 return;
642 639
643 device_viewport_size_ = device_viewport_size; 640 device_viewport_size_ = device_viewport_size;
644 641
645 SetPropertyTreesNeedRebuild(); 642 SetPropertyTreesNeedRebuild();
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 } 692 }
696 693
697 void LayerTreeHost::SetThrottleFrameProduction(bool throttle) { 694 void LayerTreeHost::SetThrottleFrameProduction(bool throttle) {
698 proxy_->SetThrottleFrameProduction(throttle); 695 proxy_->SetThrottleFrameProduction(throttle);
699 } 696 }
700 697
701 void LayerTreeHost::StartPageScaleAnimation(const gfx::Vector2d& target_offset, 698 void LayerTreeHost::StartPageScaleAnimation(const gfx::Vector2d& target_offset,
702 bool use_anchor, 699 bool use_anchor,
703 float scale, 700 float scale,
704 base::TimeDelta duration) { 701 base::TimeDelta duration) {
705 pending_page_scale_animation_.reset( 702 pending_page_scale_animation_.reset(new PendingPageScaleAnimation(
706 new PendingPageScaleAnimation( 703 target_offset, use_anchor, scale, duration));
707 target_offset,
708 use_anchor,
709 scale,
710 duration));
711 704
712 SetNeedsCommit(); 705 SetNeedsCommit();
713 } 706 }
714 707
715 void LayerTreeHost::NotifyInputThrottledUntilCommit() { 708 void LayerTreeHost::NotifyInputThrottledUntilCommit() {
716 proxy_->NotifyInputThrottledUntilCommit(); 709 proxy_->NotifyInputThrottledUntilCommit();
717 } 710 }
718 711
719 void LayerTreeHost::LayoutAndUpdateLayers() { 712 void LayerTreeHost::LayoutAndUpdateLayers() {
720 DCHECK(IsSingleThreaded()); 713 DCHECK(IsSingleThreaded());
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 for (size_t i = 0; i < info->scrolls.size(); ++i) { 862 for (size_t i = 0; i < info->scrolls.size(); ++i) {
870 Layer* layer = LayerTreeHostCommon::FindLayerInSubtree( 863 Layer* layer = LayerTreeHostCommon::FindLayerInSubtree(
871 root_layer_.get(), info->scrolls[i].layer_id); 864 root_layer_.get(), info->scrolls[i].layer_id);
872 if (!layer) 865 if (!layer)
873 continue; 866 continue;
874 if (layer == outer_viewport_scroll_layer_.get()) { 867 if (layer == outer_viewport_scroll_layer_.get()) {
875 outer_viewport_scroll_delta += info->scrolls[i].scroll_delta; 868 outer_viewport_scroll_delta += info->scrolls[i].scroll_delta;
876 } else if (layer == inner_viewport_scroll_layer_.get()) { 869 } else if (layer == inner_viewport_scroll_layer_.get()) {
877 inner_viewport_scroll_delta += info->scrolls[i].scroll_delta; 870 inner_viewport_scroll_delta += info->scrolls[i].scroll_delta;
878 } else { 871 } else {
879 layer->SetScrollOffsetFromImplSide( 872 layer->SetScrollOffsetFromImplSide(gfx::ScrollOffsetWithDelta(
880 gfx::ScrollOffsetWithDelta(layer->scroll_offset(), 873 layer->scroll_offset(), info->scrolls[i].scroll_delta));
881 info->scrolls[i].scroll_delta));
882 } 874 }
883 SetNeedsUpdateLayers(); 875 SetNeedsUpdateLayers();
884 } 876 }
885 } 877 }
886 878
887 if (!inner_viewport_scroll_delta.IsZero() || 879 if (!inner_viewport_scroll_delta.IsZero() ||
888 !outer_viewport_scroll_delta.IsZero() || info->page_scale_delta != 1.f || 880 !outer_viewport_scroll_delta.IsZero() || info->page_scale_delta != 1.f ||
889 !info->elastic_overscroll_delta.IsZero() || info->top_controls_delta) { 881 !info->elastic_overscroll_delta.IsZero() || info->top_controls_delta) {
890 // Preemptively apply the scroll offset and scale delta here before sending 882 // Preemptively apply the scroll offset and scale delta here before sending
891 // it to the client. If the client comes back and sets it to the same 883 // it to the client. If the client comes back and sets it to the same
(...skipping 17 matching lines...) Expand all
909 // TODO(ccameron): pass the elastic overscroll here so that input events 901 // TODO(ccameron): pass the elastic overscroll here so that input events
910 // may be translated appropriately. 902 // may be translated appropriately.
911 client_->ApplyViewportDeltas( 903 client_->ApplyViewportDeltas(
912 inner_viewport_scroll_delta, outer_viewport_scroll_delta, 904 inner_viewport_scroll_delta, outer_viewport_scroll_delta,
913 info->elastic_overscroll_delta, info->page_scale_delta, 905 info->elastic_overscroll_delta, info->page_scale_delta,
914 info->top_controls_delta); 906 info->top_controls_delta);
915 SetNeedsUpdateLayers(); 907 SetNeedsUpdateLayers();
916 } 908 }
917 } 909 }
918 910
911 void LayerTreeHost::ApplyMutations(LayerTreeMutations* mutations) {
912 if (mutations) {
913 TRACE_EVENT0("compositor-worker", "LayerTreeHost::ApplyMutations");
914 client_->ApplyMutations(*mutations);
915 }
916 }
917
919 void LayerTreeHost::SetDeviceScaleFactor(float device_scale_factor) { 918 void LayerTreeHost::SetDeviceScaleFactor(float device_scale_factor) {
920 if (device_scale_factor == device_scale_factor_) 919 if (device_scale_factor == device_scale_factor_)
921 return; 920 return;
922 device_scale_factor_ = device_scale_factor; 921 device_scale_factor_ = device_scale_factor;
923 922
924 property_trees_.needs_rebuild = true; 923 property_trees_.needs_rebuild = true;
925 SetNeedsCommit(); 924 SetNeedsCommit();
926 } 925 }
927 926
928 void LayerTreeHost::SetPaintedDeviceScaleFactor( 927 void LayerTreeHost::SetPaintedDeviceScaleFactor(
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
987 if (iter == ui_resource_client_map_.end()) 986 if (iter == ui_resource_client_map_.end())
988 return; 987 return;
989 988
990 UIResourceRequest request(UIResourceRequest::UI_RESOURCE_DELETE, uid); 989 UIResourceRequest request(UIResourceRequest::UI_RESOURCE_DELETE, uid);
991 ui_resource_request_queue_.push_back(request); 990 ui_resource_request_queue_.push_back(request);
992 ui_resource_client_map_.erase(iter); 991 ui_resource_client_map_.erase(iter);
993 } 992 }
994 993
995 void LayerTreeHost::RecreateUIResources() { 994 void LayerTreeHost::RecreateUIResources() {
996 for (UIResourceClientMap::iterator iter = ui_resource_client_map_.begin(); 995 for (UIResourceClientMap::iterator iter = ui_resource_client_map_.begin();
997 iter != ui_resource_client_map_.end(); 996 iter != ui_resource_client_map_.end(); ++iter) {
998 ++iter) {
999 UIResourceId uid = iter->first; 997 UIResourceId uid = iter->first;
1000 const UIResourceClientData& data = iter->second; 998 const UIResourceClientData& data = iter->second;
1001 bool resource_lost = true; 999 bool resource_lost = true;
1002 UIResourceRequest request(UIResourceRequest::UI_RESOURCE_CREATE, uid, 1000 UIResourceRequest request(UIResourceRequest::UI_RESOURCE_CREATE, uid,
1003 data.client->GetBitmap(uid, resource_lost)); 1001 data.client->GetBitmap(uid, resource_lost));
1004 ui_resource_request_queue_.push_back(request); 1002 ui_resource_request_queue_.push_back(request);
1005 } 1003 }
1006 } 1004 }
1007 1005
1008 // Returns the size of a resource given its id. 1006 // Returns the size of a resource given its id.
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
1102 proxy_->SetAuthoritativeVSyncInterval(interval); 1100 proxy_->SetAuthoritativeVSyncInterval(interval);
1103 } 1101 }
1104 1102
1105 void LayerTreeHost::RecordFrameTimingEvents( 1103 void LayerTreeHost::RecordFrameTimingEvents(
1106 scoped_ptr<FrameTimingTracker::CompositeTimingSet> composite_events, 1104 scoped_ptr<FrameTimingTracker::CompositeTimingSet> composite_events,
1107 scoped_ptr<FrameTimingTracker::MainFrameTimingSet> main_frame_events) { 1105 scoped_ptr<FrameTimingTracker::MainFrameTimingSet> main_frame_events) {
1108 client_->RecordFrameTimingEvents(std::move(composite_events), 1106 client_->RecordFrameTimingEvents(std::move(composite_events),
1109 std::move(main_frame_events)); 1107 std::move(main_frame_events));
1110 } 1108 }
1111 1109
1110 void LayerTreeHost::SetLayerTreeMutator(LayerTreeMutator* mutator) {
1111 TRACE_EVENT0("compositor-worker", "LayerTreeHost::SetLayerTreeMutator");
1112 proxy_->SetMutator(mutator);
1113 }
1114
1112 Layer* LayerTreeHost::LayerById(int id) const { 1115 Layer* LayerTreeHost::LayerById(int id) const {
1113 LayerIdMap::const_iterator iter = layer_id_map_.find(id); 1116 LayerIdMap::const_iterator iter = layer_id_map_.find(id);
1114 return iter != layer_id_map_.end() ? iter->second : NULL; 1117 return iter != layer_id_map_.end() ? iter->second : NULL;
1115 } 1118 }
1116 1119
1117 void LayerTreeHost::RegisterLayer(Layer* layer) { 1120 void LayerTreeHost::RegisterLayer(Layer* layer) {
1118 DCHECK(!LayerById(layer->id())); 1121 DCHECK(!LayerById(layer->id()));
1119 DCHECK(!in_paint_layer_contents_); 1122 DCHECK(!in_paint_layer_contents_);
1120 layer_id_map_[layer->id()] = layer; 1123 layer_id_map_[layer->id()] = layer;
1121 if (animation_host_) 1124 if (animation_host_)
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
1436 1439
1437 // It is required to create new PropertyTrees before deserializing it. 1440 // It is required to create new PropertyTrees before deserializing it.
1438 property_trees_ = PropertyTrees(); 1441 property_trees_ = PropertyTrees();
1439 property_trees_.FromProtobuf(proto.property_trees()); 1442 property_trees_.FromProtobuf(proto.property_trees());
1440 1443
1441 surface_id_namespace_ = proto.surface_id_namespace(); 1444 surface_id_namespace_ = proto.surface_id_namespace();
1442 next_surface_sequence_ = proto.next_surface_sequence(); 1445 next_surface_sequence_ = proto.next_surface_sequence();
1443 } 1446 }
1444 1447
1445 } // namespace cc 1448 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698