diff --git a/Android.bp b/Android.bp
index bb9e9ab..dcf41b8 100644
--- a/Android.bp
+++ b/Android.bp
@@ -830,7 +830,6 @@
           "src/gpu/ops/GrTriangulatingPathRenderer.cpp",
           "src/gpu/tessellate/GrDrawAtlasPathOp.cpp",
           "src/gpu/tessellate/GrFillPathShader.cpp",
-          "src/gpu/tessellate/GrPathStencilFillOp.cpp",
           "src/gpu/tessellate/GrPathTessellateOp.cpp",
           "src/gpu/tessellate/GrPathTessellator.cpp",
           "src/gpu/tessellate/GrStencilPathShader.cpp",
@@ -838,6 +837,7 @@
           "src/gpu/tessellate/GrStrokeOp.cpp",
           "src/gpu/tessellate/GrStrokeTessellateOp.cpp",
           "src/gpu/tessellate/GrStrokeTessellateShader.cpp",
+          "src/gpu/tessellate/GrTessellatingStencilFillOp.cpp",
           "src/gpu/tessellate/GrTessellationPathRenderer.cpp",
           "src/gpu/text/GrAtlasManager.cpp",
           "src/gpu/text/GrDistanceFieldAdjustTable.cpp",
diff --git a/METADATA b/METADATA
index ee890de..2847e77 100644
--- a/METADATA
+++ b/METADATA
@@ -9,7 +9,7 @@
     type: GIT
     value: "https://skia.googlesource.com/skia"
   }
-  version: "a982c77a0af64a57c36cfcd8b941aeff4cea3886"
+  version: "b03f4a1dc831202cc7a68945c752ec56c4415607"
   license_type: RECIPROCAL
   last_upgrade_date {
     year: 2021
diff --git a/gn/gpu.gni b/gn/gpu.gni
index 14dbc05..620772f 100644
--- a/gn/gpu.gni
+++ b/gn/gpu.gni
@@ -473,8 +473,6 @@
   "$_src/gpu/tessellate/GrMiddleOutPolygonTriangulator.h",
   "$_src/gpu/tessellate/GrMidpointContourParser.h",
   "$_src/gpu/tessellate/GrPathShader.h",
-  "$_src/gpu/tessellate/GrPathStencilFillOp.cpp",
-  "$_src/gpu/tessellate/GrPathStencilFillOp.h",
   "$_src/gpu/tessellate/GrPathTessellateOp.cpp",
   "$_src/gpu/tessellate/GrPathTessellateOp.h",
   "$_src/gpu/tessellate/GrPathTessellator.cpp",
@@ -490,6 +488,8 @@
   "$_src/gpu/tessellate/GrStrokeTessellateOp.h",
   "$_src/gpu/tessellate/GrStrokeTessellateShader.cpp",
   "$_src/gpu/tessellate/GrStrokeTessellateShader.h",
+  "$_src/gpu/tessellate/GrTessellatingStencilFillOp.cpp",
+  "$_src/gpu/tessellate/GrTessellatingStencilFillOp.h",
   "$_src/gpu/tessellate/GrTessellationPathRenderer.cpp",
   "$_src/gpu/tessellate/GrTessellationPathRenderer.h",
   "$_src/gpu/tessellate/GrVectorXform.h",
diff --git a/samplecode/SampleTessellatedWedge.cpp b/samplecode/SampleTessellatedWedge.cpp
index c97a3fa..21e6d9c 100644
--- a/samplecode/SampleTessellatedWedge.cpp
+++ b/samplecode/SampleTessellatedWedge.cpp
@@ -19,7 +19,7 @@
 #include "src/gpu/GrMemoryPool.h"
 #include "src/gpu/GrRecordingContextPriv.h"
 #include "src/gpu/GrSurfaceDrawContext.h"
-#include "src/gpu/tessellate/GrPathTessellateOp.h"
+#include "src/gpu/tessellate/GrTessellatingStencilFillOp.h"
 #include "src/gpu/tessellate/GrWangsFormula.h"
 
 static float kConicWeight = .5;
@@ -94,8 +94,8 @@
         aa = GrAAType::kNone;
     }
 
-    sdc->addDrawOp(GrOp::Make<GrPathTessellateOp>(ctx, canvas->getTotalMatrix(), fPath,
-                                                  std::move(paint), aa, fOpFlags));
+    sdc->addDrawOp(GrOp::Make<GrTessellatingStencilFillOp>(ctx, canvas->getTotalMatrix(), fPath,
+                                                           std::move(paint), aa, fOpFlags));
 
     // Draw the path points.
     SkPaint pointsPaint;
