Chromium Code Reviews| Index: cc/trees/layer_tree_host_impl.cc |
| diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
| index 9dc595251f72e45828f9fc5568e58ac1ee0c4aab..e60e402369e4734b527e120276e17b5fb18cdb20 100644 |
| --- a/cc/trees/layer_tree_host_impl.cc |
| +++ b/cc/trees/layer_tree_host_impl.cc |
| @@ -1684,9 +1684,15 @@ void LayerTreeHostImpl::DrawLayers(FrameData* frame) { |
| bool disable_picture_quad_image_filtering = |
| IsActivelyScrolling() || animation_host_->NeedsAnimateLayers(); |
| + // We must disable the image hijack canvas when using GPU rasterization but |
| + // performing a resourceless software draw. Otherwise, we will attempt to |
| + // use the GPU ImageDecodeController during software raster. |
| + bool use_image_hijack_canvas = !use_gpu_rasterization_; |
| + |
| std::unique_ptr<SoftwareRenderer> temp_software_renderer = |
| SoftwareRenderer::Create(this, &settings_.renderer_settings, |
| - output_surface_, NULL); |
| + output_surface_, NULL, |
|
vmpstr
2016/06/02 19:57:47
nit: nullptr while here.
ericrk
2016/06/02 20:45:36
Done.
|
| + use_image_hijack_canvas); |
| temp_software_renderer->DrawFrame( |
| &frame->render_passes, active_tree_->device_scale_factor(), |
| DeviceViewport(), DeviceClip(), disable_picture_quad_image_filtering); |
| @@ -2155,9 +2161,9 @@ void LayerTreeHostImpl::CreateAndSetRenderer() { |
| resource_provider_.get(), texture_mailbox_deleter_.get(), |
| settings_.renderer_settings.highp_threshold_min); |
| } else if (output_surface_->software_device()) { |
| - renderer_ = |
| - SoftwareRenderer::Create(this, &settings_.renderer_settings, |
| - output_surface_, resource_provider_.get()); |
| + renderer_ = SoftwareRenderer::Create( |
| + this, &settings_.renderer_settings, output_surface_, |
| + resource_provider_.get(), true /* use_image_hijack_canvas */); |
| } |
| DCHECK(renderer_); |