Add OpenGL context to Viewer.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1978573003
Committed: https://skia.googlesource.com/skia/+/56a11e4d6f3d436a3c2497c9c9e71a117d78a93f
Review-Url: https://codereview.chromium.org/1978573003
diff --git a/tools/viewer/sk_app/WindowContext.h b/tools/viewer/sk_app/WindowContext.h
index d48e38e..1fd921a 100644
--- a/tools/viewer/sk_app/WindowContext.h
+++ b/tools/viewer/sk_app/WindowContext.h
@@ -9,30 +9,54 @@
#include "DisplayParams.h"
#include "GrTypes.h"
+#include "SkRefCnt.h"
+#include "SkSurfaceProps.h"
+class GrContext;
class SkSurface;
+class GrRenderTarget;
namespace sk_app {
-// TODO: fill this out with an interface
class WindowContext {
public:
+ WindowContext() : fContext(nullptr)
+ , fSurfaceProps(SkSurfaceProps::kLegacyFontHost_InitType) {}
+
virtual ~WindowContext() {}
- virtual SkSurface* getBackbufferSurface() = 0;
+ virtual sk_sp<SkSurface> getBackbufferSurface() = 0;
virtual void swapBuffers() = 0;
- virtual bool makeCurrent() = 0;
-
virtual bool isValid() = 0;
virtual void resize(uint32_t w, uint32_t h) = 0;
- virtual const DisplayParams& getDisplayParams() = 0;
+ const DisplayParams& getDisplayParams() { return fDisplayParams; }
virtual void setDisplayParams(const DisplayParams& params) = 0;
+ SkSurfaceProps getSurfaceProps() const { return fSurfaceProps; }
+ void setSurfaceProps(const SkSurfaceProps& props) {
+ fSurfaceProps = props;
+ }
+
virtual GrBackendContext getBackendContext() = 0;
+
+ sk_sp<SkSurface> createRenderSurface(sk_sp<GrRenderTarget>, int colorBits);
+ void presentRenderSurface(sk_sp<SkSurface> renderSurface, sk_sp<GrRenderTarget> rt,
+ int colorBits);
+
+protected:
+ virtual bool isGpuContext() { return true; }
+
+ GrContext* fContext;
+
+ int fWidth;
+ int fHeight;
+ DisplayParams fDisplayParams;
+ GrPixelConfig fPixelConfig;
+ SkSurfaceProps fSurfaceProps;
};
} // namespace sk_app