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

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: More trybot constructor fixes 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 void TrackMemoryAllocatedChange(size_t old_size, size_t new_size) = 0;
20
21 protected:
22 friend class base::RefCounted<MemoryTracker>;
23 MemoryTracker() {}
24 virtual ~MemoryTracker() {};
25
26 private:
27 DISALLOW_COPY_AND_ASSIGN(MemoryTracker);
28 };
29
30 // A MemoryTypeTracker tracks the use of a particular type of memory (buffer,
31 // texture, or renderbuffer) and forward the result to a specified
32 // MemoryTracker.
33 class MemoryTypeTracker {
34 public:
35 MemoryTypeTracker(
36 MemoryTracker* memory_tracker,
37 const char* trace_category,
38 const char* trace_name)
39 : memory_tracker_(memory_tracker),
40 trace_category_(trace_category),
41 trace_name_(trace_name),
42 has_updated_mem_represented_(false),
43 last_updated_mem_represented_(0) {
44 }
45
46 void UpdateMemRepresented(size_t mem_represented) {
47 if (!has_updated_mem_represented_ &&
48 mem_represented == last_updated_mem_represented_) {
49 return;
50 }
51 if (memory_tracker_) {
52 memory_tracker_->TrackMemoryAllocatedChange(
53 last_updated_mem_represented_,
54 mem_represented);
55 }
56 has_updated_mem_represented_ = true;
57 last_updated_mem_represented_ = mem_represented;
58 TRACE_COUNTER_ID1(trace_category_,
59 trace_name_,
60 memory_tracker_,
61 last_updated_mem_represented_);
62 }
63
64 private:
65 MemoryTracker* memory_tracker_;
66 const char* trace_category_;
67 const char* trace_name_;
68 bool has_updated_mem_represented_;
69 size_t last_updated_mem_represented_;
70
71 DISALLOW_COPY_AND_ASSIGN(MemoryTypeTracker);
72 };
73
74 } // namespace gles2
75 } // namespace gpu
76
77 #endif // GPU_COMMAND_BUFFER_SERVICE_MEMORY_TRACKING_H_
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc ('k') | gpu/command_buffer/service/renderbuffer_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698