diff --git a/flow/layers/clip_shape_layer.h b/flow/layers/clip_shape_layer.h index e4594f8e2eafc..85f6b4393dada 100644 --- a/flow/layers/clip_shape_layer.h +++ b/flow/layers/clip_shape_layer.h @@ -8,7 +8,6 @@ #include "flutter/flow/layers/cacheable_layer.h" #include "flutter/flow/layers/container_layer.h" #include "flutter/flow/paint_utils.h" -#include "flutter/flow/raster_cache_util.h" namespace flutter { @@ -51,9 +50,6 @@ class ClipShapeLayer : public CacheableContainerLayer { context->cull_rect.setEmpty(); } SkMatrix child_matrix = matrix; - if (context->raster_cache && uses_save_layer) { - child_matrix = RasterCacheUtil::GetIntegralTransCTM(child_matrix); - } // We can use the raster_cache for children only when the use_save_layer is // true so if use_save_layer is false we pass the layer_raster_item is // nullptr which mean we don't do raster cache logic. diff --git a/flow/layers/color_filter_layer.cc b/flow/layers/color_filter_layer.cc index 91d2527f8bbbc..5b2181f014f9a 100644 --- a/flow/layers/color_filter_layer.cc +++ b/flow/layers/color_filter_layer.cc @@ -42,9 +42,6 @@ void ColorFilterLayer::Preroll(PrerollContext* context, Layer::AutoPrerollSaveLayerState save = Layer::AutoPrerollSaveLayerState::Create(context); SkMatrix child_matrix = matrix; - if (context->raster_cache) { - child_matrix = RasterCacheUtil::GetIntegralTransCTM(child_matrix); - } AutoCache cache = AutoCache(layer_raster_cache_item_.get(), context, child_matrix); diff --git a/flow/layers/display_list_layer.cc b/flow/layers/display_list_layer.cc index b5fbe9ce1b521..d37bbaf7eac0c 100644 --- a/flow/layers/display_list_layer.cc +++ b/flow/layers/display_list_layer.cc @@ -100,9 +100,6 @@ void DisplayListLayer::Preroll(PrerollContext* context, TRACE_EVENT0("flutter", "DisplayListLayer::Preroll"); DisplayList* disp_list = display_list(); SkMatrix child_matrix = matrix; - if (context->raster_cache) { - child_matrix = RasterCacheUtil::GetIntegralTransCTM(child_matrix); - } AutoCache cache = AutoCache(display_list_raster_cache_item_.get(), context, child_matrix); diff --git a/flow/layers/image_filter_layer.cc b/flow/layers/image_filter_layer.cc index a6b62d4e76a02..249d74a2450cc 100644 --- a/flow/layers/image_filter_layer.cc +++ b/flow/layers/image_filter_layer.cc @@ -53,9 +53,6 @@ void ImageFilterLayer::Preroll(PrerollContext* context, Layer::AutoPrerollSaveLayerState save = Layer::AutoPrerollSaveLayerState::Create(context); SkMatrix child_matrix = matrix; - if (context->raster_cache) { - child_matrix = RasterCacheUtil::GetIntegralTransCTM(child_matrix); - } AutoCache cache = AutoCache(layer_raster_cache_item_.get(), context, child_matrix); diff --git a/flow/layers/layer_raster_cache_item.cc b/flow/layers/layer_raster_cache_item.cc index d5ddc17224b5a..63c2ef70be774 100644 --- a/flow/layers/layer_raster_cache_item.cc +++ b/flow/layers/layer_raster_cache_item.cc @@ -5,6 +5,7 @@ #include "flutter/flow/layers/layer_raster_cache_item.h" #include "flutter/flow/layers/container_layer.h" #include "flutter/flow/raster_cache_item.h" +#include "flutter/flow/raster_cache_util.h" namespace flutter { diff --git a/flow/layers/opacity_layer.cc b/flow/layers/opacity_layer.cc index 155c20e8733cf..6ee0db3187d61 100644 --- a/flow/layers/opacity_layer.cc +++ b/flow/layers/opacity_layer.cc @@ -42,9 +42,6 @@ void OpacityLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { SkMatrix child_matrix = matrix; child_matrix.preTranslate(offset_.fX, offset_.fY); - if (context->raster_cache) { - child_matrix = RasterCacheUtil::GetIntegralTransCTM(child_matrix); - } // Similar to what's done in TransformLayer::Preroll, we have to apply the // reverse transformation to the cull rect to properly cull child layers. diff --git a/flow/layers/shader_mask_layer.cc b/flow/layers/shader_mask_layer.cc index 21e056f3584ed..61d83fe69fd51 100644 --- a/flow/layers/shader_mask_layer.cc +++ b/flow/layers/shader_mask_layer.cc @@ -39,10 +39,6 @@ void ShaderMaskLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { Layer::AutoPrerollSaveLayerState save = Layer::AutoPrerollSaveLayerState::Create(context); SkMatrix child_matrix = matrix; - if (context->raster_cache) { - child_matrix = RasterCacheUtil::GetIntegralTransCTM(child_matrix); - } - AutoCache cache = AutoCache(layer_raster_cache_item_.get(), context, child_matrix); diff --git a/flow/raster_cache.cc b/flow/raster_cache.cc index d3487de6d1a41..21183da293c4b 100644 --- a/flow/raster_cache.cc +++ b/flow/raster_cache.cc @@ -32,8 +32,9 @@ void RasterCacheResult::draw(SkCanvas& canvas, const SkPaint* paint) const { TRACE_EVENT0("flutter", "RasterCacheResult::draw"); SkAutoCanvasRestore auto_restore(&canvas, true); - SkRect bounds = RasterCacheUtil::GetRoundedOutDeviceBounds( - logical_rect_, canvas.getTotalMatrix()); + auto matrix = RasterCacheUtil::GetIntegralTransCTM(canvas.getTotalMatrix()); + SkRect bounds = + RasterCacheUtil::GetRoundedOutDeviceBounds(logical_rect_, matrix); FML_DCHECK(std::abs(bounds.width() - image_->dimensions().width()) <= 1 && std::abs(bounds.height() - image_->dimensions().height()) <= 1); canvas.resetMatrix(); @@ -55,9 +56,9 @@ std::unique_ptr RasterCache::Rasterize( const std::function& draw_checkerboard) const { TRACE_EVENT0("flutter", "RasterCachePopulate"); - - SkRect dest_rect = RasterCacheUtil::GetRoundedOutDeviceBounds( - context.logical_rect, context.matrix); + auto matrix = RasterCacheUtil::GetIntegralTransCTM(context.matrix); + SkRect dest_rect = + RasterCacheUtil::GetRoundedOutDeviceBounds(context.logical_rect, matrix); const SkImageInfo image_info = SkImageInfo::MakeN32Premul(dest_rect.width(), dest_rect.height(), @@ -75,7 +76,7 @@ std::unique_ptr RasterCache::Rasterize( SkCanvas* canvas = surface->getCanvas(); canvas->clear(SK_ColorTRANSPARENT); canvas->translate(-dest_rect.left(), -dest_rect.top()); - canvas->concat(context.matrix); + canvas->concat(matrix); draw_function(canvas); if (checkerboard_images_) { @@ -113,8 +114,7 @@ bool RasterCache::UpdateCacheEntry( int RasterCache::MarkSeen(const RasterCacheKeyID& id, const SkMatrix& matrix, bool visible) const { - RasterCacheKey key = - RasterCacheKey(id, RasterCacheUtil::GetIntegralTransCTM(matrix)); + RasterCacheKey key = RasterCacheKey(id, matrix); Entry& entry = cache_[key]; entry.encountered_this_frame = true; entry.visible_this_frame = visible; @@ -126,8 +126,7 @@ int RasterCache::MarkSeen(const RasterCacheKeyID& id, int RasterCache::GetAccessCount(const RasterCacheKeyID& id, const SkMatrix& matrix) const { - RasterCacheKey key = - RasterCacheKey(id, RasterCacheUtil::GetIntegralTransCTM(matrix)); + RasterCacheKey key = RasterCacheKey(id, matrix); auto entry = cache_.find(key); if (entry != cache_.cend()) { return entry->second.accesses_since_visible; @@ -137,8 +136,7 @@ int RasterCache::GetAccessCount(const RasterCacheKeyID& id, bool RasterCache::HasEntry(const RasterCacheKeyID& id, const SkMatrix& matrix) const { - RasterCacheKey key = - RasterCacheKey(id, RasterCacheUtil::GetIntegralTransCTM(matrix)); + RasterCacheKey key = RasterCacheKey(id, matrix); if (cache_.find(key) != cache_.cend()) { return true; } @@ -148,8 +146,7 @@ bool RasterCache::HasEntry(const RasterCacheKeyID& id, bool RasterCache::Draw(const RasterCacheKeyID& id, SkCanvas& canvas, const SkPaint* paint) const { - auto it = cache_.find(RasterCacheKey( - id, RasterCacheUtil::GetIntegralTransCTM(canvas.getTotalMatrix()))); + auto it = cache_.find(RasterCacheKey(id, canvas.getTotalMatrix())); if (it == cache_.end()) { return false; } diff --git a/flow/testing/mock_layer.cc b/flow/testing/mock_layer.cc index fb89a8e3a0c1e..755944cbe14fa 100644 --- a/flow/testing/mock_layer.cc +++ b/flow/testing/mock_layer.cc @@ -66,10 +66,6 @@ void MockCacheableContainerLayer::Preroll(PrerollContext* context, Layer::AutoPrerollSaveLayerState save = Layer::AutoPrerollSaveLayerState::Create(context); SkMatrix child_matrix = matrix; - if (context->raster_cache) { - child_matrix = RasterCacheUtil::GetIntegralTransCTM(child_matrix); - } - auto cache = AutoCache(layer_raster_cache_item_.get(), context, child_matrix); ContainerLayer::Preroll(context, child_matrix); @@ -80,9 +76,6 @@ void MockCacheableLayer::Preroll(PrerollContext* context, Layer::AutoPrerollSaveLayerState save = Layer::AutoPrerollSaveLayerState::Create(context); SkMatrix child_matrix = matrix; - if (context->raster_cache) { - child_matrix = RasterCacheUtil::GetIntegralTransCTM(child_matrix); - } auto cache = AutoCache(raster_cache_item_.get(), context, child_matrix); MockLayer::Preroll(context, child_matrix);