Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4399)

Unified Diff: cc/trees/layer_tree_host_impl.cc

Issue 2035913002: Prevent use of GPU IDC in Resourceless Software Draw (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: feedback Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/test/pixel_test.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..7ac8d14d525ab32f42a2b29c9029bd7132a61ff3 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_, nullptr,
+ 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_);
« no previous file with comments | « cc/test/pixel_test.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698