Start retracting GrSurfaceDrawContext

The NGA probably won't have a GrSurfaceDrawContext. The endgame here is to have both SkSurface_Gpu and GrVkSecondaryCBDrawContext hold a SkBaseGpuDevice.

Change-Id: I4b90d7832d28f872a9417f766e441fc15460be90
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/409399
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/SkBaseGpuDevice.h b/src/gpu/SkBaseGpuDevice.h
index ca55bda..aa385fa 100644
--- a/src/gpu/SkBaseGpuDevice.h
+++ b/src/gpu/SkBaseGpuDevice.h
@@ -8,6 +8,8 @@
 #ifndef SkBaseGpuDevice_DEFINED
 #define SkBaseGpuDevice_DEFINED
 
+#include "src/gpu/GrSurfaceProxyView.h"
+
 // NOTE: when not defined, SkGpuDevice extends SkBaseDevice directly and manages its clip stack
 // using GrClipStack. When false, SkGpuDevice continues to extend SkClipStackDevice and uses
 // SkClipStack and GrClipStackClip to manage the clip stack.
@@ -26,6 +28,8 @@
     #define BASE_DEVICE   SkClipStackDevice
 #endif
 
+class GrImageInfo;
+
 class SkBaseGpuDevice : public BASE_DEVICE {
 public:
     SkBaseGpuDevice(const SkImageInfo& ii, const SkSurfaceProps& props)
@@ -33,6 +37,11 @@
     }
 
     // TODO: SkGpuDevice/SkGpuDevice_nga shared stuff goes here
+    virtual GrSurfaceProxyView readSurfaceView() = 0;
+    GrRenderTargetProxy* targetProxy() {
+        return this->readSurfaceView().asRenderTargetProxy();
+    }
+    virtual GrImageInfo grImageInfo() const = 0;
 
 protected: