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

Side by Side Diff: gpu/command_buffer/service/memory_tracking.h

Issue 10796096: Add tracing of all memory allocated in all contexts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add global memory usage tracking 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef GPU_COMMAND_BUFFER_SERVICE_MEMORY_TRACKING_H_
6 #define GPU_COMMAND_BUFFER_SERVICE_MEMORY_TRACKING_H_
7
8 #include <string>
9 #include "base/basictypes.h"
10 #include "base/debug/trace_event.h"
11
12 namespace gpu {
13 namespace gles2 {
14
15 // A MemoryTracker is used to propagate per-ContextGroup memory usage
16 // statistics to the global GpuMemoryManager.
17 class MemoryTracker : public base::RefCounted<MemoryTracker> {
18 public:
19 virtual ~MemoryTracker() {};
20 virtual void TrackMemoryAllocatedChange(size_t old_size, size_t new_size) = 0;
21 };
22
23 // A MemoryTypeTracker tracks the use of a particular type of memory (buffer,
24 // texture, or renderbuffer) and forward the result to a specified
25 // MemoryTracker.
26 class MemoryTypeTracker {
27 public:
28 MemoryTypeTracker(
29 MemoryTracker* memory_tracker,
30 const char* trace_category,
31 const char* trace_name)
32 : memory_tracker_(memory_tracker),
33 trace_category_(trace_category),
34 trace_name_(trace_name),
35 has_updated_mem_represented_(false),
36 last_updated_mem_represented_(0) {
37 }
38
39 void UpdateMemRepresented(size_t mem_represented) {
40 if (!has_updated_mem_represented_ &&
41 mem_represented == last_updated_mem_represented_) {
42 return;
43 }
44 if (memory_tracker_) {
45 memory_tracker_->TrackMemoryAllocatedChange(
46 last_updated_mem_represented_,
47 mem_represented);
48 }
49 has_updated_mem_represented_ = true;
50 last_updated_mem_represented_ = mem_represented;
51 TRACE_COUNTER_ID1(trace_category_,
52 trace_name_,
53 memory_tracker_ ? memory_tracker_ : this,
54 last_updated_mem_represented_);
55 }
56
57 private:
58 MemoryTracker* memory_tracker_;
greggman 2012/07/27 19:39:43 style: indenting. 2 spaces not 3
ccameron 2012/07/27 20:14:34 Done.
59 const char* trace_category_;
60 const char* trace_name_;
61 bool has_updated_mem_represented_;
62 size_t last_updated_mem_represented_;
63 };
greggman 2012/07/27 19:39:43 DISALLOW_COPY_AND_ASSIGN(MemoryTypeTracker); ?
ccameron 2012/07/27 20:14:34 Done. Added this to MemoryTracker and GpuCommandB
64
65 } // namespace gles2
66 } // namespace gpu
67
68 #endif // GPU_COMMAND_BUFFER_SERVICE_MEMORY_TRACKING_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698