Chromium Code Reviews| Index: content/common/gpu/gpu_memory_manager.cc |
| diff --git a/content/common/gpu/gpu_memory_manager.cc b/content/common/gpu/gpu_memory_manager.cc |
| index 07a4d10782dc6521cfd449c9d0a82156ec00c0b6..3202e660297b59979e580e639d1a3dbe9bb5eece 100644 |
| --- a/content/common/gpu/gpu_memory_manager.cc |
| +++ b/content/common/gpu/gpu_memory_manager.cc |
| @@ -12,7 +12,6 @@ |
| #include "base/message_loop.h" |
| #include "base/process_util.h" |
| #include "base/string_number_conversions.h" |
| -#include "base/sys_info.h" |
| #include "content/common/gpu/gpu_channel_manager.h" |
| #include "content/common/gpu/gpu_memory_allocation.h" |
| #include "content/common/gpu/gpu_memory_manager_client.h" |
| @@ -151,26 +150,6 @@ uint64 GpuMemoryManager::GetMaximumClientAllocation() const { |
| #endif |
| } |
| -uint64 GpuMemoryManager::CalcAvailableFromViewportArea(int viewport_area) { |
| - // We can't query available GPU memory from the system on Android, but |
| - // 18X the viewport and 50% of the dalvik heap size give us a good |
| - // estimate of available GPU memory on a wide range of devices. |
| - const int kViewportMultiplier = 18; |
| - const unsigned int kComponentsPerPixel = 4; // GraphicsContext3D::RGBA |
| - const unsigned int kBytesPerComponent = 1; // sizeof(GC3Dubyte) |
| - uint64 viewport_limit = viewport_area * kViewportMultiplier * |
| - kComponentsPerPixel * |
| - kBytesPerComponent; |
| -#if !defined(OS_ANDROID) |
| - return viewport_limit; |
| -#else |
| - static uint64 dalvik_limit = 0; |
| - if (!dalvik_limit) |
| - dalvik_limit = (base::SysInfo::DalvikHeapSizeMB() / 2) * 1024 * 1024; |
| - return std::min(viewport_limit, dalvik_limit); |
| -#endif |
| -} |
| - |
| uint64 GpuMemoryManager::CalcAvailableFromGpuTotal(uint64 total_gpu_memory) { |
| // Allow Chrome to use 75% of total GPU memory, or all-but-64MB of GPU |
| // memory, whichever is less. |
| @@ -183,16 +162,10 @@ void GpuMemoryManager::UpdateAvailableGpuMemory() { |
| if (bytes_available_gpu_memory_overridden_) |
| return; |
| -#if defined(OS_ANDROID) |
| - // On Android we use the surface size, so this finds the largest visible |
| - // surface size instead of lowest gpu's limit. |
| - int max_surface_area = 0; |
| -#else |
| // On non-Android, we use an operating system query when possible. |
| // We do not have a reliable concept of multiple GPUs existing in |
| // a system, so just be safe and go with the minimum encountered. |
| uint64 bytes_min = 0; |
| -#endif |
| // Only use the clients that are visible, because otherwise the set of clients |
| // we are querying could become extremely large. |
| @@ -205,25 +178,21 @@ void GpuMemoryManager::UpdateAvailableGpuMemory() { |
| if (!client_state->visible_) |
| continue; |
| -#if defined(OS_ANDROID) |
| - gfx::Size surface_size = client_state->client_->GetSurfaceSize(); |
| - max_surface_area = std::max(max_surface_area, surface_size.width() * |
| - surface_size.height()); |
| -#else |
| uint64 bytes = 0; |
| if (client_state->client_->GetTotalGpuMemory(&bytes)) { |
| if (!bytes_min || bytes < bytes_min) |
| bytes_min = bytes; |
| } |
| -#endif |
| } |
| -#if defined(OS_ANDROID) |
| - bytes_available_gpu_memory_ = CalcAvailableFromViewportArea(max_surface_area); |
| -#else |
| if (!bytes_min) |
| return; |
| +#if defined(OS_ANDROID) |
| + // We don't need to reduce the total on Android, since |
|
ccameron
2013/02/12 01:56:23
Nit: can you put this #if inside CalcAvialbleFromG
|
| + // the total is an estimate to begin with. |
| + bytes_available_gpu_memory_ = bytes_min; |
| +#else |
| bytes_available_gpu_memory_ = CalcAvailableFromGpuTotal(bytes_min); |
| #endif |