Bring sk_sp to GrDrawContext

This is split out of: https://codereview.chromium.org/1914883002/ (Refactor drawContext/RenderTarget creation)

GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1918003003

Review-Url: https://codereview.chromium.org/1918003003
diff --git a/include/gpu/GrDrawContext.h b/include/gpu/GrDrawContext.h
index 61b3907..7bb9aaf 100644
--- a/include/gpu/GrDrawContext.h
+++ b/include/gpu/GrDrawContext.h
@@ -278,14 +278,18 @@
     int numColorSamples() const { return fRenderTarget->numColorSamples(); }
     bool isGammaCorrect() const { return fSurfaceProps.isGammaCorrect(); }
 
-    GrRenderTarget* accessRenderTarget() { return fRenderTarget; }
+    GrRenderTarget* accessRenderTarget() { return fRenderTarget.get(); }
+
+    sk_sp<GrRenderTarget> renderTarget() { return fRenderTarget; }
+
+    sk_sp<GrTexture> asTexture() { return sk_ref_sp(fRenderTarget->asTexture()); }
 
     // Provides access to functions that aren't part of the public API.
     GrDrawContextPriv drawContextPriv();
     const GrDrawContextPriv drawContextPriv() const;
 
 protected:
-    GrDrawContext(GrContext*, GrDrawingManager*, GrRenderTarget*,
+    GrDrawContext(GrContext*, GrDrawingManager*, sk_sp<GrRenderTarget>,
                   const SkSurfaceProps* surfaceProps, GrAuditTrail*, GrSingleOwner*);
 
     GrDrawingManager* drawingManager() { return fDrawingManager; }
@@ -323,7 +327,7 @@
     GrDrawTarget* getDrawTarget();
 
     GrDrawingManager*                 fDrawingManager;
-    GrRenderTarget*                   fRenderTarget;
+    sk_sp<GrRenderTarget>             fRenderTarget;
 
     // In MDB-mode the drawTarget can be closed by some other drawContext that has picked
     // it up. For this reason, the drawTarget should only ever be accessed via 'getDrawTarget'.