Index: cc/output/gl_renderer.cc |
diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc |
index 59bb170c17de233ad7fd41c17ec0818435a0048d..3d94eeba794fd795a122ffbb83ebee4ca6756355 100644 |
--- a/cc/output/gl_renderer.cc |
+++ b/cc/output/gl_renderer.cc |
@@ -429,6 +429,14 @@ bool GLRenderer::CanPartialSwap() { |
return context_provider->ContextCapabilities().post_sub_buffer; |
} |
+ResourceFormat GLRenderer::BackbufferFormat() const { |
+ if (output_surface_->IsHighBitDepth()) { |
+ if (resource_provider_->IsResourceFormatSupported(RGBA_F16)) |
+ return RGBA_F16; |
+ } |
+ return resource_provider_->best_texture_format(); |
+} |
+ |
void GLRenderer::DidChangeVisibility() { |
if (visible_) { |
output_surface_->EnsureBackbuffer(); |
@@ -907,7 +915,7 @@ std::unique_ptr<ScopedResource> GLRenderer::GetBackdropTexture( |
// CopyTexImage2D fails when called on a texture having immutable storage. |
device_background_texture->Allocate( |
bounding_rect.size(), ResourceProvider::TEXTURE_HINT_DEFAULT, |
- resource_provider_->best_texture_format(), frame->device_color_space); |
+ BackbufferFormat(), frame->device_color_space); |
{ |
ResourceProvider::ScopedWriteLockGL lock( |
resource_provider_, device_background_texture->id(), false); |