| 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
|
|
|