Index: cc/output/gl_renderer.cc |
diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc |
index 0bb2d6966970448c181df25965fdef3e3753383f..02f51d35b7a3a25094891e5a0d472ec964c53ec1 100644 |
--- a/cc/output/gl_renderer.cc |
+++ b/cc/output/gl_renderer.cc |
@@ -886,14 +886,14 @@ gfx::Rect GLRenderer::GetBackdropBoundingBoxForRenderPassQuad( |
} |
std::unique_ptr<ScopedResource> GLRenderer::GetBackdropTexture( |
+ DrawingFrame* frame, |
const gfx::Rect& bounding_rect) { |
std::unique_ptr<ScopedResource> device_background_texture = |
ScopedResource::Create(resource_provider_); |
// 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(), |
- output_surface_->device_color_space()); |
+ device_background_texture->Allocate( |
+ bounding_rect.size(), ResourceProvider::TEXTURE_HINT_DEFAULT, |
+ resource_provider_->best_texture_format(), frame->device_color_space); |
{ |
ResourceProvider::ScopedWriteLockGL lock( |
resource_provider_, device_background_texture->id(), false); |
@@ -1038,7 +1038,7 @@ void GLRenderer::DrawRenderPassQuad(DrawingFrame* frame, |
// RGBA_8888 here is arbitrary and unused. |
Resource tile_resource(tile_quad->resource_id(), tile_quad->texture_size, |
ResourceFormat::RGBA_8888, |
- output_surface_->device_color_space()); |
+ frame->device_color_space); |
// The projection matrix used by GLRenderer has a flip. As tile texture |
// inputs are oriented opposite to framebuffer outputs, don't flip via |
// texture coords and let the projection matrix naturallyd o it. |
@@ -1144,7 +1144,8 @@ void GLRenderer::UpdateRPDQShadersForBlending( |
// This function allocates a texture, which should contribute to the |
// amount of memory used by render surfaces: |
// LayerTreeHost::CalculateMemoryForRenderSurfaces. |
- params->background_texture = GetBackdropTexture(params->background_rect); |
+ params->background_texture = |
+ GetBackdropTexture(params->frame, params->background_rect); |
if (ShouldApplyBackgroundFilters(quad) && params->background_texture) { |
// Apply the background filters to R, so that it is applied in the |
@@ -2398,7 +2399,7 @@ void GLRenderer::DrawYUVVideoQuad(const DrawingFrame* frame, |
if (lut_texture_location != -1) { |
unsigned int lut_texture = color_lut_cache_.GetLUT( |
- quad->video_color_space, output_surface_->device_color_space(), 32); |
+ quad->video_color_space, frame->device_color_space, 32); |
gl_->ActiveTexture(GL_TEXTURE5); |
gl_->BindTexture(GL_TEXTURE_2D, lut_texture); |
gl_->Uniform1i(lut_texture_location, 5); |
@@ -2890,14 +2891,16 @@ void GLRenderer::SwapBuffers(std::vector<ui::LatencyInfo> latency_info) { |
TRACE_EVENT0("cc,benchmark", "GLRenderer::SwapBuffers"); |
// We're done! Time to swapbuffers! |
+ gfx::Size surface_size = surface_size_for_swap_buffers(); |
+ |
OutputSurfaceFrame output_frame; |
output_frame.latency_info = std::move(latency_info); |
- output_frame.size = surface_size_for_swap_buffers_; |
+ output_frame.size = surface_size; |
if (use_partial_swap_) { |
// If supported, we can save significant bandwidth by only swapping the |
// damaged/scissored region (clamped to the viewport). |
- swap_buffer_rect_.Intersect(gfx::Rect(surface_size_for_swap_buffers_)); |
- int flipped_y_pos_of_rect_bottom = surface_size_for_swap_buffers_.height() - |
+ swap_buffer_rect_.Intersect(gfx::Rect(surface_size)); |
+ int flipped_y_pos_of_rect_bottom = surface_size.height() - |
swap_buffer_rect_.y() - |
swap_buffer_rect_.height(); |
output_frame.sub_buffer_rect = |
@@ -2909,7 +2912,7 @@ void GLRenderer::SwapBuffers(std::vector<ui::LatencyInfo> latency_info) { |
// Expand the swap rect to the full surface unless it's empty, and empty |
// swap is allowed. |
if (!swap_buffer_rect_.IsEmpty() || !allow_empty_swap_) { |
- swap_buffer_rect_ = gfx::Rect(surface_size_for_swap_buffers_); |
+ swap_buffer_rect_ = gfx::Rect(surface_size); |
} |
output_frame.sub_buffer_rect = swap_buffer_rect_; |
} |
@@ -3913,7 +3916,7 @@ void GLRenderer::CopyRenderPassDrawQuadToOverlayResource( |
*resource = overlay_resource_pool_->AcquireResource( |
gfx::Size(iosurface_width, iosurface_height), ResourceFormat::RGBA_8888, |
- output_surface_->device_color_space()); |
+ external_frame->device_color_space); |
*new_bounds = |
gfx::RectF(updated_dst_rect.x(), updated_dst_rect.y(), |
(*resource)->size().width(), (*resource)->size().height()); |