OLD | NEW |
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 1077 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1088 // list, and restore it after the change. | 1088 // list, and restore it after the change. |
1089 size_t position_from_end = frame->render_passes.size() - it; | 1089 size_t position_from_end = frame->render_passes.size() - it; |
1090 RemoveRenderPassesRecursive(render_pass_quad->render_pass_id, frame); | 1090 RemoveRenderPassesRecursive(render_pass_quad->render_pass_id, frame); |
1091 it = frame->render_passes.size() - position_from_end; | 1091 it = frame->render_passes.size() - position_from_end; |
1092 DCHECK_GE(frame->render_passes.size(), position_from_end); | 1092 DCHECK_GE(frame->render_passes.size(), position_from_end); |
1093 } | 1093 } |
1094 } | 1094 } |
1095 } | 1095 } |
1096 | 1096 |
1097 DrawSwapReadbackResult::DrawResult LayerTreeHostImpl::PrepareToDraw( | 1097 DrawSwapReadbackResult::DrawResult LayerTreeHostImpl::PrepareToDraw( |
1098 FrameData* frame, | 1098 FrameData* frame) { |
1099 const gfx::Rect& damage_rect) { | |
1100 TRACE_EVENT1("cc", | 1099 TRACE_EVENT1("cc", |
1101 "LayerTreeHostImpl::PrepareToDraw", | 1100 "LayerTreeHostImpl::PrepareToDraw", |
1102 "SourceFrameNumber", | 1101 "SourceFrameNumber", |
1103 active_tree_->source_frame_number()); | 1102 active_tree_->source_frame_number()); |
1104 | 1103 |
1105 if (need_to_update_visible_tiles_before_draw_ && | 1104 if (need_to_update_visible_tiles_before_draw_ && |
1106 tile_manager_ && tile_manager_->UpdateVisibleTiles()) { | 1105 tile_manager_ && tile_manager_->UpdateVisibleTiles()) { |
1107 DidInitializeVisibleTile(); | 1106 DidInitializeVisibleTile(); |
1108 } | 1107 } |
1109 need_to_update_visible_tiles_before_draw_ = true; | 1108 need_to_update_visible_tiles_before_draw_ = true; |
1110 | 1109 |
1111 active_tree_->UpdateDrawProperties(); | 1110 active_tree_->UpdateDrawProperties(); |
1112 | 1111 |
1113 frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList(); | 1112 frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList(); |
1114 frame->render_passes.clear(); | 1113 frame->render_passes.clear(); |
1115 frame->render_passes_by_id.clear(); | 1114 frame->render_passes_by_id.clear(); |
1116 frame->will_draw_layers.clear(); | 1115 frame->will_draw_layers.clear(); |
1117 frame->contains_incomplete_tile = false; | 1116 frame->contains_incomplete_tile = false; |
1118 frame->has_no_damage = false; | 1117 frame->has_no_damage = false; |
1119 | 1118 |
1120 gfx::Rect device_viewport_damage_rect(damage_rect); | |
1121 if (active_tree_->root_layer()) { | 1119 if (active_tree_->root_layer()) { |
1122 device_viewport_damage_rect.Union(viewport_damage_rect_); | 1120 gfx::Rect device_viewport_damage_rect = viewport_damage_rect_; |
1123 viewport_damage_rect_ = gfx::Rect(); | 1121 viewport_damage_rect_ = gfx::Rect(); |
1124 | 1122 |
1125 active_tree_->root_layer()->render_surface()->damage_tracker()-> | 1123 active_tree_->root_layer()->render_surface()->damage_tracker()-> |
1126 AddDamageNextUpdate(device_viewport_damage_rect); | 1124 AddDamageNextUpdate(device_viewport_damage_rect); |
1127 } | 1125 } |
1128 | 1126 |
1129 DrawSwapReadbackResult::DrawResult draw_result = CalculateRenderPasses(frame); | 1127 DrawSwapReadbackResult::DrawResult draw_result = CalculateRenderPasses(frame); |
1130 if (draw_result != DrawSwapReadbackResult::DRAW_SUCCESS) { | 1128 if (draw_result != DrawSwapReadbackResult::DRAW_SUCCESS) { |
1131 DCHECK(!output_surface_->capabilities() | 1129 DCHECK(!output_surface_->capabilities() |
1132 .draw_and_swap_full_viewport_every_frame); | 1130 .draw_and_swap_full_viewport_every_frame); |
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1608 // TODO(jamesr): The renderer_ check is needed to make some of the | 1606 // TODO(jamesr): The renderer_ check is needed to make some of the |
1609 // LayerTreeHostContextTest tests pass, but shouldn't be necessary (or | 1607 // LayerTreeHostContextTest tests pass, but shouldn't be necessary (or |
1610 // important) in production. We should adjust the test to not need this. | 1608 // important) in production. We should adjust the test to not need this. |
1611 if (renderer_) | 1609 if (renderer_) |
1612 client_->DidLoseOutputSurfaceOnImplThread(); | 1610 client_->DidLoseOutputSurfaceOnImplThread(); |
1613 #if DCHECK_IS_ON | 1611 #if DCHECK_IS_ON |
1614 did_lose_called_ = true; | 1612 did_lose_called_ = true; |
1615 #endif | 1613 #endif |
1616 } | 1614 } |
1617 | 1615 |
1618 void LayerTreeHostImpl::Readback(void* pixels, | |
1619 const gfx::Rect& rect_in_device_viewport) { | |
1620 DCHECK(renderer_); | |
1621 renderer_->GetFramebufferPixels(pixels, rect_in_device_viewport); | |
1622 } | |
1623 | |
1624 bool LayerTreeHostImpl::HaveRootScrollLayer() const { | 1616 bool LayerTreeHostImpl::HaveRootScrollLayer() const { |
1625 return !!InnerViewportScrollLayer(); | 1617 return !!InnerViewportScrollLayer(); |
1626 } | 1618 } |
1627 | 1619 |
1628 LayerImpl* LayerTreeHostImpl::RootLayer() const { | 1620 LayerImpl* LayerTreeHostImpl::RootLayer() const { |
1629 return active_tree_->root_layer(); | 1621 return active_tree_->root_layer(); |
1630 } | 1622 } |
1631 | 1623 |
1632 LayerImpl* LayerTreeHostImpl::InnerViewportScrollLayer() const { | 1624 LayerImpl* LayerTreeHostImpl::InnerViewportScrollLayer() const { |
1633 return active_tree_->InnerViewportScrollLayer(); | 1625 return active_tree_->InnerViewportScrollLayer(); |
(...skipping 1512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3146 swap_promise_monitor_.erase(monitor); | 3138 swap_promise_monitor_.erase(monitor); |
3147 } | 3139 } |
3148 | 3140 |
3149 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { | 3141 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { |
3150 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); | 3142 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); |
3151 for (; it != swap_promise_monitor_.end(); it++) | 3143 for (; it != swap_promise_monitor_.end(); it++) |
3152 (*it)->OnSetNeedsRedrawOnImpl(); | 3144 (*it)->OnSetNeedsRedrawOnImpl(); |
3153 } | 3145 } |
3154 | 3146 |
3155 } // namespace cc | 3147 } // namespace cc |
OLD | NEW |