Plumb GrContext everywhere

There is no good way to split the monster CL up. This breaks out
the GrContext plumbing but doesn't use it.

Change-Id: I90856d428d372bcec3f8821e6364667b367927d4
Reviewed-on: https://skia-review.googlesource.com/133382
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
diff --git a/src/gpu/ops/GrTextureOp.cpp b/src/gpu/ops/GrTextureOp.cpp
index 68a5851..2301930 100644
--- a/src/gpu/ops/GrTextureOp.cpp
+++ b/src/gpu/ops/GrTextureOp.cpp
@@ -8,8 +8,11 @@
 #include "GrTextureOp.h"
 #include "GrAppliedClip.h"
 #include "GrCaps.h"
+#include "GrContext.h"
+#include "GrContextPriv.h"
 #include "GrDrawOpTest.h"
 #include "GrGeometryProcessor.h"
+#include "GrMemoryPool.h"
 #include "GrMeshDrawOp.h"
 #include "GrOpFlushState.h"
 #include "GrQuad.h"
@@ -608,10 +611,14 @@
  */
 class TextureOp final : public GrMeshDrawOp {
 public:
-    static std::unique_ptr<GrDrawOp> Make(sk_sp<GrTextureProxy> proxy,
-                                          GrSamplerState::Filter filter, GrColor color,
-                                          const SkRect& srcRect, const SkRect& dstRect,
-                                          GrAAType aaType, SkCanvas::SrcRectConstraint constraint,
+    static std::unique_ptr<GrDrawOp> Make(GrContext* context,
+                                          sk_sp<GrTextureProxy> proxy,
+                                          GrSamplerState::Filter filter,
+                                          GrColor color,
+                                          const SkRect& srcRect,
+                                          const SkRect& dstRect,
+                                          GrAAType aaType,
+                                          SkCanvas::SrcRectConstraint constraint,
                                           const SkMatrix& viewMatrix,
                                           sk_sp<GrColorSpaceXform> csxf) {
         return std::unique_ptr<GrDrawOp>(new TextureOp(std::move(proxy), filter, color, srcRect,
@@ -684,6 +691,7 @@
     DEFINE_OP_CLASS_ID
 
 private:
+    friend class ::GrOpMemoryPool;
 
     // This is used in a heursitic for choosing a code path. We don't care what happens with
     // really large rects, infs, nans, etc.
@@ -1026,12 +1034,18 @@
 
 namespace GrTextureOp {
 
-std::unique_ptr<GrDrawOp> Make(sk_sp<GrTextureProxy> proxy, GrSamplerState::Filter filter,
-                               GrColor color, const SkRect& srcRect, const SkRect& dstRect,
-                               GrAAType aaType, SkCanvas::SrcRectConstraint constraint,
-                               const SkMatrix& viewMatrix, sk_sp<GrColorSpaceXform> csxf) {
-    return TextureOp::Make(std::move(proxy), filter, color, srcRect, dstRect, aaType, constraint,
-                           viewMatrix, std::move(csxf));
+std::unique_ptr<GrDrawOp> Make(GrContext* context,
+                               sk_sp<GrTextureProxy> proxy,
+                               GrSamplerState::Filter filter,
+                               GrColor color,
+                               const SkRect& srcRect,
+                               const SkRect& dstRect,
+                               GrAAType aaType,
+                               SkCanvas::SrcRectConstraint constraint,
+                               const SkMatrix& viewMatrix,
+                               sk_sp<GrColorSpaceXform> csxf) {
+    return TextureOp::Make(context, std::move(proxy), filter, color, srcRect, dstRect, aaType,
+                           constraint, viewMatrix, std::move(csxf));
 }
 
 }  // namespace GrTextureOp
@@ -1079,8 +1093,8 @@
     }
     auto constraint = random->nextBool() ? SkCanvas::kStrict_SrcRectConstraint
                                          : SkCanvas::kFast_SrcRectConstraint;
-    return GrTextureOp::Make(std::move(proxy), filter, color, srcRect, rect, aaType, constraint,
-                             viewMatrix, std::move(csxf));
+    return GrTextureOp::Make(context, std::move(proxy), filter, color, srcRect, rect, aaType,
+                             constraint, viewMatrix, std::move(csxf));
 }
 
 #endif