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

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

Issue 2834123002: cc: Replace render surface layer list with a render surface list (Closed)
Patch Set: Address review comments Created 3 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
« no previous file with comments | « cc/trees/damage_tracker.h ('k') | cc/trees/damage_tracker_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/damage_tracker.h" 5 #include "cc/trees/damage_tracker.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 14 matching lines...) Expand all
25 return base::WrapUnique(new DamageTracker()); 25 return base::WrapUnique(new DamageTracker());
26 } 26 }
27 27
28 DamageTracker::DamageTracker() 28 DamageTracker::DamageTracker()
29 : mailboxId_(0) {} 29 : mailboxId_(0) {}
30 30
31 DamageTracker::~DamageTracker() {} 31 DamageTracker::~DamageTracker() {}
32 32
33 void DamageTracker::UpdateDamageTracking( 33 void DamageTracker::UpdateDamageTracking(
34 LayerTreeImpl* layer_tree_impl, 34 LayerTreeImpl* layer_tree_impl,
35 const LayerImplList& render_surface_list) { 35 const RenderSurfaceList& render_surface_list) {
36 // 36 //
37 // This function computes the "damage rect" of each target surface, and 37 // This function computes the "damage rect" of each target surface, and
38 // updates the state that is used to correctly track damage across frames. The 38 // updates the state that is used to correctly track damage across frames. The
39 // damage rect is the region of the surface that may have changed and needs to 39 // damage rect is the region of the surface that may have changed and needs to
40 // be redrawn. This can be used to scissor what is actually drawn, to save GPU 40 // be redrawn. This can be used to scissor what is actually drawn, to save GPU
41 // computation and bandwidth. 41 // computation and bandwidth.
42 // 42 //
43 // The surface's damage rect is computed as the union of all possible changes 43 // The surface's damage rect is computed as the union of all possible changes
44 // that have happened to the surface since the last frame was drawn. This 44 // that have happened to the surface since the last frame was drawn. This
45 // includes: 45 // includes:
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 // layer changes or does not exist anymore, those regions are then 99 // layer changes or does not exist anymore, those regions are then
100 // exposed and damage the target surface. As the algorithm progresses, 100 // exposed and damage the target surface. As the algorithm progresses,
101 // entries are updated in the map until only leftover layers 101 // entries are updated in the map until only leftover layers
102 // that no longer exist stay marked not updated. 102 // that no longer exist stay marked not updated.
103 // 103 //
104 // 3. After the damage rect is computed, the leftover not marked regions 104 // 3. After the damage rect is computed, the leftover not marked regions
105 // in a map are used to compute are damaged by deleted layers and 105 // in a map are used to compute are damaged by deleted layers and
106 // erased from map. 106 // erased from map.
107 // 107 //
108 108
109 for (LayerImpl* layer : render_surface_list) { 109 for (RenderSurfaceImpl* render_surface : render_surface_list) {
110 layer->GetRenderSurface()->damage_tracker()->PrepareForUpdate(); 110 render_surface->damage_tracker()->PrepareForUpdate();
111 } 111 }
112 112
113 EffectTree& effect_tree = layer_tree_impl->property_trees()->effect_tree; 113 EffectTree& effect_tree = layer_tree_impl->property_trees()->effect_tree;
114 int current_target_effect_id = EffectTree::kContentsRootNodeId; 114 int current_target_effect_id = EffectTree::kContentsRootNodeId;
115 DCHECK(effect_tree.GetRenderSurface(current_target_effect_id)); 115 DCHECK(effect_tree.GetRenderSurface(current_target_effect_id));
116 for (LayerImpl* layer : *layer_tree_impl) { 116 for (LayerImpl* layer : *layer_tree_impl) {
117 if (!layer->is_drawn_render_surface_layer_list_member()) 117 if (!layer->is_drawn_render_surface_layer_list_member())
118 continue; 118 continue;
119 119
120 int next_target_effect_id = layer->render_target_effect_tree_index(); 120 int next_target_effect_id = layer->render_target_effect_tree_index();
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 } 472 }
473 473
474 rect->set_x(x_); 474 rect->set_x(x_);
475 rect->set_y(y_); 475 rect->set_y(y_);
476 rect->set_width(width.ValueOrDie()); 476 rect->set_width(width.ValueOrDie());
477 rect->set_height(height.ValueOrDie()); 477 rect->set_height(height.ValueOrDie());
478 return true; 478 return true;
479 } 479 }
480 480
481 } // namespace cc 481 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/damage_tracker.h ('k') | cc/trees/damage_tracker_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698