diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt
index f9292ce..42e0b09 100644
--- a/RELEASE_NOTES.txt
+++ b/RELEASE_NOTES.txt
@@ -5,6 +5,10 @@
 Milestone 106
 -------------
   * sk_sp is marked with the [[clang::trivial_abi]] attribute where supported.
+  * SkMesh API: Allows a user to draw a vertex mesh with custom attributes and
+    varyings using SkSL. Mesh data (vertex and index) can be created on a
+    GrDirectContext to avoid re-uploading data per draw. Currently does not
+    work with SkPicture or any backend but GPU.
 
 * * *
 
diff --git a/gm/mesh.cpp b/gm/mesh.cpp
index 38cb910..9e6ca14 100644
--- a/gm/mesh.cpp
+++ b/gm/mesh.cpp
@@ -195,7 +195,7 @@
                 paint.setShader(shader ? fShader : nullptr);
                 paint.setAlpha(alpha);
 
-                SkCanvasPriv::DrawMesh(canvas, mesh, blender, paint);
+                canvas->drawMesh(mesh, blender, paint);
 
                 canvas->translate(0, 150);
                 ++i;
@@ -438,7 +438,7 @@
                 SkPaint paint;
                 paint.setShader(useShader ? fShader : nullptr);
                 SkBlendMode mode = useShader ? SkBlendMode::kModulate : SkBlendMode::kDst;
-                SkCanvasPriv::DrawMesh(c, mesh, SkBlender::Mode(mode), paint);
+                canvas->drawMesh(mesh, SkBlender::Mode(mode), paint);
 
                 c->translate(0, kRect.height() + 10);
             }
@@ -585,7 +585,7 @@
 
             SkPaint paint;
             paint.setShader(fShader);
-            SkCanvasPriv::DrawMesh(canvas, mesh, SkBlender::Mode(SkBlendMode::kModulate), paint);
+            canvas->drawMesh(mesh, SkBlender::Mode(SkBlendMode::kModulate), paint);
 
             canvas->translate(0, kRect.height() + 10);
         }
diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h
index d46f65e..834b257 100644
--- a/include/core/SkCanvas.h
+++ b/include/core/SkCanvas.h
@@ -1981,7 +1981,7 @@
     */
     void drawVertices(const sk_sp<SkVertices>& vertices, SkBlendMode mode, const SkPaint& paint);
 
-#if defined(SK_ENABLE_EXPERIMENTAL_CUSTOM_MESH) && defined(SK_ENABLE_SKSL)
+#if defined(SK_ENABLE_SKSL)
     /**
         Experimental, under active development, and subject to change without notice.
 
@@ -2223,11 +2223,6 @@
     virtual void didTranslate(SkScalar, SkScalar) {}
     virtual void didScale(SkScalar, SkScalar) {}
 
-#ifndef SK_ENABLE_EXPERIMENTAL_CUSTOM_MESH
-    // Define this in protected so we can still access internally for testing.
-    void drawMesh(const SkMesh& mesh, sk_sp<SkBlender> blender, const SkPaint& paint);
-#endif
-
     // NOTE: If you are adding a new onDraw virtual to SkCanvas, PLEASE add an override to
     // SkCanvasVirtualEnforcer (in SkCanvasVirtualEnforcer.h). This ensures that subclasses using
     // that mechanism  will be required to implement the new function.
diff --git a/src/core/SkCanvasPriv.cpp b/src/core/SkCanvasPriv.cpp
index 7a73ece..efaf54b 100644
--- a/src/core/SkCanvasPriv.cpp
+++ b/src/core/SkCanvasPriv.cpp
@@ -101,15 +101,6 @@
     *totalMatrixCount = maxMatrixIndex + 1;
 }
 
-#ifdef SK_ENABLE_SKSL
-void SkCanvasPriv::DrawMesh(SkCanvas* canvas,
-                            const SkMesh& mesh,
-                            sk_sp<SkBlender> blender,
-                            const SkPaint& paint) {
-    canvas->drawMesh(mesh, std::move(blender), paint);
-}
-#endif
-
 #if GR_TEST_UTILS
 
 #if SK_SUPPORT_GPU
diff --git a/src/core/SkCanvasPriv.h b/src/core/SkCanvasPriv.h
index 72b57af..aeb4a04 100644
--- a/src/core/SkCanvasPriv.h
+++ b/src/core/SkCanvasPriv.h
@@ -102,11 +102,6 @@
     static void SetBackdropScaleFactor(SkCanvas::SaveLayerRec* rec, SkScalar scale) {
         rec->fExperimentalBackdropScale = scale;
     }
-
-    static void DrawMesh(SkCanvas*,
-                         const SkMesh& mesh,
-                         sk_sp<SkBlender> blender,
-                         const SkPaint& paint);
 };
 
 /**
