1 2 /* 3 * Copyright 2012 Google Inc. 4 * 5 * Use of this source code is governed by a BSD-style license that can be 6 * found in the LICENSE file. 7 */ 8 #ifndef SkANGLEGLContext_DEFINED 9 #define SkANGLEGLContext_DEFINED 10 11 #if SK_ANGLE 12 13 #include "gl/SkGLContext.h" 14 15 class SkANGLEGLContext : public SkGLContext { 16 public: 17 ~SkANGLEGLContext() override; 18 #ifdef SK_BUILD_FOR_WIN CreateDirectX()19 static SkANGLEGLContext* CreateDirectX() { 20 SkANGLEGLContext* ctx = new SkANGLEGLContext(false); 21 if (!ctx->isValid()) { 22 delete ctx; 23 return NULL; 24 } 25 return ctx; 26 } 27 #endif CreateOpenGL()28 static SkANGLEGLContext* CreateOpenGL() { 29 SkANGLEGLContext* ctx = new SkANGLEGLContext(true); 30 if (!ctx->isValid()) { 31 delete ctx; 32 return NULL; 33 } 34 return ctx; 35 } 36 37 GrEGLImage texture2DToEGLImage(GrGLuint texID) const override; 38 void destroyEGLImage(GrEGLImage) const override; 39 GrGLuint eglImageToExternalTexture(GrEGLImage) const override; 40 SkGLContext* createNew() const override; 41 42 // The param is an EGLNativeDisplayType and the return is an EGLDispay. 43 static void* GetD3DEGLDisplay(void* nativeDisplay, bool useGLBackend); 44 45 private: 46 SkANGLEGLContext(bool preferGLBackend); 47 void destroyGLContext(); 48 49 void onPlatformMakeCurrent() const override; 50 void onPlatformSwapBuffers() const override; 51 GrGLFuncPtr onPlatformGetProcAddress(const char* name) const override; 52 53 void* fContext; 54 void* fDisplay; 55 void* fSurface; 56 bool fIsGLBackend; 57 }; 58 59 #endif 60 61 #endif 62