Revert "[Impeller] Avoid inserting additional save layers based on clip configuration. (#43759)"

This reverts commit 0ec9cc8997ee0c0b7216707c5e08901212ac0532.
diff --git a/flow/compositor_context.cc b/flow/compositor_context.cc
index 2c7593c..446cf96 100644
--- a/flow/compositor_context.cc
+++ b/flow/compositor_context.cc
@@ -13,14 +13,13 @@
 
 std::optional<SkRect> FrameDamage::ComputeClipRect(
     flutter::LayerTree& layer_tree,
-    bool has_raster_cache,
-    bool impeller_enabled) {
+    bool has_raster_cache) {
   if (layer_tree.root_layer()) {
     PaintRegionMap empty_paint_region_map;
     DiffContext context(layer_tree.frame_size(), layer_tree.paint_region_map(),
                         prev_layer_tree_ ? prev_layer_tree_->paint_region_map()
                                          : empty_paint_region_map,
-                        has_raster_cache, impeller_enabled);
+                        has_raster_cache);
     context.PushCullRect(SkRect::MakeIWH(layer_tree.frame_size().width(),
                                          layer_tree.frame_size().height()));
     {
@@ -122,8 +121,7 @@
 
   std::optional<SkRect> clip_rect;
   if (frame_damage) {
-    clip_rect = frame_damage->ComputeClipRect(layer_tree, !ignore_raster_cache,
-                                              !gr_context_);
+    clip_rect = frame_damage->ComputeClipRect(layer_tree, !ignore_raster_cache);
 
     if (aiks_context_ &&
         !ShouldPerformPartialRepaint(clip_rect, layer_tree.frame_size())) {
diff --git a/flow/compositor_context.h b/flow/compositor_context.h
index 04bb29a..e458aa6 100644
--- a/flow/compositor_context.h
+++ b/flow/compositor_context.h
@@ -84,8 +84,7 @@
   // but the paint region of layer_tree will be calculated so that it can be
   // used for diffing of subsequent frames.
   std::optional<SkRect> ComputeClipRect(flutter::LayerTree& layer_tree,
-                                        bool has_raster_cache,
-                                        bool impeller_enabled);
+                                        bool has_raster_cache);
 
   // See Damage::frame_damage.
   std::optional<SkIRect> GetFrameDamage() const {
diff --git a/flow/diff_context.cc b/flow/diff_context.cc
index 612fe56..160b5c8 100644
--- a/flow/diff_context.cc
+++ b/flow/diff_context.cc
@@ -10,15 +10,13 @@
 DiffContext::DiffContext(SkISize frame_size,
                          PaintRegionMap& this_frame_paint_region_map,
                          const PaintRegionMap& last_frame_paint_region_map,
-                         bool has_raster_cache,
-                         bool impeller_enabled)
+                         bool has_raster_cache)
     : clip_tracker_(DisplayListMatrixClipTracker(kGiantRect, SkMatrix::I())),
       rects_(std::make_shared<std::vector<SkRect>>()),
       frame_size_(frame_size),
       this_frame_paint_region_map_(this_frame_paint_region_map),
       last_frame_paint_region_map_(last_frame_paint_region_map),
-      has_raster_cache_(has_raster_cache),
-      impeller_enabled_(impeller_enabled) {}
+      has_raster_cache_(has_raster_cache) {}
 
 void DiffContext::BeginSubtree() {
   state_stack_.push_back(state_);
diff --git a/flow/diff_context.h b/flow/diff_context.h
index 029fb49..e273fdb 100644
--- a/flow/diff_context.h
+++ b/flow/diff_context.h
@@ -46,8 +46,7 @@
   explicit DiffContext(SkISize frame_size,
                        PaintRegionMap& this_frame_paint_region_map,
                        const PaintRegionMap& last_frame_paint_region_map,
-                       bool has_raster_cache,
-                       bool impeller_enabled);
+                       bool has_raster_cache);
 
   // Starts a new subtree.
   void BeginSubtree();
@@ -162,8 +161,6 @@
   // cached.
   bool has_raster_cache() const { return has_raster_cache_; }
 
-  bool impeller_enabled() const { return impeller_enabled_; }
-
   class Statistics {
    public:
     // Picture replaced by different picture
@@ -248,7 +245,6 @@
   PaintRegionMap& this_frame_paint_region_map_;
   const PaintRegionMap& last_frame_paint_region_map_;
   bool has_raster_cache_;
-  bool impeller_enabled_;
 
   void AddDamage(const SkRect& rect);
 
diff --git a/flow/layers/clip_rrect_layer_unittests.cc b/flow/layers/clip_rrect_layer_unittests.cc
index 98d6493..1c3672d 100644
--- a/flow/layers/clip_rrect_layer_unittests.cc
+++ b/flow/layers/clip_rrect_layer_unittests.cc
@@ -595,51 +595,6 @@
   EXPECT_EQ(embedder.painted_views(), std::vector<int64_t>({view_id}));
 }
 
-TEST_F(ClipRRectLayerTest, AntiAliasWithSaveLayerIgnoresSaveLayerImpeller) {
-  enable_impeller();
-
-  auto path1 = SkPath().addRect({10, 10, 30, 30});
-  auto mock1 = MockLayer::MakeOpacityCompatible(path1);
-  auto path2 = SkPath().addRect({20, 20, 40, 40});
-  auto mock2 = MockLayer::MakeOpacityCompatible(path2);
-  auto children_bounds = path1.getBounds();
-  children_bounds.join(path2.getBounds());
-  SkRect clip_rect = SkRect::MakeWH(500, 500);
-  SkRRect clip_rrect = SkRRect::MakeRectXY(clip_rect, 20, 20);
-  auto clip_rrect_layer = std::make_shared<ClipRRectLayer>(
-      clip_rrect, Clip::antiAliasWithSaveLayer);
-  clip_rrect_layer->Add(mock1);
-  clip_rrect_layer->Add(mock2);
-
-  // ClipRectLayer will pass through compatibility from multiple
-  // non-overlapping compatible children
-  PrerollContext* context = preroll_context();
-  clip_rrect_layer->Preroll(context);
-  EXPECT_EQ(context->renderable_state_flags, 0);
-
-  DisplayListBuilder expected_builder;
-  /* OpacityLayer::Paint() */ {
-    expected_builder.Save();
-    {
-      /* ClipRectLayer::Paint() */ {
-        expected_builder.Save();
-        expected_builder.ClipRRect(clip_rrect, ClipOp::kIntersect, true);
-        /* child layer1 paint */ {
-          expected_builder.DrawPath(path1, DlPaint());
-        }
-        /* child layer2 paint */ {  //
-          expected_builder.DrawPath(path2, DlPaint());
-        }
-        // expected_builder.Restore();
-      }
-    }
-    expected_builder.Restore();
-  }
-
-  clip_rrect_layer->Paint(display_list_paint_context());
-  EXPECT_TRUE(DisplayListsEQ_Verbose(expected_builder.Build(), display_list()));
-}
-
 }  // namespace testing
 }  // namespace flutter
 
diff --git a/flow/layers/clip_shape_layer.h b/flow/layers/clip_shape_layer.h
index d332678..69c479f 100644
--- a/flow/layers/clip_shape_layer.h
+++ b/flow/layers/clip_shape_layer.h
@@ -32,8 +32,7 @@
         context->MarkSubtreeDirty(context->GetOldLayerPaintRegion(old_layer));
       }
     }
