Index: include/gpu/gl/SkNativeGLContext.h |
diff --git a/include/gpu/gl/SkNativeGLContext.h b/include/gpu/gl/SkNativeGLContext.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..93b5b4183ac34794a5cf21c4f288137a346f185c |
--- /dev/null |
+++ b/include/gpu/gl/SkNativeGLContext.h |
@@ -0,0 +1,111 @@ |
+ |
+/* |
+ * Copyright 2011 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+#ifndef SkNativeGLContext_DEFINED |
+#define SkNativeGLContext_DEFINED |
+ |
+#include "SkGLContextHelper.h" |
+ |
+/* This struct is taken from a mesa demo. Please update as required */ |
+static const struct { int major, minor; } gl_versions[] = { |
+ {1, 0}, |
+ {1, 1}, |
+ {1, 2}, |
+ {1, 3}, |
+ {1, 4}, |
+ {1, 5}, |
+ {2, 0}, |
+ {2, 1}, |
+ {3, 0}, |
+ {3, 1}, |
+ {3, 2}, |
+ {3, 3}, |
+ {4, 0}, |
+ {4, 1}, |
+ {4, 2}, |
+ {4, 3}, |
+ {4, 4}, |
+ {0, 0} /* end of list */ |
+}; |
+#define NUM_GL_VERSIONS SK_ARRAY_COUNT(gl_versions) |
+ |
+#if defined(SK_BUILD_FOR_MAC) |
+ #include <OpenGL/OpenGL.h> |
+#elif SK_EGL |
+ #include <GLES2/gl2.h> |
+ #include <EGL/egl.h> |
+#elif defined(SK_BUILD_FOR_UNIX) |
+ #include <X11/Xlib.h> |
+ #include <GL/glx.h> |
+#elif defined(SK_BUILD_FOR_WIN32) |
+ #include <windows.h> |
+ #include <GL/GL.h> |
+ #include "SkWGL.h" |
+#endif |
+ |
+class SkNativeGLContext : public SkGLContextHelper { |
+public: |
+ SkNativeGLContext(); |
+ |
+ virtual ~SkNativeGLContext(); |
+ |
+ virtual void makeCurrent() const SK_OVERRIDE; |
+ virtual void swapBuffers() const SK_OVERRIDE; |
+ |
+ class AutoContextRestore { |
+ public: |
+ AutoContextRestore(); |
+ ~AutoContextRestore(); |
+ |
+ private: |
+ #if defined(SK_BUILD_FOR_MAC) |
+ CGLContextObj fOldCGLContext; |
+ #elif SK_EGL |
+ EGLContext fOldEGLContext; |
+ EGLDisplay fOldDisplay; |
+ EGLSurface fOldSurface; |
+ #elif defined(SK_BUILD_FOR_UNIX) |
+ GLXContext fOldGLXContext; |
+ Display* fOldDisplay; |
+ GLXDrawable fOldDrawable; |
+ #elif defined(SK_BUILD_FOR_WIN32) |
+ HDC fOldHDC; |
+ HGLRC fOldHGLRC; |
+ |
+ #elif defined(SK_BUILD_FOR_IOS) |
+ void* fEAGLContext; |
+ #endif |
+ }; |
+ |
+protected: |
+ virtual const GrGLInterface* createGLContext(GrGLStandard forcedGpuAPI) SK_OVERRIDE; |
+ virtual void destroyGLContext() SK_OVERRIDE; |
+ |
+private: |
+#if defined(SK_BUILD_FOR_MAC) |
+ CGLContextObj fContext; |
+#elif SK_EGL |
+ EGLContext fContext; |
+ EGLDisplay fDisplay; |
+ EGLSurface fSurface; |
+#elif defined(SK_BUILD_FOR_UNIX) |
+ GLXContext fContext; |
+ Display* fDisplay; |
+ Pixmap fPixmap; |
+ GLXPixmap fGlxPixmap; |
+#elif defined(SK_BUILD_FOR_WIN32) |
+ HWND fWindow; |
+ HDC fDeviceContext; |
+ HGLRC fGlRenderContext; |
+ static ATOM gWC; |
+ SkWGLPbufferContext* fPbufferContext; |
+#elif defined(SK_BUILD_FOR_IOS) |
+ void* fEAGLContext; |
+#endif |
+}; |
+ |
+#endif |