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

Unified Diff: cc/CCPriorityCalculator.cpp

Issue 10917281: Adjust texture priorities in preparation of impl-thread eviction of only some textures (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove spurious .gitmodules Created 8 years, 3 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/CCPriorityCalculator.h ('k') | cc/TiledLayerChromium.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/CCPriorityCalculator.cpp
diff --git a/cc/CCPriorityCalculator.cpp b/cc/CCPriorityCalculator.cpp
index 0ef3915852409bf623136f5a0451910d49f340cb..055520c974392f8b1a17cb2e075e2d3a5b1ab25c 100644
--- a/cc/CCPriorityCalculator.cpp
+++ b/cc/CCPriorityCalculator.cpp
@@ -10,22 +10,40 @@ using namespace std;
namespace cc {
+static const int uiDrawsToRootSurfacePriority = -1;
+static const int visibleDrawsToRootSurfacePriority = 0;
+static const int renderSurfacesPriority = 1;
+static const int uiDoesNotDrawToRootSurfacePriority = 2;
+static const int visibleDoesNotDrawToRootSurfacePriority = 3;
+
+// The lower digits are how far from being visible the texture is,
+// in pixels.
+static const int notVisibleBasePriority = 1000000;
+static const int notVisibleLimitPriority = 1900000;
+
+// Small animated layers are treated as though they are 512 pixels
+// from being visible.
+static const int smallAnimatedLayerPriority = notVisibleBasePriority + 512;
+
+static const int lingeringBasePriority = 2000000;
+static const int lingeringLimitPriority = 2900000;
+
// static
int CCPriorityCalculator::uiPriority(bool drawsToRootSurface)
{
- return drawsToRootSurface ? -1 : 2;
+ return drawsToRootSurface ? uiDrawsToRootSurfacePriority : uiDoesNotDrawToRootSurfacePriority;
}
// static
int CCPriorityCalculator::visiblePriority(bool drawsToRootSurface)
{
- return drawsToRootSurface ? 0 : 3;
+ return drawsToRootSurface ? visibleDrawsToRootSurfacePriority : visibleDoesNotDrawToRootSurfacePriority;
}
// static
int CCPriorityCalculator::renderSurfacePriority()
{
- return 1;
+ return renderSurfacesPriority;
}
// static
@@ -34,13 +52,12 @@ int CCPriorityCalculator::lingeringPriority(int previousPriority)
// FIXME: We should remove this once we have priorities for all
// textures (we can't currently calculate distances for
// off-screen textures).
- int lingeringPriority = 1000000;
- return min(numeric_limits<int>::max() - 1,
- max(lingeringPriority, previousPriority)) + 1;
+ return min(lingeringLimitPriority,
+ max(lingeringBasePriority, previousPriority + 1));
}
namespace {
-unsigned manhattanDistance(const IntRect& a, const IntRect& b)
+int manhattanDistance(const IntRect& a, const IntRect& b)
{
IntRect c = unionRect(a, b);
int x = max(0, c.width() - a.width() - b.width() + 1);
@@ -49,24 +66,19 @@ unsigned manhattanDistance(const IntRect& a, const IntRect& b)
}
}
-int CCPriorityCalculator::priorityFromDistance(const IntRect& visibleRect, const IntRect& textureRect, bool drawsToRootSurface) const
+// static
+int CCPriorityCalculator::priorityFromDistance(const IntRect& visibleRect, const IntRect& textureRect, bool drawsToRootSurface)
{
- unsigned distance = manhattanDistance(visibleRect, textureRect);
+ int distance = manhattanDistance(visibleRect, textureRect);
if (!distance)
return visiblePriority(drawsToRootSurface);
- return visiblePriority(false) + distance;
+ return min(notVisibleLimitPriority, notVisibleBasePriority + distance);
}
-int CCPriorityCalculator::priorityFromDistance(unsigned pixels, bool drawsToRootSurface) const
-{
- if (!pixels)
- return visiblePriority(drawsToRootSurface);
- return visiblePriority(false) + pixels;
-}
-
-int CCPriorityCalculator::priorityFromVisibility(bool visible, bool drawsToRootSurface) const
+// static
+int CCPriorityCalculator::smallAnimatedLayerMinPriority()
{
- return visible ? visiblePriority(drawsToRootSurface) : lowestPriority();
+ return smallAnimatedLayerPriority;
}
} // cc
« no previous file with comments | « cc/CCPriorityCalculator.h ('k') | cc/TiledLayerChromium.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698