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

Unified Diff: cc/ThrottledTextureUploader.cpp

Issue 11008017: cc: Never block on uploads from previous frame and increase max pending uploads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rename numPendingUploads to numBlockingUploads and discardPendingUploads to markPendingUploadsAsNon… 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/ThrottledTextureUploader.h ('k') | cc/ThrottledTextureUploaderTest.cpp » ('j') | 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 48e11e181b9d2a9f198874a70c9152fbd284f83d..401b2b0a5c379bffec3b59e9f8228983ac9c18c1 100644
--- a/cc/ThrottledTextureUploader.cpp
+++ b/cc/ThrottledTextureUploader.cpp
@@ -30,6 +30,7 @@ ThrottledTextureUploader::Query::Query(WebKit::WebGraphicsContext3D* context)
, m_value(0)
, m_hasValue(false)
, m_texturesUploaded(0)
+ , m_isNonBlocking(false)
{
m_queryId = m_context->createQueryEXT();
}
@@ -42,6 +43,7 @@ ThrottledTextureUploader::Query::~Query()
void ThrottledTextureUploader::Query::begin()
{
m_hasValue = false;
+ m_isNonBlocking = false;
m_context->beginQueryEXT(Extensions3DChromium::COMMANDS_ISSUED_CHROMIUM, m_queryId);
}
@@ -78,11 +80,21 @@ size_t ThrottledTextureUploader::Query::texturesUploaded()
return m_texturesUploaded;
}
+void ThrottledTextureUploader::Query::markAsNonBlocking()
+{
+ m_isNonBlocking = true;
+}
+
+bool ThrottledTextureUploader::Query::isNonBlocking()
+{
+ return m_isNonBlocking;
+}
+
ThrottledTextureUploader::ThrottledTextureUploader(WebKit::WebGraphicsContext3D* context)
: m_context(context)
, m_texturesPerSecondHistory(uploadHistorySize, estimatedTexturesPerSecondGlobal)
, m_texturesUploaded(0)
- , m_numPendingTextureUploads(0)
+ , m_numBlockingTextureUploads(0)
{
}
@@ -90,11 +102,25 @@ ThrottledTextureUploader::~ThrottledTextureUploader()
{
}
-size_t ThrottledTextureUploader::numPendingUploads()
+size_t ThrottledTextureUploader::numBlockingUploads()
{
processQueries();
- return m_numPendingTextureUploads;
+ return m_numBlockingTextureUploads;
+}
+
+void ThrottledTextureUploader::markPendingUploadsAsNonBlocking()
+{
+ for (Deque<OwnPtr<Query> >::iterator it = m_pendingQueries.begin();
+ it != m_pendingQueries.end(); ++it) {
+ if (it->get()->isNonBlocking())
+ continue;
+
+ m_numBlockingTextureUploads -= it->get()->texturesUploaded();
+ it->get()->markAsNonBlocking();
+ }
+
+ ASSERT(!m_numBlockingTextureUploads);
}
double ThrottledTextureUploader::estimatedTexturesPerSecond()
@@ -129,7 +155,7 @@ void ThrottledTextureUploader::endUploads()
{
m_availableQueries.first()->end(m_texturesUploaded);
m_pendingQueries.append(m_availableQueries.takeFirst());
- m_numPendingTextureUploads += m_texturesUploaded;
+ m_numBlockingTextureUploads += m_texturesUploaded;
}
void ThrottledTextureUploader::uploadTexture(CCResourceProvider* resourceProvider, Parameters upload)
@@ -149,12 +175,14 @@ void ThrottledTextureUploader::processQueries()
double texturesPerSecond = static_cast<double>(texturesUploaded) /
(usElapsed * 1e-6);
+ if (!m_pendingQueries.first()->isNonBlocking())
+ m_numBlockingTextureUploads -= texturesUploaded;
+
// Remove the oldest values from our history and insert the new one
m_texturesPerSecondHistory.pop_back();
m_texturesPerSecondHistory.push_front(texturesPerSecond);
m_availableQueries.append(m_pendingQueries.takeFirst());
- m_numPendingTextureUploads -= texturesUploaded;
}
}
« no previous file with comments | « cc/ThrottledTextureUploader.h ('k') | cc/ThrottledTextureUploaderTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698