From 5dd7399b21db98740635b482d3f598b7732e171b Mon Sep 17 00:00:00 2001 From: Jim Graham Date: Sun, 22 Nov 2020 17:21:36 -0800 Subject: [PATCH 1/2] Request quickReject results from correct drawing canvas --- flow/layers/layer.h | 2 +- flow/raster_cache.cc | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/flow/layers/layer.h b/flow/layers/layer.h index 4ab93ce86903e..7715d5e256967 100644 --- a/flow/layers/layer.h +++ b/flow/layers/layer.h @@ -195,7 +195,7 @@ class Layer { if (paint_bounds_.isEmpty()) { return false; } - return !context.internal_nodes_canvas->quickReject(paint_bounds_); + return !context.leaf_nodes_canvas->quickReject(paint_bounds_); } uint64_t unique_id() const { return unique_id_; } diff --git a/flow/raster_cache.cc b/flow/raster_cache.cc index b959438291112..bd228bc5e368e 100644 --- a/flow/raster_cache.cc +++ b/flow/raster_cache.cc @@ -158,6 +158,7 @@ std::unique_ptr RasterCache::RasterizeLayer( SkISize canvas_size = canvas->getBaseLayerSize(); SkNWayCanvas internal_nodes_canvas(canvas_size.width(), canvas_size.height()); + internal_nodes_canvas.setMatrix(canvas->getTotalMatrix()); internal_nodes_canvas.addCanvas(canvas); Layer::PaintContext paintContext = { /* internal_nodes_canvas= */ static_cast( From 8503f1a223829a31baa48bdab01e2c87685172ab Mon Sep 17 00:00:00 2001 From: Jim Graham Date: Mon, 23 Nov 2020 23:06:45 -0800 Subject: [PATCH 2/2] Fix MockCanvas clipping so tests will work with new culling --- testing/mock_canvas.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/testing/mock_canvas.cc b/testing/mock_canvas.cc index 76da0a5eabed2..84e763449add6 100644 --- a/testing/mock_canvas.cc +++ b/testing/mock_canvas.cc @@ -148,6 +148,8 @@ void MockCanvas::onClipRect(const SkRect& rect, ClipEdgeStyle style) { draw_calls_.emplace_back( DrawCall{current_layer_, ClipRectData{rect, op, style}}); + // quickReject() is handled by base class and needs accurate clip information + SkCanvas::onClipRect(rect, op, style); } void MockCanvas::onClipRRect(const SkRRect& rrect, @@ -155,6 +157,8 @@ void MockCanvas::onClipRRect(const SkRRect& rrect, ClipEdgeStyle style) { draw_calls_.emplace_back( DrawCall{current_layer_, ClipRRectData{rrect, op, style}}); + // quickReject() is handled by base class and needs accurate clip information + SkCanvas::onClipRRect(rrect, op, style); } void MockCanvas::onClipPath(const SkPath& path, @@ -162,6 +166,8 @@ void MockCanvas::onClipPath(const SkPath& path, ClipEdgeStyle style) { draw_calls_.emplace_back( DrawCall{current_layer_, ClipPathData{path, op, style}}); + // quickReject() is handled by base class and needs accurate clip information + SkCanvas::onClipPath(path, op, style); } bool MockCanvas::onDoSaveBehind(const SkRect*) {