-    if (UsesSaveLayer(context->impeller_enabled()) &&
-        context->has_raster_cache()) {
+    if (UsesSaveLayer() && context->has_raster_cache()) {
       context->WillPaintWithIntegralTransform();
     }
     if (context->PushCullRect(clip_shape_bounds())) {
@@ -43,7 +42,7 @@
   }
 
   void Preroll(PrerollContext* context) override {
-    bool uses_save_layer = UsesSaveLayer(context->impeller_enabled);
+    bool uses_save_layer = UsesSaveLayer();
 
     // 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
@@ -53,8 +52,7 @@
                   context, context->state_stack.transform_3x3());
 
     Layer::AutoPrerollSaveLayerState save =
-        Layer::AutoPrerollSaveLayerState::Create(
-            context, UsesSaveLayer(context->impeller_enabled));
+        Layer::AutoPrerollSaveLayerState::Create(context, UsesSaveLayer());
 
     auto mutator = context->state_stack.save();
     ApplyClip(mutator);
@@ -80,7 +78,7 @@
     auto mutator = context.state_stack.save();
     ApplyClip(mutator);
 
-    if (!UsesSaveLayer(context.impeller_enabled)) {
+    if (!UsesSaveLayer()) {
       PaintChildren(context);
       return;
     }
@@ -101,10 +99,7 @@
     PaintChildren(context);
   }
 
-  bool UsesSaveLayer(bool enable_impeller) const {
-    if (enable_impeller) {
-      return false;
-    }
+  bool UsesSaveLayer() const {
     return clip_behavior_ == Clip::antiAliasWithSaveLayer;
   }
 
diff --git a/flow/layers/layer.h b/flow/layers/layer.h
index d9864e8..1010824 100644
--- a/flow/layers/layer.h
+++ b/flow/layers/layer.h
@@ -71,8 +71,6 @@
   // presence of a texture layer during Preroll.
   bool has_texture_layer = false;
 
-  bool impeller_enabled = false;
-
   // The list of flags that describe which rendering state attributes
   // (such as opacity, ColorFilter, ImageFilter) a given layer can
   // render itself without requiring the parent to perform a protective
@@ -119,7 +117,6 @@
   // only when leaf layer tracing is enabled.
   LayerSnapshotStore* layer_snapshot_store = nullptr;
   bool enable_leaf_layer_tracing = false;
-  bool impeller_enabled = false;
   impeller::AiksContext* aiks_context;
 };
 
diff --git a/flow/layers/layer_tree.cc b/flow/layers/layer_tree.cc
index e8aea74..bb7492a 100644
--- a/flow/layers/layer_tree.cc
+++ b/flow/layers/layer_tree.cc
@@ -60,7 +60,6 @@
       .raster_time                   = frame.context().raster_time(),
       .ui_time                       = frame.context().ui_time(),
       .texture_registry              = frame.context().texture_registry(),
-      .impeller_enabled              = !frame.gr_context(),
       .raster_cached_entries         = &raster_cache_items_,
       // clang-format on
   };
