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() { |