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

Unified Diff: cc/damage_tracker.h

Issue 11122003: [cc] Rename all cc/ filenames to Chromium style (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 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/content_layer_client.h ('k') | cc/damage_tracker.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/damage_tracker.h
diff --git a/cc/damage_tracker.h b/cc/damage_tracker.h
index 638cbb270ce9b24689d5095baf174ade4f4d1a13..c7550a26ba32b2b944cd674cf69aec06c92901bd 100644
--- a/cc/damage_tracker.h
+++ b/cc/damage_tracker.h
@@ -1,3 +1,63 @@
-// Copyright 2012 The Chromium Authors. All rights reserved.
+// Copyright 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+
+#ifndef CCDamageTracker_h
+#define CCDamageTracker_h
+
+#include "base/memory/scoped_ptr.h"
+#include "FloatRect.h"
+#include <vector>
+#include <wtf/HashMap.h>
+#include <wtf/Vector.h>
+
+namespace WebKit {
+class WebFilterOperations;
+}
+
+namespace cc {
+
+class CCLayerImpl;
+class CCRenderSurface;
+
+// Computes the region where pixels have actually changed on a RenderSurface. This region is used
+// to scissor what is actually drawn to the screen to save GPU computation and bandwidth.
+class CCDamageTracker {
+public:
+ static scoped_ptr<CCDamageTracker> create();
+ ~CCDamageTracker();
+
+ void didDrawDamagedArea() { m_currentDamageRect = FloatRect(); }
+ void forceFullDamageNextUpdate() { m_forceFullDamageNextUpdate = true; }
+ void updateDamageTrackingState(const std::vector<CCLayerImpl*>& layerList, int targetSurfaceLayerID, bool targetSurfacePropertyChangedOnlyFromDescendant, const IntRect& targetSurfaceContentRect, CCLayerImpl* targetSurfaceMaskLayer, const WebKit::WebFilterOperations&);
+
+ const FloatRect& currentDamageRect() { return m_currentDamageRect; }
+
+private:
+ CCDamageTracker();
+
+ FloatRect trackDamageFromActiveLayers(const std::vector<CCLayerImpl*>& layerList, int targetSurfaceLayerID);
+ FloatRect trackDamageFromSurfaceMask(CCLayerImpl* targetSurfaceMaskLayer);
+ FloatRect trackDamageFromLeftoverRects();
+
+ FloatRect removeRectFromCurrentFrame(int layerID, bool& layerIsNew);
+ void saveRectForNextFrame(int layerID, const FloatRect& targetSpaceRect);
+
+ // These helper functions are used only in trackDamageFromActiveLayers().
+ void extendDamageForLayer(CCLayerImpl*, FloatRect& targetDamageRect);
+ void extendDamageForRenderSurface(CCLayerImpl*, FloatRect& targetDamageRect);
+
+ // To correctly track exposed regions, two hashtables of rects are maintained.
+ // The "current" map is used to compute exposed regions of the current frame, while
+ // the "next" map is used to collect layer rects that are used in the next frame.
+ typedef HashMap<int, FloatRect> RectMap;
+ scoped_ptr<RectMap> m_currentRectHistory;
+ scoped_ptr<RectMap> m_nextRectHistory;
+
+ FloatRect m_currentDamageRect;
+ bool m_forceFullDamageNextUpdate;
+};
+
+} // namespace cc
+
+#endif // CCDamageTracker_h
« no previous file with comments | « cc/content_layer_client.h ('k') | cc/damage_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698