Remove `LineContents ` experimental AA line shader that is no longer used (#189619)

After https://github.com/flutter/flutter/pull/188514, `LineContents` can
no longer be enabled. This deletes its code and its associated
`antialiased_lines` flag.

See
https://github.com/flutter/flutter/pull/188514#discussion_r3581150207
for some more context.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [AI contribution guidelines] and understand my
responsibilities, or I am not using AI tools.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

If this change needs to override an active code freeze, provide a
comment explaining why. The code freeze workflow can be overridden by
code reviewers. See pinned issues for any active code freezes with
guidance.

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[AI contribution guidelines]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
diff --git a/engine/src/flutter/common/settings.h b/engine/src/flutter/common/settings.h
index 55d8527..66af329 100644
--- a/engine/src/flutter/common/settings.h
+++ b/engine/src/flutter/common/settings.h
@@ -241,9 +241,6 @@
   // Whether to lazily initialize impeller PSO state.
   bool impeller_enable_lazy_shader_mode = false;
 
-  // An experimental mode that antialiases lines.
-  bool impeller_antialiased_lines = false;
-
   // Whether to use SDFs for rendering in Impeller.
   bool impeller_use_sdfs = false;
 
diff --git a/engine/src/flutter/impeller/base/flags.h b/engine/src/flutter/impeller/base/flags.h
index 909d9ec..24cffff 100644
--- a/engine/src/flutter/impeller/base/flags.h
+++ b/engine/src/flutter/impeller/base/flags.h
@@ -7,8 +7,6 @@
 
 namespace impeller {
 struct Flags {
-  /// When turned on DrawLine will use the experimental antialiased path.
-  bool antialiased_lines = false;
   /// Use SDFs for rendering.
   bool use_sdfs = false;
 
diff --git a/engine/src/flutter/impeller/display_list/aiks_dl_path_unittests.cc b/engine/src/flutter/impeller/display_list/aiks_dl_path_unittests.cc
index 7204fa7..8f58faf 100644
--- a/engine/src/flutter/impeller/display_list/aiks_dl_path_unittests.cc
+++ b/engine/src/flutter/impeller/display_list/aiks_dl_path_unittests.cc
@@ -669,183 +669,6 @@
   ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
 }
 
-// The goal of this test is to show that scaling the lines doesn't also scale
-// the antialiasing. The amount of blurring should be the same for both
-// horizontal lines.
-TEST_P(AiksTest, ScaleExperimentAntialiasLines) {
-  // Must be called before any methods that use the context to ensure that
-  // this test is run with the antialias flag.
-  if (!EnsureContextSupportsAntialiasLines()) {
-    GTEST_SKIP() << "This backend doesn't yet support experimental AA lines.";
-  }
-
-  Scalar scale = 5.0;
-  Scalar line_width = 10.f;
-  auto callback = [&]() -> sk_sp<DisplayList> {
-    if (IsPlaygroundEnabled()) {
-      ImGui::Begin("Controls", nullptr, ImGuiWindowFlags_AlwaysAutoResize);
-      ImGui::SliderFloat("Scale", &scale, 0.001, 5);
-      ImGui::SliderFloat("Width", &line_width, 1, 20);
-
-      ImGui::End();
-    }
-    DisplayListBuilder builder;
-    builder.Scale(GetContentScale().x, GetContentScale().y);
-
-    builder.DrawPaint(DlPaint(DlColor(0xff111111)));
-
-    {
-      DlPaint paint;
-      paint.setColor(DlColor::kGreenYellow());
-      paint.setStrokeWidth(line_width);
-
-      builder.DrawLine(DlPoint(100, 100), DlPoint(350, 100), paint);
-      builder.DrawLine(DlPoint(100, 100), DlPoint(350, 150), paint);
-
-      builder.Save();
-      builder.Translate(100, 300);
-      builder.Scale(scale, scale);
-      builder.Translate(-100, -300);
-      builder.DrawLine(DlPoint(100, 300), DlPoint(350, 300), paint);
-      builder.DrawLine(DlPoint(100, 300), DlPoint(350, 450), paint);
-      builder.Restore();
-    }
-
-    {
-      DlPaint paint;
-      paint.setColor(DlColor::kGreenYellow());
-      paint.setStrokeWidth(2.0);
-
-      builder.Save();
-      builder.Translate(100, 500);
-      builder.Scale(0.2, 0.2);
-      builder.Translate(-100, -500);
-      builder.DrawLine(DlPoint(100, 500), DlPoint(350, 500), paint);
-      builder.DrawLine(DlPoint(100, 500), DlPoint(350, 650), paint);
-      builder.Restore();
-    }
-
-    return builder.Build();
-  };
-  ASSERT_TRUE(OpenPlaygroundHere(callback));
-}
-
-TEST_P(AiksTest, HexagonExperimentAntialiasLines) {
-  // Must be called before any methods that use the context to ensure that
-  // this test is run with the antialias flag.
-  if (!EnsureContextSupportsAntialiasLines()) {
-    GTEST_SKIP() << "This backend doesn't yet support experimental AA lines.";
-  }
-
-  float scale = 5.0f;
-  float line_width = 10.f;
-  float rotation = 0.f;
-
-  auto callback = [&]() -> sk_sp<DisplayList> {
-    if (IsPlaygroundEnabled()) {
-      ImGui::Begin("Controls", nullptr, ImGuiWindowFlags_AlwaysAutoResize);
-      // Use ImGui::SliderFloat for consistency
-      ImGui::SliderFloat("Scale", &scale, 0.001f, 5.0f);
-      ImGui::SliderFloat("Width", &line_width, 1.0f, 20.0f);
-      ImGui::SliderFloat("Rotation", &rotation, 0.0f, 180.0f);
-
-      ImGui::End();
-    }
-    DisplayListBuilder builder;
-    builder.Scale(static_cast<float>(GetContentScale().x),
-                  static_cast<float>(GetContentScale().y));
-
-    builder.DrawPaint(DlPaint(DlColor(0xff111111)));  // Background
-
-    {
-      DlPaint hex_paint;
-      hex_paint.setColor(
-          DlColor::kGreen());  // Changed color to Red for visibility
-      hex_paint.setStrokeWidth(line_width);  // Use the interactive width
-
-      float cx = 512.0f;  // Center X
-      float cy = 384.0f;  // Center Y
-      float r = 80.0f;    // Radius (distance from center to vertex)
-
-      float r_sin60 = r * std::sqrt(3.0f) / 2.0f;
-      float r_cos60 = r / 2.0f;
-
-      DlPoint v0 = DlPoint(cx + r, cy);                  // Right vertex
-      DlPoint v1 = DlPoint(cx + r_cos60, cy - r_sin60);  // Top-right vertex
-      DlPoint v2 = DlPoint(
-          cx - r_cos60,
-          cy - r_sin60);  // Top-left vertex (v1-v2 is top horizontal side)
-      DlPoint v3 = DlPoint(cx - r, cy);                  // Left vertex
-      DlPoint v4 = DlPoint(cx - r_cos60, cy + r_sin60);  // Bottom-left vertex
-      DlPoint v5 =
-          DlPoint(cx + r_cos60, cy + r_sin60);  // Bottom-right vertex (v4-v5 is
-                                                // bottom horizontal side)
-
-      builder.Translate(cx, cy);
-      builder.Scale(scale, scale);
-      builder.Rotate(rotation);
-      builder.Translate(-cx, -cy);
-
-      builder.DrawLine(v0, v1, hex_paint);
-      builder.DrawLine(v1, v2, hex_paint);  // Top side
-      builder.DrawLine(v2, v3, hex_paint);
-      builder.DrawLine(v3, v4, hex_paint);
-      builder.DrawLine(v4, v5, hex_paint);  // Bottom side
-      builder.DrawLine(v5, v0, hex_paint);  // Close the hexagon
-    }
-
-    return builder.Build();
-  };
-  ASSERT_TRUE(OpenPlaygroundHere(callback));
-}
-
-TEST_P(AiksTest, SimpleExperimentAntialiasLines) {
-  // Must be called before any methods that use the context to ensure that
-  // this test is run with the antialias flag.
-  if (!EnsureContextSupportsAntialiasLines()) {
-    GTEST_SKIP() << "This backend doesn't yet support experimental AA lines.";
-  }
-
-  DisplayListBuilder builder;
-  builder.Scale(GetContentScale().x, GetContentScale().y);
-
-  builder.DrawPaint(DlPaint(DlColor(0xff111111)));
-
-  DlPaint paint;
-  paint.setColor(DlColor::kGreenYellow());
-  paint.setStrokeWidth(10);
-
-  auto draw = [&builder](DlPaint& paint) {
-    for (auto cap :
-         {DlStrokeCap::kButt, DlStrokeCap::kSquare, DlStrokeCap::kRound}) {
-      paint.setStrokeCap(cap);
-      DlPoint origin = {100, 100};
-      builder.DrawLine(DlPoint(150, 100), DlPoint(250, 100), paint);
-      for (int d = 15; d < 90; d += 15) {
-        Matrix m = Matrix::MakeRotationZ(Degrees(d));
-        Point origin = {100, 100};
-        Point p0 = {50, 0};
-        Point p1 = {150, 0};
-        auto a = origin + m * p0;
-        auto b = origin + m * p1;
-
-        builder.DrawLine(a, b, paint);
-      }
-      builder.DrawLine(DlPoint(100, 150), DlPoint(100, 250), paint);
-      builder.DrawCircle(origin, 35, paint);
-
-      builder.DrawLine(DlPoint(250, 250), DlPoint(250, 250), paint);
-
-      builder.Translate(250, 0);
-    }
-    builder.Translate(-750, 250);
-  };
-
-  draw(paint);
-
-  ASSERT_TRUE(OpenPlaygroundHere(builder.Build()));
-}
-
 TEST_P(AiksTest, DrawRectStrokesRenderCorrectly) {
   DisplayListBuilder builder;
   DlPaint paint;
diff --git a/engine/src/flutter/impeller/display_list/canvas.cc b/engine/src/flutter/impeller/display_list/canvas.cc
index 10451e0..529653f 100644
--- a/engine/src/flutter/impeller/display_list/canvas.cc
+++ b/engine/src/flutter/impeller/display_list/canvas.cc
@@ -34,7 +34,6 @@
 #include "impeller/entity/contents/content_context.h"
 #include "impeller/entity/contents/filters/filter_contents.h"
 #include "impeller/entity/contents/framebuffer_blend_contents.h"
-#include "impeller/entity/contents/line_contents.h"
 #include "impeller/entity/contents/shadow_vertices_contents.h"
 #include "impeller/entity/contents/solid_color_contents.h"
 #include "impeller/entity/contents/solid_rrect_blur_contents.h"
@@ -810,8 +809,7 @@
                                 const Point& p1,
                                 const Paint& paint,
                                 bool reuse_depth) {
-  if (!(renderer_.GetContext()->GetFlags().use_sdfs ||
-        renderer_.GetContext()->GetFlags().antialiased_lines) ||
+  if (!renderer_.GetContext()->GetFlags().use_sdfs ||
       !IsCompatibleWithSDFRendering(paint)) {
     return false;
   }
diff --git a/engine/src/flutter/impeller/entity/BUILD.gn b/engine/src/flutter/impeller/entity/BUILD.gn
index 03f12e1..2c2cbcd 100644
--- a/engine/src/flutter/impeller/entity/BUILD.gn
+++ b/engine/src/flutter/impeller/entity/BUILD.gn
@@ -39,8 +39,6 @@
     "shaders/gradients/radial_gradient_uniform_fill.frag",
     "shaders/gradients/sweep_gradient_fill.frag",
     "shaders/gradients/sweep_gradient_uniform_fill.frag",
-    "shaders/line.frag",
-    "shaders/line.vert",
     "shaders/rrect_blur.frag",
     "shaders/rrect_like_blur.vert",
     "shaders/rsuperellipse_blur.frag",
@@ -175,8 +173,6 @@
     "contents/framebuffer_blend_contents.h",
     "contents/gradient_generator.cc",
     "contents/gradient_generator.h",
-    "contents/line_contents.cc",
-    "contents/line_contents.h",
     "contents/linear_gradient_contents.cc",
     "contents/linear_gradient_contents.h",
     "contents/pipelines.h",
@@ -294,7 +290,6 @@
     "contents/filters/matrix_filter_contents_unittests.cc",
     "contents/filters/morphology_filter_contents_unittests.cc",
     "contents/host_buffer_unittests.cc",
-    "contents/line_contents_unittests.cc",
     "contents/text_contents_unittests.cc",
     "contents/tiled_texture_contents_unittests.cc",
     "contents/uber_sdf_contents_unittests.cc",
diff --git a/engine/src/flutter/impeller/entity/contents/content_context.cc b/engine/src/flutter/impeller/entity/contents/content_context.cc
index 8473b31..eae1070 100644
--- a/engine/src/flutter/impeller/entity/contents/content_context.cc
+++ b/engine/src/flutter/impeller/entity/contents/content_context.cc
@@ -265,7 +265,6 @@
   Variants<FramebufferBlendSoftLightPipeline> framebuffer_blend_softlight;
   Variants<GaussianBlurPipeline> gaussian_blur;
   Variants<GlyphAtlasPipeline> glyph_atlas;
-  Variants<LinePipeline> line;
   Variants<LinearGradientFillPipeline> linear_gradient_fill;
   Variants<LinearGradientSSBOFillPipeline> linear_gradient_ssbo_fill;
   Variants<LinearGradientUniformFillPipeline> linear_gradient_uniform_fill;
@@ -637,10 +636,8 @@
     pipelines_->solid_fill.CreateDefault(*context_, options);
     pipelines_->texture.CreateDefault(*context_, options);
     pipelines_->fast_gradient.CreateDefault(*context_, options);
-    pipelines_->line.CreateDefault(*context_, options);
     pipelines_->circle.CreateDefault(*context_, options);
-    if (context_->GetFlags().use_sdfs ||
-        context_->GetFlags().antialiased_lines) {
+    if (context_->GetFlags().use_sdfs) {
       pipelines_->uber_sdf.CreateDefault(*context_, options);
       pipelines_->complex_rse.CreateDefault(*context_, options);
     }
@@ -1542,10 +1539,6 @@
   return GetPipeline(this, pipelines_->circle, opts);
 }
 
-PipelineRef ContentContext::GetLinePipeline(ContentContextOptions opts) const {
-  return GetPipeline(this, pipelines_->line, opts);
-}
-
 #ifdef IMPELLER_ENABLE_OPENGLES
 
 #if !defined(FML_OS_EMSCRIPTEN)
diff --git a/engine/src/flutter/impeller/entity/contents/content_context.h b/engine/src/flutter/impeller/entity/contents/content_context.h
index fe67507..044a6e1 100644
--- a/engine/src/flutter/impeller/entity/contents/content_context.h
+++ b/engine/src/flutter/impeller/entity/contents/content_context.h
@@ -184,7 +184,6 @@
   PipelineRef GetFramebufferBlendSoftLightPipeline(ContentContextOptions opts) const;
   PipelineRef GetGaussianBlurPipeline(ContentContextOptions opts) const;
   PipelineRef GetGlyphAtlasPipeline(ContentContextOptions opts) const;
-  PipelineRef GetLinePipeline(ContentContextOptions opts) const;
   PipelineRef GetLinearGradientFillPipeline(ContentContextOptions opts) const;
   PipelineRef GetLinearGradientSSBOFillPipeline(ContentContextOptions opts) const;
   PipelineRef GetLinearGradientUniformFillPipeline(ContentContextOptions opts) const;
diff --git a/engine/src/flutter/impeller/entity/contents/line_contents.cc b/engine/src/flutter/impeller/entity/contents/line_contents.cc
deleted file mode 100644
index 4370bc5..0000000
--- a/engine/src/flutter/impeller/entity/contents/line_contents.cc
+++ /dev/null
@@ -1,269 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "impeller/entity/contents/line_contents.h"
-#include "impeller/entity/contents/color_source_contents.h"
-#include "impeller/renderer/texture_util.h"
-
-namespace impeller {
-
-using VS = LinePipeline::VertexShader;
-using FS = LinePipeline::FragmentShader;
-
-namespace {
-using BindFragmentCallback = std::function<bool(RenderPass& pass)>;
-using PipelineBuilderCallback =
-    std::function<PipelineRef(ContentContextOptions)>;
-using CreateGeometryCallback =
-    std::function<GeometryResult(const ContentContext& renderer,
-                                 const Entity& entity,
-                                 RenderPass& pass,
-                                 const Geometry* geometry)>;
-
-const int32_t kCurveResolution = 32;
-
-uint8_t DoubleToUint8(double x) {
-  return static_cast<uint8_t>(std::clamp(std::round(x * 255.0), 0.0, 255.0));
-}
-
-/// See also: CreateGradientTexture
-std::shared_ptr<Texture> CreateCurveTexture(
-    Scalar width,
-    Scalar radius,
-    Scalar scale,
-    const std::shared_ptr<impeller::Context>& context) {
-  //
-  impeller::TextureDescriptor texture_descriptor;
-  texture_descriptor.storage_mode = impeller::StorageMode::kHostVisible;
-  texture_descriptor.format = PixelFormat::kR8UNormInt;
-  texture_descriptor.size = {kCurveResolution, 1};
-
-  std::vector<uint8_t> curve_data =
-      LineContents::CreateCurveData(width, radius, scale);
-
-  return CreateTexture(texture_descriptor, curve_data, context, "LineCurve");
-}
-
-std::pair<LineContents::EffectiveLineParameters, GeometryResult> CreateGeometry(
-    const ContentContext& renderer,
-    const Entity& entity,
-    RenderPass& pass,
-    const Geometry* geometry) {
-  using PerVertexData = LineVertexShader::PerVertexData;
-  const LineGeometry* line_geometry =
-      static_cast<const LineGeometry*>(geometry);
-
-  auto& transform = entity.GetTransform();
-  auto& data_host_buffer = renderer.GetTransientsDataBuffer();
-
-  size_t count = 4;
-  fml::StatusOr<LineContents::EffectiveLineParameters> calculate_status =
-      LineContents::EffectiveLineParameters{.width = 0, .radius = 0};
-  BufferView vertex_buffer = data_host_buffer.Emplace(
-      count * sizeof(PerVertexData), alignof(PerVertexData),
-      [line_geometry, &transform, &calculate_status](uint8_t* buffer) {
-        auto vertices = reinterpret_cast<PerVertexData*>(buffer);
-        calculate_status = LineContents::CalculatePerVertex(
-            vertices, line_geometry, transform);
-      });
-  if (!calculate_status.ok()) {
-    return std::make_pair(
-        LineContents::EffectiveLineParameters{
-            .width = line_geometry->GetWidth(),
-            .radius = LineContents::kSampleRadius},
-        kEmptyResult);
-  }
-
-  // We do the math in CalculatePerVertex in unrotated space.  This then applies
-  // the rotation to the line.
-  Point diff = line_geometry->GetP1() - line_geometry->GetP0();
-  Scalar angle = std::atan2(diff.y, diff.x);
-  Entity rotated_entity = entity.Clone();
-  Matrix matrix = entity.GetTransform();
-  matrix = matrix * Matrix::MakeTranslation(line_geometry->GetP0()) *
-           Matrix::MakeRotationZ(Radians(angle)) *
-           Matrix::MakeTranslation(-1 * line_geometry->GetP0());
-  rotated_entity.SetTransform(matrix);
-
-  return std::make_pair(
-      calculate_status.value(),
-      GeometryResult{
-          .type = PrimitiveType::kTriangleStrip,
-          .vertex_buffer =
-              {
-                  .vertex_buffer = vertex_buffer,
-                  .vertex_count = count,
-                  .index_type = IndexType::kNone,
-              },
-          .transform = rotated_entity.GetShaderTransform(pass),
-      });
-}
-
-struct LineInfo {
-  Vector3 e0;
-  Vector3 e1;
-  Vector3 e2;
-  Vector3 e3;
-};
-
-LineInfo CalculateLineInfo(Point p0, Point p1, Scalar width, Scalar radius) {
-  Vector2 diff = p0 - p1;
-  float k = 2.0 / ((2.0 * radius + width) * sqrt(diff.Dot(diff)));
-
-  return LineInfo{
-      .e0 = Vector3(k * (p0.y - p1.y),  //
-                    k * (p1.x - p0.x),  //
-                    1.0 + k * (p0.x * p1.y - p1.x * p0.y)),
-      .e1 = Vector3(
-          k * (p1.x - p0.x),  //
-          k * (p1.y - p0.y),  //
-          1.0 + k * (p0.x * p0.x + p0.y * p0.y - p0.x * p1.x - p0.y * p1.y)),
-      .e2 = Vector3(k * (p1.y - p0.y),  //
-                    k * (p0.x - p1.x),  //
-                    1.0 + k * (p1.x * p0.y - p0.x * p1.y)),
-      .e3 = Vector3(
-          k * (p0.x - p1.x),  //
-          k * (p0.y - p1.y),  //
-          1.0 + k * (p1.x * p1.x + p1.y * p1.y - p0.x * p1.x - p0.y * p1.y)),
-  };
-}
-}  // namespace
-
-const Scalar LineContents::kSampleRadius = 1.f;
-
-std::unique_ptr<LineContents> LineContents::Make(
-    std::unique_ptr<LineGeometry> geometry,
-    Color color) {
-  return std::unique_ptr<LineContents>(
-      new LineContents(std::move(geometry), color));
-}
-
-LineContents::LineContents(std::unique_ptr<LineGeometry> geometry, Color color)
-    : geometry_(std::move(geometry)), color_(color) {}
-
-bool LineContents::Render(const ContentContext& renderer,
-                          const Entity& entity,
-                          RenderPass& pass) const {
-  auto& data_host_buffer = renderer.GetTransientsDataBuffer();
-
-  VS::FrameInfo frame_info;
-  FS::FragInfo frag_info;
-  frag_info.color = color_;
-  frag_info.cap_type = (geometry_->GetCap() == Cap::kRound) ? 1.0f : 0.0f;
-
-  Scalar scale = entity.GetTransform().GetMaxBasisLengthXY();
-
-  auto geometry_result =
-      CreateGeometry(renderer, entity, pass, geometry_.get());
-
-  std::shared_ptr<Texture> curve_texture = CreateCurveTexture(
-      geometry_->GetWidth(), kSampleRadius, scale, renderer.GetContext());
-
-  SamplerDescriptor sampler_desc;
-  sampler_desc.min_filter = MinMagFilter::kLinear;
-  sampler_desc.mag_filter = MinMagFilter::kLinear;
-
-  FS::BindCurve(
-      pass, curve_texture,
-      renderer.GetContext()->GetSamplerLibrary()->GetSampler(sampler_desc));
-
-  PipelineBuilderCallback pipeline_callback =
-      [&renderer](ContentContextOptions options) {
-        return renderer.GetLinePipeline(options);
-      };
-
-  return ColorSourceContents::DrawGeometry<VS>(
-      this, geometry_.get(), renderer, entity, pass, pipeline_callback,
-      frame_info,
-      /*bind_fragment_callback=*/
-      [&frag_info, &data_host_buffer](RenderPass& pass) {
-        FS::BindFragInfo(pass, data_host_buffer.EmplaceUniform(frag_info));
-        pass.SetCommandLabel("Line");
-        return true;
-      },
-      /*force_stencil=*/false,
-      /*create_geom_callback=*/
-      [geometry_result = std::move(geometry_result)](
-          const ContentContext& renderer, const Entity& entity,
-          RenderPass& pass,
-          const Geometry* geometry) { return geometry_result.second; });
-}
-
-std::optional<Rect> LineContents::GetCoverage(const Entity& entity) const {
-  return geometry_->GetCoverage(entity.GetTransform());
-}
-
-std::vector<uint8_t> LineContents::CreateCurveData(Scalar width,
-                                                   Scalar radius,
-                                                   Scalar scale) {
-  std::vector<uint8_t> curve_data;
-  curve_data.reserve(kCurveResolution);
-  // More simply written as rise / run:
-  // double slope = 1.0 / ((radius * 2) / (scale * width + radius));
-  double slope = (scale * width + radius) / (radius * 2);
-  slope = std::max(slope, 1.0);
-  for (int i = 0; i < kCurveResolution; ++i) {
-    double norm =
-        (static_cast<double>(i)) / static_cast<double>(kCurveResolution - 1);
-    double scaled = slope * norm;
-    curve_data.push_back(DoubleToUint8(scaled));
-  }
-  return curve_data;
-}
-
-namespace {
-void ExpandLine(std::array<Point, 4>& corners, Point expansion) {
-  Point along = (corners[1] - corners[0]).Normalize();
-  Point across = (corners[2] - corners[0]).Normalize();
-  corners[0] += -1 * (across * expansion.x) + -1 * (along * expansion.y);
-  corners[1] += -1 * (across * expansion.x) + (along * expansion.y);
-  corners[2] += (across * expansion.x) + -1 * (along * expansion.y);
-  corners[3] += (across * expansion.x) + (along * expansion.y);
-}
-}  // namespace
-
-fml::StatusOr<LineContents::EffectiveLineParameters>
-LineContents::CalculatePerVertex(LineVertexShader::PerVertexData* per_vertex,
-                                 const LineGeometry* geometry,
-                                 const Matrix& entity_transform) {
-  Scalar scale = entity_transform.GetMaxBasisLengthXY();
-
-  // Transform the line into unrotated space by rotating p1 to be horizontal
-  // with p0. We do this because there seems to be a flaw in the eN calculations
-  // where they create thinner lines for diagonal lines.
-  Point diff = geometry->GetP1() - geometry->GetP0();
-  Scalar magnitude = diff.GetLength();
-  Point p1_prime = Point(geometry->GetP0().x + magnitude, geometry->GetP0().y);
-
-  std::array<Point, 4> corners;
-  // Make sure we get kSampleRadius pixels to sample from.
-  Scalar expand_size = std::max(kSampleRadius / scale, kSampleRadius);
-  if (!LineGeometry::ComputeCorners(
-          corners.data(), entity_transform,
-          /*extend_endpoints=*/geometry->GetCap() != Cap::kButt,
-          geometry->GetP0(), p1_prime, geometry->GetWidth())) {
-    return fml::Status(fml::StatusCode::kAborted, "No valid corners");
-  }
-  Scalar effective_line_width = std::fabsf((corners[2] - corners[0]).y);
-  ExpandLine(corners, Point(expand_size, expand_size));
-  Scalar padded_line_width = std::fabsf((corners[2] - corners[0]).y);
-  Scalar effective_sample_radius =
-      (padded_line_width - effective_line_width) / 2.f;
-  LineInfo line_info =
-      CalculateLineInfo(geometry->GetP0(), p1_prime, effective_line_width,
-                        effective_sample_radius);
-  for (auto& corner : corners) {
-    *per_vertex++ = {
-        .position = corner,
-        .e0 = line_info.e0,
-        .e1 = line_info.e1,
-        .e2 = line_info.e2,
-        .e3 = line_info.e3,
-    };
-  }
-
-  return EffectiveLineParameters{.width = effective_line_width,
-                                 .radius = effective_sample_radius};
-}
-}  // namespace impeller
diff --git a/engine/src/flutter/impeller/entity/contents/line_contents.h b/engine/src/flutter/impeller/entity/contents/line_contents.h
deleted file mode 100644
index 6f5fa02..0000000
--- a/engine/src/flutter/impeller/entity/contents/line_contents.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef FLUTTER_IMPELLER_ENTITY_CONTENTS_LINE_CONTENTS_H_
-#define FLUTTER_IMPELLER_ENTITY_CONTENTS_LINE_CONTENTS_H_
-
-#include <memory>
-
-#include "flutter/impeller/entity/contents/contents.h"
-#include "flutter/impeller/entity/geometry/line_geometry.h"
-#include "impeller/entity/line.vert.h"
-
-namespace impeller {
-class LineContents : public Contents {
- public:
-  static const Scalar kSampleRadius;
-  static std::vector<uint8_t> CreateCurveData(Scalar width,
-                                              Scalar radius,
-                                              Scalar scale);
-
-  struct EffectiveLineParameters {
-    Scalar width;
-    Scalar radius;
-  };
-
-  /// Calculates the values needed for the vertex shader, per vertex.
-  /// Returns the effective line parameters that are used. These differ from the
-  /// ones provided by `geometry` when the line gets clamped for being too thin.
-  static fml::StatusOr<EffectiveLineParameters> CalculatePerVertex(
-      LineVertexShader::PerVertexData* per_vertex,
-      const LineGeometry* geometry,
-      const Matrix& entity_transform);
-
-  static std::unique_ptr<LineContents> Make(
-      std::unique_ptr<LineGeometry> geometry,
-      Color color);
-
-  bool Render(const ContentContext& renderer,
-              const Entity& entity,
-              RenderPass& pass) const override;
-
-  std::optional<Rect> GetCoverage(const Entity& entity) const override;
-
- private:
-  explicit LineContents(std::unique_ptr<LineGeometry> geometry, Color color);
-
-  std::unique_ptr<LineGeometry> geometry_;
-  Color color_;
-};
-}  // namespace impeller
-
-#endif  // FLUTTER_IMPELLER_ENTITY_CONTENTS_LINE_CONTENTS_H_
diff --git a/engine/src/flutter/impeller/entity/contents/line_contents_unittests.cc b/engine/src/flutter/impeller/entity/contents/line_contents_unittests.cc
deleted file mode 100644
index 4aa770c..0000000
--- a/engine/src/flutter/impeller/entity/contents/line_contents_unittests.cc
+++ /dev/null
@@ -1,183 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "impeller/entity/contents/line_contents.h"
-
-#include <algorithm>
-
-#include "impeller/geometry/geometry_asserts.h"
-#include "third_party/googletest/googletest/include/gtest/gtest.h"
-
-namespace impeller {
-namespace testing {
-
-namespace {
-float lookup(Scalar x) {
-  return std::clamp(x, /*lo=*/0.f, /*hi=*/1.f);
-}
-
-// This mirrors the function in line.frag.
-float CalculateLine(const LineVertexShader::PerVertexData& per_vertex,
-                    Point position) {
-  Vector3 pos = Vector3(position.x, position.y, 1.0);
-  Scalar d[4] = {pos.Dot(per_vertex.e0), pos.Dot(per_vertex.e1),
-                 pos.Dot(per_vertex.e2), pos.Dot(per_vertex.e3)};
-
-  for (int i = 0; i < 4; ++i) {
-    if (d[i] < 0.f) {
-      return 0.0;
-    }
-  }
-
-  return lookup(std::min(d[0], d[2])) * lookup(std::min(d[1], d[3]));
-}
-}  // namespace
-
-TEST(LineContents, Create) {
-  Scalar width = 5.0f;
-  auto geometry = std::make_unique<LineGeometry>(
-      /*p0=*/Point{0, 0},      //
-      /*p1=*/Point{100, 100},  //
-      StrokeParameters{
-          .width = width,
-          .cap = Cap::kSquare,
-      });
-  std::unique_ptr<LineContents> contents =
-      LineContents::Make(std::move(geometry), Color(1.f, 0.f, 0.f, 1.f));
-  EXPECT_TRUE(contents);
-  Entity entity;
-  std::optional<Rect> coverage = contents->GetCoverage(entity);
-  EXPECT_TRUE(coverage.has_value());
-  if (coverage.has_value()) {
-    Scalar lip = sqrt((width * width) / 2.f);
-    EXPECT_EQ(*coverage,
-              Rect::MakeXYWH(-lip, -lip, 100 + 2 * lip, 100 + 2 * lip));
-  }
-}
-
-TEST(LineContents, CalculatePerVertex) {
-  LineVertexShader::PerVertexData per_vertex[4];
-  auto geometry = std::make_unique<LineGeometry>(
-      /*p0=*/Point{100, 100},  //
-      /*p1=*/Point{200, 100},  //
-      StrokeParameters{
-          .width = 5.f,
-          .cap = Cap::kButt,
-      });
-  Matrix transform;
-
-  fml::StatusOr<LineContents::EffectiveLineParameters> status =
-      LineContents::CalculatePerVertex(per_vertex, geometry.get(), transform);
-  Scalar offset =
-      (LineContents::kSampleRadius * 2.0 + geometry->GetWidth()) / 2.f;
-  ASSERT_TRUE(status.ok());
-  EXPECT_EQ(status.value().width, 5.f);
-  EXPECT_EQ(status.value().radius, LineContents::kSampleRadius);
-  EXPECT_POINT_NEAR(per_vertex[0].position,
-                    Point(100 - LineContents::kSampleRadius, 100 + offset));
-  EXPECT_POINT_NEAR(per_vertex[1].position,
-                    Point(200 + LineContents::kSampleRadius, 100 + offset));
-  EXPECT_POINT_NEAR(per_vertex[2].position,
-                    Point(100 - LineContents::kSampleRadius, 100 - offset));
-  EXPECT_POINT_NEAR(per_vertex[3].position,
-                    Point(200 + LineContents::kSampleRadius, 100 - offset));
-
-  for (int i = 1; i < 4; ++i) {
-    EXPECT_VECTOR3_NEAR(per_vertex[0].e0, per_vertex[i].e0) << i;
-    EXPECT_VECTOR3_NEAR(per_vertex[0].e1, per_vertex[i].e1) << i;
-    EXPECT_VECTOR3_NEAR(per_vertex[0].e2, per_vertex[i].e2) << i;
-    EXPECT_VECTOR3_NEAR(per_vertex[0].e3, per_vertex[i].e3) << i;
-  }
-
-  EXPECT_EQ(CalculateLine(per_vertex[0], Point(0, 0)), 0.f);
-  EXPECT_NEAR(CalculateLine(per_vertex[0], Point(150, 100 + offset)), 0.f,
-              kEhCloseEnough);
-  EXPECT_NEAR(CalculateLine(per_vertex[0], Point(150, 100 + offset * 0.5)),
-              0.5f, kEhCloseEnough);
-  EXPECT_NEAR(CalculateLine(per_vertex[0], Point(150, 100)), 1.f,
-              kEhCloseEnough);
-}
-
-TEST(LineContents, CreateCurveData) {
-  std::vector<uint8_t> data = LineContents::CreateCurveData(/*width=*/31,
-                                                            /*radius=*/1,
-                                                            /*scale=*/1);
-  EXPECT_EQ(data.size(), 32u);
-  EXPECT_NEAR(data[0] / 255.f, 0.f, kEhCloseEnough);
-  EXPECT_NEAR(data[1] / 255.f, 0.5f, 0.02);
-  EXPECT_NEAR(data[2] / 255.f, 1.f, kEhCloseEnough);
-  EXPECT_NEAR(data[3] / 255.f, 1.f, kEhCloseEnough);
-}
-
-TEST(LineContents, CreateCurveDataScaled) {
-  std::vector<uint8_t> data = LineContents::CreateCurveData(/*width=*/15.5,
-                                                            /*radius=*/1,
-                                                            /*scale=*/2);
-  EXPECT_EQ(data.size(), 32u);
-  EXPECT_NEAR(data[0] / 255.f, 0.f, kEhCloseEnough);
-  EXPECT_NEAR(data[1] / 255.f, 0.5f, 0.02);
-  EXPECT_NEAR(data[2] / 255.f, 1.f, kEhCloseEnough);
-  EXPECT_NEAR(data[3] / 255.f, 1.f, kEhCloseEnough);
-}
-
-TEST(LineContents, CreateCurveDataHairline) {
-  std::vector<uint8_t> data = LineContents::CreateCurveData(/*width=*/0.0,
-                                                            /*radius=*/1.0,
-                                                            /*scale=*/1.0);
-  EXPECT_EQ(data.size(), 32u);
-  EXPECT_NEAR(data[data.size() - 1] / 255.f, 1.f, kEhCloseEnough);
-}
-
-TEST(LineContents, CreateCurveDataVeryThin) {
-  std::vector<uint8_t> data = LineContents::CreateCurveData(/*width=*/0.01,
-                                                            /*radius=*/1.0,
-                                                            /*scale=*/1.0);
-  EXPECT_EQ(data.size(), 32u);
-  EXPECT_NEAR(data[data.size() - 1] / 255.f, 1.f, kEhCloseEnough);
-}
-
-// This scales the line to be less than 1 pixel.
-TEST(LineContents, CalculatePerVertexLimit) {
-  LineVertexShader::PerVertexData per_vertex[4];
-  Scalar scale = 0.05;
-  auto geometry = std::make_unique<LineGeometry>(
-      /*p0=*/Point{100, 100},  //
-      /*p1=*/Point{200, 100},  //
-      StrokeParameters{
-          .width = 10.f,
-          .cap = Cap::kButt,
-      });
-  Matrix transform = Matrix::MakeTranslation({100, 100, 1.0}) *
-                     Matrix::MakeScale({scale, scale, 1.0}) *
-                     Matrix::MakeTranslation({-100, -100, 1.0});
-
-  fml::StatusOr<LineContents::EffectiveLineParameters> status =
-      LineContents::CalculatePerVertex(per_vertex, geometry.get(), transform);
-
-  Scalar one_radius_size = std::max(LineContents::kSampleRadius / scale,
-                                    LineContents::kSampleRadius);
-  Scalar one_px_size = 1.f / scale;
-  Scalar offset = one_px_size / 2.f + one_radius_size;
-  ASSERT_TRUE(status.ok());
-  EXPECT_NEAR(status.value().width, 20.f, kEhCloseEnough);
-  EXPECT_NEAR(status.value().radius, one_px_size * LineContents::kSampleRadius,
-              kEhCloseEnough);
-  EXPECT_POINT_NEAR(per_vertex[0].position,
-                    Point(100 - one_radius_size, 100 + offset));
-  EXPECT_POINT_NEAR(per_vertex[1].position,
-                    Point(200 + one_radius_size, 100 + offset));
-  EXPECT_POINT_NEAR(per_vertex[2].position,
-                    Point(100 - one_radius_size, 100 - offset));
-  EXPECT_POINT_NEAR(per_vertex[3].position,
-                    Point(200 + one_radius_size, 100 - offset));
-
-  EXPECT_NEAR(CalculateLine(per_vertex[0], Point(150, 100)), 1.f,
-              kEhCloseEnough);
-  // EXPECT_NEAR(CalculateLine(per_vertex[0], Point(150, 100 +
-  // one_px_size)), 1.f,
-  //             kEhCloseEnough);
-}
-
-}  // namespace testing
-}  // namespace impeller
diff --git a/engine/src/flutter/impeller/entity/contents/pipelines.h b/engine/src/flutter/impeller/entity/contents/pipelines.h
index 72b66bf..b8ffff9 100644
--- a/engine/src/flutter/impeller/entity/contents/pipelines.h
+++ b/engine/src/flutter/impeller/entity/contents/pipelines.h
@@ -34,8 +34,6 @@
 #include "impeller/entity/glyph_atlas.frag.h"
 #include "impeller/entity/glyph_atlas.vert.h"
 #include "impeller/entity/gradient_fill.vert.h"
-#include "impeller/entity/line.frag.h"
-#include "impeller/entity/line.vert.h"
 #include "impeller/entity/linear_gradient_fill.frag.h"
 #include "impeller/entity/linear_gradient_ssbo_fill.frag.h"
 #include "impeller/entity/linear_gradient_uniform_fill.frag.h"
@@ -137,7 +135,6 @@
 using FramebufferBlendSoftLightPipeline = FramebufferBlendPipelineHandle;
 using GaussianBlurPipeline = RenderPipelineHandle<FilterPositionUvVertexShader, GaussianFragmentShader>;
 using GlyphAtlasPipeline = RenderPipelineHandle<GlyphAtlasVertexShader, GlyphAtlasFragmentShader>;
-using LinePipeline = RenderPipelineHandle<LineVertexShader, LineFragmentShader>;
 using LinearGradientFillPipeline = GradientPipelineHandle<LinearGradientFillFragmentShader>;
 using LinearGradientSSBOFillPipeline = GradientPipelineHandle<LinearGradientSsboFillFragmentShader>;
 using LinearGradientUniformFillPipeline = GradientPipelineHandle<LinearGradientUniformFillFragmentShader>;
diff --git a/engine/src/flutter/impeller/entity/shaders/line.frag b/engine/src/flutter/impeller/entity/shaders/line.frag
deleted file mode 100644
index 24666fc..0000000
--- a/engine/src/flutter/impeller/entity/shaders/line.frag
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// For information on the implementation of this shader, see the design doc:
-// https://docs.google.com/document/d/19I6ToHCMlSgSava-niFWzMLGJEAd-rYiBQEGOMu8IJg/edit?tab=t.0#heading=h.icnmwum4oznc
-
-precision mediump float;
-
-#include <impeller/color.glsl>
-#include <impeller/types.glsl>
-
-uniform FragInfo {
-  vec4 color;
-  float cap_type;  // 0.0 for butt/square, 1.0 for round
-}
-frag_info;
-
-uniform sampler2D curve;
-
-highp in vec2 v_position;
-// These should be `flat` but that doesn't work in our glsl compiler. It
-// shouldn't make any visual difference.
-highp in vec3 v_e0;
-highp in vec3 v_e1;
-highp in vec3 v_e2;
-highp in vec3 v_e3;
-
-out vec4 frag_color;
-
-float lookup(float x) {
-  return texture(curve, vec2(x, 0)).r;
-}
-
-float CalculateLine() {
-  vec3 pos = vec3(v_position.xy, 1.0);
-  vec4 d = vec4(dot(pos, v_e0), dot(pos, v_e1), dot(pos, v_e2), dot(pos, v_e3));
-
-  if (any(lessThan(d, vec4(0.0)))) {
-    return 0.0;
-  }
-
-  if (frag_info.cap_type == 1.0) {
-    if (min(d.y, d.w) < 1.0) {
-      float R = distance(vec2(min(d.x, d.z), min(d.y, d.w)), vec2(1.0));
-      return lookup(clamp(1.0 - R, 0.0, 1.0));
-    } else {
-      return lookup(min(d.x, d.z));
-    }
-  } else {
-    return lookup(min(d.x, d.z)) * lookup(min(d.y, d.w));
-  }
-}
-
-void main() {
-  float line = CalculateLine();
-  frag_color = vec4(frag_info.color.xyz, line);
-  //////////////////////////////////////////////////////////////////////////////
-  // This is a nice way to visually debug this shader:
-  // frag_color =
-  //   vec4(mix(vec3(1, 0,0), frag_info.color.xyz, line), 1.0);
-  //////////////////////////////////////////////////////////////////////////////
-  frag_color = IPPremultiply(frag_color);
-}
diff --git a/engine/src/flutter/impeller/entity/shaders/line.vert b/engine/src/flutter/impeller/entity/shaders/line.vert
deleted file mode 100644
index 938bfdc..0000000
--- a/engine/src/flutter/impeller/entity/shaders/line.vert
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <impeller/types.glsl>
-
-uniform FrameInfo {
-  mat4 mvp;
-}
-frame_info;
-
-in vec2 position;
-
-in vec3 e0;
-in vec3 e1;
-in vec3 e2;
-in vec3 e3;
-
-out vec2 v_position;
-out vec3 v_e0;
-out vec3 v_e1;
-out vec3 v_e2;
-out vec3 v_e3;
-
-void main() {
-  gl_Position = frame_info.mvp * vec4(position, 0.0, 1.0);
-  v_position = position;
-  v_e0 = e0;
-  v_e1 = e1;
-  v_e2 = e2;
-  v_e3 = e3;
-}
diff --git a/engine/src/flutter/impeller/golden_tests/golden_playground_test.h b/engine/src/flutter/impeller/golden_tests/golden_playground_test.h
index d9726e6..6d2c100 100644
--- a/engine/src/flutter/impeller/golden_tests/golden_playground_test.h
+++ b/engine/src/flutter/impeller/golden_tests/golden_playground_test.h
@@ -135,12 +135,6 @@
   // support wide gamuts.
   [[nodiscard]] bool EnsureContextSupportsWideGamut() { return true; }
 
-  // See |Playground::EnsureContextSupportsAntialiasLines|
-  // GoldenPlaygroundTest uses testname matching in |Setup| to manage this.
-  // In particular, it will automatically GTEST_SKIP if the platform doesn't
-  // support experimental AA lines.
-  [[nodiscard]] bool EnsureContextSupportsAntialiasLines() { return true; }
-
  private:
 #if FML_OS_MACOSX
   // This must be placed first so that the autorelease pool is not destroyed
diff --git a/engine/src/flutter/impeller/golden_tests/golden_playground_test_mac.cc b/engine/src/flutter/impeller/golden_tests/golden_playground_test_mac.cc
index 13b89d1..07ba038 100644
--- a/engine/src/flutter/impeller/golden_tests/golden_playground_test_mac.cc
+++ b/engine/src/flutter/impeller/golden_tests/golden_playground_test_mac.cc
@@ -200,8 +200,6 @@
   PlaygroundSwitches switches;
   switches.enable_wide_gamut =
       test_name.find("WideGamut_") != std::string::npos;
-  switches.flags.antialiased_lines =
-      test_name.find("ExperimentAntialiasLines_") != std::string::npos;
   switch (GetParam()) {
     case PlaygroundBackend::kMetalSDF:
       switches.flags.use_sdfs = true;
@@ -218,10 +216,6 @@
       if (switches.enable_wide_gamut) {
         GTEST_SKIP() << "Vulkan doesn't support wide gamut golden tests.";
       }
-      if (switches.flags.antialiased_lines) {
-        GTEST_SKIP()
-            << "Vulkan doesn't support antialiased lines golden tests.";
-      }
       const std::unique_ptr<PlaygroundImpl>& playground =
           GetSharedVulkanPlayground(/*enable_validations=*/true);
       pimpl_->screenshotter =
@@ -235,10 +229,6 @@
       if (switches.enable_wide_gamut) {
         GTEST_SKIP() << "OpenGLES doesn't support wide gamut golden tests.";
       }
-      if (switches.flags.antialiased_lines) {
-        GTEST_SKIP()
-            << "OpenGLES doesn't support antialiased lines golden tests.";
-      }
       const std::unique_ptr<PlaygroundImpl>& playground =
           GetSharedOpenGLESPlayground(switches.flags.use_sdfs);
       ::glfwMakeContextCurrent(
diff --git a/engine/src/flutter/impeller/playground/playground.cc b/engine/src/flutter/impeller/playground/playground.cc
index ef70aef..e30bf79 100644
--- a/engine/src/flutter/impeller/playground/playground.cc
+++ b/engine/src/flutter/impeller/playground/playground.cc
@@ -196,12 +196,6 @@
   return true;
 }
 
-bool Playground::EnsureContextSupportsAntialiasLines() {
-  FML_CHECK(!context_) << "Must be called before a context is created.";
-  switches_.flags.antialiased_lines = true;
-  return true;
-}
-
 std::shared_ptr<Context> Playground::GetContext() const {
   if (!context_) {
     SetupContext();
diff --git a/engine/src/flutter/impeller/playground/playground.h b/engine/src/flutter/impeller/playground/playground.h
index 19dcb51..84759f4 100644
--- a/engine/src/flutter/impeller/playground/playground.h
+++ b/engine/src/flutter/impeller/playground/playground.h
@@ -174,16 +174,6 @@
   /// @see PlatformSupportsWideGamut()
   [[nodiscard]] virtual bool EnsureContextSupportsWideGamut();
 
-  /// @brief Make sure that when the context is later created that it
-  ///        will support the experimental AA lines flag.
-  ///
-  /// Must be called before any other method except for the Ensure family
-  /// of methods.
-  ///
-  /// Callers should abort (such as via GTEST_SKIP) if the method returns
-  /// false if their behavior depends on the experimental AA lines.
-  [[nodiscard]] virtual bool EnsureContextSupportsAntialiasLines();
-
   /// @brief  Return an unmodifiable reference to the current switches.
   ///         The switches might change at the start of a test as it
   ///         has a brief opportunity to call any of the Ensure* methods
diff --git a/engine/src/flutter/impeller/tools/malioc.json b/engine/src/flutter/impeller/tools/malioc.json
index 6bd2c4d..da2d478 100644
--- a/engine/src/flutter/impeller/tools/malioc.json
+++ b/engine/src/flutter/impeller/tools/malioc.json
@@ -5054,278 +5054,6 @@
       }
     }
   },
-  "flutter/impeller/entity/gles/line.frag.gles": {
-    "Mali-G78": {
-      "core": "Mali-G78",
-      "filename": "flutter/impeller/entity/gles/line.frag.gles",
-      "has_side_effects": false,
-      "has_uniform_computation": true,
-      "modifies_coverage": false,
-      "reads_color_buffer": false,
-      "type": "Fragment",
-      "uses_late_zs_test": false,
-      "uses_late_zs_update": false,
-      "variants": {
-        "Main": {
-          "fp16_arithmetic": 3,
-          "has_stack_spilling": false,
-          "performance": {
-            "longest_path_bound_pipelines": [
-              "varying"
-            ],
-            "longest_path_cycles": [
-              0.265625,
-              0.25,
-              0.265625,
-              0.0625,
-              0.0,
-              1.75,
-              0.25
-            ],
-            "pipelines": [
-              "arith_total",
-              "arith_fma",
-              "arith_cvt",
-              "arith_sfu",
-              "load_store",
-              "varying",
-              "texture"
-            ],
-            "shortest_path_bound_pipelines": [
-              "varying"
-            ],
-            "shortest_path_cycles": [
-              0.171875,
-              0.171875,
-              0.109375,
-              0.0,
-              0.0,
-              1.75,
-              0.0
-            ],
-            "total_bound_pipelines": [
-              "varying"
-            ],
-            "total_cycles": [
-              0.34375,
-              0.265625,
-              0.34375,
-              0.0625,
-              0.0,
-              1.75,
-              1.0
-            ]
-          },
-          "stack_spill_bytes": 0,
-          "thread_occupancy": 100,
-          "uniform_registers_used": 4,
-          "work_registers_used": 24
-        }
-      }
-    },
-    "Mali-T880": {
-      "core": "Mali-T880",
-      "filename": "flutter/impeller/entity/gles/line.frag.gles",
-      "has_uniform_computation": false,
-      "type": "Fragment",
-      "variants": {
-        "Main": {
-          "has_stack_spilling": false,
-          "performance": {
-            "longest_path_bound_pipelines": [
-              "load_store"
-            ],
-            "longest_path_cycles": [
-              4.619999885559082,
-              5.0,
-              2.0
-            ],
-            "pipelines": [
-              "arithmetic",
-              "load_store",
-              "texture"
-            ],
-            "shortest_path_bound_pipelines": [
-              "load_store"
-            ],
-            "shortest_path_cycles": [
-              2.309999942779541,
-              5.0,
-              0.0
-            ],
-            "total_bound_pipelines": [
-              "arithmetic"
-            ],
-            "total_cycles": [
-              6.0,
-              5.0,
-              4.0
-            ]
-          },
-          "thread_occupancy": 100,
-          "uniform_registers_used": 1,
-          "work_registers_used": 3
-        }
-      }
-    }
-  },
-  "flutter/impeller/entity/gles/line.vert.gles": {
-    "Mali-G78": {
-      "core": "Mali-G78",
-      "filename": "flutter/impeller/entity/gles/line.vert.gles",
-      "has_uniform_computation": false,
-      "type": "Vertex",
-      "variants": {
-        "Position": {
-          "fp16_arithmetic": 0,
-          "has_stack_spilling": false,
-          "performance": {
-            "longest_path_bound_pipelines": [
-              "load_store"
-            ],
-            "longest_path_cycles": [
-              0.15625,
-              0.15625,
-              0.0,
-              0.0,
-              2.0,
-              0.0
-            ],
-            "pipelines": [
-              "arith_total",
-              "arith_fma",
-              "arith_cvt",
-              "arith_sfu",
-              "load_store",
-              "texture"
-            ],
-            "shortest_path_bound_pipelines": [
-              "load_store"
-            ],
-            "shortest_path_cycles": [
-              0.15625,
-              0.15625,
-              0.0,
-              0.0,
-              2.0,
-              0.0
-            ],
-            "total_bound_pipelines": [
-              "load_store"
-            ],
-            "total_cycles": [
-              0.15625,
-              0.15625,
-              0.0,
-              0.0,
-              2.0,
-              0.0
-            ]
-          },
-          "stack_spill_bytes": 0,
-          "thread_occupancy": 100,
-          "uniform_registers_used": 22,
-          "work_registers_used": 32
-        },
-        "Varying": {
-          "fp16_arithmetic": null,
-          "has_stack_spilling": false,
-          "performance": {
-            "longest_path_bound_pipelines": [
-              "load_store"
-            ],
-            "longest_path_cycles": [
-              0.09375,
-              0.0,
-              0.09375,
-              0.0,
-              10.0,
-              0.0
-            ],
-            "pipelines": [
-              "arith_total",
-              "arith_fma",
-              "arith_cvt",
-              "arith_sfu",
-              "load_store",
-              "texture"
-            ],
-            "shortest_path_bound_pipelines": [
-              "load_store"
-            ],
-            "shortest_path_cycles": [
-              0.09375,
-              0.0,
-              0.09375,
-              0.0,
-              10.0,
-              0.0
-            ],
-            "total_bound_pipelines": [
-              "load_store"
-            ],
-            "total_cycles": [
-              0.09375,
-              0.0,
-              0.09375,
-              0.0,
-              10.0,
-              0.0
-            ]
-          },
-          "stack_spill_bytes": 0,
-          "thread_occupancy": 100,
-          "uniform_registers_used": 8,
-          "work_registers_used": 19
-        }
-      }
-    },
-    "Mali-T880": {
-      "core": "Mali-T880",
-      "filename": "flutter/impeller/entity/gles/line.vert.gles",
-      "has_uniform_computation": false,
-      "type": "Vertex",
-      "variants": {
-        "Main": {
-          "has_stack_spilling": false,
-          "performance": {
-            "longest_path_bound_pipelines": [
-              "load_store"
-            ],
-            "longest_path_cycles": [
-              2.9700000286102295,
-              12.0,
-              0.0
-            ],
-            "pipelines": [
-              "arithmetic",
-              "load_store",
-              "texture"
-            ],
-            "shortest_path_bound_pipelines": [
-              "load_store"
-            ],
-            "shortest_path_cycles": [
-              2.9700000286102295,
-              12.0,
-              0.0
-            ],
-            "total_bound_pipelines": [
-              "load_store"
-            ],
-            "total_cycles": [
-              3.0,
-              12.0,
-              0.0
-            ]
-          },
-          "thread_occupancy": 100,
-          "uniform_registers_used": 6,
-          "work_registers_used": 2
-        }
-      }
-    }
-  },
   "flutter/impeller/entity/gles/linear_gradient_fill.frag.gles": {
     "Mali-G78": {
       "core": "Mali-G78",
@@ -9620,188 +9348,6 @@
       }
     }
   },
-  "flutter/impeller/entity/line.frag.vkspv": {
-    "Mali-G78": {
-      "core": "Mali-G78",
-      "filename": "flutter/impeller/entity/line.frag.vkspv",
-      "has_side_effects": false,
-      "has_uniform_computation": true,
-      "modifies_coverage": false,
-      "reads_color_buffer": false,
-      "type": "Fragment",
-      "uses_late_zs_test": false,
-      "uses_late_zs_update": false,
-      "variants": {
-        "Main": {
-          "fp16_arithmetic": 25,
-          "has_stack_spilling": false,
-          "performance": {
-            "longest_path_bound_pipelines": [
-              "varying"
-            ],
-            "longest_path_cycles": [
-              0.25,
-              0.234375,
-              0.25,
-              0.25,
-              0.0,
-              1.75,
-              0.25
-            ],
-            "pipelines": [
-              "arith_total",
-              "arith_fma",
-              "arith_cvt",
-              "arith_sfu",
-              "load_store",
-              "varying",
-              "texture"
-            ],
-            "shortest_path_bound_pipelines": [
-              "varying"
-            ],
-            "shortest_path_cycles": [
-              0.1875,
-              0.15625,
-              0.125,
-              0.1875,
-              0.0,
-              1.75,
-              0.0
-            ],
-            "total_bound_pipelines": [
-              "varying"
-            ],
-            "total_cycles": [
-              0.328125,
-              0.25,
-              0.328125,
-              0.25,
-              0.0,
-              1.75,
-              1.0
-            ]
-          },
-          "stack_spill_bytes": 0,
-          "thread_occupancy": 100,
-          "uniform_registers_used": 4,
-          "work_registers_used": 18
-        }
-      }
-    }
-  },
-  "flutter/impeller/entity/line.vert.vkspv": {
-    "Mali-G78": {
-      "core": "Mali-G78",
-      "filename": "flutter/impeller/entity/line.vert.vkspv",
-      "has_uniform_computation": true,
-      "type": "Vertex",
-      "variants": {
-        "Position": {
-          "fp16_arithmetic": 0,
-          "has_stack_spilling": false,
-          "performance": {
-            "longest_path_bound_pipelines": [
-              "load_store"
-            ],
-            "longest_path_cycles": [
-              0.125,
-              0.125,
-              0.0,
-              0.0,
-              2.0,
-              0.0
-            ],
-            "pipelines": [
-              "arith_total",
-              "arith_fma",
-              "arith_cvt",
-              "arith_sfu",
-              "load_store",
-              "texture"
-            ],
-            "shortest_path_bound_pipelines": [
-              "load_store"
-            ],
-            "shortest_path_cycles": [
-              0.125,
-              0.125,
-              0.0,
-              0.0,
-              2.0,
-              0.0
-            ],
-            "total_bound_pipelines": [
-              "load_store"
-            ],
-            "total_cycles": [
-              0.125,
-              0.125,
-              0.0,
-              0.0,
-              2.0,
-              0.0
-            ]
-          },
-          "stack_spill_bytes": 0,
-          "thread_occupancy": 100,
-          "uniform_registers_used": 28,
-          "work_registers_used": 32
-        },
-        "Varying": {
-          "fp16_arithmetic": null,
-          "has_stack_spilling": false,
-          "performance": {
-            "longest_path_bound_pipelines": [
-              "load_store"
-            ],
-            "longest_path_cycles": [
-              0.046875,
-              0.0,
-              0.046875,
-              0.0,
-              10.0,
-              0.0
-            ],
-            "pipelines": [
-              "arith_total",
-              "arith_fma",
-              "arith_cvt",
-              "arith_sfu",
-              "load_store",
-              "texture"
-            ],
-            "shortest_path_bound_pipelines": [
-              "load_store"
-            ],
-            "shortest_path_cycles": [
-              0.046875,
-              0.0,
-              0.046875,
-              0.0,
-              10.0,
-              0.0
-            ],
-            "total_bound_pipelines": [
-              "load_store"
-            ],
-            "total_cycles": [
-              0.046875,
-              0.0,
-              0.046875,
-              0.0,
-              10.0,
-              0.0
-            ]
-          },
-          "stack_spill_bytes": 0,
-          "thread_occupancy": 100,
-          "uniform_registers_used": 20,
-          "work_registers_used": 22
-        }
-      }
-    }
-  },
   "flutter/impeller/entity/linear_gradient_fill.frag.vkspv": {
     "Mali-G78": {
       "core": "Mali-G78",
diff --git a/engine/src/flutter/shell/common/switch_defs.h b/engine/src/flutter/shell/common/switch_defs.h
index 5eea989..696b43a 100644
--- a/engine/src/flutter/shell/common/switch_defs.h
+++ b/engine/src/flutter/shell/common/switch_defs.h
@@ -298,9 +298,6 @@
            "impeller-lazy-shader-mode",
            "Whether to defer initialization of all required PSOs for the "
            "Impeller backend. Defaults to false.")
-DEF_SWITCH(ImpellerAntialiasLines,
-           "impeller-antialias-lines",
-           "Experimental flag to test drawing lines with antialiasing.")
 DEF_SWITCH(ImpellerUseSDFs,
            "impeller-use-sdfs",
            "Whether to use SDFs for rendering in Impeller.")
diff --git a/engine/src/flutter/shell/common/switches.cc b/engine/src/flutter/shell/common/switches.cc
index 24f8600..bffc7b3 100644
--- a/engine/src/flutter/shell/common/switches.cc
+++ b/engine/src/flutter/shell/common/switches.cc
@@ -558,8 +558,6 @@
       command_line.HasOption(FlagForSwitch(Switch::EnableFlutterGPU));
   settings.impeller_enable_lazy_shader_mode =
       command_line.HasOption(FlagForSwitch(Switch::ImpellerLazyShaderMode));
-  settings.impeller_antialiased_lines =
-      command_line.HasOption(FlagForSwitch(Switch::ImpellerAntialiasLines));
   settings.impeller_use_sdfs =
       command_line.HasOption(FlagForSwitch(Switch::ImpellerUseSDFs));
 
diff --git a/engine/src/flutter/shell/platform/android/android_context_dynamic_impeller.cc b/engine/src/flutter/shell/platform/android/android_context_dynamic_impeller.cc
index 7735862..c65f926 100644
--- a/engine/src/flutter/shell/platform/android/android_context_dynamic_impeller.cc
+++ b/engine/src/flutter/shell/platform/android/android_context_dynamic_impeller.cc
@@ -131,11 +131,6 @@
 #endif  // FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_DEBUG
           .enable_gpu_tracing = settings.enable_gpu_tracing,
           .enable_surface_control = settings.enable_surface_control,
-          .impeller_flags =
-              {
-                  .antialiased_lines =
-                      settings.impeller_flags.antialiased_lines,
-              },
       });
   if (!vulkan_backend->IsValid()) {
     return nullptr;
diff --git a/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngineFlags.java b/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngineFlags.java
index 36b5af8..86981b0 100644
--- a/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngineFlags.java
+++ b/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngineFlags.java
@@ -240,15 +240,6 @@
   private static final Flag IMPELLER_LAZY_SHADER_MODER =
       new Flag("--impeller-lazy-shader-mode", "ImpellerLazyShaderInitialization", true);
 
-  /**
-   * Enables antialiasing for lines in Impeller.
-   *
-   * <p>Allowed in release to control rendering quality in production. Only settable via the
-   * manifest.
-   */
-  private static final Flag IMPELLER_ANTIALIAS_LINES =
-      new Flag("--impeller-antialias-lines", "ImpellerAntialiasLines", true);
-
   // Manifest flags NOT allowed in release mode:
 
   /**
@@ -475,7 +466,6 @@
               TEST_FLAG,
               ENABLE_FLUTTER_GPU,
               IMPELLER_LAZY_SHADER_MODER,
-              IMPELLER_ANTIALIAS_LINES,
               IMPELLER_OPENGL_GPU_TRACING,
               IMPELLER_VULKAN_GPU_TRACING,
               ENABLE_HCPP));
diff --git a/engine/src/flutter/shell/platform/android/platform_view_android.cc b/engine/src/flutter/shell/platform/android/platform_view_android.cc
index 02ed4df..dfafb67 100644
--- a/engine/src/flutter/shell/platform/android/platform_view_android.cc
+++ b/engine/src/flutter/shell/platform/android/platform_view_android.cc
@@ -59,8 +59,6 @@
   settings.enable_gpu_tracing = p_settings.enable_vulkan_gpu_tracing;
   settings.enable_validation = p_settings.enable_vulkan_validation;
   settings.enable_surface_control = p_settings.enable_surface_control;
-  settings.impeller_flags.antialiased_lines =
-      p_settings.impeller_antialiased_lines;
   return settings;
 }
 }  // namespace
diff --git a/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/engine/loader/FlutterLoaderTest.java b/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/engine/loader/FlutterLoaderTest.java
index d8d37e2..c1b6ab8 100644
--- a/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/engine/loader/FlutterLoaderTest.java
+++ b/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/engine/loader/FlutterLoaderTest.java
@@ -1117,21 +1117,6 @@
   }
 
   @Test
-  public void itSetsImpellerAntiAliasLinesFromMetadata() {
-    // Test debug mode.
-    testFlagFromMetadataPresent(
-        "io.flutter.embedding.android.ImpellerAntialiasLines",
-        defaultFlagTestValue,
-        "--impeller-antialias-lines");
-
-    // Test release mode.
-    testFlagFromMetadataPresentInReleaseMode(
-        "io.flutter.embedding.android.ImpellerAntialiasLines",
-        defaultFlagTestValue,
-        "--impeller-antialias-lines");
-  }
-
-  @Test
   public void itSetsEnableOpenGLGPUTracingFromMetadata() {
     testFlagFromMetadataPresent(
         "io.flutter.embedding.android.EnableOpenGLGPUTracing",
diff --git a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm
index 9fb21e1..7f5b83c 100644
--- a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm
+++ b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm
@@ -181,9 +181,6 @@
   settings.enable_wide_gamut = enableWideGamut;
 #endif
 
-  NSNumber* nsAntialiasLines = [mainBundle objectForInfoDictionaryKey:@"FLTAntialiasLines"];
-  settings.impeller_antialiased_lines = (nsAntialiasLines ? nsAntialiasLines.boolValue : NO);
-
   settings.warn_on_impeller_opt_out = true;
 
   NSNumber* nsEnableSDFs = [mainBundle objectForInfoDictionaryKey:@"FLTEnableSDFs"];
diff --git a/engine/src/flutter/shell/platform/darwin/ios/ios_context_metal_impeller.mm b/engine/src/flutter/shell/platform/darwin/ios/ios_context_metal_impeller.mm
index ea618fe..d5c3deb 100644
--- a/engine/src/flutter/shell/platform/darwin/ios/ios_context_metal_impeller.mm
+++ b/engine/src/flutter/shell/platform/darwin/ios/ios_context_metal_impeller.mm
@@ -15,7 +15,6 @@
 namespace {
 impeller::Flags SettingsToFlags(const Settings& settings) {
   return impeller::Flags{
-      .antialiased_lines = settings.impeller_antialiased_lines,
       .use_sdfs = settings.impeller_use_sdfs,
   };
 }
diff --git a/engine/src/flutter/shell/platform/embedder/embedder.cc b/engine/src/flutter/shell/platform/embedder/embedder.cc
index d7f02e7..075232e 100644
--- a/engine/src/flutter/shell/platform/embedder/embedder.cc
+++ b/engine/src/flutter/shell/platform/embedder/embedder.cc
@@ -2318,7 +2318,6 @@
 
   impeller::Flags impeller_flags;
   impeller_flags.use_sdfs = settings.impeller_use_sdfs;
-  impeller_flags.antialiased_lines = settings.impeller_antialiased_lines;
 
   auto on_create_platform_view = InferPlatformViewCreationCallback(
       config, user_data, platform_dispatch_table,
diff --git a/engine/src/flutter/shell/platform/embedder/tests/embedder_test_surface_gl_impeller.cc b/engine/src/flutter/shell/platform/embedder/tests/embedder_test_surface_gl_impeller.cc
index eda11d2..db76a1c 100644
--- a/engine/src/flutter/shell/platform/embedder/tests/embedder_test_surface_gl_impeller.cc
+++ b/engine/src/flutter/shell/platform/embedder/tests/embedder_test_surface_gl_impeller.cc
@@ -46,7 +46,7 @@
   const std::shared_ptr<impeller::ShaderLibrary> shaders =
       context->GetShaderLibrary();
   const std::shared_ptr<const impeller::ShaderFunction> func =
-      shaders->GetFunction("imp_line_fragment_main",
+      shaders->GetFunction("imp_uber_sdf_fragment_main",
                            impeller::ShaderStage::kFragment);
   const auto gles_func = impeller::ShaderFunctionGLES::Cast(func.get());
   const std::shared_ptr<const fml::Mapping> source =
@@ -68,7 +68,7 @@
   const std::shared_ptr<impeller::ShaderLibrary> shaders =
       context->GetShaderLibrary();
   const std::shared_ptr<const impeller::ShaderFunction> func =
-      shaders->GetFunction("imp_line_fragment_main",
+      shaders->GetFunction("imp_uber_sdf_fragment_main",
                            impeller::ShaderStage::kFragment);
   const auto gles_func = impeller::ShaderFunctionGLES::Cast(func.get());
   const std::shared_ptr<const fml::Mapping> source =