summaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authorpiman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-16 22:20:01 +0000
committerpiman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-16 22:20:01 +0000
commit4586f7dad93470dc59f270e97ec03b06bdf8bdaa (patch)
treee2487231123869d586cdaf64ecf37ee982f2025e /cc
parent92d9ffe4c7da1ecd30d2f2733805bd9946797bdd (diff)
downloadchromium_src-4586f7dad93470dc59f270e97ec03b06bdf8bdaa.zip
chromium_src-4586f7dad93470dc59f270e97ec03b06bdf8bdaa.tar.gz
chromium_src-4586f7dad93470dc59f270e97ec03b06bdf8bdaa.tar.bz2
Shrink texture uploader when not visible.
Together with https://codereview.chromium.org/12278025/ this helps freeing the shared memory associated with queries when renderers go to the background. BUG=None Review URL: https://chromiumcodereview.appspot.com/12284013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@183006 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc')
-rw-r--r--cc/gl_renderer.cc1
-rw-r--r--cc/resource_provider.cc8
-rw-r--r--cc/resource_provider.h1
-rw-r--r--cc/texture_uploader.cc6
-rw-r--r--cc/texture_uploader.h1
5 files changed, 17 insertions, 0 deletions
diff --git a/cc/gl_renderer.cc b/cc/gl_renderer.cc
index 42aaf8f..7189960 100644
--- a/cc/gl_renderer.cc
+++ b/cc/gl_renderer.cc
@@ -1402,6 +1402,7 @@ void GLRenderer::enforceMemoryPolicy()
releaseRenderPassTextures();
if (m_discardBackbufferWhenNotVisible)
discardBackbuffer();
+ m_resourceProvider->releaseCachedData();
GLC(m_context, m_context->flush());
}
}
diff --git a/cc/resource_provider.cc b/cc/resource_provider.cc
index d394062..0ac1e18 100644
--- a/cc/resource_provider.cc
+++ b/cc/resource_provider.cc
@@ -406,6 +406,14 @@ void ResourceProvider::flushUploads()
m_textureUploader->flush();
}
+void ResourceProvider::releaseCachedData()
+{
+ if (!m_textureUploader)
+ return;
+
+ m_textureUploader->releaseCachedQueries();
+}
+
void ResourceProvider::flush()
{
DCHECK(m_threadChecker.CalledOnValidThread());
diff --git a/cc/resource_provider.h b/cc/resource_provider.h
index 70d4ad1..5b31139 100644
--- a/cc/resource_provider.h
+++ b/cc/resource_provider.h
@@ -99,6 +99,7 @@ public:
void markPendingUploadsAsNonBlocking();
double estimatedUploadsPerSecond();
void flushUploads();
+ void releaseCachedData();
// Flush all context operations, kicking uploads and ensuring ordering with
// respect to other contexts.
diff --git a/cc/texture_uploader.cc b/cc/texture_uploader.cc
index 56e7347..8414a5f 100644
--- a/cc/texture_uploader.cc
+++ b/cc/texture_uploader.cc
@@ -196,6 +196,12 @@ void TextureUploader::flush() {
m_numTextureUploadsSinceLastFlush = 0;
}
+void TextureUploader::releaseCachedQueries()
+{
+ processQueries();
+ m_availableQueries.clear();
+}
+
void TextureUploader::uploadWithTexSubImage(const uint8* image,
const gfx::Rect& image_rect,
const gfx::Rect& source_rect,
diff --git a/cc/texture_uploader.h b/cc/texture_uploader.h
index decdbda..d4acf8d 100644
--- a/cc/texture_uploader.h
+++ b/cc/texture_uploader.h
@@ -53,6 +53,7 @@ public:
const gfx::Size& size);
void flush();
+ void releaseCachedQueries();
private:
class Query {