Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(242)

Unified Diff: gpu/command_buffer/service/gles2_cmd_decoder.cc

Issue 11516014: Track managed memory usage in the command buffer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Resolve against HEAD Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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() {

Powered by Google App Engine
This is Rietveld 408576698