@@ -140,7 +139,6 @@
       .raster_cache                  = cache,
       .layer_snapshot_store          = snapshot_store,
       .enable_leaf_layer_tracing     = enable_leaf_layer_tracing_,
-      .impeller_enabled              = !!frame.aiks_context(),
       .aiks_context                  = frame.aiks_context(),
       // clang-format on
   };
diff --git a/flow/testing/diff_context_test.cc b/flow/testing/diff_context_test.cc
index 26b2a67..c4c68bb 100644
--- a/flow/testing/diff_context_test.cc
+++ b/flow/testing/diff_context_test.cc
@@ -17,13 +17,11 @@
                                       const SkIRect& additional_damage,
                                       int horizontal_clip_alignment,
                                       int vertical_clip_alignment,
-                                      bool use_raster_cache,
-                                      bool impeller_enabled) {
+                                      bool use_raster_cache) {
   FML_CHECK(layer_tree.size() == old_layer_tree.size());
 
   DiffContext dc(layer_tree.size(), layer_tree.paint_region_map(),
-                 old_layer_tree.paint_region_map(), use_raster_cache,
-                 impeller_enabled);
+                 old_layer_tree.paint_region_map(), use_raster_cache);
   dc.PushCullRect(
       SkRect::MakeIWH(layer_tree.size().width(), layer_tree.size().height()));
   layer_tree.root()->Diff(&dc, old_layer_tree.root());
diff --git a/flow/testing/diff_context_test.h b/flow/testing/diff_context_test.h
index 03a1ac0..be10a01 100644
--- a/flow/testing/diff_context_test.h
+++ b/flow/testing/diff_context_test.h
@@ -41,8 +41,7 @@
                        const SkIRect& additional_damage = SkIRect::MakeEmpty(),
                        int horizontal_clip_alignment = 0,
                        int vertical_alignment = 0,
-                       bool use_raster_cache = true,
-                       bool impeller_enabled = false);
+                       bool use_raster_cache = true);
 
   // Create display list consisting of filled rect with given color; Being able
   // to specify different color is useful to test deep comparison of pictures
diff --git a/flow/testing/layer_test.h b/flow/testing/layer_test.h
index 178c307..e74ef6f 100644
--- a/flow/testing/layer_test.h
+++ b/flow/testing/layer_test.h
@@ -195,12 +195,6 @@
     paint_context_.layer_snapshot_store = nullptr;
   }
 
-  void enable_impeller() {
-    preroll_context_.impeller_enabled = true;
-    paint_context_.impeller_enabled = true;
-    display_list_paint_context_.impeller_enabled = true;
-  }
-
  private:
   void set_raster_cache_(std::unique_ptr<RasterCache> raster_cache) {
     raster_cache_ = std::move(raster_cache);