diff --git a/src/gpu/tessellate/GrPathStencilFillOp.cpp b/src/gpu/tessellate/GrTessellatingStencilFillOp.cpp
similarity index 84%
rename from src/gpu/tessellate/GrPathStencilFillOp.cpp
rename to src/gpu/tessellate/GrTessellatingStencilFillOp.cpp
index 21ab1f7..10ac941 100644
--- a/src/gpu/tessellate/GrPathStencilFillOp.cpp
+++ b/src/gpu/tessellate/GrTessellatingStencilFillOp.cpp
@@ -5,7 +5,7 @@
  * found in the LICENSE file.
  */
 
-#include "src/gpu/tessellate/GrPathStencilFillOp.h"
+#include "src/gpu/tessellate/GrTessellatingStencilFillOp.h"
 
 #include "src/gpu/GrEagerVertexAllocator.h"
 #include "src/gpu/GrOpFlushState.h"
@@ -18,7 +18,7 @@
 
 using OpFlags = GrTessellationPathRenderer::OpFlags;
 
-void GrPathStencilFillOp::visitProxies(const VisitProxyFunc& fn) const {
+void GrTessellatingStencilFillOp::visitProxies(const VisitProxyFunc& fn) const {
     if (fFillBBoxProgram) {
         fFillBBoxProgram->pipeline().visitProxies(fn);
     } else {
@@ -26,7 +26,7 @@
     }
 }
 
-GrDrawOp::FixedFunctionFlags GrPathStencilFillOp::fixedFunctionFlags() const {
+GrDrawOp::FixedFunctionFlags GrTessellatingStencilFillOp::fixedFunctionFlags() const {
     auto flags = FixedFunctionFlags::kUsesStencil;
     if (fAAType != GrAAType::kNone) {
         flags |= FixedFunctionFlags::kUsesHWAA;
@@ -34,16 +34,16 @@
     return flags;
 }
 
-GrProcessorSet::Analysis GrPathStencilFillOp::finalize(const GrCaps& caps,
-                                                       const GrAppliedClip* clip,
-                                                       bool hasMixedSampledCoverage,
-                                                       GrClampType clampType) {
+GrProcessorSet::Analysis GrTessellatingStencilFillOp::finalize(const GrCaps& caps,
+                                                               const GrAppliedClip* clip,
+                                                               bool hasMixedSampledCoverage,
+                                                               GrClampType clampType) {
     return fProcessors.finalize(fColor, GrProcessorAnalysisCoverage::kNone, clip, nullptr,
                                 hasMixedSampledCoverage, caps, clampType, &fColor);
 }
 
-void GrPathStencilFillOp::prePreparePrograms(const GrPathShader::ProgramArgs& args,
-                                             GrAppliedClip&& appliedClip) {
+void GrTessellatingStencilFillOp::prePreparePrograms(const GrPathShader::ProgramArgs& args,
+                                                     GrAppliedClip&& appliedClip) {
     using DrawInnerFan = GrPathIndirectTessellator::DrawInnerFan;
     SkASSERT(!fStencilFanProgram);
     SkASSERT(!fStencilPathProgram);
@@ -109,11 +109,12 @@
     }
 }
 
-void GrPathStencilFillOp::onPrePrepare(GrRecordingContext* context,
-                                       const GrSurfaceProxyView& writeView, GrAppliedClip* clip,
-                                       const GrXferProcessor::DstProxyView& dstProxyView,
-                                       GrXferBarrierFlags renderPassXferBarriers,
-                                       GrLoadOp colorLoadOp) {
+void GrTessellatingStencilFillOp::onPrePrepare(GrRecordingContext* context,
+                                               const GrSurfaceProxyView& writeView,
+                                               GrAppliedClip* clip,
+                                               const GrXferProcessor::DstProxyView& dstProxyView,
+                                               GrXferBarrierFlags renderPassXferBarriers,
+                                               GrLoadOp colorLoadOp) {
     this->prePreparePrograms({context->priv().recordTimeAllocator(), writeView, &dstProxyView,
                              renderPassXferBarriers, colorLoadOp, context->priv().caps()},
                              (clip) ? std::move(*clip) : GrAppliedClip::Disabled());
@@ -128,7 +129,7 @@
     }
 }
 
-void GrPathStencilFillOp::onPrepare(GrOpFlushState* flushState) {
+void GrTessellatingStencilFillOp::onPrepare(GrOpFlushState* flushState) {
     if (!fTessellator) {
         this->prePreparePrograms({flushState->allocator(), flushState->writeView(),
                                   &flushState->dstProxyView(), flushState->renderPassBarriers(),
@@ -154,7 +155,7 @@
     fTessellator->prepare(flushState, fViewMatrix, fPath);
 }
 
-void GrPathStencilFillOp::onExecute(GrOpFlushState* flushState, const SkRect& chainBounds) {
+void GrTessellatingStencilFillOp::onExecute(GrOpFlushState* flushState, const SkRect& chainBounds) {
     if (!fTessellator) {
         return;
     }
diff --git a/src/gpu/tessellate/GrPathStencilFillOp.h b/src/gpu/tessellate/GrTessellatingStencilFillOp.h
similarity index 85%
rename from src/gpu/tessellate/GrPathStencilFillOp.h
rename to src/gpu/tessellate/GrTessellatingStencilFillOp.h
index d1f19e4..b716f31 100644
--- a/src/gpu/tessellate/GrPathStencilFillOp.h
+++ b/src/gpu/tessellate/GrTessellatingStencilFillOp.h
@@ -5,8 +5,8 @@
  * found in the LICENSE file.
  */
 
-#ifndef GrPathStencilFillOp_DEFINED
-#define GrPathStencilFillOp_DEFINED
+#ifndef GrTessellatingStencilFillOp_DEFINED
+#define GrTessellatingStencilFillOp_DEFINED
 
 #include "src/gpu/ops/GrDrawOp.h"
 #include "src/gpu/tessellate/GrPathShader.h"
@@ -17,12 +17,12 @@
 // Draws paths using a standard Redbook "stencil then fill" method. Curves get linearized by either
 // GPU tessellation shaders or indirect draws. This Op doesn't apply analytic AA, so it requires a
 // render target that supports either MSAA or mixed samples if AA is desired.
-class GrPathStencilFillOp : public GrDrawOp {
+class GrTessellatingStencilFillOp : public GrDrawOp {
 private:
     DEFINE_OP_CLASS_ID
 
-    GrPathStencilFillOp(const SkMatrix& viewMatrix, const SkPath& path, GrPaint&& paint,
-                        GrAAType aaType, GrTessellationPathRenderer::OpFlags opFlags)
+    GrTessellatingStencilFillOp(const SkMatrix& viewMatrix, const SkPath& path, GrPaint&& paint,
+                                GrAAType aaType, GrTessellationPathRenderer::OpFlags opFlags)
             : GrDrawOp(ClassID())
             , fOpFlags(opFlags)
             , fViewMatrix(viewMatrix)
@@ -35,7 +35,7 @@
         this->setBounds(devBounds, HasAABloat(GrAAType::kCoverage == fAAType), IsHairline::kNo);
     }
 
-    const char* name() const override { return "GrPathStencilFillOp"; }
+    const char* name() const override { return "GrTessellatingStencilFillOp"; }
     void visitProxies(const VisitProxyFunc& fn) const override;
     FixedFunctionFlags fixedFunctionFlags() const override;
     GrProcessorSet::Analysis finalize(const GrCaps&, const GrAppliedClip*,
diff --git a/src/gpu/tessellate/GrTessellationPathRenderer.cpp b/src/gpu/tessellate/GrTessellationPathRenderer.cpp
index 7060885..1055d14 100644
--- a/src/gpu/tessellate/GrTessellationPathRenderer.cpp
+++ b/src/gpu/tessellate/GrTessellationPathRenderer.cpp
@@ -17,10 +17,10 @@
 #include "src/gpu/geometry/GrStyledShape.h"
 #include "src/gpu/ops/GrFillRectOp.h"
 #include "src/gpu/tessellate/GrDrawAtlasPathOp.h"
-#include "src/gpu/tessellate/GrPathStencilFillOp.h"
 #include "src/gpu/tessellate/GrPathTessellateOp.h"
 #include "src/gpu/tessellate/GrStrokeIndirectOp.h"
 #include "src/gpu/tessellate/GrStrokeTessellateOp.h"
+#include "src/gpu/tessellate/GrTessellatingStencilFillOp.h"
 #include "src/gpu/tessellate/GrWangsFormula.h"
 
 constexpr static SkISize kAtlasInitialSize{512, 512};
@@ -251,8 +251,8 @@
                                                       aaType, opFlags);
             }
         }
-        return GrOp::Make<GrPathStencilFillOp>(rContext, viewMatrix, path, std::move(paint), aaType,
-                                               opFlags);
+        return GrOp::Make<GrTessellatingStencilFillOp>(rContext, viewMatrix, path, std::move(paint),
+                                                       aaType, opFlags);
     }
 }
 
@@ -422,7 +422,7 @@
             }
             uberPath->setFillType(fillType);
             GrAAType aaType = (antialias) ? GrAAType::kMSAA : GrAAType::kNone;
-            auto op = GrOp::Make<GrPathStencilFillOp>(onFlushRP->recordingContext(),
+            auto op = GrOp::Make<GrTessellatingStencilFillOp>(onFlushRP->recordingContext(),
                     SkMatrix::I(), *uberPath, GrPaint(), aaType, fStencilAtlasFlags);
             rtc->addDrawOp(nullptr, std::move(op));
         }
