/* * Copyright 2012 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkANGLEGLContext_DEFINED #define SkANGLEGLContext_DEFINED #if SK_ANGLE #include "gl/SkGLContext.h" class SkANGLEGLContext : public SkGLContext { public: ~SkANGLEGLContext() override; #ifdef SK_BUILD_FOR_WIN static SkANGLEGLContext* CreateDirectX() { SkANGLEGLContext* ctx = new SkANGLEGLContext(false); if (!ctx->isValid()) { delete ctx; return NULL; } return ctx; } #endif static SkANGLEGLContext* CreateOpenGL() { SkANGLEGLContext* ctx = new SkANGLEGLContext(true); if (!ctx->isValid()) { delete ctx; return NULL; } return ctx; } GrEGLImage texture2DToEGLImage(GrGLuint texID) const override; void destroyEGLImage(GrEGLImage) const override; GrGLuint eglImageToExternalTexture(GrEGLImage) const override; SkGLContext* createNew() const override; // The param is an EGLNativeDisplayType and the return is an EGLDispay. static void* GetD3DEGLDisplay(void* nativeDisplay, bool useGLBackend); private: SkANGLEGLContext(bool preferGLBackend); void destroyGLContext(); void onPlatformMakeCurrent() const override; void onPlatformSwapBuffers() const override; GrGLFuncPtr onPlatformGetProcAddress(const char* name) const override; void* fContext; void* fDisplay; void* fSurface; bool fIsGLBackend; }; #endif #endif