| Index: gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| index d7f7deca4a178b709c38c56c90edf745411c95ab..5bda6a210c737c99dc546eaddf7bc557f08c8103 100644
|
| --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| @@ -378,6 +378,7 @@ class Texture {
|
| private:
|
| GLES2DecoderImpl* decoder_;
|
| MemoryTypeTracker memory_tracker_;
|
| + size_t bytes_allocated_;
|
| GLuint id_;
|
| gfx::Size size_;
|
| DISALLOW_COPY_AND_ASSIGN(Texture);
|
| @@ -414,6 +415,7 @@ class RenderBuffer {
|
| private:
|
| GLES2DecoderImpl* decoder_;
|
| MemoryTypeTracker memory_tracker_;
|
| + size_t bytes_allocated_;
|
| GLuint id_;
|
| DISALLOW_COPY_AND_ASSIGN(RenderBuffer);
|
| };
|
| @@ -1790,7 +1792,9 @@ ScopedTextureUploadTimer::~ScopedTextureUploadTimer() {
|
|
|
| Texture::Texture(GLES2DecoderImpl* decoder)
|
| : decoder_(decoder),
|
| - memory_tracker_(decoder->GetContextGroup()->memory_tracker()),
|
| + memory_tracker_(decoder->GetContextGroup()->memory_tracker(),
|
| + MemoryTracker::Unmanaged),
|
| + bytes_allocated_(0),
|
| id_(0) {
|
| }
|
|
|
| @@ -1819,7 +1823,9 @@ void Texture::Create() {
|
| // crash.
|
| glTexImage2D(
|
| GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
|
| - memory_tracker_.UpdateMemRepresented(16u * 16u * 4u);
|
| +
|
| + bytes_allocated_ = 16u * 16u * 4u;
|
| + memory_tracker_.TrackMemAlloc(bytes_allocated_);
|
| }
|
|
|
| bool Texture::AllocateStorage(const gfx::Size& size, GLenum format) {
|
| @@ -1845,7 +1851,9 @@ bool Texture::AllocateStorage(const gfx::Size& size, GLenum format) {
|
| GLES2Util::ComputeImageDataSizes(
|
| size.width(), size.height(), format, GL_UNSIGNED_BYTE, 4, &image_size,
|
| NULL, NULL);
|
| - memory_tracker_.UpdateMemRepresented(image_size);
|
| + memory_tracker_.TrackMemFree(bytes_allocated_);
|
| + bytes_allocated_ = image_size;
|
| + memory_tracker_.TrackMemAlloc(bytes_allocated_);
|
| }
|
| return success;
|
| }
|
| @@ -1868,8 +1876,9 @@ void Texture::Destroy() {
|
| ScopedGLErrorSuppressor suppressor(decoder_);
|
| glDeleteTextures(1, &id_);
|
| id_ = 0;
|
| - memory_tracker_.UpdateMemRepresented(0);
|
| }
|
| + memory_tracker_.TrackMemFree(bytes_allocated_);
|
| + bytes_allocated_ = 0;
|
| }
|
|
|
| void Texture::Invalidate() {
|
| @@ -1878,7 +1887,9 @@ void Texture::Invalidate() {
|
|
|
| RenderBuffer::RenderBuffer(GLES2DecoderImpl* decoder)
|
| : decoder_(decoder),
|
| - memory_tracker_(decoder->GetContextGroup()->memory_tracker()),
|
| + memory_tracker_(decoder->GetContextGroup()->memory_tracker(),
|
| + MemoryTracker::Unmanaged),
|
| + bytes_allocated_(0),
|
| id_(0) {
|
| }
|
|
|
| @@ -1921,9 +1932,11 @@ bool RenderBuffer::AllocateStorage(const gfx::Size& size, GLenum format,
|
| }
|
| bool success = glGetError() == GL_NO_ERROR;
|
| if (success) {
|
| - memory_tracker_.UpdateMemRepresented(
|
| + memory_tracker_.TrackMemFree(bytes_allocated_);
|
| + bytes_allocated_ =
|
| size.width() * size.height() * samples *
|
| - GLES2Util::RenderbufferBytesPerPixel(format));
|
| + GLES2Util::RenderbufferBytesPerPixel(format);
|
| + memory_tracker_.TrackMemAlloc(bytes_allocated_);
|
| }
|
| return success;
|
| }
|
| @@ -1933,8 +1946,9 @@ void RenderBuffer::Destroy() {
|
| ScopedGLErrorSuppressor suppressor(decoder_);
|
| glDeleteRenderbuffersEXT(1, &id_);
|
| id_ = 0;
|
| - memory_tracker_.UpdateMemRepresented(0);
|
| }
|
| + memory_tracker_.TrackMemFree(bytes_allocated_);
|
| + bytes_allocated_ = 0;
|
| }
|
|
|
| void RenderBuffer::Invalidate() {
|
|
|