Chromium Code Reviews| Index: ui/gl/gl_gl_api_implementation.h |
| diff --git a/ui/gl/gl_gl_api_implementation.h b/ui/gl/gl_gl_api_implementation.h |
| index 5c70b38cc4e4c16d1156afc35d198352c9a70aee..85125fddcd63aa1d3021af2fad3a3a96d127ed04 100644 |
| --- a/ui/gl/gl_gl_api_implementation.h |
| +++ b/ui/gl/gl_gl_api_implementation.h |
| @@ -9,18 +9,28 @@ |
| #include "ui/gl/gl_bindings.h" |
| #include "ui/gl/gl_export.h" |
| +namespace gpu { |
| +namespace gles2 { |
| +class GLES2Decoder; |
| +} |
| +} |
| namespace gfx { |
| class GLContext; |
| +class GLSurface; |
| void InitializeGLBindingsGL(); |
| void InitializeGLExtensionBindingsGL(GLContext* context); |
| void InitializeDebugGLBindingsGL(); |
| void ClearGLBindingsGL(); |
| +void SetGLToRealGLApi(); |
| +void SetGLApi(GLApi* api); |
| +// Implemenents the GL API by calling directly into the driver. |
| class GL_EXPORT RealGLApi : public GLApi { |
| public: |
| RealGLApi(); |
| + virtual ~RealGLApi(); |
| void Initialize(DriverGL* driver); |
| // Include the auto-generated part of this class. We split this because |
| @@ -32,6 +42,37 @@ class GL_EXPORT RealGLApi : public GLApi { |
| DriverGL* driver_; |
| }; |
| +// Implementents the GL API using co-operative state restoring. |
| +// Assumes there is only one real GL context and that multiple virtual contexts |
| +// are implemented above it. Restores the needed state from the current context. |
| +class GL_EXPORT VirtualGLApi : public GLApi { |
| + public: |
| + VirtualGLApi(); |
| + virtual ~VirtualGLApi(); |
| + void Initialize(DriverGL* driver, GLContext* real_context); |
| + |
| + // Include the auto-generated part of this class. We split this because |
| + // it means we can easily edit the non-auto generated parts right here in |
| + // this file instead of having to edit some template or the code generator. |
| + #undef UI_GFX_GL_GL_BINDINGS_API_AUTOGEN_GL_H_ |
|
apatrick_chromium
2012/11/05 20:50:44
If gl_bindings_api_autogen.h is intended to be use
greggman
2012/11/06 02:56:37
Done.
|
| + #include "gl_bindings_api_autogen_gl.h" |
| + |
| + // Sets the current virutal context. |
| + bool MakeCurrent(GLContext* virtual_context, GLSurface* surface); |
| + |
| + private: |
| + DriverGL* driver_; |
| + |
| + // The real context we're running on. |
| + GLContext* real_context_; |
| + |
| + // The current virtual context. |
| + GLContext* current_context_; |
| + |
| + // The current surface. |
| + GLSurface* current_surface_; |
| +}; |
| + |
| } // namespace gfx |
| #endif // UI_GL_GL_API_IMPLEMENTATION_H_ |