diff --git a/tools/gpu/GrTest.cpp b/tools/gpu/GrTest.cpp
index f70aa26..fa0556d 100644
--- a/tools/gpu/GrTest.cpp
+++ b/tools/gpu/GrTest.cpp
@@ -234,18 +234,18 @@
 #define ASSERT_SINGLE_OWNER \
     SkDEBUGCODE(GrSingleOwner::AutoEnforce debug_SingleOwner(fRenderTargetContext->fSingleOwner);)
 
-uint32_t GrRenderTargetContextPriv::testingOnly_addDrawOp(GrPaint&& paint,
-                                                          GrAAType aaType,
-                                                          std::unique_ptr<GrDrawOp> op,
-                                                          const GrUserStencilSettings* uss,
-                                                          bool snapToCenters) {
+uint32_t GrRenderTargetContextPriv::testingOnly_addMeshDrawOp(GrPaint&& paint,
+                                                              GrAAType aaType,
+                                                              std::unique_ptr<GrMeshDrawOp> op,
+                                                              const GrUserStencilSettings* uss,
+                                                              bool snapToCenters) {
     ASSERT_SINGLE_OWNER
     if (fRenderTargetContext->drawingManager()->wasAbandoned()) {
         return SK_InvalidUniqueID;
     }
     SkDEBUGCODE(fRenderTargetContext->validate();)
     GR_AUDIT_TRAIL_AUTO_FRAME(fRenderTargetContext->fAuditTrail,
-                              "GrRenderTargetContext::testingOnly_addDrawOp");
+                              "GrRenderTargetContext::testingOnly_addMeshDrawOp");
 
     GrPipelineBuilder pipelineBuilder(std::move(paint), aaType);
     if (uss) {
@@ -253,7 +253,7 @@
     }
     pipelineBuilder.setSnapVerticesToPixelCenters(snapToCenters);
 
-    return fRenderTargetContext->addDrawOp(pipelineBuilder, GrNoClip(), std::move(op));
+    return fRenderTargetContext->addMeshDrawOp(pipelineBuilder, GrNoClip(), std::move(op));
 }
 
 #undef ASSERT_SINGLE_OWNER
