Commit ff6493f7 authored by ccameron@chromium.org's avatar ccameron@chromium.org

Track memory consumption for decoder-internal resources (backbuffer et al) in...

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
parent 54faa06e
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
#include "gpu/command_buffer/service/gles2_cmd_validation.h" #include "gpu/command_buffer/service/gles2_cmd_validation.h"
#include "gpu/command_buffer/service/gpu_switches.h" #include "gpu/command_buffer/service/gpu_switches.h"
#include "gpu/command_buffer/service/mailbox_manager.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/program_manager.h"
#include "gpu/command_buffer/service/query_manager.h" #include "gpu/command_buffer/service/query_manager.h"
#include "gpu/command_buffer/service/renderbuffer_manager.h" #include "gpu/command_buffer/service/renderbuffer_manager.h"
...@@ -348,14 +349,14 @@ class Texture { ...@@ -348,14 +349,14 @@ class Texture {
} }
size_t estimated_size() const { size_t estimated_size() const {
return estimated_size_; return memory_tracker_.GetMemRepresented();
} }
private: private:
GLES2DecoderImpl* decoder_; GLES2DecoderImpl* decoder_;
MemoryTypeTracker memory_tracker_;
GLuint id_; GLuint id_;
gfx::Size size_; gfx::Size size_;
size_t estimated_size_;
DISALLOW_COPY_AND_ASSIGN(Texture); DISALLOW_COPY_AND_ASSIGN(Texture);
}; };
...@@ -384,13 +385,13 @@ class RenderBuffer { ...@@ -384,13 +385,13 @@ class RenderBuffer {
} }
size_t estimated_size() const { size_t estimated_size() const {
return estimated_size_; return memory_tracker_.GetMemRepresented();
} }
private: private:
GLES2DecoderImpl* decoder_; GLES2DecoderImpl* decoder_;
MemoryTypeTracker memory_tracker_;
GLuint id_; GLuint id_;
size_t estimated_size_;
DISALLOW_COPY_AND_ASSIGN(RenderBuffer); DISALLOW_COPY_AND_ASSIGN(RenderBuffer);
}; };
...@@ -1690,8 +1691,9 @@ ScopedResolvedFrameBufferBinder::~ScopedResolvedFrameBufferBinder() { ...@@ -1690,8 +1691,9 @@ ScopedResolvedFrameBufferBinder::~ScopedResolvedFrameBufferBinder() {
Texture::Texture(GLES2DecoderImpl* decoder) Texture::Texture(GLES2DecoderImpl* decoder)
: decoder_(decoder), : decoder_(decoder),
id_(0), memory_tracker_(decoder->GetContextGroup()->memory_tracker(),
estimated_size_(0) { NULL, NULL),
id_(0) {
} }
Texture::~Texture() { Texture::~Texture() {
...@@ -1719,7 +1721,7 @@ void Texture::Create() { ...@@ -1719,7 +1721,7 @@ void Texture::Create() {
// crash. // crash.
glTexImage2D( glTexImage2D(
GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); 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_); TRACE_BACKBUFFER_MEMORY_TOTAL(decoder_);
} }
...@@ -1746,7 +1748,7 @@ bool Texture::AllocateStorage(const gfx::Size& size, GLenum format) { ...@@ -1746,7 +1748,7 @@ bool Texture::AllocateStorage(const gfx::Size& size, GLenum format) {
GLES2Util::ComputeImageDataSizes( GLES2Util::ComputeImageDataSizes(
size.width(), size.height(), format, GL_UNSIGNED_BYTE, 4, &image_size, size.width(), size.height(), format, GL_UNSIGNED_BYTE, 4, &image_size,
NULL, NULL); NULL, NULL);
estimated_size_ = image_size; memory_tracker_.UpdateMemRepresented(image_size);
TRACE_BACKBUFFER_MEMORY_TOTAL(decoder_); TRACE_BACKBUFFER_MEMORY_TOTAL(decoder_);
} }
return success; return success;
...@@ -1770,7 +1772,7 @@ void Texture::Destroy() { ...@@ -1770,7 +1772,7 @@ void Texture::Destroy() {
ScopedGLErrorSuppressor suppressor(decoder_); ScopedGLErrorSuppressor suppressor(decoder_);
glDeleteTextures(1, &id_); glDeleteTextures(1, &id_);
id_ = 0; id_ = 0;
estimated_size_ = 0; memory_tracker_.UpdateMemRepresented(0);
TRACE_BACKBUFFER_MEMORY_TOTAL(decoder_); TRACE_BACKBUFFER_MEMORY_TOTAL(decoder_);
} }
} }
...@@ -1781,8 +1783,9 @@ void Texture::Invalidate() { ...@@ -1781,8 +1783,9 @@ void Texture::Invalidate() {
RenderBuffer::RenderBuffer(GLES2DecoderImpl* decoder) RenderBuffer::RenderBuffer(GLES2DecoderImpl* decoder)
: decoder_(decoder), : decoder_(decoder),
id_(0), memory_tracker_(decoder->GetContextGroup()->memory_tracker(),
estimated_size_(0) { NULL, NULL),
id_(0) {
} }
RenderBuffer::~RenderBuffer() { RenderBuffer::~RenderBuffer() {
...@@ -1824,8 +1827,9 @@ bool RenderBuffer::AllocateStorage(const gfx::Size& size, GLenum format, ...@@ -1824,8 +1827,9 @@ bool RenderBuffer::AllocateStorage(const gfx::Size& size, GLenum format,
} }
bool success = glGetError() == GL_NO_ERROR; bool success = glGetError() == GL_NO_ERROR;
if (success) { if (success) {
estimated_size_ = size.width() * size.height() * samples * memory_tracker_.UpdateMemRepresented(
GLES2Util::RenderbufferBytesPerPixel(format); size.width() * size.height() * samples *
GLES2Util::RenderbufferBytesPerPixel(format));
TRACE_BACKBUFFER_MEMORY_TOTAL(decoder_); TRACE_BACKBUFFER_MEMORY_TOTAL(decoder_);
} }
return success; return success;
...@@ -1836,7 +1840,7 @@ void RenderBuffer::Destroy() { ...@@ -1836,7 +1840,7 @@ void RenderBuffer::Destroy() {
ScopedGLErrorSuppressor suppressor(decoder_); ScopedGLErrorSuppressor suppressor(decoder_);
glDeleteRenderbuffersEXT(1, &id_); glDeleteRenderbuffersEXT(1, &id_);
id_ = 0; id_ = 0;
estimated_size_ = 0; memory_tracker_.UpdateMemRepresented(0);
TRACE_BACKBUFFER_MEMORY_TOTAL(decoder_); TRACE_BACKBUFFER_MEMORY_TOTAL(decoder_);
} }
} }
......
...@@ -55,10 +55,16 @@ class MemoryTypeTracker { ...@@ -55,10 +55,16 @@ class MemoryTypeTracker {
} }
has_updated_mem_represented_ = true; has_updated_mem_represented_ = true;
last_updated_mem_represented_ = mem_represented; last_updated_mem_represented_ = mem_represented;
TRACE_COUNTER_ID1(trace_category_, if (trace_category_ && trace_name_ && memory_tracker_) {
trace_name_, TRACE_COUNTER_ID1(trace_category_,
memory_tracker_, trace_name_,
last_updated_mem_represented_); memory_tracker_,
last_updated_mem_represented_);
}
}
size_t GetMemRepresented() const {
return last_updated_mem_represented_;
} }
private: private:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment