| Index: cc/surfaces/display.cc
|
| diff --git a/cc/surfaces/display.cc b/cc/surfaces/display.cc
|
| index e4ad249b3f0f76a8b34993a821d85e2b2dc58bc3..04566734f210ffebc20fd50042acb877f0eba590 100644
|
| --- a/cc/surfaces/display.cc
|
| +++ b/cc/surfaces/display.cc
|
| @@ -182,10 +182,10 @@ void Display::InitializeRenderer() {
|
| #endif
|
| } else {
|
| std::unique_ptr<SoftwareRenderer> renderer = SoftwareRenderer::Create(
|
| - this, &settings_, output_surface_.get(), resource_provider.get(),
|
| - true /* use_image_hijack_canvas */);
|
| + this, &settings_, output_surface_.get(), resource_provider.get());
|
| if (!renderer)
|
| return;
|
| + software_renderer_ = renderer.get();
|
| renderer_ = std::move(renderer);
|
| }
|
|
|
| @@ -290,14 +290,22 @@ bool Display::DrawAndSwap() {
|
| gfx::Rect device_viewport_rect = gfx::Rect(current_surface_size_);
|
| gfx::Rect device_clip_rect =
|
| external_clip_.IsEmpty() ? device_viewport_rect : external_clip_;
|
| - bool disable_picture_quad_image_filtering = false;
|
| +
|
| + bool disable_image_filtering =
|
| + frame.metadata.is_resourceless_software_draw_with_scroll_or_animation;
|
| + if (software_renderer_) {
|
| + software_renderer_->SetDisablePictureQuadImageFiltering(
|
| + disable_image_filtering);
|
| + } else {
|
| + // This should only be set for software draws in synchronous compositor.
|
| + DCHECK(!disable_image_filtering);
|
| + }
|
|
|
| renderer_->DecideRenderPassAllocationsForFrame(
|
| frame_data->render_pass_list);
|
| renderer_->DrawFrame(&frame_data->render_pass_list, device_scale_factor_,
|
| device_color_space_, device_viewport_rect,
|
| - device_clip_rect,
|
| - disable_picture_quad_image_filtering);
|
| + device_clip_rect);
|
| } else {
|
| TRACE_EVENT_INSTANT0("cc", "Draw skipped.", TRACE_EVENT_SCOPE_THREAD);
|
| }
|
|
|