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 0190c4494523862f50c10f64a70db8fd7523d37e..03c37cbe2f6ea735343467763d4fe47fc2814c8e 100644 |
--- a/gpu/command_buffer/service/renderbuffer_manager.cc |
+++ b/gpu/command_buffer/service/renderbuffer_manager.cc |
@@ -17,11 +17,13 @@ namespace gles2 { |
RenderbufferManager::RenderbufferManager( |
MemoryTracker* memory_tracker, |
GLint max_renderbuffer_size, |
- GLint max_samples) |
+ GLint max_samples, |
+ bool depth24_supported) |
: memory_tracker_( |
new MemoryTypeTracker(memory_tracker, MemoryTracker::kUnmanaged)), |
max_renderbuffer_size_(max_renderbuffer_size), |
max_samples_(max_samples), |
+ depth24_supported_(depth24_supported), |
num_uncleared_renderbuffers_(0), |
renderbuffer_count_(0), |
have_context_(true) { |
@@ -38,7 +40,7 @@ RenderbufferManager::~RenderbufferManager() { |
size_t Renderbuffer::EstimatedSize() { |
uint32 size = 0; |
- RenderbufferManager::ComputeEstimatedRenderbufferSize( |
+ manager_->ComputeEstimatedRenderbufferSize( |
width_, height_, samples_, internal_format_, &size); |
return size; |
} |
@@ -149,8 +151,11 @@ void RenderbufferManager::RemoveRenderbuffer(GLuint client_id) { |
} |
} |
-bool RenderbufferManager::ComputeEstimatedRenderbufferSize( |
- int width, int height, int samples, int internal_format, uint32* size) { |
+bool RenderbufferManager::ComputeEstimatedRenderbufferSize(int width, |
+ int height, |
+ int samples, |
+ int internal_format, |
+ uint32* size) const { |
DCHECK(size); |
uint32 temp = 0; |
@@ -170,7 +175,7 @@ bool RenderbufferManager::ComputeEstimatedRenderbufferSize( |
} |
GLenum RenderbufferManager::InternalRenderbufferFormatToImplFormat( |
- GLenum impl_format) { |
+ GLenum impl_format) const { |
if (gfx::GetGLImplementation() != gfx::kGLImplementationEGLGLES2) { |
switch (impl_format) { |
case GL_DEPTH_COMPONENT16: |
@@ -181,6 +186,10 @@ GLenum RenderbufferManager::InternalRenderbufferFormatToImplFormat( |
case GL_RGB565: |
return GL_RGB; |
} |
+ } else { |
+ // Upgrade 16-bit depth to 24-bit if possible. |
+ if (impl_format == GL_DEPTH_COMPONENT16 && depth24_supported_) |
+ return GL_DEPTH_COMPONENT24; |
} |
return impl_format; |
} |