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

Unified Diff: cc/trees/layer_tree_host_impl.cc

Issue 2834123002: cc: Replace render surface layer list with a render surface list (Closed)
Patch Set: Address review comments Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
« 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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_host_impl.cc
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index 5d38bf58c59e6a0558d27ff10c0c3f58740612b4..4c90e15f7b270ed6b2a390952e646d9818e36b1d 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -163,7 +163,7 @@ DEFINE_SCOPED_UMA_HISTOGRAM_TIMER(PendingTreeDurationHistogramTimer,
"Scheduling.%s.PendingTreeDuration");
LayerTreeHostImpl::FrameData::FrameData()
- : render_surface_layer_list(nullptr),
+ : render_surface_list(nullptr),
has_no_damage(false),
may_contain_video(false) {}
@@ -780,7 +780,7 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
// the root damage rect. The root damage rect is then used to scissor each
// surface.
DamageTracker::UpdateDamageTracking(active_tree_.get(),
- active_tree_->RenderSurfaceLayerList());
+ active_tree_->GetRenderSurfaceList());
// If the root render surface has no visible damage, then don't generate a
// frame at all.
@@ -788,7 +788,7 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
bool root_surface_has_no_visible_damage =
!root_surface->GetDamageRect().Intersects(root_surface->content_rect());
bool root_surface_has_contributing_layers =
- !root_surface->layer_list().empty();
+ !!root_surface->num_contributors();
bool hud_wants_to_draw_ = active_tree_->hud_layer() &&
active_tree_->hud_layer()->IsAnimatingHUDContents();
bool must_always_swap =
@@ -811,25 +811,22 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
return DRAW_SUCCESS;
}
- TRACE_EVENT_BEGIN2(
- "cc", "LayerTreeHostImpl::CalculateRenderPasses",
- "render_surface_layer_list.size()",
- static_cast<uint64_t>(frame->render_surface_layer_list->size()),
- "RequiresHighResToDraw", RequiresHighResToDraw());
+ TRACE_EVENT_BEGIN2("cc", "LayerTreeHostImpl::CalculateRenderPasses",
+ "render_surface_list.size()",
+ static_cast<uint64_t>(frame->render_surface_list->size()),
+ "RequiresHighResToDraw", RequiresHighResToDraw());
// Create the render passes in dependency order.
- size_t render_surface_layer_list_size =
- frame->render_surface_layer_list->size();
- for (size_t i = 0; i < render_surface_layer_list_size; ++i) {
- size_t surface_index = render_surface_layer_list_size - 1 - i;
- LayerImpl* render_surface_layer =
- (*frame->render_surface_layer_list)[surface_index];
+ size_t render_surface_list_size = frame->render_surface_list->size();
+ for (size_t i = 0; i < render_surface_list_size; ++i) {
+ size_t surface_index = render_surface_list_size - 1 - i;
RenderSurfaceImpl* render_surface =
- render_surface_layer->GetRenderSurface();
+ (*frame->render_surface_list)[surface_index];
+ bool is_root_surface =
+ render_surface->EffectTreeIndex() == EffectTree::kContentsRootNodeId;
bool should_draw_into_render_pass =
- active_tree_->IsRootLayer(render_surface_layer) ||
- render_surface->contributes_to_drawn_surface() ||
+ is_root_surface || render_surface->contributes_to_drawn_surface() ||
render_surface->HasCopyRequest();
if (should_draw_into_render_pass)
frame->render_passes.push_back(render_surface->CreateRenderPass());
@@ -1113,7 +1110,7 @@ DrawResult LayerTreeHostImpl::PrepareToDraw(FrameData* frame) {
// they appear as part of the current frame being drawn.
tile_manager_.Flush();
- frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList();
+ frame->render_surface_list = &active_tree_->GetRenderSurfaceList();
frame->render_passes.clear();
frame->will_draw_layers.clear();
frame->has_no_damage = false;
@@ -1659,8 +1656,8 @@ bool LayerTreeHostImpl::DrawLayers(FrameData* frame) {
if (debug_state_.ShowHudRects()) {
debug_rect_history_->SaveDebugRectsForCurrentFrame(
- active_tree(), active_tree_->hud_layer(),
- *frame->render_surface_layer_list, debug_state_);
+ active_tree(), active_tree_->hud_layer(), *frame->render_surface_list,
+ debug_state_);
}
bool is_new_trace;
@@ -1744,8 +1741,8 @@ bool LayerTreeHostImpl::DrawLayers(FrameData* frame) {
// are noted as they occur.
// TODO(boliu): If we did a temporary software renderer frame, propogate the
// damage forward to the next frame.
- for (size_t i = 0; i < frame->render_surface_layer_list->size(); i++) {
- auto* surface = (*frame->render_surface_layer_list)[i]->GetRenderSurface();
+ for (size_t i = 0; i < frame->render_surface_list->size(); i++) {
+ auto* surface = (*frame->render_surface_list)[i];
surface->damage_tracker()->DidDrawDamagedArea();
}
active_tree_->ResetAllChangeTracking();
« 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