diff options
author | ccameron@chromium.org <ccameron@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-31 19:52:25 +0000 |
---|---|---|
committer | ccameron@chromium.org <ccameron@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-31 19:52:25 +0000 |
commit | ff6493f7333be44ff19203521da8bd7191011cf9 (patch) | |
tree | 87a5566105963e10e0c6717615e773543519f685 /gpu | |
parent | 54faa06ef1ab4e54e1fef32e8754bc50b6415405 (diff) | |
download | chromium_src-ff6493f7333be44ff19203521da8bd7191011cf9.zip chromium_src-ff6493f7333be44ff19203521da8bd7191011cf9.tar.gz chromium_src-ff6493f7333be44ff19203521da8bd7191011cf9.tar.bz2 |
Track memory consumption for decoder-internal resources (backbuffer et al) in addition to external resources.
Don't add tracing for each allocation because they're already being traced by TRACE_BACKBUFFER_MEMORY_TOTAL (which has slightly different semantics).
BUG=131650
Review URL: https://chromiumcodereview.appspot.com/10829092
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149253 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r-- | gpu/command_buffer/service/gles2_cmd_decoder.cc | 32 | ||||
-rw-r--r-- | gpu/command_buffer/service/memory_tracking.h | 14 |
2 files changed, 28 insertions, 18 deletions
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc index 12b02d1..21bc59f 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc @@ -38,6 +38,7 @@ #include "gpu/command_buffer/service/gles2_cmd_validation.h" #include "gpu/command_buffer/service/gpu_switches.h" #include "gpu/command_buffer/service/mailbox_manager.h" +#include "gpu/command_buffer/service/memory_tracking.h" #include "gpu/command_buffer/service/program_manager.h" #include "gpu/command_buffer/service/query_manager.h" #include "gpu/command_buffer/service/renderbuffer_manager.h" @@ -348,14 +349,14 @@ class Texture { } size_t estimated_size() const { - return estimated_size_; + return memory_tracker_.GetMemRepresented(); } private: GLES2DecoderImpl* decoder_; + MemoryTypeTracker memory_tracker_; GLuint id_; gfx::Size size_; - size_t estimated_size_; DISALLOW_COPY_AND_ASSIGN(Texture); }; @@ -384,13 +385,13 @@ class RenderBuffer { } size_t estimated_size() const { - return estimated_size_; + return memory_tracker_.GetMemRepresented(); } private: GLES2DecoderImpl* decoder_; + MemoryTypeTracker memory_tracker_; GLuint id_; - size_t estimated_size_; DISALLOW_COPY_AND_ASSIGN(RenderBuffer); }; @@ -1690,8 +1691,9 @@ ScopedResolvedFrameBufferBinder::~ScopedResolvedFrameBufferBinder() { Texture::Texture(GLES2DecoderImpl* decoder) : decoder_(decoder), - id_(0), - estimated_size_(0) { + memory_tracker_(decoder->GetContextGroup()->memory_tracker(), + NULL, NULL), + id_(0) { } Texture::~Texture() { @@ -1719,7 +1721,7 @@ void Texture::Create() { // crash. glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); - estimated_size_ = 16u * 16u * 4u; + memory_tracker_.UpdateMemRepresented(16u * 16u * 4u); TRACE_BACKBUFFER_MEMORY_TOTAL(decoder_); } @@ -1746,7 +1748,7 @@ bool Texture::AllocateStorage(const gfx::Size& size, GLenum format) { GLES2Util::ComputeImageDataSizes( size.width(), size.height(), format, GL_UNSIGNED_BYTE, 4, &image_size, NULL, NULL); - estimated_size_ = image_size; + memory_tracker_.UpdateMemRepresented(image_size); TRACE_BACKBUFFER_MEMORY_TOTAL(decoder_); } return success; @@ -1770,7 +1772,7 @@ void Texture::Destroy() { ScopedGLErrorSuppressor suppressor(decoder_); glDeleteTextures(1, &id_); id_ = 0; - estimated_size_ = 0; + memory_tracker_.UpdateMemRepresented(0); TRACE_BACKBUFFER_MEMORY_TOTAL(decoder_); } } @@ -1781,8 +1783,9 @@ void Texture::Invalidate() { RenderBuffer::RenderBuffer(GLES2DecoderImpl* decoder) : decoder_(decoder), - id_(0), - estimated_size_(0) { + memory_tracker_(decoder->GetContextGroup()->memory_tracker(), + NULL, NULL), + id_(0) { } RenderBuffer::~RenderBuffer() { @@ -1824,8 +1827,9 @@ bool RenderBuffer::AllocateStorage(const gfx::Size& size, GLenum format, } bool success = glGetError() == GL_NO_ERROR; if (success) { - estimated_size_ = size.width() * size.height() * samples * - GLES2Util::RenderbufferBytesPerPixel(format); + memory_tracker_.UpdateMemRepresented( + size.width() * size.height() * samples * + GLES2Util::RenderbufferBytesPerPixel(format)); TRACE_BACKBUFFER_MEMORY_TOTAL(decoder_); } return success; @@ -1836,7 +1840,7 @@ void RenderBuffer::Destroy() { ScopedGLErrorSuppressor suppressor(decoder_); glDeleteRenderbuffersEXT(1, &id_); id_ = 0; - estimated_size_ = 0; + memory_tracker_.UpdateMemRepresented(0); TRACE_BACKBUFFER_MEMORY_TOTAL(decoder_); } } diff --git a/gpu/command_buffer/service/memory_tracking.h b/gpu/command_buffer/service/memory_tracking.h index 36653272..db748e9 100644 --- a/gpu/command_buffer/service/memory_tracking.h +++ b/gpu/command_buffer/service/memory_tracking.h @@ -55,10 +55,16 @@ class MemoryTypeTracker { } has_updated_mem_represented_ = true; last_updated_mem_represented_ = mem_represented; - TRACE_COUNTER_ID1(trace_category_, - trace_name_, - memory_tracker_, - last_updated_mem_represented_); + if (trace_category_ && trace_name_ && memory_tracker_) { + TRACE_COUNTER_ID1(trace_category_, + trace_name_, + memory_tracker_, + last_updated_mem_represented_); + } + } + + size_t GetMemRepresented() const { + return last_updated_mem_represented_; } private: |