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

Unified Diff: cc/trees/damage_tracker.cc

Issue 1044093005: Preliminary compositor disabling patch. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove renderpass calculation Created 5 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/damage_tracker.h ('k') | cc/trees/layer_tree_host_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/damage_tracker.cc
diff --git a/cc/trees/damage_tracker.cc b/cc/trees/damage_tracker.cc
index 235dfcfd7ef6ea316a244b31122314dfacdf2ed3..4b665541223b80f604f39496c0bc1b73e22e48da 100644
--- a/cc/trees/damage_tracker.cc
+++ b/cc/trees/damage_tracker.cc
@@ -125,8 +125,10 @@ void DamageTracker::UpdateDamageTrackingState(
// These functions cannot be bypassed with early-exits, even if we know what
// the damage will be for this frame, because we need to update the damage
// tracker state to correctly track the next frame.
- gfx::Rect damage_from_active_layers =
- TrackDamageFromActiveLayers(layer_list, target_surface_layer_id);
+ gfx::Rect damage_from_active_layers;
+ TrackDamageFromActiveLayers(layer_list, target_surface_layer_id,
+ &damage_from_active_layers,
+ &current_overlay_rect_);
gfx::Rect damage_from_surface_mask =
TrackDamageFromSurfaceMask(target_surface_mask_layer);
gfx::Rect damage_from_leftover_rects = TrackDamageFromLeftoverRects();
@@ -173,9 +175,10 @@ DamageTracker::RectMapData& DamageTracker::RectDataForLayer(
return *it;
}
-gfx::Rect DamageTracker::TrackDamageFromActiveLayers(
- const LayerImplList& layer_list,
- int target_surface_layer_id) {
+void DamageTracker::TrackDamageFromActiveLayers(const LayerImplList& layer_list,
+ int target_surface_layer_id,
+ gfx::Rect* damage,
+ gfx::Rect* overlay) {
gfx::Rect damage_rect;
for (size_t layer_index = 0; layer_index < layer_list.size(); ++layer_index) {
@@ -189,12 +192,10 @@ gfx::Rect DamageTracker::TrackDamageFromActiveLayers(
continue;
if (LayerTreeHostCommon::RenderSurfaceContributesToTarget<LayerImpl>(
layer, target_surface_layer_id))
- ExtendDamageForRenderSurface(layer, &damage_rect);
+ ExtendDamageForRenderSurface(layer, damage);
else
- ExtendDamageForLayer(layer, &damage_rect);
+ ExtendDamageForLayer(layer, damage, overlay);
}
-
- return damage_rect;
}
gfx::Rect DamageTracker::TrackDamageFromSurfaceMask(
@@ -260,7 +261,8 @@ gfx::Rect DamageTracker::TrackDamageFromLeftoverRects() {
}
void DamageTracker::ExtendDamageForLayer(LayerImpl* layer,
- gfx::Rect* target_damage_rect) {
+ gfx::Rect* target_damage_rect,
+ gfx::Rect* target_overlay_rect) {
// There are two ways that a layer can damage a region of the target surface:
// 1. Property change (e.g. opacity, position, transforms):
// - the entire region of the layer itself damages the surface.
@@ -289,7 +291,9 @@ void DamageTracker::ExtendDamageForLayer(LayerImpl* layer,
gfx::RectF damage_rect =
gfx::UnionRects(layer->update_rect(), layer->damage_rect());
- if (layer_is_new || layer->LayerPropertyChanged()) {
+ if (!layer->overlay_update_rect().IsEmpty()) {
+ target_overlay_rect->Union(layer->overlay_update_rect());
+ } else if (layer_is_new || layer->LayerPropertyChanged()) {
// If a layer is new or has changed, then its entire layer rect affects the
// target surface.
target_damage_rect->Union(rect_in_target_space);
« no previous file with comments | « cc/trees/damage_tracker.h ('k') | cc/trees/layer_tree_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698