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

Side by Side Diff: content/common/gpu/gpu_memory_manager.h

Issue 11516014: Track managed memory usage in the command buffer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix unit test compile error 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/common/gpu/gpu_command_buffer_stub.cc ('k') | content/common/gpu/gpu_memory_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_COMMON_GPU_GPU_MEMORY_MANAGER_H_ 5 #ifndef CONTENT_COMMON_GPU_GPU_MEMORY_MANAGER_H_
6 #define CONTENT_COMMON_GPU_GPU_MEMORY_MANAGER_H_ 6 #define CONTENT_COMMON_GPU_GPU_MEMORY_MANAGER_H_
7 7
8 #if defined(ENABLE_GPU) 8 #if defined(ENABLE_GPU)
9 9
10 #include <set> 10 #include <set>
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 void RemoveClient(GpuMemoryManagerClient* client); 70 void RemoveClient(GpuMemoryManagerClient* client);
71 void SetClientVisible(GpuMemoryManagerClient* client, bool visible); 71 void SetClientVisible(GpuMemoryManagerClient* client, bool visible);
72 void SetClientManagedMemoryStats(GpuMemoryManagerClient* client, 72 void SetClientManagedMemoryStats(GpuMemoryManagerClient* client,
73 const GpuManagedMemoryStats& stats); 73 const GpuManagedMemoryStats& stats);
74 74
75 // Add and remove structures to track context groups' memory consumption 75 // Add and remove structures to track context groups' memory consumption
76 void AddTrackingGroup(GpuMemoryTrackingGroup* tracking_group); 76 void AddTrackingGroup(GpuMemoryTrackingGroup* tracking_group);
77 void RemoveTrackingGroup(GpuMemoryTrackingGroup* tracking_group); 77 void RemoveTrackingGroup(GpuMemoryTrackingGroup* tracking_group);
78 78
79 // Track a change in memory allocated by any context 79 // Track a change in memory allocated by any context
80 void TrackMemoryAllocatedChange(size_t old_size, size_t new_size); 80 void TrackMemoryAllocatedChange(
81 size_t old_size,
82 size_t new_size,
83 gpu::gles2::MemoryTracker::Pool tracking_pool);
81 84
82 private: 85 private:
83 friend class GpuMemoryManagerTest; 86 friend class GpuMemoryManagerTest;
84 FRIEND_TEST_ALL_PREFIXES(GpuMemoryManagerTest, 87 FRIEND_TEST_ALL_PREFIXES(GpuMemoryManagerTest,
85 ComparatorTests); 88 ComparatorTests);
86 FRIEND_TEST_ALL_PREFIXES(GpuMemoryManagerTest, 89 FRIEND_TEST_ALL_PREFIXES(GpuMemoryManagerTest,
87 TestManageBasicFunctionality); 90 TestManageBasicFunctionality);
88 FRIEND_TEST_ALL_PREFIXES(GpuMemoryManagerTest, 91 FRIEND_TEST_ALL_PREFIXES(GpuMemoryManagerTest,
89 TestManageChangingVisibility); 92 TestManageChangingVisibility);
90 FRIEND_TEST_ALL_PREFIXES(GpuMemoryManagerTest, 93 FRIEND_TEST_ALL_PREFIXES(GpuMemoryManagerTest,
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 size_t GetMaximumTabAllocation() const; 171 size_t GetMaximumTabAllocation() const;
169 size_t GetMinimumTabAllocation() const; 172 size_t GetMinimumTabAllocation() const;
170 173
171 // Get a reasonable memory limit from a viewport's surface area. 174 // Get a reasonable memory limit from a viewport's surface area.
172 static size_t CalcAvailableFromViewportArea(int viewport_area); 175 static size_t CalcAvailableFromViewportArea(int viewport_area);
173 static size_t CalcAvailableFromGpuTotal(size_t total_gpu_memory); 176 static size_t CalcAvailableFromGpuTotal(size_t total_gpu_memory);
174 177
175 // Send memory usage stats to the browser process. 178 // Send memory usage stats to the browser process.
176 void SendUmaStatsToBrowser(); 179 void SendUmaStatsToBrowser();
177 180
181 // Get the current number of bytes allocated.
182 size_t GetCurrentUsage() const {
183 return bytes_allocated_managed_current_ +
184 bytes_allocated_unmanaged_current_;
185 }
186
178 // Interfaces for testing 187 // Interfaces for testing
179 void TestingSetClientVisible(GpuMemoryManagerClient* client, bool visible); 188 void TestingSetClientVisible(GpuMemoryManagerClient* client, bool visible);
180 void TestingSetClientLastUsedTime(GpuMemoryManagerClient* client, 189 void TestingSetClientLastUsedTime(GpuMemoryManagerClient* client,
181 base::TimeTicks last_used_time); 190 base::TimeTicks last_used_time);
182 void TestingSetClientHasSurface(GpuMemoryManagerClient* client, 191 void TestingSetClientHasSurface(GpuMemoryManagerClient* client,
183 bool has_surface); 192 bool has_surface);
184 bool TestingCompareClients(GpuMemoryManagerClient* lhs, 193 bool TestingCompareClients(GpuMemoryManagerClient* lhs,
185 GpuMemoryManagerClient* rhs) const; 194 GpuMemoryManagerClient* rhs) const;
186 void TestingDisableScheduleManage() { disable_schedule_manage_ = true; } 195 void TestingDisableScheduleManage() { disable_schedule_manage_ = true; }
187 void TestingSetAvailableGpuMemory(size_t bytes) { 196 void TestingSetAvailableGpuMemory(size_t bytes) {
(...skipping 21 matching lines...) Expand all
209 218
210 // The maximum amount of memory that may be allocated for GPU resources 219 // The maximum amount of memory that may be allocated for GPU resources
211 size_t bytes_available_gpu_memory_; 220 size_t bytes_available_gpu_memory_;
212 bool bytes_available_gpu_memory_overridden_; 221 bool bytes_available_gpu_memory_overridden_;
213 222
214 // The maximum amount of memory that can be allocated for GPU resources 223 // The maximum amount of memory that can be allocated for GPU resources
215 // in backgrounded renderers. 224 // in backgrounded renderers.
216 size_t bytes_backgrounded_available_gpu_memory_; 225 size_t bytes_backgrounded_available_gpu_memory_;
217 226
218 // The current total memory usage, and historical maximum memory usage 227 // The current total memory usage, and historical maximum memory usage
219 size_t bytes_allocated_current_; 228 size_t bytes_allocated_managed_current_;
220 size_t bytes_allocated_managed_visible_; 229 size_t bytes_allocated_managed_visible_;
221 size_t bytes_allocated_managed_backgrounded_; 230 size_t bytes_allocated_managed_backgrounded_;
231 size_t bytes_allocated_unmanaged_current_;
222 size_t bytes_allocated_historical_max_; 232 size_t bytes_allocated_historical_max_;
223 233
224 // The number of browser windows that exist. If we ever receive a 234 // The number of browser windows that exist. If we ever receive a
225 // GpuMsg_SetVideoMemoryWindowCount, then we use this to compute memory 235 // GpuMsg_SetVideoMemoryWindowCount, then we use this to compute memory
226 // budgets, instead of doing more complicated stub-based calculations. 236 // budgets, instead of doing more complicated stub-based calculations.
227 bool window_count_has_been_received_; 237 bool window_count_has_been_received_;
228 uint32 window_count_; 238 uint32 window_count_;
229 239
230 // Used to disable automatic changes to Manage() in testing. 240 // Used to disable automatic changes to Manage() in testing.
231 bool disable_schedule_manage_; 241 bool disable_schedule_manage_;
(...skipping 19 matching lines...) Expand all
251 // context is currently rendering on. Returns false if no extension exists 261 // context is currently rendering on. Returns false if no extension exists
252 // to get the exact amount of GPU memory. 262 // to get the exact amount of GPU memory.
253 virtual bool GetTotalGpuMemory(size_t* bytes) = 0; 263 virtual bool GetTotalGpuMemory(size_t* bytes) = 0;
254 }; 264 };
255 265
256 } // namespace content 266 } // namespace content
257 267
258 #endif 268 #endif
259 269
260 #endif // CONTENT_COMMON_GPU_GPU_MEMORY_MANAGER_H_ 270 #endif // CONTENT_COMMON_GPU_GPU_MEMORY_MANAGER_H_
OLDNEW
« no previous file with comments | « content/common/gpu/gpu_command_buffer_stub.cc ('k') | content/common/gpu/gpu_memory_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698