diff options
author | piman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-16 22:20:01 +0000 |
---|---|---|
committer | piman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-16 22:20:01 +0000 |
commit | 4586f7dad93470dc59f270e97ec03b06bdf8bdaa (patch) | |
tree | e2487231123869d586cdaf64ecf37ee982f2025e /cc | |
parent | 92d9ffe4c7da1ecd30d2f2733805bd9946797bdd (diff) | |
download | chromium_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.cc | 1 | ||||
-rw-r--r-- | cc/resource_provider.cc | 8 | ||||
-rw-r--r-- | cc/resource_provider.h | 1 | ||||
-rw-r--r-- | cc/texture_uploader.cc | 6 | ||||
-rw-r--r-- | cc/texture_uploader.h | 1 |
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 { |