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

Unified Diff: cc/ThrottledTextureUploader.cpp

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/ThrottledTextureUploader.h ('k') | cc/TiledLayerChromium.h » ('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
deleted file mode 100644
index 179f2b61d1922974b29b2da08bfe3c10360eb5ec..0000000000000000000000000000000000000000
--- a/cc/ThrottledTextureUploader.cpp
+++ /dev/null
@@ -1,186 +0,0 @@
-// Copyright 2012 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.
-
-#include "config.h"
-#include "ThrottledTextureUploader.h"
-
-#include "Extensions3DChromium.h"
-#include "TraceEvent.h"
-#include <algorithm>
-#include <public/Platform.h>
-#include <public/WebGraphicsContext3D.h>
-#include <vector>
-
-namespace {
-
-// How many previous uploads to use when predicting future throughput.
-static const size_t uploadHistorySize = 100;
-
-// Global estimated number of textures per second to maintain estimates across
-// subsequent instances of ThrottledTextureUploader.
-// More than one thread will not access this variable, so we do not need to synchronize access.
-static double estimatedTexturesPerSecondGlobal = 48.0 * 60.0;
-
-} // anonymous namespace
-
-namespace cc {
-
-ThrottledTextureUploader::Query::Query(WebKit::WebGraphicsContext3D* context)
- : m_context(context)
- , m_queryId(0)
- , m_value(0)
- , m_hasValue(false)
- , m_isNonBlocking(false)
-{
- m_queryId = m_context->createQueryEXT();
-}
-
-ThrottledTextureUploader::Query::~Query()
-{
- m_context->deleteQueryEXT(m_queryId);
-}
-
-void ThrottledTextureUploader::Query::begin()
-{
- m_hasValue = false;
- m_isNonBlocking = false;
- m_context->beginQueryEXT(Extensions3DChromium::COMMANDS_ISSUED_CHROMIUM, m_queryId);
-}
-
-void ThrottledTextureUploader::Query::end()
-{
- m_context->endQueryEXT(Extensions3DChromium::COMMANDS_ISSUED_CHROMIUM);
-}
-
-bool ThrottledTextureUploader::Query::isPending()
-{
- unsigned available = 1;
- m_context->getQueryObjectuivEXT(m_queryId, Extensions3DChromium::QUERY_RESULT_AVAILABLE_EXT, &available);
- return !available;
-}
-
-void ThrottledTextureUploader::Query::wait()
-{
- value();
- return;
-}
-
-unsigned ThrottledTextureUploader::Query::value()
-{
- if (!m_hasValue) {
- m_context->getQueryObjectuivEXT(m_queryId, Extensions3DChromium::QUERY_RESULT_EXT, &m_value);
- m_hasValue = true;
- }
- return m_value;
-}
-
-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_numBlockingTextureUploads(0)
-{
-}
-
-ThrottledTextureUploader::~ThrottledTextureUploader()
-{
-}
-
-size_t ThrottledTextureUploader::numBlockingUploads()
-{
- processQueries();
- 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()->markAsNonBlocking();
- }
-
- ASSERT(!m_numBlockingTextureUploads);
-}
-
-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.
- std::vector<double> sortedHistory(m_texturesPerSecondHistory.begin(),
- m_texturesPerSecondHistory.end());
- std::sort(sortedHistory.begin(), sortedHistory.end());
-
- estimatedTexturesPerSecondGlobal = sortedHistory[sortedHistory.size() * 2 / 3];
- TRACE_COUNTER1("cc", "estimatedTexturesPerSecond", estimatedTexturesPerSecondGlobal);
- return estimatedTexturesPerSecondGlobal;
-}
-
-void ThrottledTextureUploader::beginQuery()
-{
- if (m_availableQueries.isEmpty())
- m_availableQueries.append(Query::create(m_context));
-
- m_availableQueries.first()->begin();
-}
-
-void ThrottledTextureUploader::endQuery()
-{
- m_availableQueries.first()->end();
- m_pendingQueries.append(m_availableQueries.takeFirst());
- m_numBlockingTextureUploads++;
-}
-
-void ThrottledTextureUploader::uploadTexture(CCResourceProvider* resourceProvider, Parameters upload)
-{
- bool isFullUpload = upload.destOffset.isZero() &&
- upload.sourceRect.size() == upload.texture->texture()->size();
-
- if (isFullUpload)
- beginQuery();
-
- upload.texture->updateRect(resourceProvider, upload.sourceRect, upload.destOffset);
-
- if (isFullUpload)
- endQuery();
-}
-
-void ThrottledTextureUploader::processQueries()
-{
- while (!m_pendingQueries.isEmpty()) {
- if (m_pendingQueries.first()->isPending())
- break;
-
- unsigned usElapsed = m_pendingQueries.first()->value();
- WebKit::Platform::current()->histogramCustomCounts("Renderer4.TextureGpuUploadTimeUS", usElapsed, 0, 100000, 50);
-
- if (!m_pendingQueries.first()->isNonBlocking())
- m_numBlockingTextureUploads--;
-
- // Remove the oldest values from our history and insert the new one
- double texturesPerSecond = 1.0 / (usElapsed * 1e-6);
- m_texturesPerSecondHistory.pop_back();
- m_texturesPerSecondHistory.push_front(texturesPerSecond);
-
- m_availableQueries.append(m_pendingQueries.takeFirst());
- }
-}
-
-}
« no previous file with comments | « cc/ThrottledTextureUploader.h ('k') | cc/TiledLayerChromium.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698