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

Unified Diff: content/common/gpu/gpu_memory_manager.h

Issue 10854076: Add GPU memory tab to the task manager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Clean try errors (remove semicolon, remove unneeded assert that unittests don't follow) Created 8 years, 4 months 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: content/common/gpu/gpu_memory_manager.h
diff --git a/content/common/gpu/gpu_memory_manager.h b/content/common/gpu/gpu_memory_manager.h
index 1023120ee2364a6f71768ca042121a112b25505f..19a27de4f4cad5f13456e6a8c6937417f6e96533 100644
--- a/content/common/gpu/gpu_memory_manager.h
+++ b/content/common/gpu/gpu_memory_manager.h
@@ -8,16 +8,20 @@
#if defined(ENABLE_GPU)
#include <vector>
+#include <set>
greggman 2012/08/10 01:23:26 style: include these in alphabetical order
ccameron 2012/08/10 18:13:38 Done.
#include "base/basictypes.h"
#include "base/cancelable_callback.h"
#include "base/hash_tables.h"
#include "base/memory/weak_ptr.h"
+#include "base/process.h"
#include "content/common/content_export.h"
#include "content/common/gpu/gpu_memory_allocation.h"
+#include "content/public/common/gpu_info.h"
#include "ui/gfx/size.h"
class GpuCommandBufferStubBase;
+class GpuMemoryTrackingGroup;
#if defined(COMPILER_GCC)
namespace BASE_HASH_NAMESPACE {
@@ -63,6 +67,13 @@ class CONTENT_EXPORT GpuMemoryManager :
// queued delayed manage.
void ScheduleManage(bool immediate);
+ // Retrieve GPU Resource consumption statistics for the task manager
+ void GetVidmem(content::GPUVidmem& vidmem) const;
+
+ // Add and remove structures to track context groups' memory consumption
+ void AddTrackingGroup(GpuMemoryTrackingGroup* tracking_group);
+ void RemoveTrackingGroup(GpuMemoryTrackingGroup* tracking_group);
+
// Returns StubMemoryStat's for each GpuCommandBufferStubBase, which were
// assigned during the most recent call to Manage().
// Useful for tracking the memory-allocation-related presumed state of the
@@ -81,6 +92,9 @@ class CONTENT_EXPORT GpuMemoryManager :
void Manage();
+ // The context groups' tracking structures
+ std::set<GpuMemoryTrackingGroup*> tracking_groups_;
+
size_t CalculateBonusMemoryAllocationBasedOnSize(gfx::Size size) const;
size_t GetAvailableGpuMemory() const {
@@ -121,6 +135,45 @@ class CONTENT_EXPORT GpuMemoryManager :
DISALLOW_COPY_AND_ASSIGN(GpuMemoryManager);
};
+// All decoders in a context group point to a single GpuMemoryTrackingGroup,
+// which tracks GPU resource consumption for the entire context group.
+class GpuMemoryTrackingGroup {
+ public:
+ GpuMemoryTrackingGroup(
greggman 2012/08/10 01:23:26 I've been geting bugged that constructors and dest
ccameron 2012/08/10 18:13:38 I hit this complaint in gpu_info.h, but not in thi
+ base::ProcessId pid, GpuMemoryManager* memory_manager) :
greggman 2012/08/10 01:23:26 style: Constructor() : field1(value1),
ccameron 2012/08/10 18:13:38 Done.
+ pid_(pid),
+ size_(0),
+ memory_manager_(memory_manager) {
+ memory_manager_->AddTrackingGroup(this);
+ }
+ ~GpuMemoryTrackingGroup() {
+ memory_manager_->RemoveTrackingGroup(this);
+ }
+ void TrackMemoryAllocatedChange(size_t old_size, size_t new_size) {
+ if (old_size < new_size) {
+ size_t delta = new_size - old_size;
+ size_ += delta;
+ }
+ if (new_size < old_size) {
+ size_t delta = old_size - new_size;
+ DCHECK(size_ >= delta);
+ size_ -= delta;
+ }
+ memory_manager_->TrackMemoryAllocatedChange(old_size, new_size);
+ }
+ base::ProcessId GetPid() const {
+ return pid_;
+ }
+ size_t GetSize() const {
+ return size_;
+ }
+
+ private:
+ base::ProcessId pid_;
+ size_t size_;
+ GpuMemoryManager* memory_manager_;
+};
+
#endif
#endif // CONTENT_COMMON_GPU_GPU_MEMORY_MANAGER_H_

Powered by Google App Engine
This is Rietveld 408576698