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

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

Issue 53633003: Do not give GPU memory to backgrounded compositors. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove test Created 7 years, 1 month 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
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 #include <list> 8 #include <list>
9 #include <map> 9 #include <map>
10 10
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 void SetClientsHibernatedState() const; 109 void SetClientsHibernatedState() const;
110 void AssignSurfacesAllocations(); 110 void AssignSurfacesAllocations();
111 void AssignNonSurfacesAllocations(); 111 void AssignNonSurfacesAllocations();
112 112
113 // Math helper function to compute the maximum value of cap such that 113 // Math helper function to compute the maximum value of cap such that
114 // sum_i min(bytes[i], cap) <= bytes_sum_limit 114 // sum_i min(bytes[i], cap) <= bytes_sum_limit
115 static uint64 ComputeCap(std::vector<uint64> bytes, uint64 bytes_sum_limit); 115 static uint64 ComputeCap(std::vector<uint64> bytes, uint64 bytes_sum_limit);
116 116
117 // Compute the allocation for clients when visible and not visible. 117 // Compute the allocation for clients when visible and not visible.
118 void ComputeVisibleSurfacesAllocations(); 118 void ComputeVisibleSurfacesAllocations();
119 void ComputeNonvisibleSurfacesAllocations();
120 void DistributeRemainingMemoryToVisibleSurfaces(); 119 void DistributeRemainingMemoryToVisibleSurfaces();
121 120
122 // Compute the budget for a client. Allow at most bytes_above_required_cap 121 // Compute the budget for a client. Allow at most bytes_above_required_cap
123 // bytes above client_state's required level. Allow at most 122 // bytes above client_state's required level. Allow at most
124 // bytes_above_minimum_cap bytes above client_state's minimum level. Allow 123 // bytes_above_minimum_cap bytes above client_state's minimum level. Allow
125 // at most bytes_overall_cap bytes total. 124 // at most bytes_overall_cap bytes total.
126 uint64 ComputeClientAllocationWhenVisible( 125 uint64 ComputeClientAllocationWhenVisible(
127 GpuMemoryManagerClientState* client_state, 126 GpuMemoryManagerClientState* client_state,
128 uint64 bytes_above_required_cap, 127 uint64 bytes_above_required_cap,
129 uint64 bytes_above_minimum_cap, 128 uint64 bytes_above_minimum_cap,
130 uint64 bytes_overall_cap); 129 uint64 bytes_overall_cap);
131 uint64 ComputeClientAllocationWhenNonvisible(
132 GpuMemoryManagerClientState* client_state);
133 130
134 // Update the amount of GPU memory we think we have in the system, based 131 // Update the amount of GPU memory we think we have in the system, based
135 // on what the stubs' contexts report. 132 // on what the stubs' contexts report.
136 void UpdateAvailableGpuMemory(); 133 void UpdateAvailableGpuMemory();
137 void UpdateUnmanagedMemoryLimits(); 134 void UpdateUnmanagedMemoryLimits();
138 135
139 // The amount of video memory which is available for allocation. 136 // The amount of video memory which is available for allocation.
140 uint64 GetAvailableGpuMemory() const; 137 uint64 GetAvailableGpuMemory() const;
141 138
142 // Minimum value of available GPU memory, no matter how little the GPU 139 // Minimum value of available GPU memory, no matter how little the GPU
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 222
226 base::CancelableClosure delayed_manage_callback_; 223 base::CancelableClosure delayed_manage_callback_;
227 bool manage_immediate_scheduled_; 224 bool manage_immediate_scheduled_;
228 225
229 uint64 max_surfaces_with_frontbuffer_soft_limit_; 226 uint64 max_surfaces_with_frontbuffer_soft_limit_;
230 227
231 // The maximum amount of memory that may be allocated for GPU resources 228 // The maximum amount of memory that may be allocated for GPU resources
232 uint64 bytes_available_gpu_memory_; 229 uint64 bytes_available_gpu_memory_;
233 bool bytes_available_gpu_memory_overridden_; 230 bool bytes_available_gpu_memory_overridden_;
234 231
235 // Whether or not clients can be allocated memory when nonvisible.
236 bool allow_nonvisible_memory_;
237
238 // The minimum and default allocations for a single client. 232 // The minimum and default allocations for a single client.
239 uint64 bytes_minimum_per_client_; 233 uint64 bytes_minimum_per_client_;
240 uint64 bytes_default_per_client_; 234 uint64 bytes_default_per_client_;
241 235
242 // The current total memory usage, and historical maximum memory usage 236 // The current total memory usage, and historical maximum memory usage
243 uint64 bytes_allocated_managed_current_; 237 uint64 bytes_allocated_managed_current_;
244 uint64 bytes_allocated_managed_visible_;
245 uint64 bytes_allocated_managed_nonvisible_;
246 uint64 bytes_allocated_unmanaged_current_; 238 uint64 bytes_allocated_unmanaged_current_;
247 uint64 bytes_allocated_historical_max_; 239 uint64 bytes_allocated_historical_max_;
248 240
249 // If bytes_allocated_unmanaged_current_ leaves the interval [low_, high_), 241 // If bytes_allocated_unmanaged_current_ leaves the interval [low_, high_),
250 // then ScheduleManage to take the change into account. 242 // then ScheduleManage to take the change into account.
251 uint64 bytes_allocated_unmanaged_high_; 243 uint64 bytes_allocated_unmanaged_high_;
252 uint64 bytes_allocated_unmanaged_low_; 244 uint64 bytes_allocated_unmanaged_low_;
253 245
254 // Update bytes_allocated_unmanaged_low/high_ in intervals of step_. 246 // Update bytes_allocated_unmanaged_low/high_ in intervals of step_.
255 uint64 bytes_unmanaged_limit_step_; 247 uint64 bytes_unmanaged_limit_step_;
256 248
257 // Used to disable automatic changes to Manage() in testing. 249 // Used to disable automatic changes to Manage() in testing.
258 bool disable_schedule_manage_; 250 bool disable_schedule_manage_;
259 251
260 DISALLOW_COPY_AND_ASSIGN(GpuMemoryManager); 252 DISALLOW_COPY_AND_ASSIGN(GpuMemoryManager);
261 }; 253 };
262 254
263 } // namespace content 255 } // namespace content
264 256
265 #endif // CONTENT_COMMON_GPU_GPU_MEMORY_MANAGER_H_ 257 #endif // CONTENT_COMMON_GPU_GPU_MEMORY_MANAGER_H_
OLDNEW
« no previous file with comments | « content/common/gpu/client/context_provider_command_buffer.cc ('k') | content/common/gpu/gpu_memory_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698