summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authorccameron@chromium.org <ccameron@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-31 19:52:25 +0000
committerccameron@chromium.org <ccameron@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-31 19:52:25 +0000
commitff6493f7333be44ff19203521da8bd7191011cf9 (patch)
tree87a5566105963e10e0c6717615e773543519f685 /gpu
parent54faa06ef1ab4e54e1fef32e8754bc50b6415405 (diff)
downloadchromium_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.cc32
-rw-r--r--gpu/command_buffer/service/memory_tracking.h14
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: