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

Unified Diff: cc/trees/damage_tracker.cc

Issue 2873593002: Force use of and cache render surface. (Closed)
Patch Set: Calculate damage of |force_render_surface|. 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 side-by-side diff with in-line comments
Download patch
Index: cc/trees/damage_tracker.cc
diff --git a/cc/trees/damage_tracker.cc b/cc/trees/damage_tracker.cc
index d740521408dc7658abb38bfcac7b2dc97c0da96e..51cb25c20e4f34d0fba156b4933aaf351b70a795 100644
--- a/cc/trees/damage_tracker.cc
+++ b/cc/trees/damage_tracker.cc
@@ -26,7 +26,8 @@ std::unique_ptr<DamageTracker> DamageTracker::Create() {
}
DamageTracker::DamageTracker()
- : mailboxId_(0) {}
+ : mailboxId_(0),
+ has_property_change_on_contributing_render_surface_(false) {}
DamageTracker::~DamageTracker() {}
@@ -258,6 +259,7 @@ DamageTracker::DamageAccumulator DamageTracker::TrackDamageFromSurfaceMask(
void DamageTracker::PrepareForUpdate() {
mailboxId_++;
damage_for_this_update_ = DamageAccumulator();
+ has_property_change_on_contributing_render_surface_ = false;
}
DamageTracker::DamageAccumulator DamageTracker::TrackDamageFromLeftoverRects() {
@@ -421,6 +423,10 @@ void DamageTracker::AccumulateDamageFromRenderSurface(
gfx::ToEnclosingRect(render_surface->DrawableContentRect());
data.Update(surface_rect_in_target_space, mailboxId_);
+ has_property_change_on_contributing_render_surface_ |=
weiliangc 2017/06/07 21:19:01 The flag for not able to use the texture should be
wutao 2017/06/09 02:31:32 This is a very good point. Do you mean damage_for_
+ render_surface->SurfacePropertyChanged() ||
weiliangc 2017/06/07 21:19:01 SurfacePropertyChanged() seems to be ok for reusin
wutao 2017/06/09 02:31:32 Acknowledged.
+ render_surface->ContributingRenderSurfacePropertyChanged();
+
if (surface_is_new || render_surface->SurfacePropertyChanged()) {
// The entire surface contributes damage.
damage_for_this_update_.Union(surface_rect_in_target_space);

Powered by Google App Engine
This is Rietveld 408576698