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

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

Issue 279013002: Remove CompositeAndReadback from LayerTreeHost(Impl) and the Proxys. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rm-cnr-lth-proxy-renderer: rebase-on-drawresult Created 6 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 | Annotate | Revision Log
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('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_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 1064 matching lines...) Expand 10 before | Expand all | Expand 10 after
1075 // change. So, capture the iterator position from the end of the 1075 // change. So, capture the iterator position from the end of the
1076 // list, and restore it after the change. 1076 // list, and restore it after the change.
1077 size_t position_from_end = frame->render_passes.size() - it; 1077 size_t position_from_end = frame->render_passes.size() - it;
1078 RemoveRenderPassesRecursive(render_pass_quad->render_pass_id, frame); 1078 RemoveRenderPassesRecursive(render_pass_quad->render_pass_id, frame);
1079 it = frame->render_passes.size() - position_from_end; 1079 it = frame->render_passes.size() - position_from_end;
1080 DCHECK_GE(frame->render_passes.size(), position_from_end); 1080 DCHECK_GE(frame->render_passes.size(), position_from_end);
1081 } 1081 }
1082 } 1082 }
1083 } 1083 }
1084 1084
1085 DrawResult LayerTreeHostImpl::PrepareToDraw(FrameData* frame, 1085 DrawResult LayerTreeHostImpl::PrepareToDraw(FrameData* frame) {
1086 const gfx::Rect& damage_rect) {
1087 TRACE_EVENT1("cc", 1086 TRACE_EVENT1("cc",
1088 "LayerTreeHostImpl::PrepareToDraw", 1087 "LayerTreeHostImpl::PrepareToDraw",
1089 "SourceFrameNumber", 1088 "SourceFrameNumber",
1090 active_tree_->source_frame_number()); 1089 active_tree_->source_frame_number());
1091 1090
1092 if (need_to_update_visible_tiles_before_draw_ && 1091 if (need_to_update_visible_tiles_before_draw_ &&
1093 tile_manager_ && tile_manager_->UpdateVisibleTiles()) { 1092 tile_manager_ && tile_manager_->UpdateVisibleTiles()) {
1094 DidInitializeVisibleTile(); 1093 DidInitializeVisibleTile();
1095 } 1094 }
1096 need_to_update_visible_tiles_before_draw_ = true; 1095 need_to_update_visible_tiles_before_draw_ = true;
1097 1096
1098 active_tree_->UpdateDrawProperties(); 1097 active_tree_->UpdateDrawProperties();
1099 1098
1100 frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList(); 1099 frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList();
1101 frame->render_passes.clear(); 1100 frame->render_passes.clear();
1102 frame->render_passes_by_id.clear(); 1101 frame->render_passes_by_id.clear();
1103 frame->will_draw_layers.clear(); 1102 frame->will_draw_layers.clear();
1104 frame->contains_incomplete_tile = false; 1103 frame->contains_incomplete_tile = false;
1105 frame->has_no_damage = false; 1104 frame->has_no_damage = false;
1106 1105
1107 gfx::Rect device_viewport_damage_rect(damage_rect);
1108 if (active_tree_->root_layer()) { 1106 if (active_tree_->root_layer()) {
1109 device_viewport_damage_rect.Union(viewport_damage_rect_); 1107 gfx::Rect device_viewport_damage_rect = viewport_damage_rect_;
1110 viewport_damage_rect_ = gfx::Rect(); 1108 viewport_damage_rect_ = gfx::Rect();
1111 1109
1112 active_tree_->root_layer()->render_surface()->damage_tracker()-> 1110 active_tree_->root_layer()->render_surface()->damage_tracker()->
1113 AddDamageNextUpdate(device_viewport_damage_rect); 1111 AddDamageNextUpdate(device_viewport_damage_rect);
1114 } 1112 }
1115 1113
1116 DrawResult draw_result = CalculateRenderPasses(frame); 1114 DrawResult draw_result = CalculateRenderPasses(frame);
1117 if (draw_result != DRAW_SUCCESS) { 1115 if (draw_result != DRAW_SUCCESS) {
1118 DCHECK(!output_surface_->capabilities() 1116 DCHECK(!output_surface_->capabilities()
1119 .draw_and_swap_full_viewport_every_frame); 1117 .draw_and_swap_full_viewport_every_frame);
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
1595 // TODO(jamesr): The renderer_ check is needed to make some of the 1593 // TODO(jamesr): The renderer_ check is needed to make some of the
1596 // LayerTreeHostContextTest tests pass, but shouldn't be necessary (or 1594 // LayerTreeHostContextTest tests pass, but shouldn't be necessary (or
1597 // important) in production. We should adjust the test to not need this. 1595 // important) in production. We should adjust the test to not need this.
1598 if (renderer_) 1596 if (renderer_)
1599 client_->DidLoseOutputSurfaceOnImplThread(); 1597 client_->DidLoseOutputSurfaceOnImplThread();
1600 #if DCHECK_IS_ON 1598 #if DCHECK_IS_ON
1601 did_lose_called_ = true; 1599 did_lose_called_ = true;
1602 #endif 1600 #endif
1603 } 1601 }
1604 1602
1605 void LayerTreeHostImpl::Readback(void* pixels,
1606 const gfx::Rect& rect_in_device_viewport) {
1607 DCHECK(renderer_);
1608 renderer_->GetFramebufferPixels(pixels, rect_in_device_viewport);
1609 }
1610
1611 bool LayerTreeHostImpl::HaveRootScrollLayer() const { 1603 bool LayerTreeHostImpl::HaveRootScrollLayer() const {
1612 return !!InnerViewportScrollLayer(); 1604 return !!InnerViewportScrollLayer();
1613 } 1605 }
1614 1606
1615 LayerImpl* LayerTreeHostImpl::RootLayer() const { 1607 LayerImpl* LayerTreeHostImpl::RootLayer() const {
1616 return active_tree_->root_layer(); 1608 return active_tree_->root_layer();
1617 } 1609 }
1618 1610
1619 LayerImpl* LayerTreeHostImpl::InnerViewportScrollLayer() const { 1611 LayerImpl* LayerTreeHostImpl::InnerViewportScrollLayer() const {
1620 return active_tree_->InnerViewportScrollLayer(); 1612 return active_tree_->InnerViewportScrollLayer();
(...skipping 1499 matching lines...) Expand 10 before | Expand all | Expand 10 after
3120 swap_promise_monitor_.erase(monitor); 3112 swap_promise_monitor_.erase(monitor);
3121 } 3113 }
3122 3114
3123 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { 3115 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() {
3124 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); 3116 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin();
3125 for (; it != swap_promise_monitor_.end(); it++) 3117 for (; it != swap_promise_monitor_.end(); it++)
3126 (*it)->OnSetNeedsRedrawOnImpl(); 3118 (*it)->OnSetNeedsRedrawOnImpl();
3127 } 3119 }
3128 3120
3129 } // namespace cc 3121 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698