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

Unified Diff: cc/ThrottledTextureUploader.cpp

Issue 11028129: cc: Improve texture per second calculation and overhead (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/ThrottledTextureUploader.cpp
diff --git a/cc/ThrottledTextureUploader.cpp b/cc/ThrottledTextureUploader.cpp
index c152598aa648e1586aa9b892e16bd4e53750797d..9c9e50d9ef3a6581c399c53329f8f995efeb7adf 100644
--- a/cc/ThrottledTextureUploader.cpp
+++ b/cc/ThrottledTextureUploader.cpp
@@ -15,7 +15,8 @@
namespace {
// How many previous uploads to use when predicting future throughput.
-static const size_t uploadHistorySize = 100;
+static const size_t uploadHistorySizeMax = 1000;
+static const size_t uploadHistorySizeInitial = 100;
// Global estimated number of textures per second to maintain estimates across
// subsequent instances of ThrottledTextureUploader.
@@ -87,7 +88,8 @@ bool ThrottledTextureUploader::Query::isNonBlocking()
ThrottledTextureUploader::ThrottledTextureUploader(WebKit::WebGraphicsContext3D* context)
: m_context(context)
- , m_texturesPerSecondHistory(uploadHistorySize, estimatedTexturesPerSecondGlobal)
+ , m_texturesPerSecondHistory(uploadHistorySizeInitial,
+ estimatedTexturesPerSecondGlobal)
, m_numBlockingTextureUploads(0)
{
}
@@ -120,15 +122,12 @@ double ThrottledTextureUploader::estimatedTexturesPerSecond()
{
processQueries();
- // The history should never be empty because we initialize all elements with an estimate.
- ASSERT(m_texturesPerSecondHistory.size() == uploadHistorySize);
-
- // Sort the history and use the median as our estimate.
+ // Sort the history and use the 3/4 median as our optimistic estimate.
std::vector<double> sortedHistory(m_texturesPerSecondHistory.begin(),
m_texturesPerSecondHistory.end());
std::sort(sortedHistory.begin(), sortedHistory.end());
reveman 2012/10/11 17:59:46 with the history now relatively large, does it mak
- estimatedTexturesPerSecondGlobal = sortedHistory[sortedHistory.size() * 2 / 3];
+ estimatedTexturesPerSecondGlobal = sortedHistory[sortedHistory.size() * 3 / 4];
TRACE_COUNTER1("cc", "estimatedTexturesPerSecond", estimatedTexturesPerSecondGlobal);
return estimatedTexturesPerSecondGlobal;
}
@@ -178,7 +177,8 @@ void ThrottledTextureUploader::processQueries()
// Remove the oldest values from our history and insert the new one
double texturesPerSecond = 1.0 / (usElapsed * 1e-6);
- m_texturesPerSecondHistory.pop_back();
+ if (m_texturesPerSecondHistory.size() >= uploadHistorySizeMax)
+ m_texturesPerSecondHistory.pop_back();
m_texturesPerSecondHistory.push_front(texturesPerSecond);
m_availableQueries.append(m_pendingQueries.takeFirst());
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698