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

Unified Diff: cc/trees/layer_tree_host_impl.cc

Issue 2751783002: cc: Replace LayerIterator with iterator that walks layer list and effect tree (Closed)
Patch Set: Rebase 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_common_unittest.cc ('k') | cc/trees/layer_tree_host_unittest_copyrequest.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 40cfdfd14a95a54b874725eaefb21aead859bc82..9c8ef290fc488e5b0efff71c84db35300079ea30 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -37,9 +37,9 @@
#include "cc/input/scroll_state.h"
#include "cc/input/scrollbar_animation_controller.h"
#include "cc/layers/append_quads_data.h"
+#include "cc/layers/effect_tree_layer_list_iterator.h"
#include "cc/layers/heads_up_display_layer_impl.h"
#include "cc/layers/layer_impl.h"
-#include "cc/layers/layer_iterator.h"
#include "cc/layers/painted_scrollbar_layer_impl.h"
#include "cc/layers/render_surface_impl.h"
#include "cc/layers/scrollbar_layer_impl_base.h"
@@ -906,19 +906,16 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
active_tree()->property_trees()->effect_tree.HasCopyRequests();
bool have_missing_animated_tiles = false;
- LayerIterator end = LayerIterator::End(frame->render_surface_layer_list);
- for (LayerIterator it =
- LayerIterator::Begin(frame->render_surface_layer_list);
- it != end; ++it) {
- auto target_render_pass_id =
- it.target_render_surface_layer()->GetRenderSurface()->GetRenderPassId();
+ for (EffectTreeLayerListIterator it(active_tree());
+ it.state() != EffectTreeLayerListIterator::State::END; ++it) {
+ auto target_render_pass_id = it.target_render_surface()->GetRenderPassId();
RenderPass* target_render_pass =
FindRenderPassById(frame->render_passes, target_render_pass_id);
AppendQuadsData append_quads_data;
- RenderSurfaceImpl* render_surface = it->GetRenderSurface();
- if (it.represents_target_render_surface()) {
+ if (it.state() == EffectTreeLayerListIterator::State::TARGET_SURFACE) {
+ RenderSurfaceImpl* render_surface = it.target_render_surface();
if (render_surface->HasCopyRequest()) {
active_tree()
->property_trees()
@@ -926,49 +923,53 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
render_surface->EffectTreeIndex(),
&target_render_pass->copy_requests);
}
- } else if (it.represents_contributing_render_surface() &&
- render_surface->contributes_to_drawn_surface()) {
- render_surface->AppendQuads(target_render_pass, &append_quads_data);
- } else if (it.represents_itself() && !it->visible_layer_rect().IsEmpty()) {
+ } else if (it.state() ==
+ EffectTreeLayerListIterator::State::CONTRIBUTING_SURFACE) {
+ RenderSurfaceImpl* render_surface = it.current_render_surface();
+ if (render_surface->contributes_to_drawn_surface())
+ render_surface->AppendQuads(target_render_pass, &append_quads_data);
+ } else if (it.state() == EffectTreeLayerListIterator::State::LAYER &&
+ !it.current_layer()->visible_layer_rect().IsEmpty()) {
+ LayerImpl* layer = it.current_layer();
bool occluded =
- it->draw_properties().occlusion_in_content_space.IsOccluded(
- it->visible_layer_rect());
- if (!occluded && it->WillDraw(draw_mode, resource_provider_.get())) {
- DCHECK_EQ(active_tree_.get(), it->layer_tree_impl());
+ layer->draw_properties().occlusion_in_content_space.IsOccluded(
+ layer->visible_layer_rect());
+ if (!occluded && layer->WillDraw(draw_mode, resource_provider_.get())) {
+ DCHECK_EQ(active_tree_.get(), layer->layer_tree_impl());
- frame->will_draw_layers.push_back(*it);
- if (it->may_contain_video())
+ frame->will_draw_layers.push_back(layer);
+ if (layer->may_contain_video())
frame->may_contain_video = true;
- it->AppendQuads(target_render_pass, &append_quads_data);
+ layer->AppendQuads(target_render_pass, &append_quads_data);
}
++layers_drawn;
- }
- rendering_stats_instrumentation_->AddVisibleContentArea(
- append_quads_data.visible_layer_area);
- rendering_stats_instrumentation_->AddApproximatedVisibleContentArea(
- append_quads_data.approximated_visible_content_area);
- rendering_stats_instrumentation_->AddCheckerboardedVisibleContentArea(
- append_quads_data.checkerboarded_visible_content_area);
- rendering_stats_instrumentation_->AddCheckerboardedNoRecordingContentArea(
- append_quads_data.checkerboarded_no_recording_content_area);
- rendering_stats_instrumentation_->AddCheckerboardedNeedsRasterContentArea(
- append_quads_data.checkerboarded_needs_raster_content_area);
-
- num_missing_tiles += append_quads_data.num_missing_tiles;
- num_incomplete_tiles += append_quads_data.num_incomplete_tiles;
- checkerboarded_no_recording_content_area +=
- append_quads_data.checkerboarded_no_recording_content_area;
- checkerboarded_needs_raster_content_area +=
- append_quads_data.checkerboarded_needs_raster_content_area;
- if (append_quads_data.num_missing_tiles > 0) {
- have_missing_animated_tiles |=
- !it->was_ever_ready_since_last_transform_animation() ||
- it->screen_space_transform_is_animating();
- } else {
- it->set_was_ever_ready_since_last_transform_animation(true);
+ rendering_stats_instrumentation_->AddVisibleContentArea(
+ append_quads_data.visible_layer_area);
+ rendering_stats_instrumentation_->AddApproximatedVisibleContentArea(
+ append_quads_data.approximated_visible_content_area);
+ rendering_stats_instrumentation_->AddCheckerboardedVisibleContentArea(
+ append_quads_data.checkerboarded_visible_content_area);
+ rendering_stats_instrumentation_->AddCheckerboardedNoRecordingContentArea(
+ append_quads_data.checkerboarded_no_recording_content_area);
+ rendering_stats_instrumentation_->AddCheckerboardedNeedsRasterContentArea(
+ append_quads_data.checkerboarded_needs_raster_content_area);
+
+ num_missing_tiles += append_quads_data.num_missing_tiles;
+ num_incomplete_tiles += append_quads_data.num_incomplete_tiles;
+ checkerboarded_no_recording_content_area +=
+ append_quads_data.checkerboarded_no_recording_content_area;
+ checkerboarded_needs_raster_content_area +=
+ append_quads_data.checkerboarded_needs_raster_content_area;
+ if (append_quads_data.num_missing_tiles > 0) {
+ have_missing_animated_tiles |=
+ !layer->was_ever_ready_since_last_transform_animation() ||
+ layer->screen_space_transform_is_animating();
+ } else {
+ layer->set_was_ever_ready_since_last_transform_animation(true);
+ }
}
}
« no previous file with comments | « cc/trees/layer_tree_host_common_unittest.cc ('k') | cc/trees/layer_tree_host_unittest_copyrequest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698