| Index: gpu/command_buffer/service/renderbuffer_manager.cc | 
| diff --git a/gpu/command_buffer/service/renderbuffer_manager.cc b/gpu/command_buffer/service/renderbuffer_manager.cc | 
| index e842de14ac4befba972f10d4d6da88bd856c7305..f85f6c00263dc51f324aee9cf6c640447bf7d34d 100644 | 
| --- a/gpu/command_buffer/service/renderbuffer_manager.cc | 
| +++ b/gpu/command_buffer/service/renderbuffer_manager.cc | 
| @@ -9,6 +9,7 @@ | 
| #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 
| #include "gpu/command_buffer/service/gles2_cmd_decoder.h" | 
| #include "gpu/command_buffer/service/memory_tracking.h" | 
| +#include "ui/gl/gl_implementation.h" | 
|  | 
| namespace gpu { | 
| namespace gles2 { | 
| @@ -36,8 +37,10 @@ RenderbufferManager::~RenderbufferManager() { | 
| } | 
|  | 
| size_t RenderbufferManager::RenderbufferInfo::EstimatedSize() { | 
| -  return width_ * height_ * samples_ * | 
| -         GLES2Util::RenderbufferBytesPerPixel(internal_format_); | 
| +  uint32 size = 0; | 
| +  RenderbufferManager::ComputeEstimatedRenderbufferSize( | 
| +      width_, height_, samples_, internal_format_, &size); | 
| +  return size; | 
| } | 
|  | 
| void RenderbufferManager::RenderbufferInfo::AddToSignature( | 
| @@ -143,6 +146,42 @@ bool RenderbufferManager::GetClientId( | 
| return false; | 
| } | 
|  | 
| +bool RenderbufferManager::ComputeEstimatedRenderbufferSize( | 
| +    int width, int height, int samples, int internal_format, uint32* size) { | 
| +  DCHECK(size); | 
| + | 
| +  uint32 temp = 0; | 
| +  if (!SafeMultiplyUint32(width, height, &temp)) { | 
| +    return false; | 
| +  } | 
| +  if (!SafeMultiplyUint32(temp, samples, &temp)) { | 
| +    return false; | 
| +  } | 
| +  GLenum impl_format = InternalRenderbufferFormatToImplFormat(internal_format); | 
| +  if (!SafeMultiplyUint32( | 
| +      temp, GLES2Util::RenderbufferBytesPerPixel(impl_format), &temp)) { | 
| +    return false; | 
| +  } | 
| +  *size = temp; | 
| +  return true; | 
| +} | 
| + | 
| +GLenum RenderbufferManager::InternalRenderbufferFormatToImplFormat( | 
| +    GLenum impl_format) { | 
| +  if (gfx::GetGLImplementation() != gfx::kGLImplementationEGLGLES2) { | 
| +    switch (impl_format) { | 
| +      case GL_DEPTH_COMPONENT16: | 
| +        return GL_DEPTH_COMPONENT; | 
| +      case GL_RGBA4: | 
| +      case GL_RGB5_A1: | 
| +        return GL_RGBA; | 
| +      case GL_RGB565: | 
| +        return GL_RGB; | 
| +    } | 
| +  } | 
| +  return impl_format; | 
| +} | 
| + | 
| }  // namespace gles2 | 
| }  // namespace gpu | 
|  | 
|  |